humanik.h ソース ファイル

humanik.h
このファイルのドキュメントに移動します。
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 2015
39 #define HUMANIK_VERSION_MINOR 3
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 
496 typedef struct sHIKCharacterDefinition
497 {
502  int mUsedNodes[LastNodeId];
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 
567 HIK_EXPORT HIKEffectorSetState * HIK_API HIKEffectorSetStateCreate( HIKMalloc pMalloc);
568 
576 HIK_EXPORT HIKEffectorSetState * HIK_API HIKEffectorSetStateCreateInPlace(void* pBuffer);
577 
586 HIK_EXPORT HIKCharacterState * HIK_API HIKCharacterStateCreate(const HIKCharacter *pCharacter, HIKMalloc pMalloc);
587 
596 HIK_EXPORT HIKCharacterState * HIK_API HIKCharacterStateCreateInPlace(const HIKCharacter *pCharacter, void* pBuffer);
597 
598 /* *********************************************** */
613 HIK_EXPORT void HIK_API HIKCharacterDestroy (HIKCharacter *pCharacter, HIKFree pFree);
614 
620 HIK_EXPORT void HIK_API HIKEffectorSetStateDestroy (HIKEffectorSetState *pESetState, HIKFree pFree);
621 
627 HIK_EXPORT void HIK_API HIKCharacterStateDestroy (HIKCharacterState *pCharacterState, HIKFree pFree);
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 
744 HIK_EXPORT bool HIK_API HIKCharacterizeGeometry(HIKCharacter *pCharacter);
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  {
1614  HIKGlobalSpace = 0,
1615  HIKLocalSpace = 1
1616  }mTransformSpace;
1617 
1618  size_t mTOffset;
1619  size_t mQOffset;
1620  size_t mSOffset;
1622  size_t mStride;
1623  int *mHIKNodeId;
1626 
1647 typedef struct sHIKDataDescriptionMatrix
1648 {
1650  enum
1651  {
1652  HIKGlobalSpace = 0,
1653  HIKLocalSpace = 1
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 
1928 typedef struct sHIKEffectorDataDescription
1929 {
1930  size_t mTOffset;
1931  size_t mQOffset;
1932  size_t mSOffset;
1935  size_t mStride;
1939 
1951 typedef struct sHIKEffectorDataDescriptionMatrix
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 
2030 HIK_EXPORT void HIK_API HIKGetLocalQFromDOFfv(const HIKCharacter *pCharacter, int pNodeId, const float pEuler[4], float pQuat[4]);
2031 
2036 HIK_EXPORT void HIK_API HIKGetDOFFromLocalQfv(const HIKCharacter *pCharacter, int pNodeId, const float pQuat[4], float pEuler[4]);
2037 
2042 HIK_EXPORT void HIK_API HIKQTransform(const float quat[4], const float p[4], float q[4]);
2043 
2048 HIK_EXPORT void HIK_API HIKEulerFromQuat(const float quat[4], float euler[4]);
2049 
2050 // ***********************************************
2062 HIK_EXPORT size_t HIK_API HIKCharacterDefinitionSize(const HIKCharacterDefinition *pCharacterDefinition);
2063 
2068 HIK_EXPORT size_t HIK_API HIKCharacterStateSizeFromDefinition(const HIKCharacterDefinition *pCharacterDefinition);
2069 
2070 
2071 
2076 HIK_EXPORT size_t HIK_API HIKCharacterSize(const HIKCharacter* pCharacter);
2077 
2083 HIK_EXPORT size_t HIK_API HIKCharacterStateSize(const HIKCharacter* pCharacter);
2084 
2085 
2091 HIK_EXPORT size_t HIK_API HIKCharacterStateSizeFromState(const HIKCharacterState* pCharacterState);
2092 
2096 HIK_EXPORT size_t HIK_API HIKEffectorSetStateSize();
2097 
2098 #ifdef __cplusplus
2099 }
2100 #endif
2101 #define HIK_INTERNAL_PLACEHOLDER
2102 #endif
size_t mQOffset
Definition: humanik.h:1931
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 ...
Definition: humanik.h:89
Euler z, y, x.
Definition: humanik.h:676
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:1936
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:818
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)
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 ...
Euler x, z, x.
Definition: humanik.h:669
size_t mStride
Definition: humanik.h:1935
Euler y, x, z.
Definition: humanik.h:672
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:667
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: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...
Euler z, y, z.
Definition: humanik.h:677
A description of a data set that contains separate translation, quaternion rotation, and scaling values for multiple Effectors in an HIKEffectorSetState.
Definition: humanik.h:1928
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:93
Definition: humanik.h:244
Definition: humanik.h:84
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:1589
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:1596
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:87
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:668
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
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...
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:1658
Definition: humanik.h:164
Definition: humanik.h:186
Definition: humanik.h:109
Activate minimum limit on X axis.
Definition: humanik.h:652
Euler z, x, y.
Definition: humanik.h:674
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:664
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:670
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
Definition: humanik.h:95
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: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...
Euler z, x, z.
Definition: humanik.h:675
Definition: humanik.h:144
size_t mQOffset
Definition: humanik.h:1619
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.
Definition: humanik.h:94
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:654
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...
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
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 ...
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:1609
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:96
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.
Definition: humanik.h:90
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:816
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:1592
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:1647
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
Definition: humanik.h:82
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...
Definition: humanik.h:85
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:1618
int * mHIKNodeId
Definition: humanik.h:1623
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:1951
Definition: humanik.h:197
Definition: humanik.h:235
Definition: humanik.h:1591
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
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...
Definition: humanik.h:246
Euler y, x, y.
Definition: humanik.h:673
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:1957
enum HIKMiddleJoint eHIKMiddleJoint
Definition: humanik.h:822
Definition: humanik.h:217
Definition: humanik.h:190
Defines a character's properties.
Definition: humanik.h:457
Definition: humanik.h:199
Definition: humanik.h:86
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
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...
Definition: humanik.h:101
size_t mParameterOffset
Definition: humanik.h:1933
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
Definition: humanik.h:88
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:653
Definition: humanik.h:227
Definition: humanik.h:297
size_t mTOffset
Definition: humanik.h:1930
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
Definition: humanik.h:91
Euler x, y, z.
Definition: humanik.h:666
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:1956
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:671
size_t mParameterOffset
Definition: humanik.h:1954
Definition: humanik.h:225
size_t mMatrixOffset
Definition: humanik.h:1656
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 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.
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: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...
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:657
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:678
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:656
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:1622
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:83
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:1659
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:1932
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:1620
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:496
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:1953
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:682
Definition: humanik.h:216
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...
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:655
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:92
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
HIKFloorContact
Lists the surfaces that can be controlled by the floor contact engine.
Definition: humanik.h:326
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