humanik.h File Reference

humanik.h File Reference
+ Related help topics:
#include <stddef.h>

File Description

Main header file for HumanIK.

This file contains the HumanIK retargeting and full-body IK solvers.

Classes

struct  HIKCharacterDefinition
 Defines which Nodes are to be used by an HIKCharacter. More...
 
struct  HIKDataDescription
 A description of a data set that contains separate translation, quaternion rotation, and scaling values for multiple different Nodes in an HIKCharacterState. More...
 
struct  HIKDataDescriptionMatrix
 A description of a data set that contains transform matrices for multiple different Nodes in an HIKCharacterState. More...
 
struct  HIKEffectorDataDescription
 A description of a data set that contains separate translation, quaternion rotation, and scaling values for multiple Effectors in an HIKEffectorSetState. More...
 
struct  HIKEffectorDataDescriptionMatrix
 A description of a data set that contains transform matrices for multiple different Effectors in an HIKEffectorSetState. More...
 

Typedefs

typedef enum HIKMiddleJoint eHIKMiddleJoint
 
typedef enum HIKRotationOrder eHIKRotationOrder
 
typedef enum HIKToken eHIKToken
 
typedef void(* HIKFree) (void *)
 
typedef void *(* HIKMalloc) (size_t)
 

Enumerations

enum  HIKEffectorId {
  HipsEffectorId = 0, LeftAnkleEffectorId, RightAnkleEffectorId, LeftWristEffectorId,
  RightWristEffectorId, LeftKneeEffectorId, RightKneeEffectorId, LeftElbowEffectorId,
  RightElbowEffectorId, ChestOriginEffectorId, ChestEndEffectorId, LeftFootEffectorId,
  RightFootEffectorId, LeftShoulderEffectorId, RightShoulderEffectorId, HeadEffectorId,
  LeftHipEffectorId, RightHipEffectorId, LeftHandEffectorId, RightHandEffectorId,
  LeftHandThumbEffectorId, LeftHandIndexEffectorId, LeftHandMiddleEffectorId, LeftHandRingEffectorId,
  LeftHandPinkyEffectorId, LeftHandExtraFingerEffectorId, RightHandThumbEffectorId, RightHandIndexEffectorId,
  RightHandMiddleEffectorId, RightHandRingEffectorId, RightHandPinkyEffectorId, RightHandExtraFingerEffectorId,
  LeftFootThumbEffectorId, LeftFootIndexEffectorId, LeftFootMiddleEffectorId, LeftFootRingEffectorId,
  LeftFootPinkyEffectorId, LeftFootExtraFingerEffectorId, RightFootThumbEffectorId, RightFootIndexEffectorId,
  RightFootMiddleEffectorId, RightFootRingEffectorId, RightFootPinkyEffectorId, RightFootExtraFingerEffectorId,
  LastEffectorId
}
 Lists all Effectors used by HumanIK as goal points for IK solving. More...
 
enum  HIKFloorContact {
  HIKLeftHandFloor =0, HIKRightHandFloor, HIKLeftFootFloor, HIKRightFootFloor,
  HIKLastFloorId
}
 Lists the surfaces that can be controlled by the floor contact engine. More...
 
enum  HIKLimitActiveMask {
  HIKActiveMinX = 1 << 0, HIKActiveMinY = 1 << 1, HIKActiveMinZ = 1 << 2, HIKActiveMaxX = 1 << 3,
  HIKActiveMaxY = 1 << 4, HIKActiveMaxZ = 1 << 5
}
 Lists the possible types of limits that can be activated for a Node. See HIKSetMinXYZRotationfv(), HIKSetMaxXYZRotationfv(), and HIKSetLimitsfv(). More...
 
enum  HIKMiddleJoint { HIKLeftKnee = 0, HIKRightKnee, HIKLeftElbow, HIKRightElbow }
 Lists the joints that can be inverted using the HIKInverseJoint() function. More...
 
enum  HIKNodeFlags {
  HIKNodeNotUsed = 0, HIKNodeUsed = 1 << 0, HIKNodeParentOffset = 1 << 1 | HIKNodeUsed, HIKNodeLimits = 1 << 2 | HIKNodeParentOffset,
  HIKNodeIsLeafRoll = 1 << 3
}
 Flags used in the characterization process, in conjunction with HIKCharacterDefinition. More...
 
enum  HIKNodeId {
  ReferenceNodeId = 0, HipsNodeId, LeftHipNodeId, LeftKneeNodeId,
  LeftAnkleNodeId, RightHipNodeId, RightKneeNodeId, RightAnkleNodeId,
  WaistNodeId, LeftShoulderNodeId, LeftElbowNodeId, LeftWristNodeId,
  RightShoulderNodeId, RightElbowNodeId, RightWristNodeId, HeadNodeId,
  LeftFootNodeId, RightFootNodeId, LeftCollarNodeId, RightCollarNodeId,
  NeckNodeId, LeftHandNodeId, RightHandNodeId, Spine1NodeId,
  Spine2NodeId, Spine3NodeId, Spine4NodeId, Spine5NodeId,
  Spine6NodeId, Spine7NodeId, Spine8NodeId, Spine9NodeId,
  Neck1NodeId, Neck2NodeId, Neck3NodeId, Neck4NodeId,
  Neck5NodeId, Neck6NodeId, Neck7NodeId, Neck8NodeId,
  Neck9NodeId, LeftHipRollNodeId, LeftKneeRollNodeId, RightHipRollNodeId,
  RightKneeRollNodeId, LeftShoulderRollNodeId, LeftElbowRollNodeId, RightShoulderRollNodeId,
  RightElbowRollNodeId, HipsTranslationId, LeftThumbANodeId, LeftThumbBNodeId,
  LeftThumbCNodeId, LeftThumbDNodeId, LeftIndexANodeId, LeftIndexBNodeId,
  LeftIndexCNodeId, LeftIndexDNodeId, LeftMiddleANodeId, LeftMiddleBNodeId,
  LeftMiddleCNodeId, LeftMiddleDNodeId, LeftRingANodeId, LeftRingBNodeId,
  LeftRingCNodeId, LeftRingDNodeId, LeftPinkyANodeId, LeftPinkyBNodeId,
  LeftPinkyCNodeId, LeftPinkyDNodeId, LeftExtraFingerANodeId, LeftExtraFingerBNodeId,
  LeftExtraFingerCNodeId, LeftExtraFingerDNodeId, RightThumbANodeId, RightThumbBNodeId,
  RightThumbCNodeId, RightThumbDNodeId, RightIndexANodeId, RightIndexBNodeId,
  RightIndexCNodeId, RightIndexDNodeId, RightMiddleANodeId, RightMiddleBNodeId,
  RightMiddleCNodeId, RightMiddleDNodeId, RightRingANodeId, RightRingBNodeId,
  RightRingCNodeId, RightRingDNodeId, RightPinkyANodeId, RightPinkyBNodeId,
  RightPinkyCNodeId, RightPinkyDNodeId, RightExtraFingerANodeId, RightExtraFingerBNodeId,
  RightExtraFingerCNodeId, RightExtraFingerDNodeId, LeftFootThumbANodeId, LeftFootThumbBNodeId,
  LeftFootThumbCNodeId, LeftFootThumbDNodeId, LeftFootIndexANodeId, LeftFootIndexBNodeId,
  LeftFootIndexCNodeId, LeftFootIndexDNodeId, LeftFootMiddleANodeId, LeftFootMiddleBNodeId,
  LeftFootMiddleCNodeId, LeftFootMiddleDNodeId, LeftFootRingANodeId, LeftFootRingBNodeId,
  LeftFootRingCNodeId, LeftFootRingDNodeId, LeftFootPinkyANodeId, LeftFootPinkyBNodeId,
  LeftFootPinkyCNodeId, LeftFootPinkyDNodeId, LeftExtraFootFingerANodeId, LeftExtraFootFingerBNodeId,
  LeftExtraFootFingerCNodeId, LeftExtraFootFingerDNodeId, RightFootThumbANodeId, RightFootThumbBNodeId,
  RightFootThumbCNodeId, RightFootThumbDNodeId, RightFootIndexANodeId, RightFootIndexBNodeId,
  RightFootIndexCNodeId, RightFootIndexDNodeId, RightFootMiddleANodeId, RightFootMiddleBNodeId,
  RightFootMiddleCNodeId, RightFootMiddleDNodeId, RightFootRingANodeId, RightFootRingBNodeId,
  RightFootRingCNodeId, RightFootRingDNodeId, RightFootPinkyANodeId, RightFootPinkyBNodeId,
  RightFootPinkyCNodeId, RightFootPinkyDNodeId, RightExtraFootFingerANodeId, RightExtraFootFingerBNodeId,
  RightExtraFootFingerCNodeId, RightExtraFootFingerDNodeId, LeftThumbInNodeId, LeftIndexInNodeId,
  LeftMiddleInNodeId, LeftRingInNodeId, LeftPinkyInNodeId, LeftExtraFingerInNodeId,
  RightThumbInNodeId, RightIndexInNodeId, RightMiddleInNodeId, RightRingInNodeId,
  RightPinkyInNodeId, RightExtraFingerInNodeId, LeftFootThumbInNodeId, LeftFootIndexInNodeId,
  LeftFootMiddleInNodeId, LeftFootRingInNodeId, LeftFootPinkyInNodeId, LeftExtraFootFingerInNodeId,
  RightFootThumbInNodeId, RightFootIndexInNodeId, RightFootMiddleInNodeId, RightFootRingInNodeId,
  RightFootPinkyInNodeId, RightExtraFootFingerInNodeId, LeftCollarExtraNodeId, RightCollarExtraNodeId,
  LastNodeId
}
 Lists all Nodes known to HumanIK, used to set up and access data for HIKCharacters. More...
 
