HIK2014/humanik/humanik.h Source File

humanik.h
Go to the documentation of this file.
1 
7 /**************************************************************************************
8 
9 Copyright (C) 2009 Autodesk, Inc.
10 All Rights Reserved.
11 
12 The coded instructions, statements, computer programs, and/or related material (collectively "Data")
13 in these files contain unpublished information proprietary to Autodesk, Inc., ("Autodesk") which is
14 protected by Canada and United States of America federal copyright law and by international treaties.
15 
16 The Data may not be disclosed or distributed to third parties, in whole or in part, without the prior
17 written consent of Autodesk.
18 
19 THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY. ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED.
20 AUTODESK MAKES NO WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR ARISING BY CUSTOM
21 OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR
22 FITNESS FOR A PARTICULAR PURPOSE OR USE. WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT WARRANT THAT
23 THE OPERATION OF THE DATA WILL BE UNINTERRUPTED OR ERROR FREE.
24 
25 IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS OR SUPPLIERS ("AUTODESK GROUP")
26 BE LIABLE FOR ANY LOSSES, DAMAGES OR EXPENSES OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR
27 MULTIPLE DAMAGES OR OTHER SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS OF PROFITS, REVENUE
28 OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR DAMAGES OF ANY KIND), HOWEVER CAUSED, AND REGARDLESS
29 OF THE THEORY OF LIABILITY, WHETHER DERIVED FROM CONTRACT, TORT (INCLUDING, BUT NOT LIMITED TO,
30 NEGLIGENCE), OR OTHERWISE, ARISING OUT OF OR RELATING TO THE DATA OR ITS USE OR ANY OTHER PERFORMANCE,
31 WHETHER OR NOT AUTODESK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE.
32 
33 ***************************************************************************************/
34 
35 #ifndef _HUMAN_IK_
36 #define _HUMAN_IK_
37 
38 #define HUMANIK_VERSION_MAJOR 2014
39 #define HUMANIK_VERSION_MINOR 2
40 #define HUMANIK_VERSION_THIRD 2
41 
42 
43 // Generate the version string based on HIK version.
44 #define HIK_EXPAND_TO_STRING_(x) #x
45 #define HIK_EXPAND_TO_STRING(x) HIK_EXPAND_TO_STRING_(x)
46 
47 #define HUMANIK_VERSION_STRING \
48  HIK_EXPAND_TO_STRING( HUMANIK_VERSION_MAJOR ) \
49  "." \
50  HIK_EXPAND_TO_STRING( HUMANIK_VERSION_MINOR ) \
51  "." \
52  HIK_EXPAND_TO_STRING( HUMANIK_VERSION_THIRD )
53 
54 
55 #ifndef HIK_EXPORT
56  #define HIK_EXPORT extern
57 #endif
58 
59 #if ( !defined(_MSC_VER) && !defined(HIK_API) )
60  #define HIK_API
61 #else
62  #define HIK_API __cdecl
63 #endif
64 
65 #include <stddef.h> // for size_t
66 
67 #ifdef __cplusplus
68 extern "C" {
69 #endif
70 
71 /* *********************************************** */
77 enum HIKNodeId
78 {
80 
258 };
259 
260 /* *********************************************** */
266 {
269  HipsEffectorId = 0, // 0
316 };
317 
318 /* *********************************************** */
327 {
333 };
334 
335 /* *********************************************** */
341 {
364  HIKSolvingStepHead = 1 << 13,
367 
376 
383 };
384 
388 typedef void* (HIK_API * HIKMalloc)(size_t);
389 
393 typedef void (HIK_API * HIKFree)(void *);
394 
395 
396 /* *********************************************** */
419 
420 
442 
443 
458 
459 
474 struct HIKPropertySetState;
475 
480 {
482  HIKNodeUsed = 1 << 0,
485 };
486 
497 {
504 
505 
506 /* *********************************************** */
516  #if defined(HIK_VERBOSE)
517 
524  bool HIKValidateHierarchy(const HIKCharacterDefinition *pCharacterDefinition);
525 
536  bool HIKValidateGeometry(const HIKCharacter *pCharacter);
537 #endif
538 
546  HIK_EXPORT HIKCharacter * HIK_API HIKCharacterCreate( const HIKCharacterDefinition *pCharacterDefinition, HIKMalloc pMalloc, const char *pValidationString);
547 
558  HIK_EXPORT HIKCharacter * HIK_API HIKCharacterCreateInPlace( const HIKCharacterDefinition *pCharacterDefinition, void* pBuffer, const char *pValidationString);
559 
560 
568 
577 
587 
597 
598 /* *********************************************** */
613 HIK_EXPORT void HIK_API HIKCharacterDestroy (HIKCharacter *pCharacter, HIKFree pFree);
614 
621 
628 
629 /* *********************************************** */
651 {
652  HIKActiveMinX = 1 << 0,
653  HIKActiveMinY = 1 << 1,
654  HIKActiveMinZ = 1 << 2,
655  HIKActiveMaxX = 1 << 3,
656  HIKActiveMaxY = 1 << 4,
657  HIKActiveMaxZ = 1 << 5
658 };
659 
665 {
679 };
680 
683 
684 
691 HIK_EXPORT void HIK_API HIKSetCharacterizeNodeStatefv(HIKCharacter *pCharacter, int pNodeId, const float pXForm[16]);
695 HIK_EXPORT void HIK_API HIKSetCharacterizeNodeStatedv(HIKCharacter *pCharacter, int pNodeId, const double pXForm[16]);
696 
705 HIK_EXPORT void HIK_API HIKSetCharacterizeNodeStateTQSfv(HIKCharacter *pCharacter, int pNodeId, const float pT[4], const float pQ[4], const float pS[4]);
709 HIK_EXPORT void HIK_API HIKSetCharacterizeNodeStateTQSdv(HIKCharacter *pCharacter, int pNodeId, const double pT[4], const double pQ[4], const double pS[4]);
710 
719 HIK_EXPORT void HIK_API HIKGetCharacterizeNodeStateTQSfv(const HIKCharacter *pCharacter, int pNodeId, float pT[4], float pQ[4], float pS[4]);
723 HIK_EXPORT void HIK_API HIKGetCharacterizeNodeStateTQSdv(const HIKCharacter *pCharacter, int pNodeId, double pT[4], double pQ[4], double pS[4]);
724 
731 HIK_EXPORT void HIK_API HIKGetCharacterizeNodeStatefv(const HIKCharacter *pCharacter, int pNodeId, float pXForm[16]);
732 
745 
752 HIK_EXPORT void HIK_API HIKGetDefaultState(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState);
753 
754 
760 HIK_EXPORT void HIK_API HIKGetRelaxPose(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState);
761 
772 HIK_EXPORT int HIK_API HIKGetNodeUse(const HIKCharacter *pCharacter, int pNodeId);
773 
788 HIK_EXPORT void HIK_API HIKSetParentOffsetfv(HIKCharacter *pCharacter, int pNodeId, const float pParentTOffset[4], const float pParentQOffset[4], const float pParentSOffset[4]);
792 HIK_EXPORT void HIK_API HIKSetParentOffsetdv(HIKCharacter *pCharacter, int pNodeId, const double pParentTOffset[4], const double pParentQOffset[4], const double pParentSOffset[4]);
793 
804 HIK_EXPORT void HIK_API HIKGetParentOffsetfv(const HIKCharacter *pCharacter, int pNodeId, float pParentTOffset[4], float pParentQOffset[4], float pParentSOffset[4]);
808 HIK_EXPORT void HIK_API HIKGetParentOffsetdv(const HIKCharacter *pCharacter, int pNodeId, double pParentTOffset[4], double pParentQOffset[4], double pParentSOffset[4]);
809 
814 {
819 };
820 
823 
833 HIK_EXPORT void HIK_API HIKInverseJoint(HIKCharacter *pCharacter, eHIKMiddleJoint pJoint, int pInverse);
834 
844 HIK_EXPORT int HIK_API HIKIsJointInverted(const HIKCharacter *pCharacter, eHIKMiddleJoint pJoint);
845 
853 HIK_EXPORT void HIK_API HIKSetMinXYZRotationfv(HIKCharacter *pCharacter, int pNodeId, const float pMin[3], int pMinActiveMask);
857 HIK_EXPORT void HIK_API HIKSetMinXYZRotationdv(HIKCharacter *pCharacter, int pNodeId, const double pMin[3], int pMinActiveMask);
858 
866 HIK_EXPORT void HIK_API HIKSetMaxXYZRotationfv(HIKCharacter *pCharacter, int pNodeId, const float pMax[3], int pMaxActiveMask);
870 HIK_EXPORT void HIK_API HIKSetMaxXYZRotationdv(HIKCharacter *pCharacter, int pNodeId, const double pMax[3], int pMaxActiveMask);
871 
878 HIK_EXPORT void HIK_API HIKSetRotationOrder(HIKCharacter *pCharacter, int pNodeId, eHIKRotationOrder pRotationOrder);
879 
886 HIK_EXPORT void HIK_API HIKSetPreQfv(HIKCharacter *pCharacter, int pNodeId, const float pPreQ[4]);
890 HIK_EXPORT void HIK_API HIKSetPreQdv(HIKCharacter *pCharacter, int pNodeId, const double pPreQ[4]);
891 
898 HIK_EXPORT void HIK_API HIKSetPostQfv(HIKCharacter *pCharacter, int pNodeId, const float pPostQ[4]);
902 HIK_EXPORT void HIK_API HIKSetPostQdv(HIKCharacter *pCharacter, int pNodeId, const double pPostQ[4]);
903 
924 HIK_EXPORT void HIK_API HIKSetLimitsfv(HIKCharacter *pCharacter, int pNodeId,
925  const float pMin[3], const float pMax[3],
926  const float pPreQ[4], const float pPostQ[4],
927  int pActiveMask,
928  eHIKRotationOrder pRotationOrder);
932 HIK_EXPORT void HIK_API HIKSetLimitsdv(HIKCharacter *pCharacter, int pNodeId,
933  const double pMin[3], const double pMax[3],
934  const double pPreQ[4], const double pPostQ[4],
935  int pActiveMask,
936  eHIKRotationOrder pRotationOrder);
937 
946 HIK_EXPORT void HIKSetTranslationLimitsf(HIKCharacter *pCharacter,int pNodeId,
947  float pMin, float pMax, bool pActive);
948 
952 HIK_EXPORT void HIKSetTranslationLimitsd(HIKCharacter *pCharacter,int pNodeId,
953  double pMin, double pMax, bool pActive);
954 
971 HIK_EXPORT void HIK_API HIKGetLimitsfv(const HIKCharacter *pCharacter, int pNodeId,
972  float pMin[3], float pMax[3],
973  float pPreQ[4], float pPostQ[4],
974  int &pActiveMask,
975  eHIKRotationOrder &pRotationOrder);
979 HIK_EXPORT void HIK_API HIKGetLimitsdv(const HIKCharacter *pCharacter, int pNodeId,
980  double pMin[3], double pMax[3],
981  double pPreQ[4],double pPostQ[4],
982  int &pActiveMask,
983  eHIKRotationOrder &pRotationOrder);
984 
1003 HIK_EXPORT void HIK_API HIKAddQuadripedOffset(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState);
1004 
1011 HIK_EXPORT void HIK_API HIKSubQuadripedOffset(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState);
1012 
1013 /* *********************************************** */
1054 HIK_EXPORT void HIK_API HIKSolveForCharacter(const HIKCharacter *pDstCharacter, HIKCharacterState *pCharacterState, const HIKCharacter *pSrcCharacter, const HIKCharacterState *pSrcCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pDstPropertyState, const HIKPropertySetState *pSrcPropertyState);
1055 
1066 HIK_EXPORT void HIK_API HIKSolveForCharacterRetarget(const HIKCharacter *pDstCharacter, HIKCharacterState *pDstCharacterState, const HIKCharacter *pSrcCharacter, const HIKCharacterState *pSrcCharacterState, const HIKPropertySetState *pDstPropertyState);
1067 
1080 HIK_EXPORT void HIK_API HIKSolveForCharacterPrepareEffectorSet(const HIKCharacter *pDstCharacter, HIKCharacterState *pDstCharacterState, const HIKCharacter *pSrcCharacter, const HIKCharacterState *pSrcCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pDstPropertyState, const HIKPropertySetState *pSrcPropertyState);
1081 
1082 // ***********************************************
1103 HIK_EXPORT void HIK_API HIKGetEffectorStateFromCharacterfv(const HIKCharacter *pCharacter, int pEffectorIndex, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState, float pXForm[16]);
1108 HIK_EXPORT void HIK_API HIKGetEffectorStateFromCharacterdv(const HIKCharacter *pCharacter, int pEffectorIndex, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState, double pXForm[16]);
1109 
1117 HIK_EXPORT void HIK_API HIKEffectorSetFromCharacter(const HIKCharacter *pCharacter, HIKEffectorSetState *pEffectorSetState, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState);
1118 
1146 HIK_EXPORT void HIK_API HIKSolveForEffectorSet(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1147 
1163 HIK_EXPORT void HIK_API HIKSolveForEffectorSetBegin(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1164 
1177 HIK_EXPORT void HIK_API HIKSolveForEffectorSetFloorContactApprox(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1178 
1187 HIK_EXPORT void HIK_API HIKSolveForEffectorSetBodyPull(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1188 
1197 HIK_EXPORT void HIK_API HIKSolveForEffectorSetArmsAndLegs(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1198 
1207 HIK_EXPORT void HIK_API HIKSolveForEffectorSetFingersAndToes(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1208 
1217 HIK_EXPORT void HIK_API HIKSolveForEffectorSetHeadAndNeck(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1218 
1230 HIK_EXPORT void HIK_API HIKSolveForEffectorSetFloorContact(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1231 
1240 HIK_EXPORT void HIK_API HIKSolveForEffectorSetHipsTranslation(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1241 
1250 HIK_EXPORT void HIK_API HIKSolveForEffectorSetRollExtraction(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1251 
1260 HIK_EXPORT void HIK_API HIKSolveForEffectorSetModifiers(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1261 
1262 // ***********************************************
1289 HIK_EXPORT void HIK_API HIKSetEffectorStatefv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float pXForm[16]);
1294 HIK_EXPORT void HIK_API HIKSetEffectorStatedv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const double pXForm[16]);
1295 
1305 HIK_EXPORT void HIK_API HIKSetEffectorStateTQSfv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float pT[4], const float pQ[4], const float pS[4]);
1310 HIK_EXPORT void HIK_API HIKSetEffectorStateTQSdv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const double pT[4], const double pQ[4], const double pS[4]);
1311 
1325 HIK_EXPORT void HIK_API HIKSetEffectorStateTQSAlignfv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float* pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset);
1326 
1341 HIK_EXPORT void HIK_API HIKSetEffectorStateTQAlignfv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float* pTQ, size_t pTOffset, size_t pQOffset);
1342 
1349 HIK_EXPORT void HIK_API HIKGetEffectorStatefv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pXForm[16]);
1354 HIK_EXPORT void HIK_API HIKGetEffectorStatedv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, double pXForm[16]);
1355 
1364 HIK_EXPORT void HIK_API HIKGetEffectorStateTQSfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pT[4], float pQ[4], float pS[4]);
1373 HIK_EXPORT void HIK_API HIKGetEffectorStateTQfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pT[4], float pQ[4]);
1378 HIK_EXPORT void HIK_API HIKGetEffectorStateTQSdv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, double pT[4], double pQ[4], double pS[4]);
1379 
1393 HIK_EXPORT void HIK_API HIKGetEffectorStateTQSAlignfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float* pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset);
1394 
1407 HIK_EXPORT void HIK_API HIKGetEffectorStateTQAlignfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float* pTQ, size_t pTOffset, size_t pQOffset);
1408 
1415 HIK_EXPORT void HIK_API HIKSetTranslationActive(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue);
1416 
1423 HIK_EXPORT float HIK_API HIKGetTranslationActive(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex);
1424 
1431 HIK_EXPORT void HIK_API HIKSetRotationActive(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue);
1432 
1439 HIK_EXPORT float HIK_API HIKGetRotationActive(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex);
1440 
1447 HIK_EXPORT void HIK_API HIKSetPull(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue);
1448 
1455 HIK_EXPORT float HIK_API HIKGetPull(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex);
1456 
1463 HIK_EXPORT void HIK_API HIKSetResist(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue);
1464 
1471 HIK_EXPORT float HIK_API HIKGetResist(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex);
1472 
1473 
1483 HIK_EXPORT void HIK_API HIKSetHandPullHips(HIKEffectorSetState *pEffectorSetState, int pLeft, float pValue);
1484 
1491 HIK_EXPORT float HIK_API HIKGetHandPullHips(const HIKEffectorSetState *pEffectorSetState, int pLeft);
1492 
1507 HIK_EXPORT void HIK_API HIKSetEffectorFloorStatefv(HIKEffectorSetState *pEffectorSetState, int pFloor, const float pXForm[16]);
1511 HIK_EXPORT void HIK_API HIKSetEffectorFloorStatedv(HIKEffectorSetState *pEffectorSetState, int pFloor, const double pXForm[16]);
1512 
1520 HIK_EXPORT void HIK_API HIKSetEffectorFloorStateTQfv(HIKEffectorSetState *pEffectorSetState, int pFloor, const float pT[4], const float pQ[4]);
1524 HIK_EXPORT void HIK_API HIKSetEffectorFloorStateTQdv(HIKEffectorSetState *pEffectorSetState, int pFloor, const double pT[4], const double pQ[4]);
1525 
1532 HIK_EXPORT void HIK_API HIKGetEffectorFloorStatefv(const HIKEffectorSetState *pEffectorSetState, int pFloor, float pXForm[16]);
1536 HIK_EXPORT void HIK_API HIKGetEffectorFloorStatedv(const HIKEffectorSetState *pEffectorSetState, int pFloor, double pXForm[16]);
1537 
1545 HIK_EXPORT void HIK_API HIKGetEffectorFloorStateTQfv(const HIKEffectorSetState *pEffectorSetState, int pFloor, float pT[4], float pQ[4]);
1549 HIK_EXPORT void HIK_API HIKGetEffectorFloorStateTQdv(const HIKEffectorSetState *pEffectorSetState, int pFloor, double pT[4],double pQ[4]);
1550 
1556 HIK_EXPORT int HIK_API HIKGetIKSolvingStep(const HIKEffectorSetState *pEffectorSetState);
1557 
1563 HIK_EXPORT void HIK_API HIKSetIKSolvingStep(HIKEffectorSetState *pEffectorSetState,int pSolvingStep);
1564 
1565 // ***********************************************
1590 {
1591  HIKNotUsed = -1,
1593 };
1594 
1596 typedef enum HIKToken eHIKToken;
1597 
1598 
1609 typedef struct sHIKDataDescription
1610 {
1612  enum
1613  {
1616  }mTransformSpace;
1617 
1618  size_t mTOffset;
1619  size_t mQOffset;
1620  size_t mSOffset;
1622  size_t mStride;
1623  int *mHIKNodeId;
1626 
1648 {
1650  enum
1651  {
1654  }mTransformSpace;
1655 
1656  size_t mMatrixOffset;
1658  size_t mStride;
1659  int *mHIKNodeId;
1662 
1672 HIK_EXPORT void HIK_API HIKSetCharacterStateTransformTQS(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, const void* pDataSet);
1680 HIK_EXPORT void HIK_API HIKSetCharacterStateTransformTQ(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, const void* pDataSet);
1681 
1686 HIK_EXPORT void HIK_API HIKSetCharacterStateTransform(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescriptionMatrix* pDataDescription, const void* pDataSet);
1687 
1697 HIK_EXPORT void HIK_API HIKSetCharacterStateTransformTQS_SoA(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, const void* pDataSet);
1698 
1706 HIK_EXPORT void HIK_API HIKSetNodeStatefv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pXForm[16]);
1712 HIK_EXPORT void HIK_API HIKSetNodeStatedv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const double pXForm[16]);
1713 
1723 HIK_EXPORT void HIK_API HIKSetNodeStateTQSfv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pT[4], const float pQ[4], const float pS[4]);
1730 HIK_EXPORT void HIK_API HIKSetNodeStateTQNonUniformSfv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pT[4], const float pQ[4], const float pS[4]);
1737 HIK_EXPORT void HIK_API HIKSetNodeStateTQSdv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const double pT[4], const double pQ[4], const double pS[4]);
1738 
1750 HIK_EXPORT void HIKSetNodeStateTQSfvComputeDependent(const HIKCharacter* pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float * pT, const float * pQ, const float * pS, const bool pLocal);
1751 
1762 HIK_EXPORT void HIK_API HIKSetNodeStateTQfv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pT[4], const float pQ[4]);
1763 
1778 HIK_EXPORT void HIK_API HIKSetNodeStateTQSAlignfv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float* pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset);
1779 
1795 HIK_EXPORT void HIK_API HIKSetNodeStateTQAlignfv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float* pTQ, size_t pTOffset, size_t pQOffset);
1796 
1797 
1807 HIK_EXPORT void HIK_API HIKGetCharacterStateTransformTQS(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, void* pDataSet);
1812 HIK_EXPORT void HIK_API HIKGetCharacterStateTransformTQ(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, void* pDataSet);
1817 HIK_EXPORT void HIK_API HIKGetCharacterStateTransformQ(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, void* pDataSet);
1818 
1823 HIK_EXPORT void HIK_API HIKGetCharacterStateTransform(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescriptionMatrix* pDataDescription, void* pDataSet);
1824 
1834 HIK_EXPORT void HIK_API HIKGetCharacterStateTransformTQS_SoA(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, void* pDataSet);
1835 
1843 HIK_EXPORT void HIK_API HIKGetNodeStatefv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pXForm[16]);
1849 HIK_EXPORT void HIK_API HIKGetNodeStatedv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, double pXForm[16]);
1850 
1860 HIK_EXPORT void HIK_API HIKGetNodeStateTQSfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4], float pS[4]);
1867 HIK_EXPORT void HIK_API HIKGetNodeStateTQNonUniformSfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4], float pS[4]);
1873 HIK_EXPORT void HIK_API HIKGetNodeStateTQSdv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, double pT[4], double pQ[4], double pS[4]);
1874 
1883 HIK_EXPORT void HIK_API HIKGetNodeStateTQfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4]);
1884 
1899 HIK_EXPORT void HIK_API HIKGetNodeStateTQSAlignfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float* pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset);
1900 
1914 HIK_EXPORT void HIK_API HIKGetNodeStateTQAlignfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float* pTQ, size_t pTOffset, size_t pQOffset);
1915 
1916 
1929 {
1930  size_t mTOffset;
1931  size_t mQOffset;
1932  size_t mSOffset;
1935  size_t mStride;
1939 
1952 {
1953  size_t mMatrixOffset;
1956  size_t mStride;
1960 
1969 HIK_EXPORT void HIK_API HIKSetEffectorStateDataTQS(HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescription* pDataDescription, const void* pDataSet);
1970 
1975 HIK_EXPORT void HIK_API HIKSetEffectorStateData(HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescriptionMatrix* pDataDescription, const void* pDataSet);
1976 
1985 HIK_EXPORT void HIK_API HIKGetEffectorStateDataTQS(const HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescription* pDataDescription, void* pDataSet);
1986 
1991 HIK_EXPORT void HIK_API HIKGetEffectorStateData(const HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescriptionMatrix* pDataDescription, void* pDataSet);
1992 
1993 // ***********************************************
2003 HIK_EXPORT int HIK_API HIKNodeIdFromNodeName(const char* pName);
2004 
2010 HIK_EXPORT const char* HIK_API HIKNodeNameFromNodeId(int pNodeId);
2011 
2017 HIK_EXPORT int HIK_API HIKEffectorIdFromEffectorName(const char* pName);
2018 
2024 HIK_EXPORT const char* HIK_API HIKEffectorNameFromEffectorId(int pEffectorId);
2025 
2026 
2027 // ***********************************************
2039 HIK_EXPORT size_t HIK_API HIKCharacterDefinitionSize(const HIKCharacterDefinition *pCharacterDefinition);
2040 
2046 
2047 
2048 
2053 HIK_EXPORT size_t HIK_API HIKCharacterSize(const HIKCharacter* pCharacter);
2054 
2060 HIK_EXPORT size_t HIK_API HIKCharacterStateSize(const HIKCharacter* pCharacter);
2061 
2062 
2069 
2074 
2075 #ifdef __cplusplus
2076 }
2077 #endif
2078 
2079 #endif
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.
Definition: humanik.h:656
Solves the toes of the left foot.
Definition: humanik.h:362
void HIKCharacterStateDestroy(HIKCharacterState *pCharacterState, HIKFree pFree)
Destroy HIKCharacterState pCharacterState.
float HIKGetRotationActive(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
Retrieve the Reach Rotation constraint for Effector pEffectorIndex.
Spheric x, y, z.
Definition: humanik.h:678
Provides an IK goal point for the RightHandNodeId.
Definition: humanik.h:290
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.
Definition: humanik.h:294
size_t mQOffset
Specifies the offset of the quaternion rotation data within each data block.
Definition: humanik.h:1619
Solves the character's right arm, from RightShoulderNodeId to RightHandNodeId inclusive.
Definition: humanik.h:357
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.
Definition: humanik.h:655
size_t mTOffset
Specifies the offset of the translation data within each data block.
Definition: humanik.h:1618
enum HIKToken eHIKToken
see enum HIKToken
Definition: humanik.h:1596
Euler y, z, x.
Definition: humanik.h:670
void HIKCharacterDestroy(HIKCharacter *pCharacter, HIKFree pFree)
Destroy HIKCharacter pCharacter.
Represents the right elbow (HIKNodeId::RightElbowNodeId).
Definition: humanik.h:818
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.
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 ...
Provides an IK goal point for the RightElbowNodeId.
Definition: humanik.h:277
Solves the fingers of the left hand.
Definition: humanik.h:360
HIKSolvingStep
Lists the solving steps supported by the IK solver.
Definition: humanik.h:340
Provides an IK goal point for the last Node in the middle finger of the right hand.
Definition: humanik.h:299
Node is characterized.
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.
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.
Definition: humanik.h:650
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 c...
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.
Definition: humanik.h:358
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.
Definition: humanik.h:359
int mUsedNodes[LastNodeId]
An array of integers that contains an element for each Node known to HumanIK, listed in the HIKNodeId...
Definition: humanik.h:502
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.
Definition: humanik.h:1954
Provides an IK goal point for the LeftAnkleNodeId.
Definition: humanik.h:270
Marks the end of the enumeration.
Definition: humanik.h:332
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.
Definition: humanik.h:393
size_t mStride
Specifies the total size of each data block.
Definition: humanik.h:1935
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.
Definition: humanik.h:1589
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.
Definition: humanik.h:257
Provides an IK goal point for the last Node in the extra finger of the left hand. ...
Definition: humanik.h:296
Solves the fingers of the right hand.
Definition: humanik.h:361
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.
Definition: humanik.h:284
Provides an IK goal point for the last Node in the extra toe of the right foot.
Definition: humanik.h:314
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...
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 y...
Provides an IK goal point for the last Node in the thumb of the left hand.
Definition: humanik.h:291
size_t mStride
Specifies the total size of each data block.
Definition: humanik.h:1956
Left hand floor contact.
Definition: humanik.h:328
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.
Optional.
Definition: humanik.h:100
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.
Definition: humanik.h:287
Provides an IK goal point for the last Node in the ring toe of the left foot.
Definition: humanik.h:306
Data is expressed in global space.
Definition: humanik.h:1652
HIKRotationOrder
Lists the possible rotation orders for the values set in the HIKSetRotationOrder() function...
Definition: humanik.h:664
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.
Definition: humanik.h:366
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.
Definition: humanik.h:1930
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. ...
Definition: humanik.h:300
HIKMiddleJoint
Lists the joints that can be inverted using the HIKInverseJoint() function.
Definition: humanik.h:813
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.
Definition: humanik.h:375
size_t mStride
Specifies the total size of each data block.
Definition: humanik.h:1658
Solves the character's neck and head, including NeckNodeId, Neck1NodeId to Neck9NodeId, and HeadNodeId.
Definition: humanik.h:364
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 .
Definition: humanik.h:77
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).
Definition: humanik.h:817
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...
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 ...
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.
Definition: humanik.h:273
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.
Definition: humanik.h:344
Defines an HIKEffectorSetState.
Definition: humanik.h:418
#define HIK_EXPORT
Definition: humanik.h:56
void HIKGetParentOffsetdv(const HIKCharacter *pCharacter, int pNodeId, double pParentTOffset[4], double pParentQOffset[4], double pParentSOffset[4])
Retrieve the parent offset set for Node pNodeId.
Euler y, x, y.
Definition: humanik.h:673
Provides an IK goal point for the LeftKneeNodeId.
Definition: humanik.h:274
HIKEffectorId
Lists all Effectors used by HumanIK as goal points for IK solving.
Definition: humanik.h:265
Solves the character's left collar bones: LeftCollarNodeId and LeftCollarExtraNodeId.
Definition: humanik.h:354
Represents the right knee (HIKNodeId::RightKneeNodeId).
Definition: humanik.h:816
Provides an IK goal point for the last Node in the pinky toe of the right foot.
Definition: humanik.h:313
Provides an IK goal point for the WaistNodeId.
Definition: humanik.h:278
Euler x, y, x.
Definition: humanik.h:667
int * mHIKNodeId
A list of HumanIK Node IDs indicating which Node each of your data blocks applies to...
Definition: humanik.h:1623
Provides an IK goal point for the RightAnkleNodeId.
Definition: humanik.h:271
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.
Definition: humanik.h:1592
Enables all solving steps listed above.
Definition: humanik.h:382
Activate minimum limit on X axis.
Definition: humanik.h:652
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.
Definition: humanik.h:297
Right foot floor contact.
Definition: humanik.h:331
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.
Definition: humanik.h:311
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...
Definition: humanik.h:378
Provides an IK goal point for the last Node in the extra finger of the right hand.
Definition: humanik.h:302
Provides an IK goal point for the last Node in the thumb of the left foot.
Definition: humanik.h:303
Provides an IK goal point for the last Node in the pinky toe of the left foot.
Definition: humanik.h:307
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...
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.
Definition: humanik.h:305
Provides an IK goal point for the last Node in the thumb of the right foot.
Definition: humanik.h:309
Euler y, x, z.
Definition: humanik.h:672
struct sHIKEffectorDataDescriptionMatrix HIKEffectorDataDescriptionMatrix
void HIKSetTranslationLimitsf(HIKCharacter *pCharacter, int pNodeId, float pMin, float pMax, bool pActive)
Set the translation limits for Node pNodeId.
Euler y, z, y.
Definition: humanik.h:671
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...
Definition: humanik.h:374
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.
Definition: humanik.h:1656
size_t mSOffset
Specifies the offset of the scaling data within each data block.
Definition: humanik.h:1620
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...
Definition: humanik.h:370
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.
Definition: humanik.h:1591
enum HIKRotationOrder eHIKRotationOrder
see enum HIKRotationOrder
Definition: humanik.h:682
Euler x, z, x.
Definition: humanik.h:669
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 en...
enum HIKMiddleJoint eHIKMiddleJoint
see enum HIKMiddleJoint
Definition: humanik.h:822
size_t mParameterOffset
Specifies the offset of the IK constraint data within each data block.
Definition: humanik.h:1933
void HIKSolveForEffectorSetFloorContact(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the floor solver for character pCharacter.
Defines a character's properties.
Definition: humanik.h:457
Provides an IK goal point for the LeftHandNodeId.
Definition: humanik.h:289
void HIKSetEffectorStatefv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float pXForm[16])
Set the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState.
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 y...
Provides an IK goal point for the last Node in the pinky finger of the left hand. ...
Definition: humanik.h:295
Solves the toes of the right foot.
Definition: humanik.h:363
void HIKSetHandPullHips(HIKEffectorSetState *pEffectorSetState, int pLeft, float pValue)
Set the amount of pull the left or right hand can exert on the hips.
Euler z, x, z.
Definition: humanik.h:675
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.
Definition: humanik.h:304
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...
Definition: humanik.h:1936
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
Euler z, y, z.
Definition: humanik.h:677
Data is expressed in local space.
Definition: humanik.h:1653
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...
Definition: humanik.h:1659
Provides an IK goal point for an imaginary point on the character's skeleton that lies exactly half-w...
Definition: humanik.h:281
Provides an IK goal point for the last Node in the middle finger of the left hand.
Definition: humanik.h:293
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.
Definition: humanik.h:1622
void HIKSubQuadripedOffset(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
Subtract quadruped offsets from HIKCharacterState pCharacterState.
Provides an IK goal point for the LeftFootNodeId.
Definition: humanik.h:282
Activates Squash & Strech for the left arm, from LeftHipNodeId to LeftFootNodeId inclusive.
Definition: humanik.h:373
size_t mQOffset
Specifies the offset of the quaternion rotation data within each data block.
Definition: humanik.h:1931
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.
Definition: humanik.h:298
Required.
Definition: humanik.h:82
Provides an IK goal point for the LeftWristNodeId.
Definition: humanik.h:272
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.
Definition: humanik.h:441
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.
Definition: humanik.h:312
Euler x, z, y.
Definition: humanik.h:668
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...
Node has limits (DoF).
Definition: humanik.h:484
Euler z, x, y.
Definition: humanik.h:674
void HIKSolveForEffectorSetHeadAndNeck(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the head and neck IK solver for character pCharacter.
Euler x, y, z.
Definition: humanik.h:666
Activates the Foot and Hand Contact engine for the inverse kinematics solver.
Definition: humanik.h:348
Provides an IK goal point for the RightHipNodeId.
Definition: humanik.h:288
float HIKGetResist(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
Retrieve the Resist constraint for Effector pEffectorIndex.
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 en...
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).
Definition: humanik.h:815
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...
Definition: humanik.h:353
An optional repository for the overall translation, rotation and scale of your character.
Definition: humanik.h:79
Node has a parent unknown to HumanIK, used for local space transform and DoF.
Definition: humanik.h:483
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.
Definition: humanik.h:275
void *(* HIKMalloc)(size_t)
Memory allocator function.
Definition: humanik.h:388
int * mHIKEffectorId
A list of HumanIK Effector IDs indicating which Effector each of your data blocks applies to...
Definition: humanik.h:1957
Euler z, y, x.
Definition: humanik.h:676
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.
Definition: humanik.h:286
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.
Definition: humanik.h:283
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...
Definition: humanik.h:372
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.
Definition: humanik.h:308
void HIKGetEffectorStateData(const HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescriptionMatrix *pDataDescription, void *pDataSet)
Retrieve the transform matrix and IK constraints of multiple Effectors from HIKEffectorSetState pEffe...
Left foot floor contact.
Definition: humanik.h:330
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.
Definition: humanik.h:356
Provides an IK goal point for an imaginary point on the character's skeleton that lies exactly half-w...
Definition: humanik.h:269
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.
Definition: humanik.h:1615
Provides an IK goal point for the last Node in the index toe of the right foot.
Definition: humanik.h:310
Data is expressed in global space.
Definition: humanik.h:1614
Activates Squash & Strech for the left arm, from LeftShoulderNodeId to LeftHandNodeId inclusive...
Definition: humanik.h:371
Node is not characterized.
Definition: humanik.h:481
size_t mSOffset
Specifies the offset of the scaling data within each data block.
Definition: humanik.h:1932
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.
Definition: humanik.h:329
Marks the end of the enumeration.
Definition: humanik.h:315
const char void * pValue
Definition: fbcontrols.h:2116
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.
Definition: humanik.h:365
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...
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 c...
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.
Definition: humanik.h:301
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.
Definition: humanik.h:653
size_t mMatrixOffset
Specifies the offset of the transform matrix within each data block.
Definition: humanik.h:1953
Provides an IK goal point for the LeftElbowNodeId.
Definition: humanik.h:276
void HIKSolveForEffectorSetArmsAndLegs(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the arms, legs and shoulders IK solver for character pCharacter.
HIKFloorContact
Lists the surfaces that can be controlled by the floor contact engine.
Definition: humanik.h:326
#define HIK_API
Definition: humanik.h:60
Provides an IK goal point for the RightShoulderNodeId.
Definition: humanik.h:285
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. ...
Definition: humanik.h:292
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.
Definition: humanik.h:355
Activate maximum limit on Z axis.
Definition: humanik.h:657
HIKCharacter * HIKCharacterCreate(const HIKCharacterDefinition *pCharacterDefinition, HIKMalloc pMalloc, const char *pValidationString)
Create a new HIKCharacter.
Activate minimum limit on Z axis.
Definition: humanik.h:654
HIKNodeFlags
Flags used in the characterization process, in conjunction with HIKCharacterDefinition.
Definition: humanik.h:479