Python HIK?

Python HIK?

Anonymous
Not applicable
7,726 Views
5 Replies
Message 1 of 6

Python HIK?

Anonymous
Not applicable
Where are the Python or MEL commands to characterize and control HIK?
0 Likes
7,727 Views
5 Replies
Replies (5)
Message 2 of 6

Mark-j
Enthusiast
Enthusiast
It's all Mel, this is the main call to characterize a skeleton:

setCharacterObject

code is all here:

C:/Program Files/Autodesk/Maya2012/scripts/others/CharacterizeTool.mel

Enjoy!

Mark
CEO & founder : Red9 Consultancy Limited

http://red9consultancy.com

Author: Red9 StudioPack / Autodesk Masterclass 2011 - Live Animation Binding
http://area.autodesk.com/siggraph2011/masterclasses/class2
http://red9-consultancy.blogspot.com
Message 3 of 6

Anonymous
Not applicable
Found some, from: http://mayastation.typepad.com/maya-station/2011/04/maya-2012-hik-menus-and-mel-commands-part-1.html

To set the current character


//in this example I am setting Character 2

$gCurrentCharacter = "Character2";
refreshAllCharacterLists();

Once the character is set, we can use it with these commands

Locking the Character definition
characterizationLock();

Creating a new Characterization
characterizationCreate();

Creating a ControlRig
characterizationControlRigCreate();

Deleting a Control Rig
characterizationControlRigDelete();

Using the skeleton generator
skeletonGeneratorToolNewCharacter;

Setting the source for a HumanIK character
//to control rig
mayaHIKsetRigInput( "Character1" ); updateHIKCharacterToolEnableCheckBox();

//to stance pose
mayaHIKsetStanceInput( "Character2" ); updateHIKCharacterToolEnableCheckBox();

//to set to a character input
mayaHIKsetCharacterInput( "Character1","Character2" ); updateHIKCharacterToolEnableCheckBox();

Choosing a keying mode, i.e. full-body, partial, or selection
//full body
optionVar -intValue keyFullBody 1; setKeyingMode( );


// body parts
optionVar -intValue keyFullBody 2; setKeyingMode( );


//selection
optionVar -intValue keyFullBody 3; setKeyingMode( );

Turning on and off pinning for individual effectors
//Here I am Character1_Ctrl_RightWristEffector as the effector

//unpinned
setAttr "Character1_Ctrl_RightWristEffector.pinning" 0;

//pin Translate
setAttr "Character1_Ctrl_RightWristEffector.pinning" 1;

//pin Rotate
setAttr "Character1_Ctrl_RightWristEffector.pinning" 2;

//pin all
setAttr "Character1_Ctrl_RightWristEffector.pinning" 3;

Baking the retarget to the control rig or skeleton
//Bake to Skeleton without opening the options
hikBakeToSkeleton 0;

//Bake to Skeleton with opening the options
hikBakeToSkeleton 1;

//Bake to Control Rig without opening the options
hikBakeToControlRig 0;

//Bake to Skeleton without opening the options
hikBakeToControlRig 1;
0 Likes
Message 4 of 6

Anonymous
Not applicable

For Maya 2019.2 none of the mel script here works and the .mel file associated doesn't exist. Have the procedures changed?

 

0 Likes
Message 5 of 6

Anonymous
Not applicable

I found the answer for those of us using maya 2019:

Open the file here: C:\Program Files\Autodesk\Maya2019\scripts\others\hikDefinitionOperations.mel
Use those procedures. 


To create a control rig you will find the correct code here: 
C:\Program Files\Autodesk\Maya2019\scripts\others\hikCharacterControlsUI.mel

You may need to source the files in Maya first. A post mentions how to do that here: https://forums.autodesk.com/t5/maya-animation-and-rigging/pythonic-mel-way-to-retarget-hik/td-p/7609...

so this code worked for me:

import maya.cmds as cmds
import maya.mel as mel
# 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('DeleteSkeletonDefinition();')
mel.eval('hikCreateDefinition()')