enum  HIKRotationOrder {
  HIKOrderEulerXYZ = 0, HIKOrderEulerXYX, HIKOrderEulerXZY, HIKOrderEulerXZX,
  HIKOrderEulerYZX, HIKOrderEulerYZY, HIKOrderEulerYXZ, HIKOrderEulerYXY,
  HIKOrderEulerZXY, HIKOrderEulerZXZ, HIKOrderEulerZYX, HIKOrderEulerZYZ,
  HIKOrderSphericXYZ
}
 Lists the possible rotation orders for the values set in the HIKSetRotationOrder() function. More...
 
enum  HIKSolvingStep {
  HIKSolvingStepBodyPull = 1 << 0, HIKSolvingStepContact = 1 << 1, HIKSolvingStepContactApprox = 1 << 2, HIKSolvingStepLeftShoulder = 1 << 3,
  HIKSolvingStepRightShoulder = 1 << 4, HIKSolvingStepLeftArm = 1 << 5, HIKSolvingStepRightArm = 1 << 6, HIKSolvingStepLeftLeg = 1 << 7,
  HIKSolvingStepRightLeg = 1 << 8, HIKSolvingStepLeftHand = 1 << 9, HIKSolvingStepRightHand = 1 << 10, HIKSolvingStepLeftFoot = 1 << 11,
  HIKSolvingStepRightFoot = 1 << 12, HIKSolvingStepHead = 1 << 13, HIKSolvingStepSpine = 1 << 14, HIKSolvingStepHipsTranslation = 1 << 15,
  HIKSolvingStepRollExtraction = 1 << 16, HIKSolvingStepLeftArmSnS = 1 << 17, HIKSolvingStepRightArmSnS = 1 << 18, HIKSolvingStepLeftLegSnS = 1 << 19,
  HIKSolvingStepRightLegSnS = 1 << 20, HIKSolvingStepModifiers = 1 << 21, HIKSolvingStepAllParts, HIKSolvingStepAll = HIKSolvingStepBodyPull | HIKSolvingStepContact | HIKSolvingStepContactApprox | HIKSolvingStepAllParts | HIKSolvingStepHipsTranslation | HIKSolvingStepRollExtraction | HIKSolvingStepModifiers
}
 Lists the solving steps supported by the IK solver. Used when setting the solving steps that the solver should perform. See HIKSetIKSolvingStep() and HIKGetIKSolvingStep(). More...
 
enum  HIKToken { HIKNotUsed = -1, HIKLastNode = -2 }
 Lists special values that you can use within the list of Node IDs in a data description. See HIKDataDescription. More...
 

Functions

