# -*- coding: utf-8 -*-
"""!
Import MotionBuilder MVN FBX and Retarget Motion to mGear Rig V 2.2
- Set FBX to 60 FPS Uaing Euler Filter
- Set MVN FBX HIK to Retarget to mGear Rig and Bake
- Bake only Once to mGear Rig for retargeting
- Get HIK GUI Character & Source Name from HikList
@file
@author TA Ritaro
"""
import pymel.core as pm
import maya.cmds as cmds
import maya.mel as mel
import os
import imp, os.path, sys
import _thread
import math
att_gearPlot = [
u"arm_L0_upv.translateX",
u"arm_L0_upv.translateY",
u"arm_L0_upv.translateZ",
u"arm_R0_upv.translateX",
u"arm_R0_upv.translateY",
u"arm_R0_upv.translateZ",
u"leg_L0_upv.translateX",
u"leg_L0_upv.translateY",
u"leg_L0_upv.translateZ",
u"leg_R0_upv.translateX",
u"leg_R0_upv.translateY",
u"leg_R0_upv.translateZ",
u"body_C0_ctl.translateX",
u"body_C0_ctl.translateY",
u"body_C0_ctl.translateZ",
u"body_C0_ctl.rotateX",
u"body_C0_ctl.rotateY",
u"body_C0_ctl.rotateZ",
u"leg_L0_fk0_ctl.rotateX",
u"leg_L0_fk0_ctl.rotateY",
u"leg_L0_fk0_ctl.rotateZ",
u"leg_L0_fk1_ctl.rotateX",
u"leg_L0_fk1_ctl.rotateY",
u"leg_L0_fk1_ctl.rotateZ",
u"leg_L0_fk2_ctl.rotateX",
u"leg_L0_fk2_ctl.rotateY",
u"leg_L0_fk2_ctl.rotateZ",
u"foot_L0_fk0_ctl.rotateX",
u"foot_L0_fk0_ctl.rotateY",
u"foot_L0_fk0_ctl.rotateZ",
u"leg_R0_fk0_ctl.rotateX",
u"leg_R0_fk0_ctl.rotateY",
u"leg_R0_fk0_ctl.rotateZ",
u"leg_R0_fk1_ctl.rotateX",
u"leg_R0_fk1_ctl.rotateY",
u"leg_R0_fk1_ctl.rotateZ",
u"leg_R0_fk2_ctl.rotateX",
u"leg_R0_fk2_ctl.rotateY",
u"leg_R0_fk2_ctl.rotateZ",
u"foot_R0_fk0_ctl.rotateX",
u"foot_R0_fk0_ctl.rotateY",
u"foot_R0_fk0_ctl.rotateZ",
u"spine_C0_fk0_ctl.rotateX",
u"spine_C0_fk0_ctl.rotateY",
u"spine_C0_fk0_ctl.rotateZ",
u"spine_C0_fk1_ctl.rotateX",
u"spine_C0_fk1_ctl.rotateY",
u"spine_C0_fk1_ctl.rotateZ",
u"spine_C0_fk2_ctl.rotateX",
u"spine_C0_fk2_ctl.rotateY",
u"spine_C0_fk2_ctl.rotateZ",
u"spine_C0_ik1_ctl.rotateX",
u"spine_C0_ik1_ctl.rotateY",
u"spine_C0_ik1_ctl.rotateZ",
u"shoulder_L0_ctl.rotateX",
u"shoulder_L0_ctl.rotateY",
u"shoulder_L0_ctl.rotateZ",
u"arm_L0_fk0_ctl.rotateX",
u"arm_L0_fk0_ctl.rotateY",
u"arm_L0_fk0_ctl.rotateZ",
u"arm_L0_fk1_ctl.rotateX",
u"arm_L0_fk1_ctl.rotateY",
u"arm_L0_fk1_ctl.rotateZ",
u"arm_L0_fk2_ctl.rotateX",
u"arm_L0_fk2_ctl.rotateY",
u"arm_L0_fk2_ctl.rotateZ",
u"thumb_L0_fk0_ctl.rotateX",
u"thumb_L0_fk0_ctl.rotateY",
u"thumb_L0_fk0_ctl.rotateZ",
u"thumb_L0_fk1_ctl.rotateX",
u"thumb_L0_fk1_ctl.rotateY",
u"thumb_L0_fk1_ctl.rotateZ",
u"thumb_L0_fk2_ctl.rotateX",
u"thumb_L0_fk2_ctl.rotateY",
u"thumb_L0_fk2_ctl.rotateZ",
u"finger_L0_fk0_ctl.rotateX",
u"finger_L0_fk0_ctl.rotateY",
u"finger_L0_fk0_ctl.rotateZ",
u"finger_L0_fk1_ctl.rotateX",
u"finger_L0_fk1_ctl.rotateY",
u"finger_L0_fk1_ctl.rotateZ",
u"finger_L0_fk2_ctl.rotateX",
u"finger_L0_fk2_ctl.rotateY",
u"finger_L0_fk2_ctl.rotateZ",
u"finger_L1_fk0_ctl.rotateX",
u"finger_L1_fk0_ctl.rotateY",
u"finger_L1_fk0_ctl.rotateZ",
u"finger_L1_fk1_ctl.rotateX",
u"finger_L1_fk1_ctl.rotateY",
u"finger_L1_fk1_ctl.rotateZ",
u"finger_L1_fk2_ctl.rotateX",
u"finger_L1_fk2_ctl.rotateY",
u"finger_L1_fk2_ctl.rotateZ",
u"finger_L2_fk0_ctl.rotateX",
u"finger_L2_fk0_ctl.rotateY",
u"finger_L2_fk0_ctl.rotateZ",
u"finger_L2_fk1_ctl.rotateX",
u"finger_L2_fk1_ctl.rotateY",
u"finger_L2_fk1_ctl.rotateZ",
u"finger_L2_fk2_ctl.rotateX",
u"finger_L2_fk2_ctl.rotateY",
u"finger_L2_fk2_ctl.rotateZ",
u"finger_L3_fk0_ctl.rotateX",
u"finger_L3_fk0_ctl.rotateY",
u"finger_L3_fk0_ctl.rotateZ",
u"finger_L3_fk1_ctl.rotateX",
u"finger_L3_fk1_ctl.rotateY",
u"finger_L3_fk1_ctl.rotateZ",
u"finger_L3_fk2_ctl.rotateX",
u"finger_L3_fk2_ctl.rotateY",
u"finger_L3_fk2_ctl.rotateZ",
u"shoulder_R0_ctl.rotateX",
u"shoulder_R0_ctl.rotateY",
u"shoulder_R0_ctl.rotateZ",
u"arm_R0_fk0_ctl.rotateX",
u"arm_R0_fk0_ctl.rotateY",
u"arm_R0_fk0_ctl.rotateZ",
u"arm_R0_fk1_ctl.rotateX",
u"arm_R0_fk1_ctl.rotateY",
u"arm_R0_fk1_ctl.rotateZ",
u"arm_R0_fk2_ctl.rotateX",
u"arm_R0_fk2_ctl.rotateY",
u"arm_R0_fk2_ctl.rotateZ",
u"thumb_R0_fk0_ctl.rotateX",
u"thumb_R0_fk0_ctl.rotateY",
u"thumb_R0_fk0_ctl.rotateZ",
u"thumb_R0_fk1_ctl.rotateX",
u"thumb_R0_fk1_ctl.rotateY",
u"thumb_R0_fk1_ctl.rotateZ",
u"thumb_R0_fk2_ctl.rotateX",
u"thumb_R0_fk2_ctl.rotateY",
u"thumb_R0_fk2_ctl.rotateZ",
u"finger_R0_fk0_ctl.rotateX",
u"finger_R0_fk0_ctl.rotateY",
u"finger_R0_fk0_ctl.rotateZ",
u"finger_R0_fk1_ctl.rotateX",
u"finger_R0_fk1_ctl.rotateY",
u"finger_R0_fk1_ctl.rotateZ",
u"finger_R0_fk2_ctl.rotateX",
u"finger_R0_fk2_ctl.rotateY",
u"finger_R0_fk2_ctl.rotateZ",
u"finger_R1_fk0_ctl.rotateX",
u"finger_R1_fk0_ctl.rotateY",
u"finger_R1_fk0_ctl.rotateZ",
u"finger_R1_fk1_ctl.rotateX",
u"finger_R1_fk1_ctl.rotateY",
u"finger_R1_fk1_ctl.rotateZ",
u"finger_R1_fk2_ctl.rotateX",
u"finger_R1_fk2_ctl.rotateY",
u"finger_R1_fk2_ctl.rotateZ",
u"finger_R2_fk0_ctl.rotateX",
u"finger_R2_fk0_ctl.rotateY",
u"finger_R2_fk0_ctl.rotateZ",
u"finger_R2_fk1_ctl.rotateX",
u"finger_R2_fk1_ctl.rotateY",
u"finger_R2_fk1_ctl.rotateZ",
u"finger_R2_fk2_ctl.rotateX",
u"finger_R2_fk2_ctl.rotateY",
u"finger_R2_fk2_ctl.rotateZ",
u"finger_R3_fk0_ctl.rotateX",
u"finger_R3_fk0_ctl.rotateY",
u"finger_R3_fk0_ctl.rotateZ",
u"finger_R3_fk1_ctl.rotateX",
u"finger_R3_fk1_ctl.rotateY",
u"finger_R3_fk1_ctl.rotateZ",
u"finger_R3_fk2_ctl.rotateX",
u"finger_R3_fk2_ctl.rotateY",
u"finger_R3_fk2_ctl.rotateZ",
u"neck_C0_fk0_ctl.rotateX",
u"neck_C0_fk0_ctl.rotateY",
u"neck_C0_fk0_ctl.rotateZ",
# u"neck_C0_fk1_ctl.rotateX",
# u"neck_C0_fk1_ctl.rotateY",
# u"neck_C0_fk1_ctl.rotateZ",
u"neck_C0_head_ctl.rotateX",
u"neck_C0_head_ctl.rotateY",
u"neck_C0_head_ctl.rotateZ",
u"leg_L0_ik_ctl.translateX",
u"leg_L0_ik_ctl.translateY",
u"leg_L0_ik_ctl.translateZ",
u"leg_L0_ik_ctl.rotateX",
u"leg_L0_ik_ctl.rotateY",
u"leg_L0_ik_ctl.rotateZ",
u"leg_R0_ik_ctl.translateX",
u"leg_R0_ik_ctl.translateY",
u"leg_R0_ik_ctl.translateZ",
u"leg_R0_ik_ctl.rotateX",
u"leg_R0_ik_ctl.rotateY",
u"leg_R0_ik_ctl.rotateZ",
u"leg_L0_upv_ctl.translateX",
u"leg_L0_upv_ctl.translateY",
u"leg_L0_upv_ctl.translateZ",
u"leg_R0_upv_ctl.translateX",
u"leg_R0_upv_ctl.translateY",
u"leg_R0_upv_ctl.translateZ",
u"arm_L0_ik_ctl.translateX",
u"arm_L0_ik_ctl.translateY",
u"arm_L0_ik_ctl.translateZ",
u"arm_L0_upv_ctl.translateX",
u"arm_L0_upv_ctl.translateY",
u"arm_L0_upv_ctl.translateZ",
u"arm_R0_ik_ctl.translateX",
u"arm_R0_ik_ctl.translateY",
u"arm_R0_ik_ctl.translateZ",
u"arm_R0_upv_ctl.translateX",
u"arm_R0_upv_ctl.translateY",
u"arm_R0_upv_ctl.translateZ",
u"leg_L0_mid_ctl.translateX",
u"leg_L0_mid_ctl.translateY",
u"leg_L0_mid_ctl.translateZ",
u"leg_R0_mid_ctl.translateX",
u"leg_R0_mid_ctl.translateY",
u"leg_R0_mid_ctl.translateZ",
u"arm_L0_mid_ctl.translateX",
u"arm_L0_mid_ctl.translateY",
u"arm_L0_mid_ctl.translateZ",
u"arm_R0_mid_ctl.translateX",
u"arm_R0_mid_ctl.translateY",
u"arm_R0_mid_ctl.translateZ",
u"arm_L0_ikRot_ctl.rotateX",
u"arm_L0_ikRot_ctl.rotateY",
u"arm_L0_ikRot_ctl.rotateZ",
u"arm_R0_ikRot_ctl.rotateX",
u"arm_R0_ikRot_ctl.rotateY",
u"arm_R0_ikRot_ctl.rotateZ",
]
def bakeMocap(*args):
start = pm.playbackOptions(query=True, min=True)
end = pm.playbackOptions(query=True, max=True)
if pm.selected() and pm.selected()[0].name()[-3:] == "ctl":
sel_namespace =[ ]
sel_namespace = cmds.ls( selection=True )
o_namespace = sel_namespace[0].rpartition(':')[0] + ":"
print(o_namespace)
if o_namespace == ":":
o_namespace = ""
n_gearbake = []
for o_bake in att_gearPlot:
n_gearbake.append(o_namespace + o_bake)
print (n_gearbake)
cmds.bakeResults(n_gearbake, simulation=True, t=(start,end),
sampleBy=1, oversamplingRate=1, disableImplicitControl=True, preserveOutsideKeys=True,
sparseAnimCurveBake=False, removeBakedAttributeFromLayer=False,
removeBakedAnimFromLayer=False, bakeOnOverrideLayer=False, minimizeRotation=True,
controlPoints=False, shape=True)
else:
pm.displayWarning("Please select on control of the rig to "
"determine wich character will be baked")
def characterizeBaked(*args):
# Load Plugins
if not cmds.pluginInfo('mayaHIK',q=True,l=True):
cmds.loadPlugin('mayaHIK')
if not cmds.pluginInfo('mayaCharacterization',q=True,l=True):
cmds.loadPlugin('mayaCharacterization')
if not cmds.pluginInfo('retargeterNodes',q=True,l=True):
cmds.loadPlugin('retargeterNodes')
# HIK Character Controls Tool
mel.eval('HIKCharacterControlsTool')
# Source the following scripts. If the code fails, then you'll have to load them and run them:
MAYA_LOCATION = os.environ['MAYA_LOCATION']
mel.eval('source "'+MAYA_LOCATION+'/scripts/others/hikGlobalUtils.mel"')
mel.eval('source "'+MAYA_LOCATION+'/scripts/others/hikCharacterControlsUI.mel"')
mel.eval('source "'+MAYA_LOCATION+'/scripts/others/hikDefinitionOperations.mel"')
mel.eval('hikCreateDefinition()')
mel.eval('setCharacterObject("Reference", "Character1",0,0);')
mel.eval('setCharacterObject("Hips", "Character1",1,0);')
mel.eval('setCharacterObject("LeftUpLeg", "Character1",2,0);')
mel.eval('setCharacterObject("LeftLeg", "Character1",3,0);')
mel.eval('setCharacterObject("LeftFoot", "Character1",4,0);')
mel.eval('setCharacterObject("RightUpLeg", "Character1",5,0);')
mel.eval('setCharacterObject("RightLeg", "Character1",6,0);')
mel.eval('setCharacterObject("RightFoot", "Character1",7,0);')
mel.eval('setCharacterObject("Spine", "Character1",8,0);')
mel.eval('setCharacterObject("LeftArm", "Character1",9,0);')
mel.eval('setCharacterObject("LeftForeArm", "Character1",10,0);')
mel.eval('setCharacterObject("LeftHand", "Character1",11,0);')
mel.eval('setCharacterObject("RightArm", "Character1",12,0);')
mel.eval('setCharacterObject("RightForeArm", "Character1",13,0);')
mel.eval('setCharacterObject("RightHand", "Character1",14,0);')
mel.eval('setCharacterObject("Head", "Character1",15,0);')
mel.eval('setCharacterObject("LeftToeBase", "Character1",16,0);')
mel.eval('setCharacterObject("RightToeBase", "Character1",17,0);')
mel.eval('setCharacterObject("LeftShoulder", "Character1",18,0);')
mel.eval('setCharacterObject("RightShoulder", "Character1",19,0);')
mel.eval('setCharacterObject("Neck", "Character1",20,0);')
mel.eval('setCharacterObject("Spine1", "Character1",23,0);')
mel.eval('setCharacterObject("Spine2", "Character1",24,0);')
mel.eval('setCharacterObject("Spine3", "Character1",25,0);')
mel.eval('setCharacterObject("LeftHandThumb1","Character1",50,0);')
mel.eval('setCharacterObject("LeftHandThumb2","Character1",51,0);')
mel.eval('setCharacterObject("LeftHandThumb3","Character1",52,0);')
mel.eval('setCharacterObject("LeftHandIndex1","Character1",54,0);')
mel.eval('setCharacterObject("LeftHandIndex2","Character1",55,0);')
mel.eval('setCharacterObject("LeftHandIndex3","Character1",56,0);')
mel.eval('setCharacterObject("LeftHandMiddle1","Character1",58,0);')
mel.eval('setCharacterObject("LeftHandMiddle2","Character1",59,0);')
mel.eval('setCharacterObject("LeftHandMiddle3","Character1",60,0);')
mel.eval('setCharacterObject("LeftHandRing1","Character1",62,0);')
mel.eval('setCharacterObject("LeftHandRing2","Character1",63,0);')
mel.eval('setCharacterObject("LeftHandRing3","Character1",64,0);')
mel.eval('setCharacterObject("LeftHandPinky1","Character1",66,0);')
mel.eval('setCharacterObject("LeftHandPinky2","Character1",67,0);')
mel.eval('setCharacterObject("LeftHandPinky3","Character1",68,0);')
mel.eval('setCharacterObject("RightHandThumb1","Character1",74,0);')
mel.eval('setCharacterObject("RightHandThumb2","Character1",75,0);')
mel.eval('setCharacterObject("RightHandThumb3","Character1",76,0);')
mel.eval('setCharacterObject("RightHandIndex1","Character1",78,0);')
mel.eval('setCharacterObject("RightHandIndex2","Character1",79,0);')
mel.eval('setCharacterObject("RightHandIndex3","Character1",80,0);')
mel.eval('setCharacterObject("RightHandMiddle1","Character1",82,0);')
mel.eval('setCharacterObject("RightHandMiddle2","Character1",83,0);')
mel.eval('setCharacterObject("RightHandMiddle3","Character1",84,0);')
mel.eval('setCharacterObject("RightHandRing1","Character1",86,0);')
mel.eval('setCharacterObject("RightHandRing2","Character1",87,0);')
mel.eval('setCharacterObject("RightHandRing3","Character1",88,0);')
mel.eval('setCharacterObject("RightHandPinky1","Character1",90,0);')
mel.eval('setCharacterObject("RightHandPinky2","Character1",91,0);')
mel.eval('setCharacterObject("RightHandPinky3","Character1",92,0);')
mel.eval('hikUpdateDefinitionUI;')
mel.eval('hikCreateControlRig;')
cmds.parent('Character1_Ctrl_Reference', 'Reference')
char_name = mel.eval('hikGetCurrentCharacter()')
print(char_name)
mel.eval('string $char_name = "%s"' % char_name)
cmd='hikEnableCharacter( $char_name, 2 );'
mel.eval(cmd)
mel.eval('hikUpdateSourceList()')
mel.eval('hikUpdateCurrentSourceFromUI()')
mel.eval('hikUpdateContextualUI()')
mel.eval('hikControlRigSelectionChangedCallback')
# Bake to Contrl Rig
mel.eval('hikBakeToControlRig 0;')
def setFPS(value):
if value == 15: unit = 'game'
elif value == 24: unit = 'film'
elif value == 25: unit = 'pal'
elif value == 30: unit = 'ntsc'
elif value == 48: unit = 'show'
elif value == 50: unit = 'palf'
elif value == 60: unit = 'ntscf'
else: unit = '%sfps' % fps
cmds.currentUnit(time=unit)
def do_import_mvn_fbx(*args):
if cmds.textFieldButtonGrp('mvn_fbx_file_name', query=True,text=True) == '':
cmds.confirmDialog( title='ERROR', message='Set Import FBX File!! ')
_thread.exit()
if cmds.textFieldButtonGrp('retarget_maya_scene', query=True,text=True) == '':
cmds.confirmDialog( title='ERROR', message='Set Import FBX File!! ')
_thread.exit()
cmds.file( force=True, new=True)
cmds.select(clear=True)
o_min = cmds.playbackOptions(query=True,animationStartTime=True)
o_max = cmds.playbackOptions(query=True,animationEndTime=True)
cmds.currentTime( o_min )
cmds.setAttr('persp.translate', 350, 360, 340, type="double3")
cmds.setAttr('persp.rotate', -28, 45, 0, type="double3")
cmds.setAttr('perspShape.centerOfInterest', 448.000)
mel.eval('FBXResetImport')
mel.eval('FBXImportConvertUnitString "cm"')
mel.eval('FBXImportFillTimeline -v false;')
mel.eval('FBXImportMode -v merge;')
mvn_fbx_file = cmds.textFieldButtonGrp('mvn_fbx_file_name', query=True,text=True)
mvn_fbx_file_name = os.path.basename(mvn_fbx_file)
print(mvn_fbx_file)
mel.eval('string $import_filepass = "%s"' % mvn_fbx_file)
mel.eval('FBXImport -file $import_filepass;')
setFPS(60)
# Set Start End frame from Hip Key
o_top_obj = "Reference"
cmds.select(o_top_obj,r=True)
cmds.select(hierarchy=True)
all_joints = all_joints = cmds.ls(selection=True)
for o_ch3 in all_joints:
if 'Hips' in o_ch3:
o_hip = o_ch3
break
# print(o_hip)
cmds.selectKey(o_hip,replace=True,attribute='translateX')
all_key_list = cmds.keyframe( query=True, selected=True)
try:
start_key = all_key_list[0]
except:
cmds.confirmDialog( title='WARNING', message='No Animation on Hip Joint !!')
_thread.exit()
print ("start_key",start_key)
key_length = len(all_key_list) -1
last_key = start_key + key_length
last_key_value = math.ceil(all_key_list[key_length])
print ("last_key_value",last_key_value)
cmds.playbackOptions(edit=True,animationStartTime=start_key)
cmds.playbackOptions(edit=True,animationEndTime=last_key_value)
cmds.playbackOptions(edit=True,minTime=start_key)
cmds.playbackOptions(edit=True,maxTime=last_key_value)
cmds.currentTime(start_key, edit=True)
#*---- Do Butterworth Filter With 60 FPS
cmds.select(all_joints,add=True )
mel.eval('string $last_key_value = "%s"' % last_key_value)
mel.eval('filterCurve -f butterworth -cof 7 -sr 60 -kof -s 0 -e $last_key_value ;')
#*---- Do HIK Charactrize & Bake to Control Rig
characterizeBaked()
#*---- Import Maya Scene used for Retargetting
import_SK_Rig_HIK_file = cmds.textFieldButtonGrp('retarget_maya_scene', query=True,text=True)
mel.eval('string $import_SK_Rig_HIK_file = "%s"' % import_SK_Rig_HIK_file)
mel.eval('file -import -type "mayaAscii" -ignoreVersion -ra true -mergeNamespacesOnClash true -namespace ":" -options "v=0;" -pr -importTimeRange "combine" $import_SK_Rig_HIK_file ;')
mel.eval('HIKCharacterControlsTool')
mel.eval('hikUpdateContextualUI()')
mel.eval('hikControlRigSelectionChangedCallback')
cmds.colorManagementPrefs(edit=True,cmEnabled=False)
mel.eval('setAttr "hardwareRenderingGlobals.floatingPointRTEnable" 1;')
mel.eval('setAttr "hardwareRenderingGlobals.defaultLightIntensity" 1;')
mel.eval('modelEditor -e -displayTextures true modelPanel4;')
#*---- Set Character & Source from List
allChar = cmds.optionMenuGrp("hikCharacterList", query=True, itemListLong=True)
optChrMenu = "hikCharacterList|OptionMenu"
for i in range(0, len(allChar)):
char_name = cmds.menuItem(allChar[i], query=True, label=True)
if char_name == "mGear_Mocap_interface":
cmds.optionMenu(optChrMenu, edit=True, select=i+1)
mel.eval('hikUpdateCurrentCharacterFromUI()')
break
allSource = cmds.optionMenuGrp("hikSourceList", query=True, itemListLong=True)
optSourceMenu = "hikSourceList|OptionMenu"
for i in range(0, len(allSource)):
source_name = cmds.menuItem(allSource[i], query=True, label=True)
if source_name == " Character1":
cmds.optionMenu(optSourceMenu, edit=True, select=i+1)
mel.eval('hikUpdateCurrentSourceFromUI()')
break
mel.eval('hikUpdateContextualUI()')
mel.eval('hikControlRigSelectionChangedCallback')
#*---------------- Bake to mGear Rig
cmds.select( clear=True )
cmds.select("body_C0_ctl", r=True )
bakeMocap()
#*---------------- Delete Unuesed Data
allChar = cmds.optionMenuGrp("hikCharacterList", query=True, itemListLong=True)
for i in range(1, len(allChar)):
delete_char_name = cmds.menuItem(allChar[i], query=True, label=True)
print(delete_char_name)
mel.eval('string $delete_char_name = "%s"' % delete_char_name)
cmd='hikDeleteCharacter( $delete_char_name);'
mel.eval(cmd)
del_list = ['mGear_Mocap_interface_Reference',
'HIKproperties3', 'HIKproperties4','HIKproperties5', 'HIKSK2State1',
'HIKSkeletonGeneratorNode1', 'HIKSkeletonGeneratorNode2', 'HIKSkeletonGeneratorNode3',
'HIKSkeletonGeneratorNode4', 'HIKSolverNode3', 'HIKSolverNode4', 'HIKSolverNode5',
'HIKState2SK3', 'HIKState2SK4', 'HIKState2SK5']
for o_del in del_list:
try:
cmds.delete(o_del)
except:
pass
delete_list_a = ["arm_R0_upv","arm_L0_upv","leg_L0_upv","leg_R0_upv"]
for del_a in delete_list_a:
try:
cmds.delete(del_a)
except:
pass
delete_list_b = ["R_MidP","L_MidP","LL_MidP","LR_MidP"]
for del_b in delete_list_b:
try:
cmds.delete(del_b)
except:
pass
try:
cmds.select("|Reference",r=True )
cmds.delete("|Reference")
except:
pass
# Delete Unused Nodes
mel.eval('MLdeleteUnused;')
cmds.select( clear=True )
cmds.select(allDagObjects=True,hierarchy=True)
cmds.select(allDependencyNodes=True,add=True)
unknownNodes = cmds.ls(type = 'unknown')
try:
for node in unknownNodes:
cmds.lockNode(node, lock = False)
cmds.delete(node)
except:
print('unknown is done once.')
# Curve euler filter
cmds.select("rig_controllers_grp",r=True )
cmds.filterCurve(f='euler')
cmds.select( clear=True )
#*----------------
def set_mvnfbx_file(*args):
if cmds.optionVar( exists='ri_mvn_fbx_importpass' ):
mvn_fbx_dir = cmds.optionVar( q='ri_mvn_fbx_importpass' )
else:
mvn_fbx_dir = os.path.dirname(cmds.file( query=True, sceneName=True))
multipleFilters = "All Files (*.*)"
import_mvn_fbx_dir_name = cmds.fileDialog2(fileMode=1,fileFilter=multipleFilters,
dialogStyle=2,startingDirectory=mvn_fbx_dir)
if import_mvn_fbx_dir_name:
cmds.textFieldButtonGrp('mvn_fbx_file_name', edit=True, text=import_mvn_fbx_dir_name[0])
cmds.optionVar( sv=('ri_mvn_fbx_importpass', import_mvn_fbx_dir_name[0] ) )
def set_retarget_file(*args):
multipleFilters = "All Files (*.*)"
retarget_maya_scene_file = cmds.fileDialog2(fileMode=1,fileFilter=multipleFilters,
dialogStyle=2,startingDirectory="")
if retarget_maya_scene_file:
cmds.textFieldButtonGrp('retarget_maya_scene', edit=True, text=retarget_maya_scene_file[0])
cmds.optionVar( sv=('ri_retarget_maya_scene_file', retarget_maya_scene_file[0] ) )
def import_mvn_fbx_retarget_to_mgear_rig(*args):
try:
if not cmds.pluginInfo("fbxmaya",q=True,loaded=True):
cmds.loadPlugin( 'fbxmaya' )
cmds.pluginInfo( 'fbxmaya', edit=True, autoload=True )
except:
print('FBX plugin is not installed')
if cmds.optionVar( exists='ri_mvn_fbx_importpass' ):
mvn_fbx_dir = cmds.optionVar( q='ri_mvn_fbx_importpass' )
else:
mvn_fbx_dir = ""
if cmds.optionVar( exists='ri_retarget_maya_scene_file' ):
retarget_maya_file = cmds.optionVar( q='ri_retarget_maya_scene_file' )
else:
retarget_maya_file = ""
if cmds.window('ImportMVNFBX_ToMGEAR', exists=True):
cmds.deleteUI('ImportMVNFBX_ToMGEAR')
window = cmds.window('ImportMVNFBX_ToMGEAR', title='Import MVN FBX and retarget to mGear Rig V2.2',
sizeable=True, menuBar=True, topLeftCorner=[200, 200], widthHeight=(200, 200))
cmds.menu( label='File' )
cmds.menuItem( label='exit', command='cmds.deleteUI( "ImportMVNFBX_ToMGEAR" )' )
cmds.columnLayout(columnAttach=('both', 5), rowSpacing=8, columnWidth=200, adjustableColumn=True)
cmds.text(label='Import MVN FBX and Retarget to mGear Rig V2.2 - @ Ritaro',
width=200,bgc=[0.2,0.2,0.2],align='center' )
cmds.separator(height=3,style='out')
cmds.textFieldButtonGrp('mvn_fbx_file_name',label='MVN FBX File ',
text=mvn_fbx_dir, buttonLabel='Select Motion FBX',
columnWidth3=[100,300,30],adjustableColumn=2,buttonCommand=set_mvnfbx_file)
cmds.text(label='',width=5)
cmds.textFieldButtonGrp('retarget_maya_scene',label='Maya Retarget Scene file ',
text=retarget_maya_file, buttonLabel='SetFile',
columnWidth3=[155,300,30],adjustableColumn=2,buttonCommand=set_retarget_file)
cmds.separator(height=7)
cmds.separator(height=1,style=None)
cmds.rowLayout(numberOfColumns=3,adjustableColumn=2)
cmds.text(label='',width=10)
cmds.button('import_mobu_fbx_bot',label='Import MVN FBX and Retarget to mGear Rig !',
width=80,bgc=[1.0,0.2,0.2],command=do_import_mvn_fbx)
cmds.text(label='',width=10)
cmds.setParent('..')
cmds.text(label='',width=10)
cmds.showWindow(window) |