38 #define HUMANIK_VERSION_MAJOR 2016
39 #define HUMANIK_VERSION_MINOR 1
40 #define HUMANIK_VERSION_THIRD 0
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
497 typedef struct sHIKCharacterDefinition
517 #if defined(HIK_VERBOSE)
789 HIK_EXPORT
void HIK_API
HIKSetParentOffsetfv(
HIKCharacter *pCharacter,
int pNodeId,
const float pParentTOffset[4],
const float pParentQOffset[4],
const float pParentSOffset[4]);
793 HIK_EXPORT
void HIK_API
HIKSetParentOffsetdv(
HIKCharacter *pCharacter,
int pNodeId,
const double pParentTOffset[4],
const double pParentQOffset[4],
const double pParentSOffset[4]);
805 HIK_EXPORT
void HIK_API
HIKGetParentOffsetfv(
const HIKCharacter *pCharacter,
int pNodeId,
float pParentTOffset[4],
float pParentQOffset[4],
float pParentSOffset[4]);
809 HIK_EXPORT
void HIK_API
HIKGetParentOffsetdv(
const HIKCharacter *pCharacter,
int pNodeId,
double pParentTOffset[4],
double pParentQOffset[4],
double pParentSOffset[4]);
926 const float pMin[3],
const float pMax[3],
927 const float pPreQ[4],
const float pPostQ[4],
929 eHIKRotationOrder pRotationOrder);
934 const double pMin[3],
const double pMax[3],
935 const double pPreQ[4],
const double pPostQ[4],
937 eHIKRotationOrder pRotationOrder);
948 float pMin,
float pMax,
bool pActive);
954 double pMin,
double pMax,
bool pActive);
973 float pMin[3],
float pMax[3],
974 float pPreQ[4],
float pPostQ[4],
976 eHIKRotationOrder &pRotationOrder);
981 double pMin[3],
double pMax[3],
982 double pPreQ[4],
double pPostQ[4],
984 eHIKRotationOrder &pRotationOrder);
1610 typedef struct sHIKDataDescription
1648 typedef struct sHIKDataDescriptionMatrix
1929 typedef struct sHIKEffectorDataDescription
1952 typedef struct sHIKEffectorDataDescriptionMatrix
2043 HIK_EXPORT
void HIK_API
HIKQTransform(
const float quat[4],
const float p[4],
float q[4]);
2049 HIK_EXPORT
void HIK_API
HIKEulerFromQuat(
const float quat[4],
float euler[4]);
2108 #define HIK_INTERNAL_PLACEHOLDER
size_t mQOffset
Definition: humanik.h:1932
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 ...
Euler z, y, x.
Definition: humanik.h:677
void HIKCharacterStateDestroy(HIKCharacterState *pCharacterState, HIKFree pFree)
Destroy HIKCharacterState pCharacterState.
float HIKGetRotationActive(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
Retrieve the Reach Rotation constraint for Effector pEffectorIndex.
Definition: humanik.h:173
Right foot floor contact.
Definition: humanik.h:331
Definition: humanik.h:232
Solves the toes of the left foot. Note that LeftFootNodeId itself is included in HIKSolvingStepLeftLe...
Definition: humanik.h:362
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.
int * mHIKEffectorId
Definition: humanik.h:1937
Definition: humanik.h:298
void HIKCharacterDestroy(HIKCharacter *pCharacter, HIKFree pFree)
Destroy HIKCharacter pCharacter.
Activates Squash & Strech for the right arm, from RightHipNodeId to RightFootNodeId inclusive...
Definition: humanik.h:374
Definition: humanik.h:305
Represents the right elbow (HIKNodeId::RightElbowNodeId).
Definition: humanik.h:819
Definition: humanik.h:151
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.
bool HIKValidateGeometry(const HIKCharacter *pCharacter)
Euler x, z, x.
Definition: humanik.h:670
size_t mStride
Definition: humanik.h:1936
Euler y, x, z.
Definition: humanik.h:673
Definition: humanik.h:165
Solves the character's neck and head, including NeckNodeId, Neck1NodeId to Neck9NodeId, and HeadNodeId.
Definition: humanik.h:364
Euler x, y, x.
Definition: humanik.h:668
Definition: humanik.h:482
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. This is a utility function that maps between FBX an...
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...
Definition: humanik.h:128
HIKLimitActiveMask
Lists the possible types of limits that can be activated for a Node. See HIKSetMinXYZRotationfv(), HIKSetMaxXYZRotationfv(), and HIKSetLimitsfv().
Definition: humanik.h:651
Euler z, y, z.
Definition: humanik.h:678
A description of a data set that contains separate translation, quaternion rotation, and scaling values for multiple Effectors in an HIKEffectorSetState.
Definition: humanik.h:1929
Definition: humanik.h:240
Definition: humanik.h:236
Definition: humanik.h:157
Definition: humanik.h:301
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.
Definition: humanik.h:133
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.
Definition: humanik.h:299
HIKEffectorId
Lists all Effectors used by HumanIK as goal points for IK solving.
Definition: humanik.h:265
Definition: humanik.h:244
Left foot floor contact.
Definition: humanik.h:330
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. See HIKDataDescription.
Definition: humanik.h:1590
Definition: humanik.h:100
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...
Definition: humanik.h:194
Definition: humanik.h:276
Definition: humanik.h:273
Definition: humanik.h:253
enum HIKToken eHIKToken
Definition: humanik.h:1597
Definition: humanik.h:241
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...
Definition: humanik.h:485
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...
Euler x, z, y.
Definition: humanik.h:669
Definition: humanik.h:304
Definition: humanik.h:189
Definition: humanik.h:270
Definition: humanik.h:140
Definition: humanik.h:206
Definition: humanik.h:294
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...
Definition: humanik.h:123
Definition: humanik.h:159
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...
Definition: humanik.h:283
bool HIKValidateHierarchy(const HIKCharacterDefinition *pCharacterDefinition)
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 ...
HIKCharacterState * HIKCharacterStateCreateInPlace(const HIKCharacter *pCharacter, void *pBuffer)
Create a new HIKCharacterState in the buffer pBuffer.
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.
Definition: humanik.h:150
Definition: humanik.h:106
void *(* HIKMalloc)(size_t)
Definition: humanik.h:388
Solves the character's left arm, from LeftShoulderNodeId to LeftHandNodeId inclusive.
Definition: humanik.h:356
Definition: humanik.h:230
float HIKGetTranslationActive(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
Retrieve the Reach Translation constraint for Effector pEffectorIndex.
size_t mStride
Definition: humanik.h:1659
Definition: humanik.h:164
Definition: humanik.h:186
Definition: humanik.h:109
Activate minimum limit on X axis.
Definition: humanik.h:653
Euler z, x, y.
Definition: humanik.h:675
Definition: humanik.h:282
Definition: humanik.h:315
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.
Definition: humanik.h:310
Definition: humanik.h:122
void HIKSolveForEffectorSetFloorContactApprox(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the floor contact approximation solver for character pCharacter.
Definition: humanik.h:211
Definition: humanik.h:177
Definition: humanik.h:124
Definition: humanik.h:181
int HIKIsJointInverted(const HIKCharacter *pCharacter, eHIKMiddleJoint pJoint)
Indicates whether or not a middle joint is inverted.
Definition: humanik.h:192
Definition: humanik.h:137
Definition: humanik.h:112
Definition: humanik.h:269
Definition: humanik.h:176
Definition: humanik.h:271
Definition: humanik.h:135
HIKRotationOrder
Lists the possible rotation orders for the values set in the HIKSetRotationOrder() function...
Definition: humanik.h:665
Definition: humanik.h:220
void HIKSetResist(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
Set the Resist constraint for Effector pEffectorIndex.
Definition: humanik.h:200
Euler y, z, x.
Definition: humanik.h:671
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...
Definition: humanik.h:288
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...
Definition: humanik.h:162
void HIKSetPreQdv(HIKCharacter *pCharacter, int pNodeId, const double pPreQ[4])
Apply the pre rotation pPreQ to Node pNodeId.
HIKSolvingStep
Lists the solving steps supported by the IK solver. Used when setting the solving steps that the solv...
Definition: humanik.h:340
HIKCharacterState * HIKCharacterStateCreate(const HIKCharacter *pCharacter, HIKMalloc pMalloc)
Create a new HIKCharacterState.
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...
Definition: humanik.h:219
Right hand floor contact.
Definition: humanik.h:329
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...
Definition: humanik.h:208
Solves the fingers of the left hand. Note that LeftHandNodeId itself is included in HIKSolvingStepLef...
Definition: humanik.h:360
Definition: humanik.h:102
HIKMiddleJoint
Lists the joints that can be inverted using the HIKInverseJoint() function.
Definition: humanik.h:814
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...
Euler z, x, z.
Definition: humanik.h:676
Definition: humanik.h:144
size_t mQOffset
Definition: humanik.h:1620
Definition: humanik.h:156
HIKNodeId
Lists all Nodes known to HumanIK, used to set up and access data for HIKCharacters.
Definition: humanik.h:77
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.
void HIKSetMinXYZRotationdv(HIKCharacter *pCharacter, int pNodeId, const double pMin[3], int pMinActiveMask)
Set the minimum rotation for the Node pNodeId.
Activate minimum limit on Z axis.
Definition: humanik.h:655
Represents the left elbow (HIKNodeId::LeftElbowNodeId).
Definition: humanik.h:818
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...
Definition: humanik.h:163
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...
Definition: humanik.h:370
Definition: humanik.h:182
Definition: humanik.h:252
A description of a data set that contains separate translation, quaternion rotation, and scaling values for multiple different Nodes in an HIKCharacterState.
Definition: humanik.h:1610
void HIKSolveForEffectorSet(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Solve character pCharacter with HIKEffectorSetState pEffectorSetState and initial HIKCharacterState p...
Definition: humanik.h:161
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.
Definition: humanik.h:120
Definition: humanik.h:228
Definition: humanik.h:233
Definition: humanik.h:309
Definition: humanik.h:286
Definition: humanik.h:174
int HIKGetNodeUse(const HIKCharacter *pCharacter, int pNodeId)
Retrieve the characterization flag set for Node pNodeId in HIKCharacter pCharacter.
Defines an HIKEffectorSetState.
Definition: humanik.h:418
void HIKGetParentOffsetdv(const HIKCharacter *pCharacter, int pNodeId, double pParentTOffset[4], double pParentQOffset[4], double pParentSOffset[4])
Retrieve the parent offset set for Node pNodeId.
HIKEffectorSetState * HIKEffectorSetStateCreateInPlace(void *pBuffer)
Create a new HIKEffectorSetState in the buffer pBuffer.
Represents the right knee (HIKNodeId::RightKneeNodeId).
Definition: humanik.h:817
Definition: humanik.h:296
Definition: humanik.h:287
Definition: humanik.h:134
Definition: humanik.h:148
Definition: humanik.h:188
Definition: humanik.h:306
Definition: humanik.h:214
Definition: humanik.h:275
Definition: humanik.h:237
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...
Definition: humanik.h:105
Definition: humanik.h:223
Definition: humanik.h:1593
Definition: humanik.h:205
Definition: humanik.h:293
HIKCharacter * HIKCharacterCreateInPlace(const HIKCharacterDefinition *pCharacterDefinition, void *pBuffer, const char *pValidationString)
Create a new HIKCharacter in the buffer pBuffer.
Definition: humanik.h:141
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...
Definition: humanik.h:1648
Solves the toes of the right foot. Note that RightFootNodeId itself is included in HIKSolvingStepRigh...
Definition: humanik.h:363
Definition: humanik.h:169
Definition: humanik.h:210
Definition: humanik.h:130
Definition: humanik.h:138
void HIKAddQuadripedOffset(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
Add quadruped offsets to HIKCharacterState pCharacterState.
Definition: humanik.h:238
void HIKSetIKSolvingStep(HIKEffectorSetState *pEffectorSetState, int pSolvingStep)
Set the IK solving steps for HIKEffectorSetState pEffectorSetState.
HIKCharacter * HIKCharacterCreate(const HIKCharacterDefinition *pCharacterDefinition, HIKMalloc pMalloc, const char *pValidationString)
Create a new HIKCharacter.
Left hand floor contact.
Definition: humanik.h:328
void(* HIKFree)(void *)
Definition: humanik.h:393
Definition: humanik.h:311
Definition: humanik.h:115
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...
Definition: humanik.h:103
const char * HIKEffectorNameFromEffectorId(int pEffectorId)
Retrieve a descriptive name for Effector pEffectorId. This is a utility function that maps between FB...
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.
Definition: humanik.h:104
Definition: humanik.h:196
Definition: humanik.h:111
Definition: humanik.h:221
Definition: humanik.h:167
Definition: humanik.h:110
void HIKSetTranslationLimitsf(HIKCharacter *pCharacter, int pNodeId, float pMin, float pMax, bool pActive)
Set the translation limits for Node pNodeId.
size_t mTOffset
Definition: humanik.h:1619
int * mHIKNodeId
Definition: humanik.h:1624
Definition: humanik.h:179
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.
void HIKSolveForEffectorSetModifiers(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the Mirror and Lock modifiers for character pCharacter.
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...
A description of a data set that contains transform matrices for multiple different Effectors in an H...
Definition: humanik.h:1952
Definition: humanik.h:197
Definition: humanik.h:235
Definition: humanik.h:1592
Definition: humanik.h:215
Definition: humanik.h:313
Definition: humanik.h:147
Definition: humanik.h:249
Definition: humanik.h:224
Definition: humanik.h:344
Definition: humanik.h:285
Definition: humanik.h:203
Definition: humanik.h:114
Definition: humanik.h:246
Euler y, x, y.
Definition: humanik.h:674
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, ...)
Definition: humanik.h:187
Definition: humanik.h:198
void HIKSolveForEffectorSetFloorContact(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the floor solver for character pCharacter.
int * mHIKEffectorId
Definition: humanik.h:1958
enum HIKMiddleJoint eHIKMiddleJoint
Definition: humanik.h:823
Definition: humanik.h:217
Definition: humanik.h:190
Defines a character's properties.
Definition: humanik.h:457
Definition: humanik.h:199
void HIKSetEffectorStatefv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float pXForm[16])
Set the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState.
Definition: humanik.h:239
Definition: humanik.h:155
Definition: humanik.h:101
size_t mParameterOffset
Definition: humanik.h:1934
Solves the character's right arm, from RightShoulderNodeId to RightHandNodeId inclusive.
Definition: humanik.h:357
void HIKSetHandPullHips(HIKEffectorSetState *pEffectorSetState, int pLeft, float pValue)
Set the amount of pull the left or right hand can exert on the hips.
Solves the character's left collar bones: LeftCollarNodeId and LeftCollarExtraNodeId.
Definition: humanik.h:354
Definition: humanik.h:108
Definition: humanik.h:307
Definition: humanik.h:229
void HIKSetTranslationActive(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
Set the Reach Translation constraint for Effector pEffectorIndex.
Definition: humanik.h:127
Definition: humanik.h:290
Definition: humanik.h:274
Definition: humanik.h:193
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.
Definition: humanik.h:119
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.
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...
Definition: humanik.h:378
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...
Solves the character's right collar bones: RightCollarNodeId and RightCollarExtraNodeId.
Definition: humanik.h:355
Activates Squash & Strech for the left arm, from LeftShoulderNodeId to LeftHandNodeId inclusive...
Definition: humanik.h:371
Definition: humanik.h:254
void HIKSetPreQfv(HIKCharacter *pCharacter, int pNodeId, const float pPreQ[4])
Apply the pre rotation pPreQ to Node pNodeId.
Activate minimum limit on Y axis.
Definition: humanik.h:654
Definition: humanik.h:227
Definition: humanik.h:297
size_t mTOffset
Definition: humanik.h:1931
Definition: humanik.h:295
Marks the end of the enumeration.
Definition: humanik.h:332
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.
void HIKSubQuadripedOffset(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
Subtract quadruped offsets from HIKCharacterState pCharacterState.
Definition: humanik.h:226
Definition: humanik.h:272
Definition: humanik.h:302
Definition: humanik.h:183
Definition: humanik.h:139
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...
Definition: humanik.h:131
void HIKSolveForEffectorSetBegin(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Initializes an IK solve for character pCharacter.
Definition: humanik.h:212
Definition: humanik.h:202
Euler x, y, z.
Definition: humanik.h:667
Defines a pose for a character.
Definition: humanik.h:441
Definition: humanik.h:129
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.
Definition: humanik.h:289
Definition: humanik.h:247
Definition: humanik.h:145
size_t mStride
Definition: humanik.h:1957
void HIKEffectorSetStateDestroy(HIKEffectorSetState *pESetState, HIKFree pFree)
Destroy HIKEffectorSetState pESetState.
Definition: humanik.h:242
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...
Definition: humanik.h:484
void HIKSolveForEffectorSetHeadAndNeck(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the head and neck IK solver for character pCharacter.
Definition: humanik.h:278
Definition: humanik.h:243
Definition: humanik.h:153
Activates Lock & Mirror modifiers.
Definition: humanik.h:375
Definition: humanik.h:300
Definition: humanik.h:113
Definition: humanik.h:149
Euler y, z, y.
Definition: humanik.h:672
size_t mParameterOffset
Definition: humanik.h:1955
Definition: humanik.h:225
size_t mMatrixOffset
Definition: humanik.h:1657
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...
float HIKGetResist(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
Retrieve the Resist constraint for Effector pEffectorIndex.
Definition: humanik.h:251
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.
HIKEffectorSetState * HIKEffectorSetStateCreate(HIKMalloc pMalloc)
Create a new HIKEffectorSetState.
Definition: humanik.h:231
Definition: humanik.h:314
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).
Definition: humanik.h:816
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...
Definition: humanik.h:483
void HIKSolveForEffectorSetRollExtraction(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the roll extraction solver for character pCharacter.
Definition: humanik.h:125
Definition: humanik.h:146
Activate maximum limit on Z axis.
Definition: humanik.h:658
void HIKSetPull(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
Set the Pull constraint for Effector pEffectorIndex.
Definition: humanik.h:172
Solves the character's right leg, from RightHipNodeId to RightFootNodeId inclusive.
Definition: humanik.h:359
Spheric x, y, z.
Definition: humanik.h:679
Definition: humanik.h:353
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...
Definition: humanik.h:255
Definition: humanik.h:154
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.
size_t HIKCharacterStateSizeFromState(const HIKCharacterState *pCharacterState)
Returns the size of HIKCharacterState pCharacterState in bytes. All HIKCharacterStates for a given ch...
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...
Definition: humanik.h:195
Definition: humanik.h:292
size_t HIKCharacterStateSize(const HIKCharacter *pCharacter)
Returns the size in bytes required by any HIKCharacterState that defines a pose for HIKCharacter pCha...
Definition: humanik.h:209
Definition: humanik.h:277
void HIKSolveForCharacterRetarget(const HIKCharacter *pDstCharacter, HIKCharacterState *pDstCharacterState, const HIKCharacter *pSrcCharacter, const HIKCharacterState *pSrcCharacterState, const HIKPropertySetState *pDstPropertyState)
Simple rotation mapper between pSrcCharacter and pDstCharacter.
Activate maximum limit on Y axis.
Definition: humanik.h:657
Definition: humanik.h:180
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...
void HIKGetEffectorStateData(const HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescriptionMatrix *pDataDescription, void *pDataSet)
Retrieve the transform matrix and IK constraints of multiple Effectors from HIKEffectorSetState pEffe...
Definition: humanik.h:284
Definition: humanik.h:185
Definition: humanik.h:136
void HIKSetMaxXYZRotationdv(HIKCharacter *pCharacter, int pNodeId, const double pMax[3], int pMaxActiveMask)
Set the maximum rotation for the Node pNodeId.
Definition: humanik.h:142
Definition: humanik.h:207
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...
Definition: humanik.h:143
Definition: humanik.h:234
Definition: humanik.h:308
size_t mStride
Definition: humanik.h:1623
void HIKSetOriginalSnSLength(HIKCharacter *pCharacter, bool pFromCharacterizationPose, HIKCharacterState *pCharacterState)
Allow setting original length for joints from CharacterState instead of characterization pose (defaul...
Solves the character's spine, including WaistNodeId, and Spine1NodeId to Spine9NodeId.
Definition: humanik.h:365
Definition: humanik.h:152
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...
Definition: humanik.h:248
Definition: humanik.h:303
Solves the character's left leg, from LeftHipNodeId to LeftFootNodeId inclusive.
Definition: humanik.h:358
Definition: humanik.h:250
void HIKQTransform(const float quat[4], const float p[4], float q[4])
Compute the result of a point tranformed by a quaternion.
Definition: humanik.h:481
Definition: humanik.h:171
int * mHIKNodeId
Definition: humanik.h:1660
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...
Definition: humanik.h:116
size_t mSOffset
Definition: humanik.h:1933
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...
Definition: humanik.h:158
void HIKSetEffectorStatedv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const double pXForm[16])
Set the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState.
Definition: humanik.h:168
Activates Squash & Strech for the right arm, from RightShoulderNodeId to RightHandNodeId inclusive...
Definition: humanik.h:372
size_t mSOffset
Definition: humanik.h:1621
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...
Defines which Nodes are to be used by an HIKCharacter.
Definition: humanik.h:497
void HIKSetPostQfv(HIKCharacter *pCharacter, int pNodeId, const float pPostQ[4])
Apply the post rotation pPostQ to the Node pNodeId.
size_t mMatrixOffset
Definition: humanik.h:1954
Activates Squash & Strech for the left arm, from LeftHipNodeId to LeftFootNodeId inclusive.
Definition: humanik.h:373
void HIKSetMaxXYZRotationfv(HIKCharacter *pCharacter, int pNodeId, const float pMax[3], int pMaxActiveMask)
Set the maximum rotation for the Node pNodeId.
Definition: humanik.h:204
Definition: humanik.h:281
Definition: humanik.h:121
Solves the fingers of the right hand. Note that RightHandNodeId itself is included in HIKSolvingStepR...
Definition: humanik.h:361
size_t HIKCharacterSize(const HIKCharacter *pCharacter)
Returns the size of HIKCharacter pCharacter in bytes.
Defines a character to be used with HumanIK.
Definition: humanik.h:170
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...
enum HIKRotationOrder eHIKRotationOrder
Definition: humanik.h:683
Definition: humanik.h:216
Definition: humanik.h:175
An optional repository for the overall translation, rotation and scale of your character.
Definition: humanik.h:79
void HIKSolveForEffectorSetFingersAndToes(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the fingers and toes IK solver for character pCharacter.
const char * HIKNodeNameFromNodeId(int pNodeId)
Retrieve a descriptive name for Node pNodeId. This is a utility function that maps between FBX and HI...
Adjusts the translation of the character's hips, if necessary.
Definition: humanik.h:366
void HIKGetEffectorStatefv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pXForm[16])
Retrieve the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState.
Definition: humanik.h:107
Activate maximum limit on X axis.
Definition: humanik.h:656
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...
Definition: humanik.h:348
void HIKSetRotationActive(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
Set the Reach Rotation constraint for Effector pEffectorIndex.
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...
Definition: humanik.h:382
Definition: humanik.h:213
Marks the end of the enumeration.
Definition: humanik.h:257
Definition: humanik.h:218
Definition: humanik.h:191
void HIKSolveForEffectorSetArmsAndLegs(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the arms, legs and shoulders IK solver for character pCharacter.
Definition: humanik.h:118
Definition: humanik.h:312
Definition: humanik.h:132
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...
Definition: humanik.h:126
Definition: humanik.h:222
Definition: humanik.h:245
Definition: humanik.h:178
Definition: humanik.h:201
int HIKNodeIdFromNodeName(const char *pName)
Retrieve the Node ID from a descriptive name. This is a utility function that maps between FBX and HI...
Definition: humanik.h:291
Definition: humanik.h:166
Definition: humanik.h:184
Definition: humanik.h:117
HIKNodeFlags
Flags used in the characterization process, in conjunction with HIKCharacterDefinition.
Definition: humanik.h:479
Definition: humanik.h:160