void HIKAddQuadripedOffset (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
 Add quadruped offsets to HIKCharacterState pCharacterState. More...
 
HIKCharacterHIKCharacterCreate (const HIKCharacterDefinition *pCharacterDefinition, HIKMalloc pMalloc, const char *pValidationString)
 Create a new HIKCharacter. More...
 
HIKCharacterHIKCharacterCreateInPlace (const HIKCharacterDefinition *pCharacterDefinition, void *pBuffer, const char *pValidationString)
 Create a new HIKCharacter in the buffer pBuffer. More...
 
size_t HIKCharacterDefinitionSize (const HIKCharacterDefinition *pCharacterDefinition)
 Returns the size in bytes required by an HIKCharacter based on HIKCharacterDefinition pCharacterDefinition. More...
 
void HIKCharacterDestroy (HIKCharacter *pCharacter, HIKFree pFree)
 Destroy HIKCharacter pCharacter. More...
 
bool HIKCharacterizeGeometry (HIKCharacter *pCharacter)
 Set up and initialize character pCharacter for solving. More...
 
size_t HIKCharacterSize (const HIKCharacter *pCharacter)
 Returns the size of HIKCharacter pCharacter in bytes. More...
 
HIKCharacterStateHIKCharacterStateCreate (const HIKCharacter *pCharacter, HIKMalloc pMalloc)
 Create a new HIKCharacterState. More...
 
HIKCharacterStateHIKCharacterStateCreateInPlace (const HIKCharacter *pCharacter, void *pBuffer)
 Create a new HIKCharacterState in the buffer pBuffer. More...
 
void HIKCharacterStateDestroy (HIKCharacterState *pCharacterState, HIKFree pFree)
 Destroy HIKCharacterState pCharacterState. More...
 
size_t HIKCharacterStateSize (const HIKCharacter *pCharacter)
 Returns the size in bytes required by any HIKCharacterState that defines a pose for HIKCharacter pCharacter. All HIKCharacterStates for a given character are always the same size. More...
 
size_t HIKCharacterStateSizeFromDefinition (const HIKCharacterDefinition *pCharacterDefinition)
 Returns the size in bytes required by any HIKCharacterState that defines a pose for an HIKCharacter based on HIKCharacterDefinition pCharacterDefinition. More...
 
size_t HIKCharacterStateSizeFromState (const HIKCharacterState *pCharacterState)
 Returns the size of HIKCharacterState pCharacterState in bytes. All HIKCharacterStates for a given character are always the same size. More...
 
int HIKEffectorIdFromEffectorName (const char *pName)
 Retrieve the Effector ID from a descriptive name. This is a utility function that maps between FBX and HIK. More...
 
const char * HIKEffectorNameFromEffectorId (int pEffectorId)
 Retrieve a descriptive name for Effector pEffectorId. This is a utility function that maps between FBX and HIK. More...
 
void HIKEffectorSetFromCharacter (const HIKCharacter *pCharacter, HIKEffectorSetState *pEffectorSetState, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState)
 Set up HIKEffectorSetState pEffectorSetState to match character pCharacter in HIKCharacterState pCharacterState. More...
 
HIKEffectorSetStateHIKEffectorSetStateCreate (HIKMalloc pMalloc)
 Create a new HIKEffectorSetState. More...
 
HIKEffectorSetStateHIKEffectorSetStateCreateInPlace (void *pBuffer)
 Create a new HIKEffectorSetState in the buffer pBuffer. More...
 
void HIKEffectorSetStateDestroy (HIKEffectorSetState *pESetState, HIKFree pFree)
 Destroy HIKEffectorSetState pESetState. More...
 
size_t HIKEffectorSetStateSize ()
 Return the size of an HIKEffectorSetState object in bytes. More...
 
void HIKEulerFromQuat (const float quat[4], float euler[4])
 Compute euler angles from a quaternion (default XYZ order) More...
 
void HIKGetCharacterizeNodeStatefv (const HIKCharacter *pCharacter, int pNodeId, float pXForm[16])
 Retrieve the transform matrix for the Node pNodeId when the character is standing in the default T-stance. More...
 
void HIKGetCharacterizeNodeStateTQSdv (const HIKCharacter *pCharacter, int pNodeId, double pT[4], double pQ[4], double pS[4])
 Retrieve the translation, orientation and scaling for the Node pNodeId when the character is standing in the default T-stance. More...
 
void HIKGetCharacterizeNodeStateTQSfv (const HIKCharacter *pCharacter, int pNodeId, float pT[4], float pQ[4], float pS[4])
 Retrieve the translation, orientation and scaling for the Node pNodeId when the character is standing in the default T-stance. More...
 
void HIKGetCharacterStateTransform (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescriptionMatrix *pDataDescription, void *pDataSet)
 Retrieve the transform matrices of multiple Nodes from HIKCharacterState pCharacterState, writing them to memory in data set pDataSet according to data description pDataDescription. More...
 
void HIKGetCharacterStateTransformQ (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, void *pDataSet)
 Retrieve the quaternion rotation (Q) of multiple Nodes from HIKCharacterState pCharacterState, writing them to memory in data set pDataSet according to data description pDataDescription. More...
 
void HIKGetCharacterStateTransformTQ (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, void *pDataSet)
 Retrieve the translation (T) and quaternion rotation (Q) of multiple Nodes from HIKCharacterState pCharacterState, writing them to memory in data set pDataSet according to data description pDataDescription. More...
 
void HIKGetCharacterStateTransformTQS (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, void *pDataSet)
 Retrieve the translation (T), quaternion rotation (Q) and scaling (S) of multiple Nodes from HIKCharacterState pCharacterState, writing them to memory in data set pDataSet according to data description pDataDescription. More...
 
void HIKGetCharacterStateTransformTQS_SoA (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, void *pDataSet)
 Retrieve the translation (T), quaternion rotation (Q) and scaling (S) of multiple Nodes from HIKCharacterState pCharacterState, writing them to memory in data set pDataSet according to data description pDataDescription. More...
 
void HIKGetDefaultState (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
 Retrieve the default T-stance for character pCharacter, storing it in HIKCharacterState pCharacterState. This function always returns the same stance for the given character. The default stance does not differ before and after you perform a solve. More...
 
void HIKGetDOFFromLocalQfv (const HIKCharacter *pCharacter, int pNodeId, const float pQuat[4], float pEuler[4])
 Compute the euler angle equivalent of a local quaternion, using the DOFs structures (pre-rotation, rotation order, ...) More...
 
void HIKGetEffectorFloorStatedv (const HIKEffectorSetState *pEffectorSetState, int pFloor, double pXForm[16])
 Retrieve the transform matrix of the oriented plane that the floor contact engine applies to one of your character's feet or hands. More...
 
void HIKGetEffectorFloorStatefv (const HIKEffectorSetState *pEffectorSetState, int pFloor, float pXForm[16])
 Retrieve the transform matrix of the oriented plane that the floor contact engine applies to one of your character's feet or hands. More...
 
void HIKGetEffectorFloorStateTQdv (const HIKEffectorSetState *pEffectorSetState, int pFloor, double pT[4], double pQ[4])
 Retrieve the translation and rotation in global space of the oriented plane that the floor contact engine applies to one of your character's feet or hands. More...
 
void HIKGetEffectorFloorStateTQfv (const HIKEffectorSetState *pEffectorSetState, int pFloor, float pT[4], float pQ[4])
 Retrieve the translation and rotation in global space of the oriented plane that the floor contact engine applies to one of your character's feet or hands. More...
 
void HIKGetEffectorStateData (const HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescriptionMatrix *pDataDescription, void *pDataSet)
 Retrieve the transform matrix and IK constraints of multiple Effectors from HIKEffectorSetState pEffectorSetState, writing them to memory in data set pDataSet according to data description pDataDescription. More...
 
void HIKGetEffectorStateDataTQS (const HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescription *pDataDescription, void *pDataSet)
 Retrieve the translation (T), quaternion rotation (Q), scaling (S), and IK constraints of multiple Effectors from HIKEffectorSetState pEffectorSetState, writing them to memory in data set pDataSet according to data description pDataDescription. More...
 
void HIKGetEffectorStatedv (const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, double pXForm[16])
 Retrieve the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState. More...
 
void HIKGetEffectorStateFromCharacterdv (const HIKCharacter *pCharacter, int pEffectorIndex, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState, double pXForm[16])
 Retrieve the transform matrix of Effector pEffectorIndex for character pCharacter in HIKCharacterState pCharacterState. More...
 
void HIKGetEffectorStateFromCharacterfv (const HIKCharacter *pCharacter, int pEffectorIndex, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState, float pXForm[16])
 Retrieve the transform matrix of Effector pEffectorIndex for character pCharacter in HIKCharacterState pCharacterState. More...
 
void HIKGetEffectorStatefv (const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pXForm[16])
 Retrieve the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState. More...
 
void HIKGetEffectorStateTQAlignfv (const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float *pTQ, size_t pTOffset, size_t pQOffset)
 Retrieve the translation (T) and quaternion rotation (Q) in global space of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState. Values are stored at specified offsets within a single array. More...
 
void HIKGetEffectorStateTQfv (const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pT[4], float pQ[4])
 Retrieve the translation (T) and quaternion rotation (Q) in global space of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState. Values are expressed using separate arrays. More...
 
void HIKGetEffectorStateTQSAlignfv (const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float *pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset)
 Retrieve the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState. Values are stored at specified offsets within a single array. More...
 
void HIKGetEffectorStateTQSdv (const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, double pT[4], double pQ[4], double pS[4])
 Retrieve the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState. Values are expressed using separate arrays. More...
 
void HIKGetEffectorStateTQSfv (const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pT[4], float pQ[4], float pS[4])
 Retrieve the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState. Values are expressed using separate arrays. More...
 
float HIKGetHandPullHips (const HIKEffectorSetState *pEffectorSetState, int pLeft)
 Retrieve the amount of pull the left or right hand can exert on the hips. More...
 
int HIKGetIKSolvingStep (const HIKEffectorSetState *pEffectorSetState)
 Retrieve the IK solving steps currently set for HIKEffectorSetState pEffectorSetState. More...
 
void HIKGetLimitsdv (const HIKCharacter *pCharacter, int pNodeId, double pMin[3], double pMax[3], double pPreQ[4], double pPostQ[4], int &pActiveMask, eHIKRotationOrder &pRotationOrder)
 Retrieve the limits set for Node pNodeId. More...
 
void HIKGetLimitsfv (const HIKCharacter *pCharacter, int pNodeId, float pMin[3], float pMax[3], float pPreQ[4], float pPostQ[4], int &pActiveMask, eHIKRotationOrder &pRotationOrder)
 Retrieve the limits set for Node pNodeId. More...
 
void HIKGetLocalQFromDOFfv (const HIKCharacter *pCharacter, int pNodeId, const float pEuler[4], float pQuat[4])
 Compute a local quaternion from an euler angle, using the DOFs structures (pre-rotation, rotation order, ...) More...
 
void HIKGetNodeStatedv (const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, double pXForm[16])
 Retrieve the transform matrix of Node pNodeId in HIKCharacterState pCharacterState. Values are expressed using separate arrays. More...
 
void HIKGetNodeStatefv (const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pXForm[16])
 Retrieve the transform matrix of Node pNodeId in HIKCharacterState pCharacterState. Values are expressed using separate arrays. More...
 
void HIKGetNodeStateTQAlignfv (const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float *pTQ, size_t pTOffset, size_t pQOffset)
 Retrieve the translation (T) and quaternion rotation (Q) in global space of Node pNodeId in HIKCharacterState pCharacterState. Values are stored at specified offsets within a single array. More...
 
void HIKGetNodeStateTQfv (const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4])
 Retrieve the translation (T) and quaternion rotation (Q) in global space of Node pNodeId in HIKCharacterState pCharacterState. Values are expressed using separate arrays. More...
 
void HIKGetNodeStateTQNonUniformSfv (const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4], float pS[4])
 Retrieve the translation (T), quaternion rotation (Q) and non-uniform scaling (S) in global space of Node pNodeId in HIKCharacterState pCharacterState. Values are expressed using separate arrays. More...
 
