38 #define HUMANIK_VERSION_MAJOR 2016
39 #define HUMANIK_VERSION_MINOR 5
40 #define HUMANIK_VERSION_THIRD 2
44 #define HIK_EXPAND_TO_STRING_(x) #x
45 #define HIK_EXPAND_TO_STRING(x) HIK_EXPAND_TO_STRING_(x)
47 #define HUMANIK_VERSION_STRING \
48 HIK_EXPAND_TO_STRING( HUMANIK_VERSION_MAJOR ) \
50 HIK_EXPAND_TO_STRING( HUMANIK_VERSION_MINOR ) \
52 HIK_EXPAND_TO_STRING( HUMANIK_VERSION_THIRD )
56 #define HIK_EXPORT extern
59 #if ( !defined(_MSC_VER) && !defined(HIK_API) )
62 #define HIK_API __cdecl
556 #if defined(HIK_VERBOSE)
576 bool HIKValidateGeometry(
const HIKCharacter *pCharacter);
965 const float pMin[3],
const float pMax[3],
966 const float pPreQ[4],
const float pPostQ[4],
968 eHIKRotationOrder pRotationOrder);
973 const double pMin[3],
const double pMax[3],
974 const double pPreQ[4],
const double pPostQ[4],
976 eHIKRotationOrder pRotationOrder);
987 float pMin,
float pMax,
bool pActive);
993 double pMin,
double pMax,
bool pActive);
1012 float pMin[3],
float pMax[3],
1013 float pPreQ[4],
float pPostQ[4],
1015 eHIKRotationOrder &pRotationOrder);
1020 double pMin[3],
double pMax[3],
1021 double pPreQ[4],
double pPostQ[4],
1023 eHIKRotationOrder &pRotationOrder);
2147 #define HIK_INTERNAL_PLACEHOLDER
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 ...
Activate maximum limit on Y axis.
Solves the toes of the left foot.
void HIKCharacterStateDestroy(HIKCharacterState *pCharacterState, HIKFree pFree)
Destroy HIKCharacterState pCharacterState.
float HIKGetRotationActive(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
Retrieve the Reach Rotation constraint for Effector pEffectorIndex.
Provides an IK goal point for the RightHandNodeId.
HIKEffectorSetState * HIKEffectorSetStateCreate(HIKMalloc pMalloc)
Create a new HIKEffectorSetState.
Provides an IK goal point for the last Node in the ring finger of the left hand.
size_t mQOffset
Specifies the offset of the quaternion rotation data within each data block.
Solves the character's right arm, from RightShoulderNodeId to RightHandNodeId inclusive.
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.
Activate maximum limit on X axis.
size_t mTOffset
Specifies the offset of the translation data within each data block.
enum HIKToken eHIKToken
see enum HIKToken
void HIKCharacterDestroy(HIKCharacter *pCharacter, HIKFree pFree)
Destroy HIKCharacter pCharacter.
Represents the right elbow (HIKNodeId::RightElbowNodeId).
void HIKSetTranslationLimitsd(HIKCharacter *pCharacter, int pNodeId, double pMin, double pMax, bool pActive)
Set the translation limits for Node pNodeId.
int HIKGetIKSolvingStep(const HIKEffectorSetState *pEffectorSetState)
Retrieve the IK solving steps currently set for HIKEffectorSetState pEffectorSetState.
Provides an IK goal point for the RightElbowNodeId.
Solves the fingers of the left hand.
HIKSolvingStep
Lists the solving steps supported by the IK solver.
Provides an IK goal point for the last Node in the middle finger of the right hand.
void HIKGetEffectorStatedv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, double pXForm[16])
Retrieve the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState.
int HIKEffectorIdFromEffectorName(const char *pName)
Retrieve the Effector ID from a descriptive name.
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 pCh...
HIKLimitActiveMask
Lists the possible types of limits that can be activated for a Node.
A description of a data set that contains separate translation, quaternion rotation, and scaling values for multiple Effectors in an HIKEffectorSetState.
Solves the character's left leg, from LeftHipNodeId to LeftFootNodeId inclusive.
enum sHIKDataDescription::@2 mTransformSpace
Indicates whether your Node data is expressed in local or global space.
Solves the character's right leg, from RightHipNodeId to RightFootNodeId inclusive.
int mUsedNodes[LastNodeId]
An array of integers that contains an element for each Node known to HumanIK, listed in the HIKNodeId...
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.
size_t mParameterOffset
pecifies the offset of the IK constraint data within each data block.
Provides an IK goal point for the LeftAnkleNodeId.
Marks the end of the enumeration.
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.
void(* HIKFree)(void *)
Memory de-allocator function.
size_t mStride
Specifies the total size of each data block.
void HIKInverseJoint(HIKCharacter *pCharacter, eHIKMiddleJoint pJoint, int pInverse)
Reverses the direction in which a middle joint bends, such as a knee or elbow.
HIKToken
Lists special values that you can use within the list of Node IDs in a data description.
void HIKGetDefaultState(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
Retrieve the default T-stance for character pCharacter, storing it in HIKCharacterState pCharacterSta...
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 HIKCharac...
Marks the end of the enumeration.
Provides an IK goal point for the last Node in the extra finger of the left hand. ...
Solves the fingers of the right hand.
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 HIKCharacte...
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 HIKCharac...
Provides an IK goal point for the LeftShoulderNodeId.
Provides an IK goal point for the last Node in the extra toe of the right foot.
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 pEffecto...
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 pEf...
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 HIK...
Provides an IK goal point for the last Node in the thumb of the left hand.
size_t mStride
Specifies the total size of each data block.
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 ...
void HIKSetRotationOrder(HIKCharacter *pCharacter, int pNodeId, eHIKRotationOrder pRotationOrder)
Sets the order in which the axes are specified in the limits set for Node pNodeId.
void HIKSetNodeStatedv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const double pXForm[16])
Set the transform matrix of Node pNodeId in HIKCharacterState pCharacterState.
float HIKGetHandPullHips(const HIKEffectorSetState *pEffectorSetState, int pLeft)
Retrieve the amount of pull the left or right hand can exert on the hips.
HIKCharacterState * HIKCharacterStateCreateInPlace(const HIKCharacter *pCharacter, void *pBuffer)
Create a new HIKCharacterState in the buffer pBuffer.
float HIKGetTranslationActive(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
Retrieve the Reach Translation constraint for Effector pEffectorIndex.
void HIKGetNodeStatefv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pXForm[16])
Retrieve the transform matrix of Node pNodeId in HIKCharacterState pCharacterState.
void HIKSolveForEffectorSetFloorContactApprox(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the floor contact approximation solver for character pCharacter.
int HIKIsJointInverted(const HIKCharacter *pCharacter, eHIKMiddleJoint pJoint)
Indicates whether or not a middle joint is inverted.
Provides an IK goal point for the LeftHipNodeId.
Provides an IK goal point for the last Node in the ring toe of the left foot.
Data is expressed in global space.
HIKRotationOrder
Lists the possible rotation orders for the values set in the HIKSetRotationOrder() function...
void HIKSetResist(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
Set the Resist constraint for Effector pEffectorIndex.
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 pEf...
Adjusts the translation of the character's hips, if necessary.
void HIKGetEffectorStateDataTQS(const HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescription *pDataDescription, void *pDataSet)
Retrieve the translation (T), quaternion rotation (Q), scaling (S), and IK constraints of multiple Ef...
size_t mTOffset
Specifies the offset of the translation data within each data block.
void HIKSetPreQdv(HIKCharacter *pCharacter, int pNodeId, const double pPreQ[4])
Apply the pre rotation pPreQ to Node pNodeId.
struct sHIKEffectorDataDescription HIKEffectorDataDescription
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 H...
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...
Provides an IK goal point for the last Node in the ring finger of the right hand. ...
HIKMiddleJoint
Lists the joints that can be inverted using the HIKInverseJoint() function.
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...
Activates Lock & Mirror modifiers.
size_t mStride
Specifies the total size of each data block.
Solves the character's neck and head, including NeckNodeId, Neck1NodeId to Neck9NodeId, and HeadNodeId.
void HIKGetRelaxPose(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
Calculate a basic seated pose for character pCharacter, storing it in HIKCharacterState pCharacterSta...
void HIKSolveForEffectorSetHipsTranslation(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the special hips translation solver for character pCharacter.
HIKNodeId
Lists all Nodes known to HumanIK, used to set up and access data for .
void HIKSetMinXYZRotationdv(HIKCharacter *pCharacter, int pNodeId, const double pMin[3], int pMinActiveMask)
Set the minimum rotation for the Node pNodeId.
Represents the left elbow (HIKNodeId::LeftElbowNodeId).
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...
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 t...
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 pNo...
A description of a data set that contains separate translation, quaternion rotation, and scaling values for multiple different Nodes in an HIKCharacterState.
void HIKSolveForEffectorSet(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Solve character pCharacter with HIKEffectorSetState pEffectorSetState and initial HIKCharacterState p...
size_t HIKEffectorSetStateSize()
Return the size of an HIKEffectorSetState object in bytes.
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.
Provides an IK goal point for the RightWristNodeId.
int HIKGetNodeUse(const HIKCharacter *pCharacter, int pNodeId)
Retrieve the characterization flag set for Node pNodeId in HIKCharacter pCharacter.
Activates the full-body Pull engine for the inverse kinematics solver.
Defines an HIKEffectorSetState.
void HIKGetParentOffsetdv(const HIKCharacter *pCharacter, int pNodeId, double pParentTOffset[4], double pParentQOffset[4], double pParentSOffset[4])
Retrieve the parent offset set for Node pNodeId.
Provides an IK goal point for the LeftKneeNodeId.
HIKEffectorId
Lists all Effectors used by HumanIK as goal points for IK solving.
Solves the character's left collar bones: LeftCollarNodeId and LeftCollarExtraNodeId.
Represents the right knee (HIKNodeId::RightKneeNodeId).
Provides an IK goal point for the last Node in the pinky toe of the right foot.
Provides an IK goal point for the WaistNodeId.
int * mHIKNodeId
A list of HumanIK Node IDs indicating which Node each of your data blocks applies to...
Provides an IK goal point for the RightAnkleNodeId.
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 chara...
Indicates the end of the list of Nodes.
Enables all solving steps listed above.
Activate minimum limit on X axis.
void HIKSetMinXYZRotationfv(HIKCharacter *pCharacter, int pNodeId, const float pMin[3], int pMinActiveMask)
Set the minimum rotation for the Node pNodeId.
A description of a data set that contains transform matrices for multiple different Nodes in an HIKCh...
Provides an IK goal point for the last Node in the thumb of the right hand.
Right foot floor contact.
void HIKAddQuadripedOffset(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
Add quadruped offsets to HIKCharacterState pCharacterState.
Provides an IK goal point for the last Node in the middle toe of the right foot.
void HIKSetIKSolvingStep(HIKEffectorSetState *pEffectorSetState, int pSolvingStep)
Set the IK solving steps for HIKEffectorSetState pEffectorSetState.
Enables the solving steps for all body parts, from HIKSolvingStepLeftShoulder to HIKSolvingStepSpine...
Provides an IK goal point for the last Node in the extra finger of the right hand.
Provides an IK goal point for the last Node in the thumb of the left foot.
Provides an IK goal point for the last Node in the pinky toe of the left foot.
void HIKSetPostQdv(HIKCharacter *pCharacter, int pNodeId, const double pPostQ[4])
Apply the post rotation pPostQ to the Node pNodeId.
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 H...
void HIKEulerFromQuat(const float quat[4], float euler[4])
Compute euler angles from a quaternion (default XYZ order)
float HIKGetPull(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
Retrieve the Pull constraint for Effector pEffectorIndex.
HIKEffectorSetState * HIKEffectorSetStateCreateInPlace(void *pBuffer)
Create a new HIKEffectorSetState in the buffer pBuffer.
Provides an IK goal point for the last Node in the middle toe of the left foot.
Provides an IK goal point for the last Node in the thumb of the right foot.
struct sHIKEffectorDataDescriptionMatrix HIKEffectorDataDescriptionMatrix
void HIKSetTranslationLimitsf(HIKCharacter *pCharacter, int pNodeId, float pMin, float pMax, bool pActive)
Set the translation limits for Node pNodeId.
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...
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 pEffecto...
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 pEf...
bool HIKCharacterizeGeometry(HIKCharacter *pCharacter)
Set up and initialize character pCharacter for solving.
Activates Squash & Strech for the right arm, from RightHipNodeId to RightFootNodeId inclusive...
void HIKSolveForEffectorSetModifiers(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the Mirror and Lock modifiers for character pCharacter.
size_t mMatrixOffset
Specifies the offset of the transform matrix within each data block.
size_t mSOffset
Specifies the offset of the scaling data within each data block.
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 desc...
Shifts a percentage of the roll rotation from the character's shoulders, elbows, hips and knees to th...
A description of a data set that contains transform matrices for multiple different Effectors in an H...
struct sHIKCharacterDefinition HIKCharacterDefinition
Indicates that the data block represented by this index should not be read by HumanIK.
enum HIKRotationOrder eHIKRotationOrder
see enum HIKRotationOrder
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, ...)
enum HIKMiddleJoint eHIKMiddleJoint
see enum HIKMiddleJoint
size_t mParameterOffset
Specifies the offset of the IK constraint data within each data block.
void HIKSolveForEffectorSetFloorContact(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the floor solver for character pCharacter.
Defines a character's properties.
Provides an IK goal point for the LeftHandNodeId.
void HIKSetEffectorStatefv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float pXForm[16])
Set the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState.
Provides an IK goal point for the last Node in the pinky finger of the left hand. ...
Solves the toes of the right foot.
void HIKSetHandPullHips(HIKEffectorSetState *pEffectorSetState, int pLeft, float pValue)
Set the amount of pull the left or right hand can exert on the hips.
void HIKSetTranslationActive(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
Set the Reach Translation constraint for Effector pEffectorIndex.
Provides an IK goal point for the last Node in the index toe of the left foot.
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.
void HIKGetNodeStatedv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, double pXForm[16])
Retrieve the transform matrix of Node pNodeId in HIKCharacterState pCharacterState.
int * mHIKEffectorId
A list of HumanIK Effector IDs indicating which Effector each of your data blocks applies to...
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 H...
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 HIKCharacterStat...
struct sHIKDataDescription HIKDataDescription
Data is expressed in local space.
void HIKSetPreQfv(HIKCharacter *pCharacter, int pNodeId, const float pPreQ[4])
Apply the pre rotation pPreQ to Node pNodeId.
int * mHIKNodeId
A list of HumanIK Node IDs indicating which Node each of your data blocks applies to...
Provides an IK goal point for an imaginary point on the character's skeleton that lies exactly half-w...
Provides an IK goal point for the last Node in the middle finger of the left hand.
struct sHIKDataDescriptionMatrix HIKDataDescriptionMatrix
void HIKGetParentOffsetfv(const HIKCharacter *pCharacter, int pNodeId, float pParentTOffset[4], float pParentQOffset[4], float pParentSOffset[4])
Retrieve the parent offset set for Node pNodeId.
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.
size_t mStride
Specifies the total size of each data block.
void HIKSubQuadripedOffset(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
Subtract quadruped offsets from HIKCharacterState pCharacterState.
Provides an IK goal point for the LeftFootNodeId.
Activates Squash & Strech for the left arm, from LeftHipNodeId to LeftFootNodeId inclusive.
size_t mQOffset
Specifies the offset of the quaternion rotation data within each data block.
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-st...
Provides an IK goal point for the last Node in the index finger of the right hand.
Provides an IK goal point for the LeftWristNodeId.
void HIKSolveForEffectorSetBegin(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Initializes an IK solve for character pCharacter.
Defines a pose for a character.
HIKCharacterState * HIKCharacterStateCreate(const HIKCharacter *pCharacter, HIKMalloc pMalloc)
Create a new HIKCharacterState.
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.
Provides an IK goal point for the last Node in the ring toe of the right foot.
void HIKEffectorSetStateDestroy(HIKEffectorSetState *pESetState, HIKFree pFree)
Destroy HIKEffectorSetState pESetState.
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 HIKCharacterSt...
void HIKSolveForEffectorSetHeadAndNeck(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the head and neck IK solver for character pCharacter.
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...
Activates the Foot and Hand Contact engine for the inverse kinematics solver.
Provides an IK goal point for the RightHipNodeId.
float HIKGetResist(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
Retrieve the Resist constraint for Effector pEffectorIndex.
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.
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...
Represents the left knee (HIKNodeId::LeftKneeNodeId).
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 pDat...
Configures the inverse kinematics solver to perform an initial approximate solving with the floor con...
An optional repository for the overall translation, rotation and scale of your character.
Node has a parent unknown to HumanIK, used for local space transform and DoF.
void HIKSolveForEffectorSetRollExtraction(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the roll extraction solver for character pCharacter.
Provides an IK goal point for the RightKneeNodeId.
void *(* HIKMalloc)(size_t)
Memory allocator function.
int * mHIKEffectorId
A list of HumanIK Effector IDs indicating which Effector each of your data blocks applies to...
void HIKSetPull(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
Set the Pull constraint for Effector pEffectorIndex.
const char * HIKNodeNameFromNodeId(int pNodeId)
Retrieve a descriptive name for Node pNodeId.
Provides an IK goal point for the HeadNodeId.
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.
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 HIKChara...
Provides an IK goal point for the RightFootNodeId.
void HIKEffectorSetFromCharacter(const HIKCharacter *pCharacter, HIKEffectorSetState *pEffectorSetState, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState)
Set up HIKEffectorSetState pEffectorSetState to match character pCharacter in HIKCharacterState pChar...
void HIKSetNodeStatefv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pXForm[16])
Set the transform matrix of Node pNodeId in HIKCharacterState pCharacterState.
Activates Squash & Strech for the right arm, from RightShoulderNodeId to RightHandNodeId inclusive...
size_t HIKCharacterStateSizeFromState(const HIKCharacterState *pCharacterState)
Returns the size of HIKCharacterState pCharacterState in bytes.
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...
size_t HIKCharacterStateSize(const HIKCharacter *pCharacter)
Returns the size in bytes required by any HIKCharacterState that defines a pose for HIKCharacter pCha...
void HIKSolveForCharacterRetarget(const HIKCharacter *pDstCharacter, HIKCharacterState *pDstCharacterState, const HIKCharacter *pSrcCharacter, const HIKCharacterState *pSrcCharacterState, const HIKPropertySetState *pDstPropertyState)
Simple rotation mapper between pSrcCharacter and pDstCharacter.
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 i...
Provides an IK goal point for the last Node in the extra toe of the left foot.
void HIKGetEffectorStateData(const HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescriptionMatrix *pDataDescription, void *pDataSet)
Retrieve the transform matrix and IK constraints of multiple Effectors from HIKEffectorSetState pEffe...
void HIKSetMaxXYZRotationdv(HIKCharacter *pCharacter, int pNodeId, const double pMax[3], int pMaxActiveMask)
Set the maximum rotation for the Node pNodeId.
const char * HIKEffectorNameFromEffectorId(int pEffectorId)
Retrieve a descriptive name for Effector pEffectorId.
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...
Solves the character's left arm, from LeftShoulderNodeId to LeftHandNodeId inclusive.
void HIKSetOriginalSnSLength(HIKCharacter *pCharacter, bool pFromCharacterizationPose, HIKCharacterState *pCharacterState)
Allow setting original length for joints from CharacterState instead of characterization pose (defaul...
Provides an IK goal point for an imaginary point on the character's skeleton that lies exactly half-w...
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...
Data is expressed in local space.
Provides an IK goal point for the last Node in the index toe of the right foot.
Data is expressed in global space.
Activates Squash & Strech for the left arm, from LeftShoulderNodeId to LeftHandNodeId inclusive...
void HIKQTransform(const float quat[4], const float p[4], float q[4])
Compute the result of a point tranformed by a quaternion.
Node is not characterized.
size_t mSOffset
Specifies the offset of the scaling data within each data block.
void HIKSetEffectorStateDataTQS(HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescription *pDataDescription, const void *pDataSet)
Set the translation (T), quaternion rotation (Q), scaling (S), and IK constraints of multiple Effecto...
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 pDat...
size_t HIKCharacterStateSizeFromDefinition(const HIKCharacterDefinition *pCharacterDefinition)
Returns the size in bytes required by any HIKCharacterState that defines a pose for an HIKCharacter b...
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 HIKChara...
void HIKSetEffectorStatedv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const double pXForm[16])
Set the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState.
Right hand floor contact.
Marks the end of the enumeration.
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 i...
Solves the character's spine, including WaistNodeId, and Spine1NodeId to Spine9NodeId.
Defines which Nodes are to be used by an HIKCharacter.
void HIKSetPostQfv(HIKCharacter *pCharacter, int pNodeId, const float pPostQ[4])
Apply the post rotation pPostQ to the Node pNodeId.
void HIKSetMaxXYZRotationfv(HIKCharacter *pCharacter, int pNodeId, const float pMax[3], int pMaxActiveMask)
Set the maximum rotation for the Node pNodeId.
size_t HIKCharacterSize(const HIKCharacter *pCharacter)
Returns the size of HIKCharacter pCharacter in bytes.
Defines a character to be used with HumanIK.
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 pEffecto...
HIKCharacter * HIKCharacterCreateInPlace(const HIKCharacterDefinition *pCharacterDefinition, void *pBuffer, const char *pValidationString)
Create a new HIKCharacter in the buffer pBuffer.
void HIKSolveForEffectorSetFingersAndToes(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the fingers and toes IK solver for character pCharacter.
void HIKGetEffectorStatefv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pXForm[16])
Retrieve the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState.
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 HIKCharacterStat...
void HIKSetRotationActive(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
Set the Reach Rotation constraint for Effector pEffectorIndex.
Provides an IK goal point for the last Node in the pinky finger of the right hand.
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 t...
Activate minimum limit on Y axis.
size_t mMatrixOffset
Specifies the offset of the transform matrix within each data block.
Provides an IK goal point for the LeftElbowNodeId.
void HIKSolveForEffectorSetArmsAndLegs(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the arms, legs and shoulders IK solver for character pCharacter.
Provides an IK goal point for the RightShoulderNodeId.
void HIKSolveForEffectorSetBodyPull(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the pull solver for character pCharacter.
size_t HIKCharacterDefinitionSize(const HIKCharacterDefinition *pCharacterDefinition)
Returns the size in bytes required by an HIKCharacter based on HIKCharacterDefinition pCharacterDefin...
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 HIKCharacterSt...
Provides an IK goal point for the last Node in the index finger of the left hand. ...
int HIKNodeIdFromNodeName(const char *pName)
Retrieve the Node ID from a descriptive name.
enum sHIKDataDescriptionMatrix::@3 mTransformSpace
Indicates whether your Node data is expressed in local or global space.
Solves the character's right collar bones: RightCollarNodeId and RightCollarExtraNodeId.
Activate maximum limit on Z axis.
HIKCharacter * HIKCharacterCreate(const HIKCharacterDefinition *pCharacterDefinition, HIKMalloc pMalloc, const char *pValidationString)
Create a new HIKCharacter.
Activate minimum limit on Z axis.
HIKNodeFlags
Flags used in the characterization process, in conjunction with HIKCharacterDefinition.