import gc import logging import pyfbsdk as mobu from RS import ProjectData from RS.Utils.Logging import Universal from RS.Tools.CameraToolBox.PyCore.Decorators import Singleton logging.getLogger(__name__) Ulog = Universal.UniversalLog('MotionBuilder') WingRemoteWatchFile = r'x:\mobuRunRemoteScript.txt' Quiet = False Application = mobu.FBApplication() App = Application System = mobu.FBSystem() Scene = System.Scene ActorFaces = Scene.ActorFaces Actors = Scene.Actors AudioClips = Scene.AudioClips Cameras = Scene.Cameras CharacterExtensions = Scene.CharacterExtensions CharacterFaces = Scene.CharacterFaces CharacterPoses = Scene.CharacterPoses Characters = Scene.Characters ConstraintSlovers = Scene.ConstraintSolvers Components = Scene.Components Constraints = Scene.Constraints ControlSets = Scene.ControlSets Devices = Scene.Devices Folders = Scene.Folders Groups = Scene.Groups Handles = Scene.Handles Lights = Scene.Lights MarkerSets = Scene.MarkerSets Materials = Scene.Materials Namespaces = Scene.Namespaces Notes = Scene.Notes ObjectPoses = Scene.ObjectPoses PhysicalProperties = Scene.PhysicalProperties Poses = Scene.Poses RootModel = Scene.RootModel Sets = Scene.Sets Shaders = Scene.Shaders Story = mobu.FBStory() Takes = Scene.Takes Textures = Scene.Textures UserObjects = Scene.UserObjects VideoClips = Scene.VideoClips Player = mobu.FBPlayerControl() CameraSwitcher = mobu.FBCameraSwitcher() FileMonitor = mobu.FBFileMonitoringManager() class SceneModels(object): """ Exposes methods that return lists of models in the current scene """ @property def All(self): """ Gets all the FBModels in the scene """ models = mobu.FBModelList() mobu.FBGetSelectedModels(models, None, True, True) mobu.FBGetSelectedModels(models, None, False, True) return models @property def Selected(self): """ Gets all the selected models in the scene """ models = mobu.FBModelList() mobu.FBGetSelectedModels(models, None, True, True) return models @property def UnSelected(self): """ Gets all the unselected models in the scene """ models = mobu.FBModelList() mobu.FBGetSelectedModels(models, None, False, True) return models def __iter__(self): """ overrides built in method Allows the instance to be iterate over all the objects in the scene Returns: generator """ for model in self.All: yield model def __len__(self): """ overrides built in method """ return len(self.All) def __getitem__(self, start): if not isinstance(start, slice): return self.All[start] start, stop, step = start.start, start.stop, start.step start = start or 0 step = step or 1 models = self.All count = len(models) if start < 0: start += count if stop < 0: stop += count else: stop -= 1 modelSlice = [] if start < stop: counter = start while counter >= 0 and counter <= stop: modelSlice.append(models[counter]) counter += step return modelSlice # This is NOT a list Models = SceneModels() ComponentLists = { mobu.FBActor: Actors, mobu.FBActorFace: ActorFaces, mobu.FBCamera: Cameras, mobu.FBCharacter: Characters, mobu.FBCharacterExtension: CharacterExtensions, mobu.FBCharacterPose: CharacterPoses, mobu.FBComponent: Components, mobu.FBConstraint: Constraints, mobu.FBConstraintSolver: ConstraintSlovers, mobu.FBControlSet: ControlSets, mobu.FBDevice: Devices, mobu.FBFolder: Folders, mobu.FBLight: Lights, mobu.FBMarkerSet: MarkerSets, mobu.FBMaterial: Materials, mobu.FBMotionClip: Scene.MotionClips, mobu.FBNote: Notes, mobu.FBObjectPose: ObjectPoses, mobu.FBSet: Sets, mobu.FBShader: Shaders, mobu.FBTake: Takes, mobu.FBTexture: Textures, mobu.FBVideoClip: VideoClips, mobu.FBGroup: Groups } # Adding in an instance of FBEvaluateManager so only 1 exists in the scene EvaluateManager = mobu.FBEvaluateManager() # The .FullName of any component that is 'default' or 'builtin'. Trying to delete these things will # cause crashes in some situations. Best avoid trying to delete them all together. We do this by name # rather than storing the actual references because at different times in code excution (i.e. during startup) # some of these items won't exist 'yet'. This list is created by loading Mobu - allowing it to pass # startup then printing all components at that point - before opening a scene or anything else. DefaultComponentNames = ["Model::Scene", "Core", "Thread Manager", "Evaluation Manager", "Timing Manager", "Command Manager", "KTimeWarpManager", "Profiler", "Evaluation", "Transport", "Timer", "Audio", "Video", "Material::DefaultMaterial", "Model::Producer Perspective", "Model::Producer Front", "Model::Producer Back", "Model::Producer Right", "Model::Producer Left", "Model::Producer Top", "Model::Producer Bottom", "Model::Camera Switcher", "Video::USB Video Device", "Video::Video Output 1", "KVideoRenderer", "KSerialManager", "KCharacterHelper", "Network Evaluation", "KNLEManager", "BaseObjectGroup::Path Creation", "Folder::Constraints", "Audio::Speakers (High Definition Audio Device)", "Audio::Microphone (3- USB Audio Device)", "KAudioManager", "KMotionTriggerManager", "Timeline::Story root", "Timeline::Edit root", "TimelineTrack::Shot Track", "KTimelineXManager", "Settings::Ghosts", "Scene", "Actors", "Marker Set", "Actor Faces", "Audio", "Cameras", "Characters", "Character Faces", "Character Plugins", "Control Rigs", "Character Extensions", "Constraints", "Decks", "Devices", "Handles", "Image Operators", "Groups", "Sets", "Namespaces", "Heads Up Display", "Heads Up Display Elements", "Lights", "Materials", "Keying Groups", "Notes", "Opticals", "Poses", "Shaders", "Takes", "Textures", "3D Curve", "Motions", "Videos", "Physical Properties", "Solvers", "Deformer", "Scripts", "UserObjects", "System", "BaseObjectGroup::T", "BaseObjectGroup::R", "BaseObjectGroup::S", "BaseObjectGroup::TR", "BaseObjectGroup::TRS", "PointCacheManager", "Folder::Poses", "Folder::Takes", "Global Light", "Shader::Default Shader", "Renderer::Renderer", "FBX Export", "MainViewer", "ModelView0", "ModelView1", "ModelView2", "ModelView3", "Geometry::__SYSTEM_DEFAULT_GEOMETRY_AZIMUT_", "HierarchyView", "BaseObjectGroup::Current Camera", "Transport", "FCurve", "Application"] @Singleton.Singleton class CallbackManager(object): """ Manages callbacks in Motion Builder so they are accessible in one location """ # NOTE: This does not contain all the available callbacks in Motion Builder as they are scattered through # out the SDK. Add missing callbacks as needed. # --------------------------- # ----- Scene callbacks ----- # --------------------------- _CallbackTypes = {Scene.OnChange.eventtype: "OnChange", Scene.OnTakeChange.eventtype: "OnTakeChange", Application.OnFileOpen.eventtype: "OnFileOpen", Application.OnFileOpenCompleted.eventtype: "OnFileOpenCompleted", Application.OnFileNew.eventtype: "OnFileNew", Application.OnFileNewCompleted.eventtype: "OnFileNewCompleted", Application.OnFileSave.eventtype: "OnFileSave", Application.OnFileSaveCompleted.eventtype: "OnFileSaveCompleted", Application.OnFileMerge.eventtype: "OnFileMerge", Application.OnFileExit.eventtype: "OnFileExit", System.OnUIIdle.eventtype: "OnUIIdle", System.OnConnectionNotify.eventtype: "OnConnectionNotify", System.OnConnectionKeyingNotify.eventtype: "OnConnectionKeyingNotify", System.OnConnectionDataNotify.eventtype: "OnConnectionDataNotify", System.OnConnectionStateNotify.eventtype: "OnConnectionStateNotify", System.OnVideoFrameRendering.eventtype: "OnVideoFrameRendering", FileMonitor.OnFileChangeMainScene.eventtype: "OnFileChangeMainScene", FileMonitor.OnFileChangeAnimationClip.eventtype: "OnFileChangeAnimationClip", FileMonitor.OnFileChangeFileReference.eventtype: "OnFileChangeFileReference", EvaluateManager.OnSynchronizationEvent.eventtype: "OnSynchronizationEvent", EvaluateManager.OnRenderingPipelineEvent.eventtype: "OnRenderingPipelineEvent" } @property def OnChange(self): """ Callback triggered when a component has been selected, unselected, added, destroyed, renamed, etc. Return: FBEvent """ return Scene.OnChange @property def OnTakeChange(self): """ Callback triggered when a take has been selected, unselected, added, destroyed, renamed, etc. Return: FBEvent """ return Scene.OnTakeChange # --------------------------- # -- Application callbacks -- # --------------------------- @property def OnFileOpen(self): """ A File Open has been requested, nothing has been loaded yet. Return: pyfbsdk.FBEvent """ return Application.OnFileOpen @property def OnFileOpenCompleted(self): """ A File Open has been completed. Return: pyfbsdk.FBEvent """ return Application.OnFileOpenCompleted @property def OnFileNew(self): """ A File New has been requested, nothing has been destroyed yet. Return: pyfbsdk.FBEvent """ return Application.OnFileNew @property def OnFileNewCompleted(self): """ A File New has been completed. Return: pyfbsdk.FBEvent """ return Application.OnFileNewCompleted @property def OnFileSave(self): """ A File Save has been requested, nothing has been saved yet. Return: pyfbsdk.FBEvent """ return Application.OnFileSave @property def OnFileSaveCompleted(self): """ A File Save has been completed. Return: pyfbsdk.FBEvent """ return Application.OnFileSaveCompleted @property def OnFileMerge(self): """ A File Merge has been requested, nothing has been loaded yet. When a file merge is completed, the FileOpenCompleted callback is called. Return: pyfbsdk.FBEvent """ return Application.OnFileMerge @property def OnFileExit(self): """ A File Exit as been requested, nothing has been destroyed yet. This is called when Motion Builder has been asked to close. Return: pyfbsdk.FBEvent """ return Application.OnFileExit # -------------------------- # ---- System callbacks ---- # -------------------------- @property def OnUIIdle(self): """ Useful callback for less frequent GUI refresh and etc. lightweight tasks (occur once per several frames) Return: FBPropertyEventUIIdle """ return System.OnUIIdle @property def OnConnectionNotify(self): """ A connection event occurred between objects in the system. Return: FBPropertyEventConnectionNotify """ return System.OnConnectionNotify @property def OnConnectionDataNotify(self): """ A data event occured between objects in the system Return: pyfbsdk.FBEvent """ return System.OnConnectionDataNotify @property def OnConnectionStateNotify(self): """ A state change event occurred between objects in the system. Return: FBPropertyEventConnectionNotify """ return System.OnConnectionStateNotify @property def OnConnectionKeyingNotify(self): """ A connection event occured between a property and keyframe Return: FBEventConnectionKeyingNotify """ return System.OnConnectionKeyingNotify @property def OnConnectionVideoFramesRendering(self): """ A video frame rendering event occurred when the scene is being off-line rendered into video files. Return: FBPropertyEventVideoFrameRendering """ return System.OnVideoFrameRendering # -------------------------------- # ---- File Monitor callbacks ---- # -------------------------------- @property def OnFileChangeMainScene(self): """ A file that is being monitored has changed since the last event in the current scene was triggered Return: FBPropertyEvent """ return FileMonitor.OnFileChangeMainScene @property def OnFileChangeFileReference(self): """ A file that is being monitored has changed since the last namespace related event in the current scene was triggered Return: FBPropertyEvent """ return FileMonitor.OnFileChangeFileReference @property def OnFileChangeAnimationClip(self): """ A file that is being monitored has changed since the last animation clip related event in the current scene was triggered Return: FBPropertyEvent """ return FileMonitor.OnFileChangeAnimationClip # -------------------------------- # -- Evaluate Manager callbacks -- # -------------------------------- @property def OnSynchronizationEvent(self): """ For callback events at synchronization point, such as when there is a frame change in the time slider Return: FBPropertyEventCallbackSynPoint """ return EvaluateManager.OnSynchronizationEvent @property def OnRenderingPipelineEvent(self): """ For callback events at synchronization point, such as when there is a frame change in the time slider Return: FBPropertyEventCallbackSynPoint """ return EvaluateManager.OnRenderingPipelineEvent @staticmethod def Remove(func, events=None): """ Removes a function if it is hooked to the given events. When no events are given, it searches all available events that it might belong to and removes the function / method from them. Arguments: func (function or method): function / method to remove from the events (list[FBEvents, etc.]): events to remove methods from Return: boolean; whether the function/method was removed from the events """ search = True # Get a list of events that the function hooked if no events are passed if events is None: events = [event for event in CallbackManager.GetAllEvents() for callback in list(event.callbacks) if callback.Callback == func] search = False # convert events into a list if it isn't already a list elif not isinstance(events, (list, tuple)): events = [events] # remove callbacks removed = False for event in events: if search: removed = [event.Remove(func) for callback in list(event.callbacks) if callback.Callback == func] removed = len(removed) > 0 else: event.Remove(func) removed = True return removed @classmethod def GetCallbackNameByEventType(cls, eventtype): """ Get the name of the callback by its eventtype value Arguments: eventtype (pyfbsdk.FBEventType): the type of event, some callbacks return an FBEvent others an interger Return: string when the value is found, returns back the eventtype otherwise """ return cls._CallbackTypes.get(eventtype, eventtype) @classmethod def RemoveAll(cls, skipCallbacks=()): """ Attempts to remove all callbacks Arguments: ignoreCallbacks (list[pyfbsdk.FBEvent]): list of callbacks to avoid removing """ events = [e for e in cls.GetAllEvents()] for event in events: if event not in skipCallbacks: if event.callbacks: logging.info("Close - \t Clearing {instance}.{event}".format( event=cls.GetCallbackNameByEventType(event.eventtype), instance=event.control)) for callback in event.callbacks: while isinstance(callback, mobu.FBCallback): callback = callback.Callback logging.info("Close - \t\t Removing {module}.{function}".format( function=getattr(callback, "__name__", "None"), module=getattr(callback, "__module__", "None"))) event.RemoveAll() @classmethod def GetAllEvents(cls): """ Gets all the available events that this class manages and attempts to retrieve events that have been picked up by python's garbage collection. Return: generator """ # Garbage Collection may not pick up these callbacks, so we explicitly return them to be safe yield Scene.OnChange yield Scene.OnTakeChange yield Application.OnFileOpen yield Application.OnFileOpenCompleted yield Application.OnFileNew yield Application.OnFileNewCompleted yield Application.OnFileSave yield Application.OnFileSaveCompleted yield Application.OnFileMerge yield System.OnUIIdle yield System.OnConnectionNotify yield System.OnConnectionDataNotify yield System.OnConnectionStateNotify yield System.OnConnectionKeyingNotify yield System.OnVideoFrameRendering yield FileMonitor.OnFileChangeFileReference yield FileMonitor.OnFileChangeAnimationClip yield FileMonitor.OnFileChangeMainScene yield EvaluateManager.OnSynchronizationEvent yield EvaluateManager.OnRenderingPipelineEvent for gc_object in gc.get_objects(): # get all Scene callbacks if isinstance(gc_object, mobu.FBScene): for eventName in ("OnChange", "OnTakeChange"): yield getattr(gc_object, eventName) # get all Application callbacks elif isinstance(gc_object, mobu.FBApplication): for eventName in ("OnFileOpen", "OnFileOpenCompleted", "OnFileNew", "OnFileNewCompleted", "OnFileSave", "OnFileSaveCompleted", "OnFileMerge", "OnFileExit"): yield getattr(gc_object, eventName) elif isinstance(gc_object, mobu.FBSystem): for eventName in ("OnUIIdle", "OnConnectionNotify", "OnConnectionDataNotify", "OnConnectionStateNotify", "OnVideoFrameRendering"): yield getattr(gc_object, eventName) Callbacks = CallbackManager() # # # Mirror Partners # # # Mirror_Label:[ Left, Right ] mirrorPairs = { "IK_Hand":[ "IK_R_Hand", "IK_L_Hand" ], "IK_Foot":[ "IK_R_Foot", "IK_L_Foot" ], "PH_Hand":[ "PH_R_Hand", "PH_L_Hand" ], "PH_Foot":[ "PH_R_Foot", "PH_L_Foot" ], "PH_Boot":[ "PH_R_Boot", "PH_L_Boot" ], "PH_Hip":[ "PH_R_Hip", "PH_L_Hip" ], "PH_Breast":[ "PH_R_Breast", "PH_L_Breast" ], "PH_Shoulder":[ "PH_R_Shoulder", "PH_L_Shoulder" ], "RB_ThighRoll":[ "RB_R_ThighRoll", "RB_L_ThighRoll" ] } # 0 = None, 1 = Self mirrorNoPairs = { "mover":1, "HeelHeight":0, "SKEL_Tail":1, "SKEL_ROOT":0, "SKEL_SADDLE":0, "OH_FacingDir":1, "OH_LookDir":0, "PH_Belt_Front":0, "PH_Belt_Melee":0, "PH_Belt_Rear":0, "PH_Belt_Thrower":0, "PH_Bow":0, "PH_Rifle":0 } # --------------------------------------------------------------------------------------------------------------------- # --------------------------------- Anything with 'g' to be depreciated. Don't use.# ---------------------------------- # --------------------------------------------------------------------------------------------------------------------- gApp = Application gScene = Scene gActorFaces = gScene.ActorFaces gActors = gScene.Actors gAudioClips = gScene.AudioClips gCameras = gScene.Cameras gCharacterExtensions = gScene.CharacterExtensions gCharacterFaces = gScene.CharacterFaces gCharacterPoses = gScene.CharacterPoses gCharacters = gScene.Characters gConstraintSlovers = gScene.ConstraintSolvers gComponents = gScene.Components gConstraints = gScene.Constraints gControlSets = gScene.ControlSets gDevices = gScene.Devices gFolders = gScene.Folders gGroups = gScene.Groups gHandles = gScene.Handles gLights = gScene.Lights gMarkerSets = gScene.MarkerSets gMaterials = gScene.Materials gNotes = gScene.Notes gObjectPoses = gScene.ObjectPoses gPhysicalProperties = gScene.PhysicalProperties gPoses = gScene.Poses gRoot = gScene.RootModel gSets = gScene.Sets gShaders = gScene.Shaders gTakes = gScene.Takes gTextures = gScene.Textures gUserObjects = gScene.UserObjects gVideoClips = gScene.VideoClips gUlog = Ulog def rs_NonSystemCameraList(): return [camera for camera in Cameras if not camera.SystemCamera] # # Colors ## gRed = mobu.FBColor(1, 0, 0) gOrange = mobu.FBColor(0.9, 0.4, 0) gPink = mobu.FBColor(1, 0, 1) gGreen = mobu.FBColor(0.4, 0.7, 0) gYellow = mobu.FBColor(1, 1, 0) gDarkBlue = mobu.FBColor(0, 0.2, 0.65) gCyan = mobu.FBColor(0, 1, 1) # # Character skeleton array ## - Get from ProjectData gSkelArray = ProjectData.data.GetSkeltonArray() # # Floor contacts array ## gContactsArray = ['L_Foot_Contact', 'R_Foot_Contact', 'L_Hand_Contact', 'R_Hand_Contact', ] # # Animal skeleton arrays ## gAnimalSkelHeadNeckArray = ['_Neck_1', '_Neck_2', '_Head', '_Head_NUB', 'SPR_R_Ear_ROOT', 'SPR_R_Ear', 'SPR_L_Ear_ROOT', 'SPR_L_Ear', 'AntlerRoot', 'AntlerRoot_NUB'] gAnimalSkelTorsoArray = ['_ROOT', '_Spine_Root', '_Spine0', '_Spine1', '_Spine2', '_Spine2_NUB', '_Spine3', '_PelvisRoot', '_Pelvis', '_Pelvis1'] gAnimalSkelLeftArmArray = ['_L_Clavicle', '_L_Clavicle_NUB', '_L_UpperArm', '_L_Forearm', '_L_Hand', '_L_Finger00', '_L_Finger00_NUB', '_L_Finger01', '_L_Finger01_NUB', 'MH_L_ShoulderBladeRoot', 'MH_L_ShoulderBlade'] gAnimalSkelRightArmArray = ['_R_Clavicle', '_R_Clavicle_NUB', '_R_UpperArm', '_R_Forearm', '_R_Hand', '_R_Finger00', '_R_Finger00_NUB', '_R_Finger01', '_R_Finger01_NUB', 'MH_R_ShoulderBladeRoot', 'MH_R_ShoulderBlade'] gAnimalSkelLeftLegArray = ['_L_Thigh', '_L_Thigh_NUB', '_L_Calf', '_L_Foot', '_L_Toe0', '_L_Toe0_NUB', '_L_Toe1', '_L_Toe1_NUB'] gAnimalSkelRightLegArray = ['_R_Thigh', '_R_Thigh_NUB', '_R_Calf', '_R_Foot', '_R_Toe0', '_R_Toe0NUB', '_R_Toe1', '_R_Toe1_NUB'] gAnimalSkelTailArray = ['_Tail_01', '_Tail_02', '_Tail_03', '_Tail_04', '_Tail_05', '_Tail_05_NUB', '_Tail_05_NUB-END'] gAnimalSkelArray = [gAnimalSkelHeadNeckArray[0], gAnimalSkelHeadNeckArray[1], gAnimalSkelHeadNeckArray[2], gAnimalSkelHeadNeckArray[3], gAnimalSkelHeadNeckArray[4], gAnimalSkelHeadNeckArray[5], gAnimalSkelHeadNeckArray[6], gAnimalSkelHeadNeckArray[7], gAnimalSkelHeadNeckArray[8], gAnimalSkelHeadNeckArray[9], gAnimalSkelTorsoArray[0], gAnimalSkelTorsoArray[1], gAnimalSkelTorsoArray[2], gAnimalSkelTorsoArray[3], gAnimalSkelTorsoArray[4], gAnimalSkelTorsoArray[5], gAnimalSkelTorsoArray[6], gAnimalSkelTorsoArray[7], gAnimalSkelTorsoArray[8], gAnimalSkelTorsoArray[9], gAnimalSkelLeftArmArray[0], gAnimalSkelLeftArmArray[1], gAnimalSkelLeftArmArray[2], gAnimalSkelLeftArmArray[3], gAnimalSkelLeftArmArray[4], gAnimalSkelLeftArmArray[5], gAnimalSkelLeftArmArray[6], gAnimalSkelLeftArmArray[7], gAnimalSkelLeftArmArray[8], gAnimalSkelLeftArmArray[9], gAnimalSkelLeftArmArray[10], gAnimalSkelRightArmArray[0], gAnimalSkelRightArmArray[1], gAnimalSkelRightArmArray[2], gAnimalSkelRightArmArray[3], gAnimalSkelRightArmArray[4], gAnimalSkelRightArmArray[5], gAnimalSkelRightArmArray[6], gAnimalSkelRightArmArray[7], gAnimalSkelRightArmArray[8], gAnimalSkelRightArmArray[9], gAnimalSkelRightArmArray[10], gAnimalSkelLeftLegArray[0], gAnimalSkelLeftLegArray[1], gAnimalSkelLeftLegArray[2], gAnimalSkelLeftLegArray[3], gAnimalSkelLeftLegArray[4], gAnimalSkelLeftLegArray[5], gAnimalSkelLeftLegArray[6], gAnimalSkelLeftLegArray[7], gAnimalSkelRightLegArray[0], gAnimalSkelRightLegArray[1], gAnimalSkelRightLegArray[2], gAnimalSkelRightLegArray[3], gAnimalSkelRightLegArray[4], gAnimalSkelRightLegArray[5], gAnimalSkelRightLegArray[6], gAnimalSkelRightLegArray[7], gAnimalSkelTailArray[0], gAnimalSkelTailArray[1], gAnimalSkelTailArray[2], gAnimalSkelTailArray[3], gAnimalSkelTailArray[4], gAnimalSkelTailArray[5], gAnimalSkelTailArray[6]] gAnimalPrefixSkel = 'SKEL' gAnimalPrefixCtrlRig = 'CTRLRIG' gAnimalPrefixGS = 'gs:' gNewAnimalSkelArray = ["_Pelvis", "_L_Thigh", "_L_Calf", "_L_Foot", "_R_Thigh", "_R_Calf", "_R_Foot", "_Spine0", "_L_UpperArm", "_L_Forearm", "_L_Hand", "_R_UpperArm", "_R_Forearm", "_R_Hand", "_Head", "_L_Toe0", "_R_Toe0", "_L_Clavicle", "_R_Clavicle", "_Neck0", "_L_Finger00", "_R_Finger00", "_Spine1", "_Spine2", "_Spine3", "_Neck1", "_Neck2", "_Neck3", "_Neck4", "_Neck5", "_R_Toe1", "_L_Toe1", "_R_Finger01", "_L_Finger01"] # # GIANT skeleton array ## gGiantSkelArray = ['root', 'waist_dum', 'torso_1', 'torso_2', 'torso_3', 'torso_4', 'torso_5', 'torso_6', 'torso_7', 'neck_1', 'neck_2', 'neck_3', 'head', 'l_shoulder_dum', 'l_shoulder', 'l_up_arm', 'l_up_arm_twist', 'l_low_arm', 'l_low_arm_twist', 'l_hand', 'l_hand_1_dum', 'l_hand_1', 'l_up_fing_1', 'l_mid_fing_1', 'l_low_fing_1', 'l_hand_2_dum', 'l_hand_2', 'l_up_fing_2', 'l_mid_fing_2', 'l_low_fing_2', 'l_hand_3_dum', 'l_hand_3', 'l_up_fing_3', 'l_mid_fing_3', 'l_low_fing_3', 'l_hand_4_dum', 'l_hand_4', 'l_up_fing_4', 'l_mid_fing_4', 'l_low_fing_4', 'l_hand_5_dum', 'l_hand_5', 'l_up_fing_5', 'l_mid_fing_5', 'l_low_fing_5', 'r_shoulder_dum', 'r_shoulder', 'r_up_arm', 'r_up_arm_twist', 'r_low_arm', 'r_low_arm_twist', 'r_hand', 'r_hand_1_dum', 'r_hand_1', 'r_up_fing_1', 'r_mid_fing_1', 'r_low_fing_1', 'r_hand_2_dum', 'r_hand_2', 'r_up_fing_2', 'r_mid_fing_2', 'r_low_fing_2', 'r_hand_3_dum', 'r_hand_3', 'r_up_fing_3', 'r_mid_fing_3', 'r_low_fing_3', 'r_hand_4_dum', 'r_hand_4', 'r_up_fing_4', 'r_mid_fing_4', 'r_low_fing_4', 'r_hand_5_dum', 'r_hand_5', 'r_up_fing_5', 'r_mid_fing_5', 'r_low_fing_5', 'l_up_leg_dum', 'l_up_leg', 'l_low_leg', 'l_foot', 'l_toes', 'r_up_leg_dum', 'r_up_leg', 'r_low_leg', 'r_foot', 'r_toes', 'mesh'] gHoovedQuadrupeds = ["A_C_Horse", "A_C_Deer", "A_C_Cow", "A_C_Boar", "A_C_Pig", "P_C_Horse_01", "P_C_Horse_02"] gNonHoovedQuadrupeds = ["A_C_Rottweiler", "A_C_Chop", "A_C_Retriever", "A_C_Coyote", "A_C_Coyote_01", "A_C_MtLion"] # # 3Lateral face geometries ## gCAFaceAttrGui = ["FacialAttrGUI", "Tongue", "RECT_press", "TEXT_press", "RECT_rollIn", "TEXT_rollIn", "RECT_narrowWide", "TEXT_narrowWide", "JAW", "RECT_clench", "TEXT_clench", "RECT_backFwd", "TEXT_backFwd", "NOSE", "RECT_nasolabialFurrowL", "TEXT_nasolabialFurrowL", "RECT_nasolabialFurrowR", "TEXT_nasolabialFurrowR", "MOUTH", "RECT_smileR", "RECT_smileL", "TEXT_smileL", "TEXT_smileR", "RECT_openSmileR", "TEXT_openSmileR", "RECT_openSmileL", "TEXT_openSmileL", "RECT_frownR", "TEXT_frownR", "RECT_frownL", "TEXT_frownL", "RECT_scream", "TEXT_scream", "RECT_lipsNarrowWideR", "TEXT_lipsNarrowWideR", "RECT_lipsNarrowWideL", "TEXT_lipsNarrowWideL", "RECT_lipsStretchOpenR", "TEXT_lipsStretchOpenR", "RECT_lipsStretchOpenL", "TEXT_lipsStretchOpenL", "RECT_chinWrinkle", "TEXT_chinWrinkle", "RECT_chinRaiseUpper", "TEXT_chinRaiseUpper", "RECT_chinRaiseLower", "TEXT_chinRaiseLower", "RECT_closeOuterR", "TEXT_closeOuterR", "RECT_closeOuterL", "TEXT_closeOuterL", "RECT_puckerR", "TEXT_puckerR", "RECT_puckerL", "TEXT_puckerL", "RECT_oh", "TEXT_oh", "RECT_funnelUR", "TEXT_funnelUR", "RECT_funnelDR", "TEXT_funnelDR", "RECT_mouthSuckUR", "TEXT_mouthSuckUR", "RECT_mouthSuckDR", "TEXT_mouthSuckDR", "RECT_pressR", "TEXT_pressR", "RECT_pressL", "TEXT_pressL", "RECT_dimpleR", "TEXT_dimpleR", "RECT_dimpleL", "TEXT_dimpleL", "RECT_suckPuffR", "TEXT_suckPuffR", "RECT_suckPuffL", "TEXT_suckPuffL", "RECT_lipBite", "TEXT_lipBite", "RECT_funnelUL", "TEXT_funnelUL", "RECT_funnelDL", "TEXT_funnelDL", "RECT_funnelDL001", "TEXT_mouthSuckUL", "RECT_mouthSuckDL", "TEXT_mouthSuckDL", "Eyes", "RECT_blinkL", "TEXT_blinkL", "RECT_squeezeR", "TEXT_squeezeR", "RECT_squeezeL", "TEXT_squeezeL", "RECT_lipsNarrowWideR001", "TEXT_blinkR", "RECT_openCloseUR001", "TEXT_openCloseDR", "RECT_squintInnerUR", "TEXT_squintInnerUR", "RECT_squintInnerDR", "TEXT_squintInnerDR", "RECT_openCloseUR", "TEXT_openCloseUR", "RECT_openCloseDL", "TEXT_openCloseDL", "RECT_squintInnerUL", "TEXT_squintInnerUL", "RECT_squintInnerDL", "TEXT_squintInnerDL", "RECT_openCloseUL", "TEXT_openCloseUL", "LIPS", "RECT_thinThick_C", "RECT_thinThick_D", "RECT_stickyLips_E", "RECT_thinThick_B", "RECT_thinThick_F", "RECT_thinThick_H", "RECT_thinThick_G", "RECT_stickyLips_A", "faceControls_FRAME", "mouth_FRAME", "mouth_TEXT", "jaw_FRAME", "jaw_TEXT", "tongue_TEXT", "tongueMove_FRAME", "tongueRoll_FRAME", "tongueInOut_FRAME", "outerBrow_R_FRAME", "innerBrow_L_FRAME", "outerBrow_L_FRAME", "brows_TEXT", "innerBrow_R_FRAME", "eye_R_FRAME", "eye_L_FRAME", "eyes_TEXT", "eye_C_FRAME", "nose_L_FRAME", "nose_R_FRAME", "nose_TEXT", "cheek_TEXT", "cheek_L_FRAME", "cheek_R_FRAME"] gCAOneDSliders = ["CIRC_press", "CIRC_rollIn", "CIRC_nasolabialFurrowL", "CIRC_nasolabialFurrowR", "CIRC_smileR", "CIRC_smileL", "CIRC_openSmileR", "CIRC_openSmileL", "CIRC_frownR", "CIRC_frownL", "CIRC_scream", "CIRC_lipsStretchOpenR", "CIRC_lipsStretchOpenL", "CIRC_chinWrinkle", "CIRC_puckerR", "CIRC_puckerL", "CIRC_oh", "CIRC_funnelUR", "CIRC_funnelDR", "CIRC_mouthSuckUR", "CIRC_mouthSuckDR", "CIRC_pressR", "CIRC_pressL", "CIRC_dimpleR", "CIRC_dimpleL", "CIRC_lipBite", "CIRC_funnelUL", "CIRC_funnelDL", "CIRC_mouthSuckUL", "CIRC_mouthSuckDL", "CIRC_squeezeR", "CIRC_squeezeL", "CIRC_squintInnerUR", "CIRC_squintInnerDR", "CIRC_squintInnerUL", "CIRC_squintInnerDL", "CIRC_stickyLips_E", "CIRC_stickyLips_A"] gCATwoDSliders = ["CIRC_narrowWide", "CIRC_clench", "CIRC_backFwd", "CIRC_lipsNarrowWideR", "CIRC_lipsNarrowWideL", "CIRC_chinRaiseUpper", "CIRC_chinRaiseLower", "CIRC_closeOuterR", "CIRC_closeOuterL", "CIRC_suckPuffR", "CIRC_suckPuffL", "CIRC_blinkL", "CIRC_blinkR", "CIRC_openCloseDR", "CIRC_openCloseUR", "CIRC_openCloseDL", "CIRC_openCloseUL", "CIRC_thinThick_C", "CIRC_thinThick_D", "CIRC_thinThick_B", "CIRC_thinThick_F", "CIRC_thinThick_H", "CIRC_thinThick_G"] qSquareSliders = ["mouth_CTRL", "tongueMove_CTRL", "tongueRoll_CTRL", "eye_C_CTRL", "eye_L_CTRL", "eye_R_CTRL", "nose_L_CTRL", "nose_R_CTRL"] qPosNegSliders = ["tongueInOut_CTRL", "outerBrow_R_CTRL", "outerBrow_L_CTRL"] qPosSliders = ["cheek_L_CTRL", "cheek_R_CTRL"] g3WaySliders = ["jaw_CTRL", "innerBrow_L_CTRL", "innerBrow_R_CTRL"] gOnFaceControls = ["lowerLip_L_CTRL", "lowerLip_C_CTRL", "lowerLip_R_CTRL", "lipCorner_R_CTRL", "upperLip_C_CTRL", "upperLip_L_CTRL", "lipCorner_L_CTRL", "upperLip_R_CTRL", "eyelidUpperOuter_L_CTRL", "eyelidUpperInner_L_CTRL", "eyelidLowerOuter_L_CTRL", "eyelidLowerInner_L_CTRL", "eyelidLowerOuter_R_CTRL", "eyelidLowerInner_R_CTRL", "eyelidUpperOuter_R_CTRL", "eyelidUpperInner_R_CTRL"] gBrowCtrls = ["innerBrow_R_CTRL", "outerBrow_L_CTRL", "innerBrow_L_CTRL", "outerBrow_R_CTRL"] gEyeCtrls = ["CIRC_openCloseUL", "CIRC_squintInnerDL", "CIRC_squintInnerUL", "CIRC_openCloseDL", "CIRC_openCloseUR", "CIRC_squintInnerDR", "CIRC_squintInnerUR", "CIRC_openCloseDR", "CIRC_blinkR", "CIRC_squeezeL", "CIRC_squeezeR", "CIRC_blinkL", "eyelidUpperInner_R_CTRL", "eyelidUpperOuter_R_CTRL", "eyelidLowerInner_R_CTRL", "eyelidLowerOuter_R_CTRL", "eyelidLowerInner_L_CTRL", "eyelidLowerOuter_L_CTRL", "eyelidUpperInner_L_CTRL", "eyelidUpperOuter_L_CTRL", "eye_C_CTRL", "eye_R_CTRL", "eye_L_CTRL"] gMouthCtrls = ["CIRC_stickyLips_A", "CIRC_thinThick_G", "CIRC_thinThick_H", "CIRC_thinThick_F", "CIRC_thinThick_B", "CIRC_stickyLips_E", "CIRC_thinThick_D", "CIRC_thinThick_C", "CIRC_mouthSuckDL", "CIRC_mouthSuckUL", "CIRC_funnelDL", "CIRC_funnelUL", "CIRC_lipBite", "CIRC_suckPuffL", "CIRC_suckPuffR", "CIRC_dimpleL", "CIRC_dimpleR", "CIRC_pressL", "CIRC_pressR", "CIRC_mouthSuckDR", "CIRC_mouthSuckUR", "CIRC_funnelDR", "CIRC_funnelUR", "CIRC_oh", "CIRC_puckerL", "CIRC_puckerR", "CIRC_closeOuterL", "CIRC_closeOuterR", "CIRC_chinRaiseLower", "CIRC_chinRaiseUpper", "CIRC_chinWrinkle", "CIRC_lipsStretchOpenL", "CIRC_lipsStretchOpenR", "CIRC_lipsNarrowWideL", "CIRC_lipsNarrowWideR", "CIRC_scream", "CIRC_frownL", "CIRC_frownR", "CIRC_openSmileL", "CIRC_openSmileR", "CIRC_smileL", "CIRC_smileR", "CIRC_nasolabialFurrowR", "CIRC_nasolabialFurrowL", "CIRC_backFwd", "CIRC_clench", "CIRC_narrowWide", "CIRC_rollIn", "CIRC_press", "upperLip_R_CTRL", "lipCorner_L_CTRL", "upperLip_L_CTRL", "upperLip_C_CTRL", "lipCorner_R_CTRL", "lowerLip_R_CTRL", "lowerLip_C_CTRL", "lowerLip_L_CTRL", "cheek_R_CTRL", "cheek_L_CTRL", "nose_R_CTRL", "nose_L_CTRL", "tongueInOut_CTRL", "tongueRoll_CTRL", "tongueMove_CTRL", "jaw_CTRL", "mouth_CTRL"] gBlushCtrl = [ "cutsceneBlush_OFF" ] gFacialRoot = [ "FACIAL_facialRoot" ] # # Ambient face controller id's ## gAmbientControllerIds = { "CTRL_R_Brow":7689, "CTRL_C_Brow":31528, "CTRL_L_Brow":19497, "CTRL_R_Blink":25778, "CTRL_L_Blink":19205, "CTRL_R_Eye":64876, "CTRL_L_Eye":447, "CTRL_R_Cheek":40256, "CTRL_L_Cheek":33683, "CTRL_UpperLip":28113, "CTRL_UpperLip_Curl":17867, "CTRL_R_Mouth":10760, "CTRL_L_Mouth":4187, "CTRL_Mouth":4626, "CTRL_Tongue_In_Out":10274, "CTRL_Tongue":51288, "CTRL_LowerLip":64382, "CTRL_LowerLip_Curl":15406, "open":19779, "W":455, "ShCh":34077, "PBM":21981, "FV":1574, "wide":50730, "tBack":58819, "tTeeth":47000, "tRoof":62959, "AU2_Outer_Brow_Raiser_Right":59610, "AU2_Outer_Brow_Raiser_Left":20502, "AU4_Brow_Lowerer":41424, "AU10_Upper_Lip_Raiser":63645, "AU15_Lip_Corner_Depressor_Right":22207, "AU15_Lip_Corner_Depressor_Left":27754, "AU16_Lower_Lip_Depressor":20640, "AU20_Lip_Stretcher":33019, "AU23_Lip_Tightener":53070, "AU26_Jaw_Drop":54342, "open_pose":840, "W_pose":51201, "wide_pose":52693, "tBack_pose":34146, "tTeeth_pose":23631, "tRoof_pose":22140, "Brow_Up_L":58471, "Brow_Up_R":58445, "Brows_Down":18040, "Squint":41298, "Look_Up_Lids":35793, "Look_Down_Lids":62006, "IH":1608} # # Ambient facial geometries ## gAmbientBorders = ["RECT_R_Blink", "TEXT_R_Blink", "RECT_L_Blink", "TEXT_L_Blink", "RECT_L_Cheek", "TEXT_L_Cheek", "RECT_R_Cheek", "TEXT_R_Cheek", "RECT_UpperLip_Curl", "TEXT_UpperLip_Curl", "RECT_LowerLip_Curl", "TEXT_LowerLip_Curl", "RECT_Tongue_In_Out", "TEXT_Tongue_In_Out", "RECT_C_Brow", "TEXT_C_Brow", "RECT_R_Brow", "TEXT_R_Brow", "RECT_L_Brow", "TEXT_L_Brow", "RECT_R_Eye", "TEXT_R_Eye", "RECT_L_Eye", "TEXT_L_Eye", "RECT_R_Mouth", "TEXT_R_Mouth", "RECT_Mouth", "TEXT_Mouth", "RECT_L_Mouth", "TEXT_L_Mouth", "RECT_UpperLip", "TEXT_UpperLip", "RECT_LowerLip", "TEXT_LowerLip", "RECT_Jaw", "TEXT_Jaw", "RECT_Tongue", "TEXT_Tongue", "RECT_MouthPinch", "TEXT_MouthPinch", "RECT_open", "TEXT_open", "RECT_W", "TEXT_W", "RECT_ShCh", "TEXT_ShCh", "RECT_PBM", "TEXT_PBM", "RECT_FV", "TEXT_FV", "RECT_wide", "TEXT_wide", "RECT_tBack", "TEXT_tBack", "RECT_tTeeth", "TEXT_tTeeth", "RECT_tRoof", "TEXT_tRoof", "RECT_AU2_Outer_Brow_Raiser_Left", "TEXT_AU2_Outer_Brow_Raiser_Left", "RECT_AU2_Outer_Brow_Raiser_Right", "TEXT_AU2_Outer_Brow_Raiser_Right", "RECT_AU4_Brow_Lowerer", "TEXT_AU4_Brow_Lowerer", "RECT_AU10_Upper_Lip_Raiser", "TEXT_AU10_Upper_Lip_Raiser", "RECT_AU15_Lip_Corner_Depressor_Left", "TEXT_AU15_Lip_Corner_Depressor_Left", "RECT_AU15_Lip_Corner_Depressor_Right", "TEXT_AU15_Lip_Corner_Depressor_Right", "RECT_AU16_Lower_Lip_Depressor", "TEXT_AU16_Lower_Lip_Depressor", "RECT_AU20_Lip_Stretcher", "TEXT_AU20_Lip_Stretcher", "RECT_AU23_Lip_Tightener", "TEXT_AU23_Lip_Tightener", "RECT_AU26_Jaw_Drop", "TEXT_AU26_Jaw_Drop", "RECT_open_pose", "TEXT_open_pose", "RECT_W_pose", "TEXT_W_pose", "RECT_ShCh", "TEXT_ShCh", "RECT_PBM", "TEXT_PBM", "RECT_FV", "TEXT_FV", "RECT_wide_pose", "TEXT_wide_pose", "RECT_tBack_pose", "TEXT_tBack_pose", "RECT_tTeeth_pose", "TEXT_tTeeth_pose", "RECT_tRoof_pose", "TEXT_tRoof_pose", "RECT_Brow_Up_L", "TEXT_Brow_Up_L", "RECT_Brow_Up_R", "TEXT_Brow_Up_R", "RECT_Brows_Down", "TEXT_Brows_Down", "RECT_Squint", "TEXT_Squint", "RECT_Look_Up_Lids", "TEXT_Look_Up_Lids", "RECT_Look_Down_Lids", "TEXT_Look_Down_Lids", "RECT_IH", "TEXT_IH"] gAmbient2DSliders = ["CTRL_C_Brow", "CTRL_R_Brow", "CTRL_L_Brow", "CTRL_R_Eye", "CTRL_L_Eye", "CTRL_R_Mouth", "CTRL_Mouth", "CTRL_L_Mouth", "CTRL_UpperLip", "CTRL_LowerLip", "CTRL_Jaw", "CTRL_Tongue"] gAmbient1DSliders = ["CTRL_R_Blink", "CTRL_L_Blink", "CTRL_L_Cheek", "CTRL_R_Cheek", "CTRL_UpperLip_Curl", "CTRL_LowerLip_Curl", "CTRL_Tongue_In_Out", "CTRL_MouthPinch", "open", "W", "ShCh", "PBM", "FV", "wide", "tBack", "tTeeth", "tRoof", "AU2_Outer_Brow_Raiser_Left", "AU2_Outer_Brow_Raiser_Right", "AU4_Brow_Lowerer", "AU10_Upper_Lip_Raiser", "AU15_Lip_Corner_Depressor_Left", "AU15_Lip_Corner_Depressor_Right", "AU16_Lower_Lip_Depressor", "AU20_Lip_Stretcher", "AU23_Lip_Tightener", "AU26_Jaw_Drop", "open_pose", "W_pose", "wide_pose", "tBack_pose", "tTeeth_pose", "tRoof_pose", "Brow_Up_L", "Brow_Up_R", "Brows_Down", "Squint", "Look_Up_Lids", "Look_Down_Lids", "IH"] # ## # ## # ## # ## # ## # ## # ## # ## UFC Facial Rig Arrays # ## # ## # ## # ## # ## # ## # ## # ## gUFCWolf_Ctrls = [ "CTRL_analog_R_ear3", "CTRL_analog_L_ear3", "CTRL_analog_R_ear2", "CTRL_analog_L_ear2", "CTRL_analog_R_ear1", "CTRL_analog_L_ear1", "CTRL_analog_C_tongue4", "CTRL_analog_C_tongue3", "CTRL_analog_C_tongue2", "CTRL_analog_C_tongue1", "CTRL_lookAt_WorldParentSwitch", "CTRL_rig_LogicSwitch", "CTRL_R_nose", "CTRL_L_nose", "CTRL_C_tongue_inOut", "CTRL_C_tongue_stickToSnout", "CTRL_C_tongue_moveUpDown", "CTRL_C_tongue_roll", "CTRL_R_eye_blink", "CTRL_L_eye_blink", "CTRL_R_eye_cheekRaise", "CTRL_L_eye_cheekRaise", "CTRL_R_eye_squintInner", "CTRL_L_eye_squintInner", "CTRL_L_eye", "CTRL_R_eye", "CTRL_C_eye", "CTRL_L_brow_lateral", "CTRL_R_brow_lateral", "CTRL_L_brow_down", "CTRL_R_brow_down", "CTRL_L_brow_raiseOut", "CTRL_L_brow_raiseIn", "CTRL_R_brow_raiseIn", "CTRL_R_brow_raiseOut", "CTRL_R_mouth_lipsRollD", "CTRL_L_mouth_lipsRollD", "CTRL_R_mouth_lipsRollU", "CTRL_L_mouth_lipsRollU", "CTRL_L_mouth_howlD", "CTRL_L_mouth_howlU", "CTRL_R_mouth_howlU", "CTRL_R_mouth_howlD", "CTRL_R_mouth_upperLip", "CTRL_L_mouth_upperLip", "CTRL_R_mouth_lowerLipDepress", "CTRL_R_mouth_stretch", "CTRL_R_mouth_cornerPull", "CTRL_R_mouth_sharpCornerPull", "CTRL_R_mouth_upperLipRaise", "CTRL_L_mouth_lowerLipDepress", "CTRL_L_mouth_stretch", "CTRL_L_mouth_cornerPull", "CTRL_L_mouth_sharpCornerPull", "CTRL_L_mouth_upperLipRaise", "CTRL_C_jaw", "CTRL_R_ear", "CTRL_L_ear", "CTRL_R_lookAtOffset", "CTRL_L_lookAtOffset", "CTRL_C_lookAt", "CTRL_convergenceSwitch" ] gUFCHorse_Ctrls = [ "CTRL_lookAt_WorldParentSwitch", "CTRL_rig_LogicSwitch", "CTRL_convergenceSwitch", "CTRL_C_neck_swallow", "CTRL_R_nose", "CTRL_L_nose", "CTRL_C_lowerSnout", "CTRL_C_upperSnout", "CTRL_C_tongue_inOut", "CTRL_C_tongue_stickToSnout", "CTRL_C_tongue_moveUpDown", "CTRL_C_tongue_roll", "CTRL_L_eye_iris", "CTRL_R_eye_blink", "CTRL_L_eye_blink", "CTRL_R_eye_pupil", "CTRL_R_eye_cheekRaise", "CTRL_L_eye_cheekRaise", "CTRL_R_eye_squintInner", "CTRL_L_eye_squintInner", "CTRL_L_eye", "CTRL_R_eye", "CTRL_C_eye", "CTRL_L_brow_lateral", "CTRL_R_brow_lateral", "CTRL_L_brow_down", "CTRL_R_brow_down", "CTRL_L_brow_raiseOut", "CTRL_L_brow_raiseIn", "CTRL_R_brow_raiseIn", "CTRL_R_brow_raiseOut", "CTRL_R_mouth_lipsRollD", "CTRL_L_mouth_lipsRollD", "CTRL_R_mouth_lipsRollU", "CTRL_L_mouth_lipsRollU", "CTRL_R_mouth_upperLip", "CTRL_L_mouth_upperLip", "CTRL_R_mouth_lowerLipDepress", "CTRL_L_mouth_lowerLipDepress", "CTRL_R_mouth_upperLipRaise", "CTRL_L_mouth_upperLipRaise", "CTRL_C_jaw", "CTRL_R_ear", "CTRL_L_ear", "CTRL_R_LookAt", "CTRL_L_LookAt", "CTRL_C_lookAt", "CTRL_analog_R_ear3", "CTRL_analog_L_ear3", "CTRL_analog_R_ear2", "CTRL_analog_L_ear2", "CTRL_analog_C_tongue5", "CTRL_analog_C_tongue4", "CTRL_analog_C_tongue3", "CTRL_analog_C_tongue2", "CTRL_analog_C_tongue1" ] gUFCFacial_Ctrls_Mouth = [ "CTRL_R_mouth_lipUpDownD", "CTRL_L_mouth_lipUpDownD", "CTRL_R_mouth_lipUpDownU", "CTRL_L_mouth_lipUpDownU", "CTRL_R_nose_nasolabialDeepen", "CTRL_L_nose_nasolabialDeepen", "CTRL_R_mouth_corner", "CTRL_L_mouth_corner", "CTRL_L_mouth_thicknessD", "CTRL_R_mouth_thicknessD", "CTRL_R_mouth_thicknessU", "CTRL_L_mouth_thicknessU", "CTRL_L_mouth_lipsRollD", "CTRL_R_mouth_lipsRollD", "CTRL_R_mouth_lipsRollU", "CTRL_L_mouth_lipsRollU", "CTRL_R_mouth_cornerShapnessU", "CTRL_L_mouth_cornerShapnessU", "CTRL_L_mouth_cornerShapnessD", "CTRL_R_mouth_cornerShapnessD", "CTRL_L_mouth_pushPullD", "CTRL_R_mouth_pushPullU", "CTRL_L_mouth_pushPullU", "CTRL_R_mouth_pushPullD", "CTRL_R_nose", "CTRL_L_nose", "CTRL_R_ear_up", "CTRL_L_ear_up", "CTRL_R_mouth_suckBlow", "CTRL_L_mouth_suckBlow", "CTRL_R_mouth_openSmile", "CTRL_L_mouth_openSmile", "CTRL_L_mouth_lowerLipDepress", "CTRL_R_mouth_lowerLipDepress", "CTRL_R_mouth_stretch", "CTRL_L_mouth_stretch", "CTRL_R_mouth_cornerDepress", "CTRL_L_mouth_cornerDepress", "CTRL_R_mouth_dimple", "CTRL_L_mouth_dimple", "CTRL_R_mouth_cornerPull", "CTRL_L_mouth_cornerPull", "CTRL_R_mouth_sharpCornerPull", "CTRL_L_mouth_sharpCornerPull", "CTRL_R_mouth_upperLipRaise", "CTRL_L_mouth_upperLipRaise", "CTRL_C_mouth", "CTRL_L_mouth_lipBiteD", "CTRL_L_mouth_lipBiteU", "CTRL_R_mouth_lipBiteU", "CTRL_R_mouth_lipBiteD", "CTRL_L_mouth_lipsPressU", "CTRL_R_mouth_lipsPressU", "CTRL_L_mouth_tightenD", "CTRL_L_mouth_tightenU", "CTRL_R_mouth_tightenU", "CTRL_R_mouth_tightenD", "CTRL_L_mouth_lipsBlow", "CTRL_R_mouth_lipsBlow", "CTRL_L_mouth_pressD", "CTRL_L_mouth_pressU", "CTRL_R_mouth_pressU", "CTRL_R_mouth_pressD", "CTRL_L_mouth_lipsTogetherD", "CTRL_L_mouth_lipsTogetherU", "CTRL_R_mouth_lipsTogetherU", "CTRL_R_mouth_lipsTogetherD", "CTRL_L_mouth_puckerD", "CTRL_L_mouth_puckerU", "CTRL_R_mouth_puckerU", "CTRL_R_mouth_puckerD", "CTRL_L_mouth_funnelD", "CTRL_L_mouth_funnelU", "CTRL_R_mouth_funnelU", "CTRL_R_mouth_funnelD", "CTRL_R_jaw_chinCompress", "CTRL_L_jaw_chinCompress", "CTRL_L_jaw_ChinLiftU", "CTRL_L_jaw_ChinLiftD", "CTRL_R_jaw_ChinLiftU", "CTRL_R_jaw_ChinLiftD", "CTRL_C_jaw_fwdBack", "CTRL_C_jaw_clench", "CTRL_C_jaw" ] gUFCFacial_Ctrls_Neck = [ "CTRL_C_neck_stretch", "CTRL_L_neck_stretch", "CTRL_R_neck_stretch", "CTRL_C_neck_swallow" ] gUFCFacial_Ctrls_Tongue = [ "CTRL_C_tongue_narrowWide", "CTRL_C_tongue_inOut", "CTRL_C_tongue_press", "CTRL_C_tongue_roll", "CTRL_C_tongue" ] gUFCFacial_Ctrls_Eyes = [ "CTRL_R_eye_relax", "CTRL_R_eye_squeeze", "CTRL_L_eye_relax", "CTRL_L_eye_squeeze", "CTRL_L_eye_pupil", "CTRL_R_eye_pupil", "CTRL_R_eye_blink", "CTRL_L_eye_blink", "CTRL_R_eye_cheekRaise", "CTRL_L_eye_cheekRaise", "CTRL_R_eye_squintInner", "CTRL_L_eye_squintInner", "CTRL_L_eye", "CTRL_R_eye", "CTRL_C_eye" ] gUFCFacial_Ctrls_GlobalEyes = [ "CTRL_C_lookAt", "CTRL_L_LookAt", "CTRL_R_LookAt" ] gUFCFacial_Ctrls_Brows = [ "CTRL_L_brow_lateral", "CTRL_R_brow_lateral", "CTRL_L_brow_down", "CTRL_R_brow_down", "CTRL_L_brow_raiseOut", "CTRL_L_brow_raiseIn", "CTRL_R_brow_raiseIn", "CTRL_R_brow_raiseOut" ] gUFCFacial_Ctrls_Switches = [ "CTRL_rig_LogicSwitch", "CTRL_lookAt_WorldParentSwitch", "CTRL_convergenceSwitch" ] gUFCFacial_Ctrls = list(set(# converting to a set then back to a list removes dupes. gUFCFacial_Ctrls_Mouth + gUFCFacial_Ctrls_Neck + gUFCFacial_Ctrls_Tongue + gUFCFacial_Ctrls_Eyes + gUFCFacial_Ctrls_GlobalEyes + gUFCFacial_Ctrls_Brows + gUFCWolf_Ctrls + gUFCHorse_Ctrls )) gUFCFacial_Frames = [ "FRM_faceGUI", "FRM_switches", # "FRM_lookAtFollowGUISwitch", # "FRM_lookAtSwitch", "FRM_rig_LogicSwitch", "FRM_lipsUpDown", "FRM_R_mouth_lipsUpDownD", "FRM_L_mouth_lipsUpDownD", "FRM_R_mouth_lipsUpDownU", "FRM_L_mouth_lipsUpDownU", "FRM_R_eye_squeeze", "FRM_R_eye_border", "FRM_R_eye_relax", # "FRM_R_eye_squeeze 1", "FRM_L_eye_squeeze", "FRM_L_eye_border", "FRM_L_eye_relax", # "FRM_L_eye_squeeze 1", "FRM_R_nose_nasolabialDeepen", "FRM_L_nose_nasolabialDeepen", "FRM_R_mouth_corner", "FRM_L_mouth_corner", "FRM_thickness", "FRM_L_mouth_thicknessD", "FRM_R_mouth_thicknessD", "FRM_R_mouth_thicknessU", "FRM_L_mouth_thicknessU", "FRM_lipsRoll", "FRM_L_mouth_lipsRollD", "FRM_R_mouth_lipsRollD", "FRM_R_mouth_lipsRollU", "FRM_L_mouth_lipsRollU", "FRM_cornerSharpness", "FRM_R_mouth_cornerShapnessU", "FRM_L_mouth_cornerShapnessU", "FRM_L_mouth_cornerShapnessD", "FRM_R_mouth_cornerShapnessD", "FRM_lipsPushPull", "FRM_L_mouth_pushPullD", "FRM_R_mouth_pushPullU", "FRM_L_mouth_pushPullU", "FRM_R_mouth_pushPullD", "FRM_L_brow_lateral", "FRM_R_brow_lateral", "FRM_L_brow_down", "FRM_R_brow_down", "FRM_L_brow_raiseOut", "FRM_L_brow_raiseIn", "FRM_R_brow_raiseIn", "FRM_R_brow_raiseOut", "FRM_L_eye_pupil", "FRM_R_eye_pupil", "FRM_R_eye_blink", "FRM_L_eye_blink", "FRM_R_eye_cheekRaise", "FRM_L_eye_cheekRaise", "FRM_R_eye_squintInner", "FRM_L_eye_squintInner", "FRM_L_eye", "FRM_R_eye", "FRM_C_eye", "FRM_R_nose", "FRM_L_nose", "FRM_R_ear_up", "FRM_L_ear_up", "FRM_R_mouth_suckBlow", "FRM_L_mouth_suckBlow", "FRM_R_mouth_openSmile", "FRM_L_mouth_openSmile", "FRM_L_mouth_lowerLipDepress", "FRM_R_mouth_lowerLipDepress", "FRM_R_mouth_stretch", "FRM_L_mouth_stretch", "FRM_R_mouth_cornerDepress", "FRM_L_mouth_cornerDepress", "FRM_R_mouth_dimple", "FRM_L_mouth_dimple", "FRM_R_mouth_cornerPull", "FRM_L_mouth_cornerPull", "FRM_R_mouth_sharpCornerPull", "FRM_L_mouth_sharpCornerPull", "FRM_R_mouth_upperLipRaise", "FRM_L_mouth_upperLipRaise", "FRM_c_mouth", "FRM_C_tongue_narrowWide", "FRM_C_tongue_inOut", "FRM_C_tongue_press", "FRM_C_tongue_roll", "FRM_C_tongue", "FRM_lipBite", "FRM_L_mouth_lipBiteD", "FRM_L_mouth_lipBiteU", "FRM_R_mouth_lipBiteU", "FRM_R_mouth_lipBiteD", "FRM_lipsPress", "FRM_L_mouth_lipsPressD", "FRM_L_mouth_lipsPressU", "FRM_R_mouth_lipsPressU", "FRM_R_mouth_lipsPressD", "FRM_mouthTighten", "FRM_L_mouth_tightenD", "FRM_L_mouth_tightenU", "FRM_R_mouth_tightenU", "FRM_R_mouth_tightenD", "FRM_lipsBlow", "FRM_L_mouth_lipsBlow", "FRM_R_mouth_lipsBlow", "FRM_mouthSuck", "FRM_mouth_press", "FRM_L_mouth_pressD", "FRM_L_mouth_pressU", "FRM_R_mouth_pressU", "FRM_R_mouth_pressD", "FRM_lipsTogether", "FRM_L_mouth_lipsTogetherD", "FRM_L_mouth_lipsTogetherU", "FRM_R_mouth_lipsTogetherU", "FRM_R_mouth_lipsTogetherD", "FRM_oh", "FRM_pucker", "FRM_L_mouth_puckerD", "FRM_L_mouth_puckerU", "FRM_R_mouth_puckerU", "FRM_R_mouth_puckerD", "FRM_funnel", "FRM_L_mouth_funnelD", "FRM_L_mouth_funnelU", "FRM_R_mouth_funnelU", "FRM_R_mouth_funnelD", "FRM_R_jaw_chinCompress", "FRM_L_jaw_chinCompress", "FRM_chinLift", "FRM_L_jaw_ChinLiftU", "FRM_L_jaw_ChinLiftD", "FRM_R_jaw_ChinLiftU", "FRM_R_jaw_ChinLiftD", "FRM_C_jaw_fwdBack", "FRM_C_jaw_clench", "FRM_C_jaw", "FRM_neckStretch", "FRM_C_neck_stretch", "FRM_L_neck_stretch", "FRM_R_neck_stretch", "FRM_C_neck_swallow", "FRM_convergenceSwitch", "FRM_convergenceGUI" ] gUFCFacial_Text = [ "TEXT_switches", "TEXT_lipsUpDown", "TEXT_tweakers", "TEXT_thickness", "TEXT_lipsRoll", "TEXT_cornerSharpness", "TEXT_lipsPushPull", "TEXT_lipBite", "TEXT_lipsPress", "TEXT_mouthTighten", "TEXT_lipsBlow", "TEXT_mouthPress", "TEXT_lipsTogether", "TEXT_mouthSuck", "TEXT_OH", "TEXT_pucker", "TEXT_funnel", "TEXT_neckStretch", "TEXT_convergence" ] gUFCFacial_Unused = [ "CTRL_L_mouth_lipsPressD", "CTRL_R_mouth_lipsPressD", "CTRL_R_neck_stretch_loc", "CTRL_L_neck_stretch_loc" ] gUFCFacial_Other = [ "CTRL_faceGUI", "CTRL_rig_Logic" ] gUFCFacial_NonCtrls = ( gUFCFacial_Frames + gUFCFacial_Text + gUFCFacial_Unused + gUFCFacial_Other ) gUFCFacial_AnalogCtrls_TR = [ "CTRL_C_lookAt", "CTRL_L_LookAt", "CTRL_R_LookAt", "CTRL_analog_R_ear3", "CTRL_analog_L_ear3", "CTRL_analog_R_ear2", "CTRL_analog_L_ear2", "CTRL_analog_R_ear1", "CTRL_analog_L_ear1", "CTRL_analog_C_tongue5", "CTRL_analog_C_tongue4", "CTRL_analog_C_tongue3", "CTRL_analog_C_tongue2", "CTRL_analog_C_tongue1" ] gUFCFacial_AnalogCtrls_T = [ "CTRL_C_bit" ] gUFCFacial_AnalogCtrls_Ears_TR = [ "CTRL_analog_R_ear3", "CTRL_analog_L_ear3", "CTRL_analog_R_ear2", "CTRL_analog_L_ear2", "CTRL_analog_R_ear1", "CTRL_analog_L_ear1" ] gUFCFacial_CustomCtrls = [ "CTRL_C_chin_backFwd", "CTRL_C_chin_downUp", "CTRL_C_chin_narrowWide", "CTRL_C_jaw_backFwd", "CTRL_C_jaw_lowHigh", "CTRL_C_jaw_narrowWide", "CTRL_C_lowerLip_narrowWide", "CTRL_C_lowerLip_backFwd", "CTRL_C_lowerLip_thinThick", "CTRL_C_upperLip_narrowWide", "CTRL_C_upperLip_backFwd", "CTRL_C_upperLip_thinThick", "CTRL_R_mouth_narrowWide", "CTRL_L_mouth_narrowWide", "CTRL_C_mouth_narrowWide", "CTRL_R_mouth_backFwd", "CTRL_L_mouth_backFwd", "CTRL_C_mouth_backFwd", "CTRL_R_mouth_downUp", "CTRL_L_mouth_downUp", "CTRL_C_mouth_downUp", "CTRL_R_mouth_rightLeft", "CTRL_L_mouth_rightLeft", "CTRL_C_mouth_rightLeft", "CTRL_R_cheek_backFwd", "CTRL_L_cheek_backFwd", "CTRL_C_cheek_backFwd", "CTRL_R_cheek_downUp", "CTRL_L_cheek_downUp", "CTRL_C_cheek_downUp", "CTRL_R_cheek_narrowWide", "CTRL_L_cheek_narrowWide", "CTRL_C_cheek_narrowWide", "CTRL_R_ears_earlobe", "CTRL_L_ears_earlobe", "CTRL_C_ears_earlobe", "CTRL_R_ears_smallBig", "CTRL_L_ears_smallBig", "CTRL_C_ears_smallBig", "CTRL_R_ears_shortLong", "CTRL_L_ears_shortLong", "CTRL_C_ears_shortLong", "CTRL_R_ears_narrowWide", "CTRL_L_ears_narrowWide", "CTRL_C_ears_narrowWide", "CTRL_R_nose_nostril", "CTRL_L_nose_nostril", "CTRL_C_nose_nostril", "CTRL_C_nose_tiltRightLeft", "CTRL_C_nose_tiltDownUp", "CTRL_C_nose_smallBig", "CTRL_C_nose_shortLong", "CTRL_C_nose_narrowWide", "CTRL_C_eyes_angle", "CTRL_L_eyes_angle", "CTRL_R_eyes_angle", "CTRL_R_eyes_width", "CTRL_L_eyes_width", "CTRL_C_eyes_width", "CTRL_R_eyes_size", "CTRL_L_eyes_size", "CTRL_C_eyes_size", "CTRL_R_eyes_backFwd", "CTRL_L_eyes_backFwd", "CTRL_C_eyes_backFwd", "CTRL_R_eyes_downUp", "CTRL_L_eyes_downUp", "CTRL_C_eyes_downUp", "CTRL_R_eyes_narrowWide", "CTRL_L_eyes_narrowWide", "CTRL_C_eyes_narrowWide", "CTRL_R_brows_backFwd", "CTRL_L_brows_backFwd", "CTRL_C_brows_backFwd", "CTRL_R_brows_downUp", "CTRL_L_brows_downUp", "CTRL_C_brows_downUp", "CTRL_R_brows_narrowWide", "CTRL_L_brows_narrowWide", "CTRL_C_brows_narrowWide", "CTRL_C_weight", "CTRL_C_faceWidth", "CTRL_C_cranium_flatPointy", "CTRL_C_cranium_downUp", "CTRL_C_cranium_narrowWide" ] gUFCFacialRoot = [ "FACIAL_C_FacialRoot" ] # ## # ## # ## # ## # ## # ## # ## # ## END - UFC Facial Rig Arrays # ## # ## # ## # ## # ## # ## # ## # ## gAllFacialRoot = (gFacialRoot, gUFCFacialRoot)