void HIKGetNodeStateTQSAlignfv (const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float *pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset)
 Retrieve the translation (T), quaternion rotation (Q) and scaling (S) in global space of Node pNodeId in HIKCharacterState pCharacterState. Values are stored at specified offsets within a single array. More...
 
void HIKGetNodeStateTQSdv (const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, double pT[4], double pQ[4], double pS[4])
 Retrieve the translation (T), quaternion rotation (Q) and scaling (S) in global space of Node pNodeId in HIKCharacterState pCharacterState. Values are expressed using separate arrays. More...
 
void HIKGetNodeStateTQSfv (const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4], float pS[4])
 Retrieve the translation (T), quaternion rotation (Q) and scaling (S) in global space of Node pNodeId in HIKCharacterState pCharacterState. Values are expressed using separate arrays. More...
 
int HIKGetNodeUse (const HIKCharacter *pCharacter, int pNodeId)
 Retrieve the characterization flag set for Node pNodeId in HIKCharacter pCharacter. More...
 
void HIKGetParentOffsetdv (const HIKCharacter *pCharacter, int pNodeId, double pParentTOffset[4], double pParentQOffset[4], double pParentSOffset[4])
 Retrieve the parent offset set for Node pNodeId. More...
 
void HIKGetParentOffsetfv (const HIKCharacter *pCharacter, int pNodeId, float pParentTOffset[4], float pParentQOffset[4], float pParentSOffset[4])
 Retrieve the parent offset set for Node pNodeId. More...
 