# -- Add joints to Definition.
mel.eval('setCharacterObject("root", "Character1",0,0);')
mel.eval('setCharacterObject("pelvis", "Character1",1,0);')
mel.eval('setCharacterObject("thigh_l", "Character1",2,0);')
mel.eval('setCharacterObject("calf_l", "Character1",3,0);')
mel.eval('setCharacterObject("foot_l", "Character1",4,0);')
mel.eval('setCharacterObject("thigh_r", "Character1",5,0);')
mel.eval('setCharacterObject("calf_r", "Character1",6,0);')
mel.eval('setCharacterObject("foot_r", "Character1",7,0);')
mel.eval('setCharacterObject("spine_01", "Character1",8,0);')
mel.eval('setCharacterObject("upperarm_l", "Character1",9,0);')
mel.eval('setCharacterObject("lowerarm_l", "Character1",10,0);')
mel.eval('setCharacterObject("hand_l", "Character1",11,0);')
mel.eval('setCharacterObject("upperarm_r", "Character1",12,0);')
mel.eval('setCharacterObject("lowerarm_r", "Character1",13,0);')
mel.eval('setCharacterObject("hand_r", "Character1",14,0);')
mel.eval('setCharacterObject("head", "Character1",15,0);')
mel.eval('setCharacterObject("ball_l", "Character1",16,0);')
mel.eval('setCharacterObject("ball_r", "Character1",17,0);')
mel.eval('setCharacterObject("clavicle_l", "Character1",18,0);')
mel.eval('setCharacterObject("clavicle_r", "Character1",19,0);')
mel.eval('setCharacterObject("neck_01", "Character1",20,0);')
#21 and 22 are extra wrists
mel.eval('setCharacterObject("spine_02", "Character1",23,0);')
mel.eval('setCharacterObject("spine_03", "Character1",24,0);')
#25-32 are additional spines
#33-42 are additional necks
mel.eval('setCharacterObject("thumb_01_l", "Character1",50,0);')
mel.eval('setCharacterObject("thumb_02_l", "Character1",51,0);')
mel.eval('setCharacterObject("thumb_03_l", "Character1",52,0);')
mel.eval('setCharacterObject("thumb_04_l_Jx", "Character1",53,0);')
mel.eval('setCharacterObject("index_01_l", "Character1",54,0);')
mel.eval('setCharacterObject("index_02_l", "Character1",55,0);')
mel.eval('setCharacterObject("index_03_l", "Character1",56,0);')
mel.eval('setCharacterObject("index_04_l_Jx", "Character1",57,0);')
mel.eval('setCharacterObject("middle_01_l", "Character1",58,0);')
mel.eval('setCharacterObject("middle_02_l", "Character1",59,0);')
mel.eval('setCharacterObject("middle_03_l", "Character1",60,0);')
mel.eval('setCharacterObject("middle_04_l_Jx", "Character1",61,0);')
mel.eval('setCharacterObject("ring_01_l", "Character1",62,0);')
mel.eval('setCharacterObject("ring_02_l", "Character1",63,0);')
mel.eval('setCharacterObject("ring_03_l", "Character1",64,0);')
mel.eval('setCharacterObject("ring_04_l_Jx", "Character1",65,0);')
mel.eval('setCharacterObject("pinky_01_l", "Character1",66,0);')
mel.eval('setCharacterObject("pinky_02_l", "Character1",67,0);')
mel.eval('setCharacterObject("pinky_03_l", "Character1",68,0);')
mel.eval('setCharacterObject("pinky_04_l_Jx", "Character1",69,0);')
#70-73 is left hand 6th finger
mel.eval('setCharacterObject("thumb_01_r", "Character1",74,0);')
mel.eval('setCharacterObject("thumb_02_r", "Character1",75,0);')
mel.eval('setCharacterObject("thumb_03_r", "Character1",76,0);')
mel.eval('setCharacterObject("thumb_04_r_Jx", "Character1",77,0);')
mel.eval('setCharacterObject("index_01_r", "Character1",78,0);')
mel.eval('setCharacterObject("index_02_r", "Character1",79,0);')
mel.eval('setCharacterObject("index_03_r", "Character1",80,0);')
mel.eval('setCharacterObject("index_04_r_Jx", "Character1",81,0);')
mel.eval('setCharacterObject("middle_01_r", "Character1",82,0);')
mel.eval('setCharacterObject("middle_02_r", "Character1",83,0);')
mel.eval('setCharacterObject("middle_03_r", "Character1",84,0);')
mel.eval('setCharacterObject("middle_04_r_Jx", "Character1",85,0);')
mel.eval('setCharacterObject("ring_01_r", "Character1",86,0);')
mel.eval('setCharacterObject("ring_02_r", "Character1",87,0);')
mel.eval('setCharacterObject("ring_03_r", "Character1",88,0);')
mel.eval('setCharacterObject("ring_04_r_Jx", "Character1",89,0);')
mel.eval('setCharacterObject("pinky_01_r", "Character1",90,0);')
mel.eval('setCharacterObject("pinky_02_r", "Character1",91,0);')
mel.eval('setCharacterObject("pinky_03_r", "Character1",92,0);')
mel.eval('setCharacterObject("pinky_04_r_Jx", "Character1",93,0);')
#94-97 is 6th right hand finger
#98-101 is 6th left foot toe
#102-121 are left foot toes
#122-125 is 6th right foot toe
#126-145 are right foot toes
#146 is left hand thumb 0

mel.eval('hikUpdateDefinitionUI;')
mel.eval('LockSkeletonDefinition();')

mel.eval('hikCreateControlRig;')
cmds.parent('Character1_Ctrl_Reference', 'Character1_Root_CNT')





Message 6 of 6

ninhenzo64
Contributor
Contributor

maybe load hik plugin?

0 Likes