float HIKGetPull (const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
 Retrieve the Pull constraint for Effector pEffectorIndex. More...
 
void HIKGetRelaxPose (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
 Calculate a basic seated pose for character pCharacter, storing it in HIKCharacterState pCharacterState. More...
 
float HIKGetResist (const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
 Retrieve the Resist constraint for Effector pEffectorIndex. More...
 
float HIKGetRotationActive (const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
 Retrieve the Reach Rotation constraint for Effector pEffectorIndex. More...
 
float HIKGetTranslationActive (const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
 Retrieve the Reach Translation constraint for Effector pEffectorIndex. More...
 
void HIKInverseJoint (HIKCharacter *pCharacter, eHIKMiddleJoint pJoint, int pInverse)
 Reverses the direction in which a middle joint bends, such as a knee or elbow. More...
 
int HIKIsJointInverted (const HIKCharacter *pCharacter, eHIKMiddleJoint pJoint)
 Indicates whether or not a middle joint is inverted. More...
 
int HIKNodeIdFromNodeName (const char *pName)
 Retrieve the Node ID from a descriptive name. This is a utility function that maps between FBX and HIK. More...
 
const char * HIKNodeNameFromNodeId (int pNodeId)
 Retrieve a descriptive name for Node pNodeId. This is a utility function that maps between FBX and HIK. More...
 
void HIKQTransform (const float quat[4], const float p[4], float q[4])
 Compute the result of a point tranformed by a quaternion. More...
 
void HIKSetCharacterizeNodeStatedv (HIKCharacter *pCharacter, int pNodeId, const double pXForm[16])
 Set the transform matrix for the Node pNodeId when the character is standing in the default T-stance. More...
 
void HIKSetCharacterizeNodeStatefv (HIKCharacter *pCharacter, int pNodeId, const float pXForm[16])
 Set the transform matrix for the Node pNodeId when the character is standing in the default T-stance. More...
 
void HIKSetCharacterizeNodeStateTQSdv (HIKCharacter *pCharacter, int pNodeId, const double pT[4], const double pQ[4], const double pS[4])
 Set the translation, orientation and scaling for the Node pNodeId when the character is standing in the default T-stance. More...
 
void HIKSetCharacterizeNodeStateTQSfv (HIKCharacter *pCharacter, int pNodeId, const float pT[4], const float pQ[4], const float pS[4])
 Set the translation, orientation and scaling for the Node pNodeId when the character is standing in the default T-stance. More...
 
void HIKSetCharacterStateTransform (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescriptionMatrix *pDataDescription, const void *pDataSet)
 Set the transform matrix of multiple Nodes from data set pDataSet, interpreted according to data description pDataDescription. More...
 
void HIKSetCharacterStateTransformTQ (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, const void *pDataSet)
 Set the translation (T) and quaternion rotation (Q) of multiple Nodes from data set pDataSet, interpreted according to data description pDataDescription. More...
 
void HIKSetCharacterStateTransformTQS (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, const void *pDataSet)
 Set the translation (T), quaternion rotation (Q) and scaling (S) of multiple Nodes from data set pDataSet, interpreted according to data description pDataDescription. More...
 
void HIKSetCharacterStateTransformTQS_SoA (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, const void *pDataSet)
 Set the translation (T), quaternion rotation (Q) and scaling (S) of multiple Nodes from data set pDataSet, interpreted according to data description pDataDescription. More...
 
void HIKSetEffectorFloorStatedv (HIKEffectorSetState *pEffectorSetState, int pFloor, const double pXForm[16])
 Set the transform matrix of the oriented plane that the floor contact engine applies to one of your character's feet or hands. More...
 
void HIKSetEffectorFloorStatefv (HIKEffectorSetState *pEffectorSetState, int pFloor, const float pXForm[16])
 Set the transform matrix of the oriented plane that the floor contact engine applies to one of your character's feet or hands. More...
 
void HIKSetEffectorFloorStateTQdv (HIKEffectorSetState *pEffectorSetState, int pFloor, const double pT[4], const double pQ[4])
 Set the translation and rotation in global space of the oriented plane that the floor contact engine applies to one of your character's feet or hands. More...
 
void HIKSetEffectorFloorStateTQfv (HIKEffectorSetState *pEffectorSetState, int pFloor, const float pT[4], const float pQ[4])
 Set the translation and rotation in global space of the oriented plane that the floor contact engine applies to one of your character's feet or hands. More...
 
void HIKSetEffectorStateData (HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescriptionMatrix *pDataDescription, const void *pDataSet)
 Set the transform matrix and IK constraints of multiple Effectors from data set pDataSet, interpreted according to data description pDataDescription. More...
 
void HIKSetEffectorStateDataTQS (HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescription *pDataDescription, const void *pDataSet)
 Set the translation (T), quaternion rotation (Q), scaling (S), and IK constraints of multiple Effectors from data set pDataSet, interpreted according to data description pDataDescription. More...
 
void HIKSetEffectorStatedv (HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const double pXForm[16])
 Set the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState. More...
 
void HIKSetEffectorStatefv (HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float pXForm[16])
 Set the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState. More...
 
void HIKSetEffectorStateTQAlignfv (HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float *pTQ, size_t pTOffset, size_t pQOffset)
 Set the translation (T) and quaternion rotation (Q) in global space of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState. Values are read from specified offsets within a single array. More...
 
void HIKSetEffectorStateTQSAlignfv (HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float *pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset)
 Set the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState. Values are read from specified offsets within a single array. More...
 
void HIKSetEffectorStateTQSdv (HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const double pT[4], const double pQ[4], const double pS[4])
 Set the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState. Values are provided in separate arrays. More...
 
void HIKSetEffectorStateTQSfv (HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float pT[4], const float pQ[4], const float pS[4])
 Set the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState. Values are provided in separate arrays. More...
 
void HIKSetHandPullHips (HIKEffectorSetState *pEffectorSetState, int pLeft, float pValue)
 Set the amount of pull the left or right hand can exert on the hips. More...
 
void HIKSetIKSolvingStep (HIKEffectorSetState *pEffectorSetState, int pSolvingStep)
 Set the IK solving steps for HIKEffectorSetState pEffectorSetState. More...
 
void HIKSetLimitsdv (HIKCharacter *pCharacter, int pNodeId, const double pMin[3], const double pMax[3], const double pPreQ[4], const double pPostQ[4], int pActiveMask, eHIKRotationOrder pRotationOrder)
 Set up limits for Node pNodeId. More...
 
void HIKSetLimitsfv (HIKCharacter *pCharacter, int pNodeId, const float pMin[3], const float pMax[3], const float pPreQ[4], const float pPostQ[4], int pActiveMask, eHIKRotationOrder pRotationOrder)
 Set up limits for Node pNodeId. More...
 
void HIKSetMaxXYZRotationdv (HIKCharacter *pCharacter, int pNodeId, const double pMax[3], int pMaxActiveMask)
 Set the maximum rotation for the Node pNodeId. More...
 
void HIKSetMaxXYZRotationfv (HIKCharacter *pCharacter, int pNodeId, const float pMax[3], int pMaxActiveMask)
 Set the maximum rotation for the Node pNodeId. More...
 
void HIKSetMinXYZRotationdv (HIKCharacter *pCharacter, int pNodeId, const double pMin[3], int pMinActiveMask)
 Set the minimum rotation for the Node pNodeId. More...
 
void HIKSetMinXYZRotationfv (HIKCharacter *pCharacter, int pNodeId, const float pMin[3], int pMinActiveMask)
 Set the minimum rotation for the Node pNodeId. More...
 
void HIKSetNodeStatedv (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const double pXForm[16])
 Set the transform matrix of Node pNodeId in HIKCharacterState pCharacterState. More...
 
void HIKSetNodeStatefv (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pXForm[16])
 Set the transform matrix of Node pNodeId in HIKCharacterState pCharacterState. More...
 
void HIKSetNodeStateTQAlignfv (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float *pTQ, size_t pTOffset, size_t pQOffset)
 Set the translation (T) and quaternion rotation (Q) in global space of Node pNodeId in HIKCharacterState pCharacterState. Values are read from specified offsets within a single array. More...
 
void HIKSetNodeStateTQfv (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pT[4], const float pQ[4])
 Set the translation (T) and quaternion rotation (Q) in global space of Node pNodeId in HIKCharacterState pCharacterState. Values are expressed using separate arrays. More...
 
void HIKSetNodeStateTQNonUniformSfv (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pT[4], const float pQ[4], const float pS[4])
 Set the translation (T), quaternion rotation (Q) and non-uniform scaling (S) in global space of Node pNodeId in HIKCharacterState pCharacterState. Values are expressed using separate arrays. More...
 
void HIKSetNodeStateTQSAlignfv (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float *pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset)
 Set the translation (T), quaternion rotation (Q) and scaling (S) in global space of Node pNodeId in HIKCharacterState pCharacterState. Values are read from specified offsets within a single array. More...
 
void HIKSetNodeStateTQSdv (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const double pT[4], const double pQ[4], const double pS[4])
 Set the translation (T), quaternion rotation (Q) and scaling (S) in global space of Node pNodeId in HIKCharacterState pCharacterState. Values are expressed using separate arrays. More...
 
void HIKSetNodeStateTQSfv (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pT[4], const float pQ[4], const float pS[4])
 Set the translation (T), quaternion rotation (Q) and scaling (S) in global space of Node pNodeId in HIKCharacterState pCharacterState. Values are expressed using separate arrays. More...
 
void HIKSetNodeStateTQSfvComputeDependent (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float *pT, const float *pQ, const float *pS, const bool pLocal)
 Set the translation (T), quaternion rotation (Q) and scaling (S) in global or local space of Node pNodeId in HIKCharacterState pCharacterState. Values are expressed using separate arrays and update dependent nodes. More...
 
void HIKSetOriginalSnSLength (HIKCharacter *pCharacter, bool pFromCharacterizationPose, HIKCharacterState *pCharacterState)
 Allow setting original length for joints from CharacterState instead of characterization pose (default) More...
 
void HIKSetParentOffsetdv (HIKCharacter *pCharacter, int pNodeId, const double pParentTOffset[4], const double pParentQOffset[4], const double pParentSOffset[4])
 Set the parent offset for Node pNodeId. More...
 
void HIKSetParentOffsetfv (HIKCharacter *pCharacter, int pNodeId, const float pParentTOffset[4], const float pParentQOffset[4], const float pParentSOffset[4])
 Set the parent offset for Node pNodeId. More...
 
void HIKSetPostQdv (HIKCharacter *pCharacter, int pNodeId, const double pPostQ[4])
 Apply the post rotation pPostQ to the Node pNodeId. More...
 
void HIKSetPostQfv (HIKCharacter *pCharacter, int pNodeId, const float pPostQ[4])
 Apply the post rotation pPostQ to the Node pNodeId. More...
 
void HIKSetPreQdv (HIKCharacter *pCharacter, int pNodeId, const double pPreQ[4])
 Apply the pre rotation pPreQ to Node pNodeId. More...
 
void HIKSetPreQfv (HIKCharacter *pCharacter, int pNodeId, const float pPreQ[4])
 Apply the pre rotation pPreQ to Node pNodeId. More...
 
void HIKSetPull (HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
 Set the Pull constraint for Effector pEffectorIndex. More...
 
void HIKSetResist (HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
 Set the Resist constraint for Effector pEffectorIndex. More...
 
void HIKSetRotationActive (HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
 Set the Reach Rotation constraint for Effector pEffectorIndex. More...
 
void HIKSetRotationOrder (HIKCharacter *pCharacter, int pNodeId, eHIKRotationOrder pRotationOrder)
 Sets the order in which the axes are specified in the limits set for Node pNodeId. More...
 
void HIKSetTranslationActive (HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
 Set the Reach Translation constraint for Effector pEffectorIndex. More...
 
void HIKSetTranslationLimitsd (HIKCharacter *pCharacter, int pNodeId, double pMin, double pMax, bool pActive)
 Set the translation limits for Node pNodeId. More...
 
void HIKSetTranslationLimitsf (HIKCharacter *pCharacter, int pNodeId, float pMin, float pMax, bool pActive)
 Set the translation limits for Node pNodeId. More...
 
void HIKSolveForCharacter (const HIKCharacter *pDstCharacter, HIKCharacterState *pCharacterState, const HIKCharacter *pSrcCharacter, const HIKCharacterState *pSrcCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pDstPropertyState, const HIKPropertySetState *pSrcPropertyState)
 Given source character pSrcCharacter with HIKCharacterState pSrcCharacterState, calculate HIKCharacterState pCharacterState for destination character pDstCharacter. More...
 
void HIKSolveForCharacterPrepareEffectorSet (const HIKCharacter *pDstCharacter, HIKCharacterState *pDstCharacterState, const HIKCharacter *pSrcCharacter, const HIKCharacterState *pSrcCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pDstPropertyState, const HIKPropertySetState *pSrcPropertyState)
 Sync IK pEffectorSetState on source FK pSrcCharacterState and adjust IK relative to destination character pDstCharacter. More...
 
void HIKSolveForCharacterRetarget (const HIKCharacter *pDstCharacter, HIKCharacterState *pDstCharacterState, const HIKCharacter *pSrcCharacter, const HIKCharacterState *pSrcCharacterState, const HIKPropertySetState *pDstPropertyState)
 Simple rotation mapper between pSrcCharacter and pDstCharacter. More...
 
void HIKSolveForEffectorSet (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 Solve character pCharacter with HIKEffectorSetState pEffectorSetState and initial HIKCharacterState pCharacterState, storing results in pCharacterState. More...
 
void HIKSolveForEffectorSetArmsAndLegs (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 Call the arms, legs and shoulders IK solver for character pCharacter. More...
 
void HIKSolveForEffectorSetBegin (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 Initializes an IK solve for character pCharacter. More...
 
void HIKSolveForEffectorSetBodyPull (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 Call the pull solver for character pCharacter. More...
 
void HIKSolveForEffectorSetFingersAndToes (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 Call the fingers and toes IK solver for character pCharacter. More...
 
void HIKSolveForEffectorSetFloorContact (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 Call the floor solver for character pCharacter. More...
 
void HIKSolveForEffectorSetFloorContactApprox (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 Call the floor contact approximation solver for character pCharacter. More...
 
void HIKSolveForEffectorSetHeadAndNeck (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 Call the head and neck IK solver for character pCharacter. More...
 
void HIKSolveForEffectorSetHipsTranslation (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 Call the special hips translation solver for character pCharacter. More...
 
void HIKSolveForEffectorSetModifiers (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 Call the Mirror and Lock modifiers for character pCharacter. More...
 
void HIKSolveForEffectorSetRollExtraction (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
 Call the roll extraction solver for character pCharacter. More...
 
void HIKSubQuadripedOffset (const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
 Subtract quadruped offsets from HIKCharacterState pCharacterState. More...
 
bool HIKValidateGeometry (const HIKCharacter *pCharacter)
 
bool HIKValidateHierarchy (const HIKCharacterDefinition *pCharacterDefinition)
 

Typedef Documentation

typedef enum HIKToken eHIKToken

see enum HIKToken

HIKFree

Memory de-allocator function. This is exactly the same signature as free.

HIKMalloc

Memory allocator function. This is exactly the same signature as malloc.

Enumeration Type Documentation

Lists all Effectors used by HumanIK as goal points for IK solving.

See also
Mapping Joints to HumanIK Nodes and Effectors.
Enumerator
HipsEffectorId 

Provides an IK goal point for an imaginary point on the character's skeleton that lies exactly half-way between the placement of LeftHipNodeId and RightHipNodeId when the character is in its default T-stance.

LeftAnkleEffectorId 

Provides an IK goal point for the LeftAnkleNodeId.

RightAnkleEffectorId 

Provides an IK goal point for the RightAnkleNodeId.

LeftWristEffectorId 

Provides an IK goal point for the LeftWristNodeId.

RightWristEffectorId 

Provides an IK goal point for the RightWristNodeId.

LeftKneeEffectorId 

Provides an IK goal point for the LeftKneeNodeId.

RightKneeEffectorId 

Provides an IK goal point for the RightKneeNodeId.

LeftElbowEffectorId 

Provides an IK goal point for the LeftElbowNodeId.

RightElbowEffectorId 

Provides an IK goal point for the RightElbowNodeId.

ChestOriginEffectorId 

Provides an IK goal point for the WaistNodeId.

ChestEndEffectorId 

Provides an IK goal point for an imaginary point on the character's skeleton that lies exactly half-way between the placement of LeftShoulderNodeId and RightShoulderNodeId when the character is in its default T-stance.

LeftFootEffectorId 

Provides an IK goal point for the LeftFootNodeId.

RightFootEffectorId 

Provides an IK goal point for the RightFootNodeId.

LeftShoulderEffectorId 

Provides an IK goal point for the LeftShoulderNodeId.

RightShoulderEffectorId 

Provides an IK goal point for the RightShoulderNodeId.

HeadEffectorId 

Provides an IK goal point for the HeadNodeId.

LeftHipEffectorId 

Provides an IK goal point for the LeftHipNodeId.

RightHipEffectorId 

Provides an IK goal point for the RightHipNodeId.

LeftHandEffectorId 

Provides an IK goal point for the LeftHandNodeId.

RightHandEffectorId 

Provides an IK goal point for the RightHandNodeId.

LeftHandThumbEffectorId 

Provides an IK goal point for the last Node in the thumb of the left hand.

LeftHandIndexEffectorId 

Provides an IK goal point for the last Node in the index finger of the left hand.

LeftHandMiddleEffectorId 

Provides an IK goal point for the last Node in the middle finger of the left hand.

LeftHandRingEffectorId 

Provides an IK goal point for the last Node in the ring finger of the left hand.

LeftHandPinkyEffectorId 

Provides an IK goal point for the last Node in the pinky finger of the left hand.

LeftHandExtraFingerEffectorId 

Provides an IK goal point for the last Node in the extra finger of the left hand.

RightHandThumbEffectorId 

Provides an IK goal point for the last Node in the thumb of the right hand.

RightHandIndexEffectorId 

Provides an IK goal point for the last Node in the index finger of the right hand.

RightHandMiddleEffectorId 

Provides an IK goal point for the last Node in the middle finger of the right hand.

RightHandRingEffectorId 

Provides an IK goal point for the last Node in the ring finger of the right hand.

RightHandPinkyEffectorId 

Provides an IK goal point for the last Node in the pinky finger of the right hand.

RightHandExtraFingerEffectorId 

Provides an IK goal point for the last Node in the extra finger of the right hand.

LeftFootThumbEffectorId 

Provides an IK goal point for the last Node in the thumb of the left foot.

LeftFootIndexEffectorId 

Provides an IK goal point for the last Node in the index toe of the left foot.

LeftFootMiddleEffectorId 

Provides an IK goal point for the last Node in the middle toe of the left foot.

LeftFootRingEffectorId 

Provides an IK goal point for the last Node in the ring toe of the left foot.

LeftFootPinkyEffectorId 

Provides an IK goal point for the last Node in the pinky toe of the left foot.

LeftFootExtraFingerEffectorId 

Provides an IK goal point for the last Node in the extra toe of the left foot.

RightFootThumbEffectorId 

Provides an IK goal point for the last Node in the thumb of the right foot.

RightFootIndexEffectorId 

Provides an IK goal point for the last Node in the index toe of the right foot.

RightFootMiddleEffectorId 

Provides an IK goal point for the last Node in the middle toe of the right foot.

RightFootRingEffectorId 

Provides an IK goal point for the last Node in the ring toe of the right foot.

RightFootPinkyEffectorId 

Provides an IK goal point for the last Node in the pinky toe of the right foot.

RightFootExtraFingerEffectorId 

Provides an IK goal point for the last Node in the extra toe of the right foot.

LastEffectorId 

Marks the end of the enumeration.

enum HIKNodeId

Lists all Nodes known to HumanIK, used to set up and access data for HIKCharacters.

See also
Mapping Joints to HumanIK Nodes and Effectors.
Remarks
Some Nodes are required for all characters. Others are optional.
Enumerator
ReferenceNodeId 

An optional repository for the overall translation, rotation and scale of your character.

HipsNodeId 

Required.

LeftHipNodeId 

Required.

LeftKneeNodeId 

Required.

LeftAnkleNodeId 

Required.

RightHipNodeId 

Required.

RightKneeNodeId 

Required.

RightAnkleNodeId 

Required.

WaistNodeId 

Required.

LeftShoulderNodeId 

Required.

LeftElbowNodeId 

Required.

LeftWristNodeId 

Required.

RightShoulderNodeId 

Required.

RightElbowNodeId 

Required.

RightWristNodeId 

Required.

HeadNodeId 

Required.

LeftFootNodeId 

Optional.

RightFootNodeId 

Optional.

LeftCollarNodeId 

Optional.

RightCollarNodeId 

Optional.

NeckNodeId 

Optional.

LeftHandNodeId 

Optional.

RightHandNodeId 

Optional.

Spine1NodeId 

Optional.

Spine2NodeId 

Optional.

Spine3NodeId 

Optional.

Spine4NodeId 

Optional.

Spine5NodeId 

Optional.

Spine6NodeId 

Optional.

Spine7NodeId 

Optional.

Spine8NodeId 

Optional.

Spine9NodeId 

Optional.

Neck1NodeId 

Optional.

Neck2NodeId 

Optional.

Neck3NodeId 

Optional.

Neck4NodeId 

Optional.

Neck5NodeId 

Optional.

Neck6NodeId 

Optional.

Neck7NodeId 

Optional.

Neck8NodeId 

Optional.

Neck9NodeId 

Optional.

LeftHipRollNodeId 

Optional.

LeftKneeRollNodeId 

Optional.

RightHipRollNodeId 

Optional.

RightKneeRollNodeId 

Optional.

LeftShoulderRollNodeId 

Optional.

LeftElbowRollNodeId 

Optional.

RightShoulderRollNodeId 

Optional.

RightElbowRollNodeId 

Optional.

HipsTranslationId 

Optional.

LeftThumbANodeId 

Optional.

LeftThumbBNodeId 

Optional.

LeftThumbCNodeId 

Optional.

LeftThumbDNodeId 

Optional.

LeftIndexANodeId 

Optional.

LeftIndexBNodeId 

Optional.

LeftIndexCNodeId 

Optional.

LeftIndexDNodeId 

Optional.

LeftMiddleANodeId 

Optional.

LeftMiddleBNodeId 

Optional.

LeftMiddleCNodeId 

Optional.

LeftMiddleDNodeId 

Optional.

LeftRingANodeId 

Optional.

LeftRingBNodeId 

Optional.

LeftRingCNodeId 

Optional.

LeftRingDNodeId 

Optional.

LeftPinkyANodeId 

Optional.

LeftPinkyBNodeId 

Optional.

LeftPinkyCNodeId 

Optional.

LeftPinkyDNodeId 

Optional.

LeftExtraFingerANodeId 

Optional.

LeftExtraFingerBNodeId 

Optional.

LeftExtraFingerCNodeId 

Optional.

LeftExtraFingerDNodeId 

Optional.

RightThumbANodeId 

Optional.

RightThumbBNodeId 

Optional.

RightThumbCNodeId 

Optional.

RightThumbDNodeId 

Optional.

RightIndexANodeId 

Optional.

RightIndexBNodeId 

Optional.

RightIndexCNodeId 

Optional.

RightIndexDNodeId 

Optional.

RightMiddleANodeId 

Optional.

RightMiddleBNodeId 

Optional.

RightMiddleCNodeId 

Optional.

RightMiddleDNodeId 

Optional.

RightRingANodeId 

Optional.

RightRingBNodeId 

Optional.

RightRingCNodeId 

Optional.

RightRingDNodeId 

Optional.

RightPinkyANodeId 

Optional.

RightPinkyBNodeId 

Optional.

RightPinkyCNodeId 

Optional.

RightPinkyDNodeId 

Optional.

RightExtraFingerANodeId 

Optional.

RightExtraFingerBNodeId 

Optional.

RightExtraFingerCNodeId 

Optional.

RightExtraFingerDNodeId 

Optional.

LeftFootThumbANodeId 

Optional.

LeftFootThumbBNodeId 

Optional.

LeftFootThumbCNodeId 

Optional.

LeftFootThumbDNodeId 

Optional.

LeftFootIndexANodeId 

Optional.

LeftFootIndexBNodeId 

Optional.

LeftFootIndexCNodeId 

Optional.

LeftFootIndexDNodeId 

Optional.

LeftFootMiddleANodeId 

Optional.

LeftFootMiddleBNodeId 

Optional.

LeftFootMiddleCNodeId 

Optional.

LeftFootMiddleDNodeId 

Optional.

LeftFootRingANodeId 

Optional.

LeftFootRingBNodeId 

Optional.

LeftFootRingCNodeId 

Optional.

LeftFootRingDNodeId 

Optional.

LeftFootPinkyANodeId 

Optional.

LeftFootPinkyBNodeId 

Optional.

LeftFootPinkyCNodeId 

Optional.

LeftFootPinkyDNodeId 

Optional.

LeftExtraFootFingerANodeId 

Optional.

LeftExtraFootFingerBNodeId 

Optional.

LeftExtraFootFingerCNodeId 

Optional.

LeftExtraFootFingerDNodeId 

Optional.

RightFootThumbANodeId 

Optional.

RightFootThumbBNodeId 

Optional.

RightFootThumbCNodeId 

Optional.

RightFootThumbDNodeId 

Optional.

RightFootIndexANodeId 

Optional.

RightFootIndexBNodeId 

Optional.

RightFootIndexCNodeId 

Optional.

RightFootIndexDNodeId 

Optional.

RightFootMiddleANodeId 

Optional.

RightFootMiddleBNodeId 

Optional.

RightFootMiddleCNodeId 

Optional.

RightFootMiddleDNodeId 

Optional.

RightFootRingANodeId 

Optional.

RightFootRingBNodeId 

Optional.

RightFootRingCNodeId 

Optional.

RightFootRingDNodeId 

Optional.

RightFootPinkyANodeId 

Optional.

RightFootPinkyBNodeId 

Optional.

RightFootPinkyCNodeId 

Optional.

RightFootPinkyDNodeId 

Optional.

RightExtraFootFingerANodeId 

Optional.

RightExtraFootFingerBNodeId 

Optional.

RightExtraFootFingerCNodeId 

Optional.

RightExtraFootFingerDNodeId 

Optional.

LeftThumbInNodeId 

Optional.

LeftIndexInNodeId 

Optional.

LeftMiddleInNodeId 

Optional.

LeftRingInNodeId 

Optional.

LeftPinkyInNodeId 

Optional.

LeftExtraFingerInNodeId 

Optional.

RightThumbInNodeId 

Optional.

RightIndexInNodeId 

Optional.

RightMiddleInNodeId 

Optional.

RightRingInNodeId 

Optional.

RightPinkyInNodeId 

Optional.

RightExtraFingerInNodeId 

Optional.

LeftFootThumbInNodeId 

Optional.

LeftFootIndexInNodeId 

Optional.

LeftFootMiddleInNodeId 

Optional.

LeftFootRingInNodeId 

Optional.

LeftFootPinkyInNodeId 

Optional.

LeftExtraFootFingerInNodeId 

Optional.

RightFootThumbInNodeId 

Optional.

RightFootIndexInNodeId 

Optional.

RightFootMiddleInNodeId 

Optional.

RightFootRingInNodeId 

Optional.

RightFootPinkyInNodeId 

Optional.

RightExtraFootFingerInNodeId 

Optional.

LeftCollarExtraNodeId 

Optional.

RightCollarExtraNodeId 

Optional.

LastNodeId 

Marks the end of the enumeration.

Lists the solving steps supported by the IK solver. Used when setting the solving steps that the solver should perform. See HIKSetIKSolvingStep() and HIKGetIKSolvingStep().

Enumerator
HIKSolvingStepBodyPull 

Activates the full-body Pull engine for the inverse kinematics solver. You must specify this solving step in order for the solver to take the Pull and Resist settings of your Effectors into account.

HIKSolvingStepContact 

Activates the Foot and Hand Contact engine for the inverse kinematics solver. You must specify this solving step in order for the solver to prevent your character's feet and hands from passing through oriented planes such as floors and walls. See Foot and Hand Contact.

HIKSolvingStepContactApprox 

Configures the inverse kinematics solver to perform an initial approximate solving with the floor contact engine before invoking the full-body Pull engine. This first pass helps ensure that the Pull engine does not accidentally pull any other body parts through the oriented planes specified for your character's hands and feet. You should use this solving step if you use both the HIKSolvingStepBodyPull and HIKSolvingStepContact solving steps.

HIKSolvingStepLeftShoulder 

Solves the character's left collar bones: LeftCollarNodeId and LeftCollarExtraNodeId.

HIKSolvingStepRightShoulder 

Solves the character's right collar bones: RightCollarNodeId and RightCollarExtraNodeId.

HIKSolvingStepLeftArm 

Solves the character's left arm, from LeftShoulderNodeId to LeftHandNodeId inclusive.

HIKSolvingStepRightArm 

Solves the character's right arm, from RightShoulderNodeId to RightHandNodeId inclusive.

HIKSolvingStepLeftLeg 

Solves the character's left leg, from LeftHipNodeId to LeftFootNodeId inclusive.

HIKSolvingStepRightLeg 

Solves the character's right leg, from RightHipNodeId to RightFootNodeId inclusive.

HIKSolvingStepLeftHand 

Solves the fingers of the left hand. Note that LeftHandNodeId itself is included in HIKSolvingStepLeftArm.

HIKSolvingStepRightHand 

Solves the fingers of the right hand. Note that RightHandNodeId itself is included in HIKSolvingStepRightArm.

HIKSolvingStepLeftFoot 

Solves the toes of the left foot. Note that LeftFootNodeId itself is included in HIKSolvingStepLeftLeg.

HIKSolvingStepRightFoot 

Solves the toes of the right foot. Note that RightFootNodeId itself is included in HIKSolvingStepRightLeg.

HIKSolvingStepHead 

Solves the character's neck and head, including NeckNodeId, Neck1NodeId to Neck9NodeId, and HeadNodeId.

HIKSolvingStepSpine 

Solves the character's spine, including WaistNodeId, and Spine1NodeId to Spine9NodeId.

HIKSolvingStepHipsTranslation 

Adjusts the translation of the character's hips, if necessary.

HIKSolvingStepRollExtraction 

Shifts a percentage of the roll rotation from the character's shoulders, elbows, hips and knees to their respective roll bones. The percentage of the roll rotation that is extracted from the Nodes and applied to the roll Nodes is specified by a set of character properties. See General Properties.

HIKSolvingStepLeftArmSnS 

Activates Squash & Strech for the left arm, from LeftShoulderNodeId to LeftHandNodeId inclusive.

HIKSolvingStepRightArmSnS 

Activates Squash & Strech for the right arm, from RightShoulderNodeId to RightHandNodeId inclusive.

HIKSolvingStepLeftLegSnS 

Activates Squash & Strech for the left arm, from LeftHipNodeId to LeftFootNodeId inclusive.

HIKSolvingStepRightLegSnS 

Activates Squash & Strech for the right arm, from RightHipNodeId to RightFootNodeId inclusive.

HIKSolvingStepModifiers 

Activates Lock & Mirror modifiers.

HIKSolvingStepAllParts 

Enables the solving steps for all body parts, from HIKSolvingStepLeftShoulder to HIKSolvingStepSpine. Excludes pull, contact, hips translation, roll extraction and Squash 'n' Stretch.

HIKSolvingStepAll 

Enables all solving steps listed above.

Go to the source code of this file.