humanik.h Source File

humanik.h
Go to the documentation of this file.
1 
7 /**************************************************************************************
8 
9 Copyright (C) 2015 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 2016
39 #define HUMANIK_VERSION_MINOR 1
40 #define HUMANIK_VERSION_THIRD 0
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,
486 };
487 
497 typedef struct sHIKCharacterDefinition
498 {
503  int mUsedNodes[LastNodeId];
505 
506 
507 /* *********************************************** */
517  #if defined(HIK_VERBOSE)
518 
525  bool HIKValidateHierarchy(const HIKCharacterDefinition *pCharacterDefinition);
526 
537  bool HIKValidateGeometry(const HIKCharacter *pCharacter);
538 #endif
539 
547  HIK_EXPORT HIKCharacter * HIK_API HIKCharacterCreate( const HIKCharacterDefinition *pCharacterDefinition, HIKMalloc pMalloc, const char *pValidationString);
548 
559  HIK_EXPORT HIKCharacter * HIK_API HIKCharacterCreateInPlace( const HIKCharacterDefinition *pCharacterDefinition, void* pBuffer, const char *pValidationString);
560 
561 
568 HIK_EXPORT HIKEffectorSetState * HIK_API HIKEffectorSetStateCreate( HIKMalloc pMalloc);
569 
577 HIK_EXPORT HIKEffectorSetState * HIK_API HIKEffectorSetStateCreateInPlace(void* pBuffer);
578 
587 HIK_EXPORT HIKCharacterState * HIK_API HIKCharacterStateCreate(const HIKCharacter *pCharacter, HIKMalloc pMalloc);
588 
597 HIK_EXPORT HIKCharacterState * HIK_API HIKCharacterStateCreateInPlace(const HIKCharacter *pCharacter, void* pBuffer);
598 
599 /* *********************************************** */
614 HIK_EXPORT void HIK_API HIKCharacterDestroy (HIKCharacter *pCharacter, HIKFree pFree);
615 
621 HIK_EXPORT void HIK_API HIKEffectorSetStateDestroy (HIKEffectorSetState *pESetState, HIKFree pFree);
622 
628 HIK_EXPORT void HIK_API HIKCharacterStateDestroy (HIKCharacterState *pCharacterState, HIKFree pFree);
629 
630 /* *********************************************** */
652 {
653  HIKActiveMinX = 1 << 0,
654  HIKActiveMinY = 1 << 1,
655  HIKActiveMinZ = 1 << 2,
656  HIKActiveMaxX = 1 << 3,
657  HIKActiveMaxY = 1 << 4,
658  HIKActiveMaxZ = 1 << 5
659 };
660 
666 {
680 };
681 
684 
685 
692 HIK_EXPORT void HIK_API HIKSetCharacterizeNodeStatefv(HIKCharacter *pCharacter, int pNodeId, const float pXForm[16]);
696 HIK_EXPORT void HIK_API HIKSetCharacterizeNodeStatedv(HIKCharacter *pCharacter, int pNodeId, const double pXForm[16]);
697 
706 HIK_EXPORT void HIK_API HIKSetCharacterizeNodeStateTQSfv(HIKCharacter *pCharacter, int pNodeId, const float pT[4], const float pQ[4], const float pS[4]);
710 HIK_EXPORT void HIK_API HIKSetCharacterizeNodeStateTQSdv(HIKCharacter *pCharacter, int pNodeId, const double pT[4], const double pQ[4], const double pS[4]);
711 
720 HIK_EXPORT void HIK_API HIKGetCharacterizeNodeStateTQSfv(const HIKCharacter *pCharacter, int pNodeId, float pT[4], float pQ[4], float pS[4]);
724 HIK_EXPORT void HIK_API HIKGetCharacterizeNodeStateTQSdv(const HIKCharacter *pCharacter, int pNodeId, double pT[4], double pQ[4], double pS[4]);
725 
732 HIK_EXPORT void HIK_API HIKGetCharacterizeNodeStatefv(const HIKCharacter *pCharacter, int pNodeId, float pXForm[16]);
733 
745 HIK_EXPORT bool HIK_API HIKCharacterizeGeometry(HIKCharacter *pCharacter);
746 
753 HIK_EXPORT void HIK_API HIKGetDefaultState(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState);
754 
755 
761 HIK_EXPORT void HIK_API HIKGetRelaxPose(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState);
762 
773 HIK_EXPORT int HIK_API HIKGetNodeUse(const HIKCharacter *pCharacter, int pNodeId);
774 
789 HIK_EXPORT void HIK_API HIKSetParentOffsetfv(HIKCharacter *pCharacter, int pNodeId, const float pParentTOffset[4], const float pParentQOffset[4], const float pParentSOffset[4]);
793 HIK_EXPORT void HIK_API HIKSetParentOffsetdv(HIKCharacter *pCharacter, int pNodeId, const double pParentTOffset[4], const double pParentQOffset[4], const double pParentSOffset[4]);
794 
805 HIK_EXPORT void HIK_API HIKGetParentOffsetfv(const HIKCharacter *pCharacter, int pNodeId, float pParentTOffset[4], float pParentQOffset[4], float pParentSOffset[4]);
809 HIK_EXPORT void HIK_API HIKGetParentOffsetdv(const HIKCharacter *pCharacter, int pNodeId, double pParentTOffset[4], double pParentQOffset[4], double pParentSOffset[4]);
810 
815 {
820 };
821 
824 
834 HIK_EXPORT void HIK_API HIKInverseJoint(HIKCharacter *pCharacter, eHIKMiddleJoint pJoint, int pInverse);
835 
845 HIK_EXPORT int HIK_API HIKIsJointInverted(const HIKCharacter *pCharacter, eHIKMiddleJoint pJoint);
846 
854 HIK_EXPORT void HIK_API HIKSetMinXYZRotationfv(HIKCharacter *pCharacter, int pNodeId, const float pMin[3], int pMinActiveMask);
858 HIK_EXPORT void HIK_API HIKSetMinXYZRotationdv(HIKCharacter *pCharacter, int pNodeId, const double pMin[3], int pMinActiveMask);
859 
867 HIK_EXPORT void HIK_API HIKSetMaxXYZRotationfv(HIKCharacter *pCharacter, int pNodeId, const float pMax[3], int pMaxActiveMask);
871 HIK_EXPORT void HIK_API HIKSetMaxXYZRotationdv(HIKCharacter *pCharacter, int pNodeId, const double pMax[3], int pMaxActiveMask);
872 
879 HIK_EXPORT void HIK_API HIKSetRotationOrder(HIKCharacter *pCharacter, int pNodeId, eHIKRotationOrder pRotationOrder);
880 
887 HIK_EXPORT void HIK_API HIKSetPreQfv(HIKCharacter *pCharacter, int pNodeId, const float pPreQ[4]);
891 HIK_EXPORT void HIK_API HIKSetPreQdv(HIKCharacter *pCharacter, int pNodeId, const double pPreQ[4]);
892 
899 HIK_EXPORT void HIK_API HIKSetPostQfv(HIKCharacter *pCharacter, int pNodeId, const float pPostQ[4]);
903 HIK_EXPORT void HIK_API HIKSetPostQdv(HIKCharacter *pCharacter, int pNodeId, const double pPostQ[4]);
904 
925 HIK_EXPORT void HIK_API HIKSetLimitsfv(HIKCharacter *pCharacter, int pNodeId,
926  const float pMin[3], const float pMax[3],
927  const float pPreQ[4], const float pPostQ[4],
928  int pActiveMask,
929  eHIKRotationOrder pRotationOrder);
933 HIK_EXPORT void HIK_API HIKSetLimitsdv(HIKCharacter *pCharacter, int pNodeId,
934  const double pMin[3], const double pMax[3],
935  const double pPreQ[4], const double pPostQ[4],
936  int pActiveMask,
937  eHIKRotationOrder pRotationOrder);
938 
947 HIK_EXPORT void HIKSetTranslationLimitsf(HIKCharacter *pCharacter,int pNodeId,
948  float pMin, float pMax, bool pActive);
949 
953 HIK_EXPORT void HIKSetTranslationLimitsd(HIKCharacter *pCharacter,int pNodeId,
954  double pMin, double pMax, bool pActive);
955 
972 HIK_EXPORT void HIK_API HIKGetLimitsfv(const HIKCharacter *pCharacter, int pNodeId,
973  float pMin[3], float pMax[3],
974  float pPreQ[4], float pPostQ[4],
975  int &pActiveMask,
976  eHIKRotationOrder &pRotationOrder);
980 HIK_EXPORT void HIK_API HIKGetLimitsdv(const HIKCharacter *pCharacter, int pNodeId,
981  double pMin[3], double pMax[3],
982  double pPreQ[4],double pPostQ[4],
983  int &pActiveMask,
984  eHIKRotationOrder &pRotationOrder);
985 
1004 HIK_EXPORT void HIK_API HIKAddQuadripedOffset(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState);
1005 
1012 HIK_EXPORT void HIK_API HIKSubQuadripedOffset(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState);
1013 
1014 /* *********************************************** */
1055 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);
1056 
1067 HIK_EXPORT void HIK_API HIKSolveForCharacterRetarget(const HIKCharacter *pDstCharacter, HIKCharacterState *pDstCharacterState, const HIKCharacter *pSrcCharacter, const HIKCharacterState *pSrcCharacterState, const HIKPropertySetState *pDstPropertyState);
1068 
1081 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);
1082 
1083 // ***********************************************
1104 HIK_EXPORT void HIK_API HIKGetEffectorStateFromCharacterfv(const HIKCharacter *pCharacter, int pEffectorIndex, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState, float pXForm[16]);
1109 HIK_EXPORT void HIK_API HIKGetEffectorStateFromCharacterdv(const HIKCharacter *pCharacter, int pEffectorIndex, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState, double pXForm[16]);
1110 
1118 HIK_EXPORT void HIK_API HIKEffectorSetFromCharacter(const HIKCharacter *pCharacter, HIKEffectorSetState *pEffectorSetState, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState);
1119 
1147 HIK_EXPORT void HIK_API HIKSolveForEffectorSet(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1148 
1164 HIK_EXPORT void HIK_API HIKSolveForEffectorSetBegin(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1165 
1178 HIK_EXPORT void HIK_API HIKSolveForEffectorSetFloorContactApprox(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1179 
1188 HIK_EXPORT void HIK_API HIKSolveForEffectorSetBodyPull(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1189 
1198 HIK_EXPORT void HIK_API HIKSolveForEffectorSetArmsAndLegs(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1199 
1208 HIK_EXPORT void HIK_API HIKSolveForEffectorSetFingersAndToes(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1209 
1218 HIK_EXPORT void HIK_API HIKSolveForEffectorSetHeadAndNeck(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1219 
1231 HIK_EXPORT void HIK_API HIKSolveForEffectorSetFloorContact(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1232 
1241 HIK_EXPORT void HIK_API HIKSolveForEffectorSetHipsTranslation(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1242 
1251 HIK_EXPORT void HIK_API HIKSolveForEffectorSetRollExtraction(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1252 
1261 HIK_EXPORT void HIK_API HIKSolveForEffectorSetModifiers(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1262 
1263 // ***********************************************
1290 HIK_EXPORT void HIK_API HIKSetEffectorStatefv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float pXForm[16]);
1295 HIK_EXPORT void HIK_API HIKSetEffectorStatedv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const double pXForm[16]);
1296 
1306 HIK_EXPORT void HIK_API HIKSetEffectorStateTQSfv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float pT[4], const float pQ[4], const float pS[4]);
1311 HIK_EXPORT void HIK_API HIKSetEffectorStateTQSdv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const double pT[4], const double pQ[4], const double pS[4]);
1312 
1326 HIK_EXPORT void HIK_API HIKSetEffectorStateTQSAlignfv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float* pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset);
1327 
1342 HIK_EXPORT void HIK_API HIKSetEffectorStateTQAlignfv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float* pTQ, size_t pTOffset, size_t pQOffset);
1343 
1350 HIK_EXPORT void HIK_API HIKGetEffectorStatefv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pXForm[16]);
1355 HIK_EXPORT void HIK_API HIKGetEffectorStatedv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, double pXForm[16]);
1356 
1365 HIK_EXPORT void HIK_API HIKGetEffectorStateTQSfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pT[4], float pQ[4], float pS[4]);
1374 HIK_EXPORT void HIK_API HIKGetEffectorStateTQfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pT[4], float pQ[4]);
1379 HIK_EXPORT void HIK_API HIKGetEffectorStateTQSdv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, double pT[4], double pQ[4], double pS[4]);
1380 
1394 HIK_EXPORT void HIK_API HIKGetEffectorStateTQSAlignfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float* pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset);
1395 
1408 HIK_EXPORT void HIK_API HIKGetEffectorStateTQAlignfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float* pTQ, size_t pTOffset, size_t pQOffset);
1409 
1416 HIK_EXPORT void HIK_API HIKSetTranslationActive(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue);
1417 
1424 HIK_EXPORT float HIK_API HIKGetTranslationActive(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex);
1425 
1432 HIK_EXPORT void HIK_API HIKSetRotationActive(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue);
1433 
1440 HIK_EXPORT float HIK_API HIKGetRotationActive(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex);
1441 
1448 HIK_EXPORT void HIK_API HIKSetPull(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue);
1449 
1456 HIK_EXPORT float HIK_API HIKGetPull(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex);
1457 
1464 HIK_EXPORT void HIK_API HIKSetResist(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue);
1465 
1472 HIK_EXPORT float HIK_API HIKGetResist(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex);
1473 
1474 
1484 HIK_EXPORT void HIK_API HIKSetHandPullHips(HIKEffectorSetState *pEffectorSetState, int pLeft, float pValue);
1485 
1492 HIK_EXPORT float HIK_API HIKGetHandPullHips(const HIKEffectorSetState *pEffectorSetState, int pLeft);
1493 
1508 HIK_EXPORT void HIK_API HIKSetEffectorFloorStatefv(HIKEffectorSetState *pEffectorSetState, int pFloor, const float pXForm[16]);
1512 HIK_EXPORT void HIK_API HIKSetEffectorFloorStatedv(HIKEffectorSetState *pEffectorSetState, int pFloor, const double pXForm[16]);
1513 
1521 HIK_EXPORT void HIK_API HIKSetEffectorFloorStateTQfv(HIKEffectorSetState *pEffectorSetState, int pFloor, const float pT[4], const float pQ[4]);
1525 HIK_EXPORT void HIK_API HIKSetEffectorFloorStateTQdv(HIKEffectorSetState *pEffectorSetState, int pFloor, const double pT[4], const double pQ[4]);
1526 
1533 HIK_EXPORT void HIK_API HIKGetEffectorFloorStatefv(const HIKEffectorSetState *pEffectorSetState, int pFloor, float pXForm[16]);
1537 HIK_EXPORT void HIK_API HIKGetEffectorFloorStatedv(const HIKEffectorSetState *pEffectorSetState, int pFloor, double pXForm[16]);
1538 
1546 HIK_EXPORT void HIK_API HIKGetEffectorFloorStateTQfv(const HIKEffectorSetState *pEffectorSetState, int pFloor, float pT[4], float pQ[4]);
1550 HIK_EXPORT void HIK_API HIKGetEffectorFloorStateTQdv(const HIKEffectorSetState *pEffectorSetState, int pFloor, double pT[4],double pQ[4]);
1551 
1557 HIK_EXPORT int HIK_API HIKGetIKSolvingStep(const HIKEffectorSetState *pEffectorSetState);
1558 
1564 HIK_EXPORT void HIK_API HIKSetIKSolvingStep(HIKEffectorSetState *pEffectorSetState,int pSolvingStep);
1565 
1566 // ***********************************************
1591 {
1592  HIKNotUsed = -1,
1594 };
1595 
1597 typedef enum HIKToken eHIKToken;
1598 
1599 
1610 typedef struct sHIKDataDescription
1611 {
1613  enum
1614  {
1615  HIKGlobalSpace = 0,
1616  HIKLocalSpace = 1
1617  }mTransformSpace;
1618 
1619  size_t mTOffset;
1620  size_t mQOffset;
1621  size_t mSOffset;
1623  size_t mStride;
1624  int *mHIKNodeId;
1627 
1648 typedef struct sHIKDataDescriptionMatrix
1649 {
1651  enum
1652  {
1653  HIKGlobalSpace = 0,
1654  HIKLocalSpace = 1
1655  }mTransformSpace;
1656 
1657  size_t mMatrixOffset;
1659  size_t mStride;
1660  int *mHIKNodeId;
1663 
1673 HIK_EXPORT void HIK_API HIKSetCharacterStateTransformTQS(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, const void* pDataSet);
1681 HIK_EXPORT void HIK_API HIKSetCharacterStateTransformTQ(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, const void* pDataSet);
1682 
1687 HIK_EXPORT void HIK_API HIKSetCharacterStateTransform(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescriptionMatrix* pDataDescription, const void* pDataSet);
1688 
1698 HIK_EXPORT void HIK_API HIKSetCharacterStateTransformTQS_SoA(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, const void* pDataSet);
1699 
1707 HIK_EXPORT void HIK_API HIKSetNodeStatefv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pXForm[16]);
1713 HIK_EXPORT void HIK_API HIKSetNodeStatedv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const double pXForm[16]);
1714 
1724 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]);
1731 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]);
1738 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]);
1739 
1751 HIK_EXPORT void HIKSetNodeStateTQSfvComputeDependent(const HIKCharacter* pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float * pT, const float * pQ, const float * pS, const bool pLocal);
1752 
1763 HIK_EXPORT void HIK_API HIKSetNodeStateTQfv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pT[4], const float pQ[4]);
1764 
1779 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);
1780 
1796 HIK_EXPORT void HIK_API HIKSetNodeStateTQAlignfv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float* pTQ, size_t pTOffset, size_t pQOffset);
1797 
1798 
1808 HIK_EXPORT void HIK_API HIKGetCharacterStateTransformTQS(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, void* pDataSet);
1813 HIK_EXPORT void HIK_API HIKGetCharacterStateTransformTQ(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, void* pDataSet);
1818 HIK_EXPORT void HIK_API HIKGetCharacterStateTransformQ(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, void* pDataSet);
1819 
1824 HIK_EXPORT void HIK_API HIKGetCharacterStateTransform(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescriptionMatrix* pDataDescription, void* pDataSet);
1825 
1835 HIK_EXPORT void HIK_API HIKGetCharacterStateTransformTQS_SoA(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, void* pDataSet);
1836 
1844 HIK_EXPORT void HIK_API HIKGetNodeStatefv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pXForm[16]);
1850 HIK_EXPORT void HIK_API HIKGetNodeStatedv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, double pXForm[16]);
1851 
1861 HIK_EXPORT void HIK_API HIKGetNodeStateTQSfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4], float pS[4]);
1868 HIK_EXPORT void HIK_API HIKGetNodeStateTQNonUniformSfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4], float pS[4]);
1874 HIK_EXPORT void HIK_API HIKGetNodeStateTQSdv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, double pT[4], double pQ[4], double pS[4]);
1875 
1884 HIK_EXPORT void HIK_API HIKGetNodeStateTQfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4]);
1885 
1900 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);
1901 
1915 HIK_EXPORT void HIK_API HIKGetNodeStateTQAlignfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float* pTQ, size_t pTOffset, size_t pQOffset);
1916 
1917 
1929 typedef struct sHIKEffectorDataDescription
1930 {
1931  size_t mTOffset;
1932  size_t mQOffset;
1933  size_t mSOffset;
1936  size_t mStride;
1940 
1952 typedef struct sHIKEffectorDataDescriptionMatrix
1953 {
1954  size_t mMatrixOffset;
1957  size_t mStride;
1961 
1970 HIK_EXPORT void HIK_API HIKSetEffectorStateDataTQS(HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescription* pDataDescription, const void* pDataSet);
1971 
1976 HIK_EXPORT void HIK_API HIKSetEffectorStateData(HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescriptionMatrix* pDataDescription, const void* pDataSet);
1977 
1986 HIK_EXPORT void HIK_API HIKGetEffectorStateDataTQS(const HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescription* pDataDescription, void* pDataSet);
1987 
1992 HIK_EXPORT void HIK_API HIKGetEffectorStateData(const HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescriptionMatrix* pDataDescription, void* pDataSet);
1993 
1994 // ***********************************************
2004 HIK_EXPORT int HIK_API HIKNodeIdFromNodeName(const char* pName);
2005 
2011 HIK_EXPORT const char* HIK_API HIKNodeNameFromNodeId(int pNodeId);
2012 
2018 HIK_EXPORT int HIK_API HIKEffectorIdFromEffectorName(const char* pName);
2019 
2025 HIK_EXPORT const char* HIK_API HIKEffectorNameFromEffectorId(int pEffectorId);
2026 
2031 HIK_EXPORT void HIK_API HIKGetLocalQFromDOFfv(const HIKCharacter *pCharacter, int pNodeId, const float pEuler[4], float pQuat[4]);
2032 
2037 HIK_EXPORT void HIK_API HIKGetDOFFromLocalQfv(const HIKCharacter *pCharacter, int pNodeId, const float pQuat[4], float pEuler[4]);
2038 
2043 HIK_EXPORT void HIK_API HIKQTransform(const float quat[4], const float p[4], float q[4]);
2044 
2049 HIK_EXPORT void HIK_API HIKEulerFromQuat(const float quat[4], float euler[4]);
2050 
2055 HIK_EXPORT void HIK_API HIKSetOriginalSnSLength(HIKCharacter *pCharacter, bool pFromCharacterizationPose, HIKCharacterState *pCharacterState);
2056 
2057 // ***********************************************
2069 HIK_EXPORT size_t HIK_API HIKCharacterDefinitionSize(const HIKCharacterDefinition *pCharacterDefinition);
2070 
2075 HIK_EXPORT size_t HIK_API HIKCharacterStateSizeFromDefinition(const HIKCharacterDefinition *pCharacterDefinition);
2076 
2077 
2078 
2083 HIK_EXPORT size_t HIK_API HIKCharacterSize(const HIKCharacter* pCharacter);
2084 
2090 HIK_EXPORT size_t HIK_API HIKCharacterStateSize(const HIKCharacter* pCharacter);
2091 
2092 
2098 HIK_EXPORT size_t HIK_API HIKCharacterStateSizeFromState(const HIKCharacterState* pCharacterState);
2099 
2103 HIK_EXPORT size_t HIK_API HIKEffectorSetStateSize();
2104 
2105 #ifdef __cplusplus
2106 }
2107 #endif
2108 #define HIK_INTERNAL_PLACEHOLDER
2109 #endif
size_t mQOffset
Definition: humanik.h:1932
void HIKGetNodeStateTQNonUniformSfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4], float pS[4])
Retrieve the translation (T), quaternion rotation (Q) and non-uniform scaling (S) in global space of ...
Definition: humanik.h:89
Euler z, y, x.
Definition: humanik.h:677
void HIKCharacterStateDestroy(HIKCharacterState *pCharacterState, HIKFree pFree)
Destroy HIKCharacterState pCharacterState.
float HIKGetRotationActive(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
Retrieve the Reach Rotation constraint for Effector pEffectorIndex.
Definition: humanik.h:173
Right foot floor contact.
Definition: humanik.h:331
Definition: humanik.h:232
Solves the toes of the left foot. Note that LeftFootNodeId itself is included in HIKSolvingStepLeftLe...
Definition: humanik.h:362
void HIKSetEffectorStateData(HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescriptionMatrix *pDataDescription, const void *pDataSet)
Set the transform matrix and IK constraints of multiple Effectors from data set pDataSet, interpreted according to data description pDataDescription.
int * mHIKEffectorId
Definition: humanik.h:1937
Definition: humanik.h:298
void HIKCharacterDestroy(HIKCharacter *pCharacter, HIKFree pFree)
Destroy HIKCharacter pCharacter.
Activates Squash & Strech for the right arm, from RightHipNodeId to RightFootNodeId inclusive...
Definition: humanik.h:374
Definition: humanik.h:305
Represents the right elbow (HIKNodeId::RightElbowNodeId).
Definition: humanik.h:819
Definition: humanik.h:151
void HIKSetTranslationLimitsd(HIKCharacter *pCharacter, int pNodeId, double pMin, double pMax, bool pActive)
Set the translation limits for Node pNodeId.
int HIKGetIKSolvingStep(const HIKEffectorSetState *pEffectorSetState)
Retrieve the IK solving steps currently set for HIKEffectorSetState pEffectorSetState.
bool HIKValidateGeometry(const HIKCharacter *pCharacter)
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:670
size_t mStride
Definition: humanik.h:1936
Euler y, x, z.
Definition: humanik.h:673
Definition: humanik.h:165
Solves the character's neck and head, including NeckNodeId, Neck1NodeId to Neck9NodeId, and HeadNodeId.
Definition: humanik.h:364
Euler x, y, x.
Definition: humanik.h:668
Definition: humanik.h:482
void HIKGetEffectorStatedv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, double pXForm[16])
Retrieve the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState.
int HIKEffectorIdFromEffectorName(const char *pName)
Retrieve the Effector ID from a descriptive name. This is a utility function that maps between FBX an...
void HIKGetCharacterStateTransformTQ(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, void *pDataSet)
Retrieve the translation (T) and quaternion rotation (Q) of multiple Nodes from HIKCharacterState pCh...
Definition: humanik.h:128
HIKLimitActiveMask
Lists the possible types of limits that can be activated for a Node. See HIKSetMinXYZRotationfv(), HIKSetMaxXYZRotationfv(), and HIKSetLimitsfv().
Definition: humanik.h:651
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:678
A description of a data set that contains separate translation, quaternion rotation, and scaling values for multiple Effectors in an HIKEffectorSetState.
Definition: humanik.h:1929
Definition: humanik.h:240
Definition: humanik.h:236
Definition: humanik.h:157
Definition: humanik.h:301
void HIKSetParentOffsetfv(HIKCharacter *pCharacter, int pNodeId, const float pParentTOffset[4], const float pParentQOffset[4], const float pParentSOffset[4])
Set the parent offset for Node pNodeId.
Definition: humanik.h:133
void HIKGetLimitsfv(const HIKCharacter *pCharacter, int pNodeId, float pMin[3], float pMax[3], float pPreQ[4], float pPostQ[4], int &pActiveMask, eHIKRotationOrder &pRotationOrder)
Retrieve the limits set for Node pNodeId.
Definition: humanik.h:299
HIKEffectorId
Lists all Effectors used by HumanIK as goal points for IK solving.
Definition: humanik.h:265
Definition: humanik.h: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:1590
Definition: humanik.h:100
void HIKGetDefaultState(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
Retrieve the default T-stance for character pCharacter, storing it in HIKCharacterState pCharacterSta...
void HIKGetNodeStateTQfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4])
Retrieve the translation (T) and quaternion rotation (Q) in global space of Node pNodeId in HIKCharac...
Definition: humanik.h:194
Definition: humanik.h:276
Definition: humanik.h:273
Definition: humanik.h:253
enum HIKToken eHIKToken
Definition: humanik.h:1597
Definition: humanik.h:241
void HIKSolveForCharacter(const HIKCharacter *pDstCharacter, HIKCharacterState *pCharacterState, const HIKCharacter *pSrcCharacter, const HIKCharacterState *pSrcCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pDstPropertyState, const HIKPropertySetState *pSrcPropertyState)
Given source character pSrcCharacter with HIKCharacterState pSrcCharacterState, calculate HIKCharacte...
Definition: humanik.h:87
Definition: humanik.h:485
void HIKGetNodeStateTQAlignfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float *pTQ, size_t pTOffset, size_t pQOffset)
Retrieve the translation (T) and quaternion rotation (Q) in global space of Node pNodeId in HIKCharac...
Euler x, z, y.
Definition: humanik.h:669
Definition: humanik.h:304
Definition: humanik.h:189
Definition: humanik.h:270
Definition: humanik.h:140
Definition: humanik.h:206
Definition: humanik.h:294
void HIKSetEffectorStateTQSdv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const double pT[4], const double pQ[4], const double pS[4])
Set the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEffecto...
Definition: humanik.h:123
Definition: humanik.h:159
void HIKGetEffectorStateTQSdv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, double pT[4], double pQ[4], double pS[4])
Retrieve the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEf...
void HIKSetEffectorStateTQAlignfv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float *pTQ, size_t pTOffset, size_t pQOffset)
Set the translation (T) and quaternion rotation (Q) in global space of Effector pEffectorIndex in HIK...
Definition: humanik.h:283
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:1659
Definition: humanik.h:164
Definition: humanik.h:186
Definition: humanik.h:109
Activate minimum limit on X axis.
Definition: humanik.h:653
Euler z, x, y.
Definition: humanik.h:675
Definition: humanik.h:282
Definition: humanik.h:315
void HIKGetNodeStatefv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pXForm[16])
Retrieve the transform matrix of Node pNodeId in HIKCharacterState pCharacterState. Values are expressed using separate arrays.
Definition: humanik.h:310
Definition: humanik.h:122
void HIKSolveForEffectorSetFloorContactApprox(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the floor contact approximation solver for character pCharacter.
Definition: humanik.h:211
Definition: humanik.h:177
Definition: humanik.h:124
Definition: humanik.h:181
int HIKIsJointInverted(const HIKCharacter *pCharacter, eHIKMiddleJoint pJoint)
Indicates whether or not a middle joint is inverted.
Definition: humanik.h:192
Definition: humanik.h:137
Definition: humanik.h:112
Definition: humanik.h:269
Definition: humanik.h:176
Definition: humanik.h:271
Definition: humanik.h:135
HIKRotationOrder
Lists the possible rotation orders for the values set in the HIKSetRotationOrder() function...
Definition: humanik.h:665
Definition: humanik.h:220
void HIKSetResist(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
Set the Resist constraint for Effector pEffectorIndex.
Definition: humanik.h:200
Euler y, z, x.
Definition: humanik.h:671
void HIKGetEffectorStateTQSfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pT[4], float pQ[4], float pS[4])
Retrieve the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEf...
Definition: humanik.h:288
void HIKGetEffectorStateDataTQS(const HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescription *pDataDescription, void *pDataSet)
Retrieve the translation (T), quaternion rotation (Q), scaling (S), and IK constraints of multiple Ef...
Definition: humanik.h:162
void HIKSetPreQdv(HIKCharacter *pCharacter, int pNodeId, const double pPreQ[4])
Apply the pre rotation pPreQ to Node pNodeId.
HIKSolvingStep
Lists the solving steps supported by the IK solver. Used when setting the solving steps that the solv...
Definition: humanik.h:340
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:814
void HIKGetCharacterizeNodeStateTQSdv(const HIKCharacter *pCharacter, int pNodeId, double pT[4], double pQ[4], double pS[4])
Retrieve the translation, orientation and scaling for the Node pNodeId when the character is standing...
Euler z, x, z.
Definition: humanik.h:676
Definition: humanik.h:144
size_t mQOffset
Definition: humanik.h:1620
Definition: humanik.h:156
HIKNodeId
Lists all Nodes known to HumanIK, used to set up and access data for HIKCharacters.
Definition: humanik.h:77
void HIKGetRelaxPose(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
Calculate a basic seated pose for character pCharacter, storing it in HIKCharacterState pCharacterSta...
void HIKSolveForEffectorSetHipsTranslation(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the special hips translation solver for character pCharacter.
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:655
Represents the left elbow (HIKNodeId::LeftElbowNodeId).
Definition: humanik.h:818
void HIKSetCharacterizeNodeStatedv(HIKCharacter *pCharacter, int pNodeId, const double pXForm[16])
Set the transform matrix for the Node pNodeId when the character is standing in the default T-stance...
Definition: humanik.h:163
void HIKSetCharacterizeNodeStateTQSfv(HIKCharacter *pCharacter, int pNodeId, const float pT[4], const float pQ[4], const float pS[4])
Set the translation, orientation and scaling for the Node pNodeId when the character is standing in t...
void HIKSetNodeStateTQSfvComputeDependent(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float *pT, const float *pQ, const float *pS, const bool pLocal)
Set the translation (T), quaternion rotation (Q) and scaling (S) in global or local space of Node pNo...
Definition: humanik.h:370
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:1610
void HIKSolveForEffectorSet(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Solve character pCharacter with HIKEffectorSetState pEffectorSetState and initial HIKCharacterState p...
Definition: humanik.h: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:817
Definition: humanik.h:296
Definition: humanik.h:287
Definition: humanik.h:134
Definition: humanik.h:148
Definition: humanik.h:188
Definition: humanik.h:306
Definition: humanik.h:214
Definition: humanik.h:275
Definition: humanik.h:237
void HIKSolveForCharacterPrepareEffectorSet(const HIKCharacter *pDstCharacter, HIKCharacterState *pDstCharacterState, const HIKCharacter *pSrcCharacter, const HIKCharacterState *pSrcCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pDstPropertyState, const HIKPropertySetState *pSrcPropertyState)
Sync IK pEffectorSetState on source FK pSrcCharacterState and adjust IK relative to destination chara...
Definition: humanik.h:105
Definition: humanik.h:223
Definition: humanik.h:1593
Definition: humanik.h:205
Definition: humanik.h:293
HIKCharacter * HIKCharacterCreateInPlace(const HIKCharacterDefinition *pCharacterDefinition, void *pBuffer, const char *pValidationString)
Create a new HIKCharacter in the buffer pBuffer.
Definition: humanik.h:141
void HIKSetMinXYZRotationfv(HIKCharacter *pCharacter, int pNodeId, const float pMin[3], int pMinActiveMask)
Set the minimum rotation for the Node pNodeId.
A description of a data set that contains transform matrices for multiple different Nodes in an HIKCh...
Definition: humanik.h:1648
Solves the toes of the right foot. Note that RightFootNodeId itself is included in HIKSolvingStepRigh...
Definition: humanik.h:363
Definition: humanik.h:169
Definition: humanik.h:210
Definition: humanik.h:130
Definition: humanik.h:138
void HIKAddQuadripedOffset(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
Add quadruped offsets to HIKCharacterState pCharacterState.
Definition: humanik.h:238
void HIKSetIKSolvingStep(HIKEffectorSetState *pEffectorSetState, int pSolvingStep)
Set the IK solving steps for HIKEffectorSetState pEffectorSetState.
HIKCharacter * HIKCharacterCreate(const HIKCharacterDefinition *pCharacterDefinition, HIKMalloc pMalloc, const char *pValidationString)
Create a new HIKCharacter.
Left hand floor contact.
Definition: humanik.h:328
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:1619
int * mHIKNodeId
Definition: humanik.h:1624
Definition: humanik.h:179
void HIKGetNodeStateTQSdv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, double pT[4], double pQ[4], double pS[4])
Retrieve the translation (T), quaternion rotation (Q) and scaling (S) in global space of Node pNodeId...
void HIKSetEffectorStateTQSfv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float pT[4], const float pQ[4], const float pS[4])
Set the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEffecto...
void HIKGetEffectorStateTQSAlignfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float *pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset)
Retrieve the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEf...
bool HIKCharacterizeGeometry(HIKCharacter *pCharacter)
Set up and initialize character pCharacter for solving.
void HIKSolveForEffectorSetModifiers(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the Mirror and Lock modifiers for character pCharacter.
void HIKSetCharacterStateTransform(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescriptionMatrix *pDataDescription, const void *pDataSet)
Set the transform matrix of multiple Nodes from data set pDataSet, interpreted according to data desc...
A description of a data set that contains transform matrices for multiple different Effectors in an H...
Definition: humanik.h:1952
Definition: humanik.h:197
Definition: humanik.h:235
Definition: humanik.h:1592
Definition: humanik.h:215
Definition: humanik.h:313
Definition: humanik.h:147
Definition: humanik.h:249
Definition: humanik.h:224
Definition: humanik.h:344
Definition: humanik.h:285
Definition: humanik.h:203
Definition: humanik.h:114
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:674
void HIKGetLocalQFromDOFfv(const HIKCharacter *pCharacter, int pNodeId, const float pEuler[4], float pQuat[4])
Compute a local quaternion from an euler angle, using the DOFs structures (pre-rotation, rotation order, ...)
Definition: humanik.h:187
Definition: humanik.h:198
void HIKSolveForEffectorSetFloorContact(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the floor solver for character pCharacter.
int * mHIKEffectorId
Definition: humanik.h:1958
enum HIKMiddleJoint eHIKMiddleJoint
Definition: humanik.h:823
Definition: humanik.h:217
Definition: humanik.h:190
Defines a character's properties.
Definition: humanik.h:457
Definition: humanik.h:199
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:1934
Solves the character's right arm, from RightShoulderNodeId to RightHandNodeId inclusive.
Definition: humanik.h:357
void HIKSetHandPullHips(HIKEffectorSetState *pEffectorSetState, int pLeft, float pValue)
Set the amount of pull the left or right hand can exert on the hips.
Solves the character's left collar bones: LeftCollarNodeId and LeftCollarExtraNodeId.
Definition: humanik.h:354
Definition: humanik.h:108
Definition: humanik.h:307
Definition: humanik.h:229
void HIKSetTranslationActive(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
Set the Reach Translation constraint for Effector pEffectorIndex.
Definition: humanik.h:127
Definition: humanik.h:290
Definition: humanik.h:274
Definition: humanik.h:193
void HIKSetLimitsdv(HIKCharacter *pCharacter, int pNodeId, const double pMin[3], const double pMax[3], const double pPreQ[4], const double pPostQ[4], int pActiveMask, eHIKRotationOrder pRotationOrder)
Set up limits for Node pNodeId.
Definition: humanik.h:119
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:654
Definition: humanik.h:227
Definition: humanik.h:297
size_t mTOffset
Definition: humanik.h:1931
Definition: humanik.h:295
Marks the end of the enumeration.
Definition: humanik.h:332
void HIKGetParentOffsetfv(const HIKCharacter *pCharacter, int pNodeId, float pParentTOffset[4], float pParentQOffset[4], float pParentSOffset[4])
Retrieve the parent offset set for Node pNodeId.
void HIKGetCharacterStateTransform(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescriptionMatrix *pDataDescription, void *pDataSet)
Retrieve the transform matrices of multiple Nodes from HIKCharacterState pCharacterState, writing them to memory in data set pDataSet according to data description pDataDescription.
void HIKSubQuadripedOffset(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
Subtract quadruped offsets from HIKCharacterState pCharacterState.
Definition: humanik.h:226
Definition: humanik.h:272
Definition: humanik.h:302
Definition: humanik.h:183
Definition: humanik.h:139
void HIKGetCharacterizeNodeStatefv(const HIKCharacter *pCharacter, int pNodeId, float pXForm[16])
Retrieve the transform matrix for the Node pNodeId when the character is standing in the default T-st...
Definition: humanik.h:131
void HIKSolveForEffectorSetBegin(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Initializes an IK solve for character pCharacter.
Definition: humanik.h:212
Definition: humanik.h:202
Definition: humanik.h:91
Euler x, y, z.
Definition: humanik.h:667
Defines a pose for a character.
Definition: humanik.h:441
Definition: humanik.h:129
void HIKSetLimitsfv(HIKCharacter *pCharacter, int pNodeId, const float pMin[3], const float pMax[3], const float pPreQ[4], const float pPostQ[4], int pActiveMask, eHIKRotationOrder pRotationOrder)
Set up limits for Node pNodeId.
Definition: humanik.h:289
Definition: humanik.h:247
Definition: humanik.h:145
size_t mStride
Definition: humanik.h:1957
void HIKEffectorSetStateDestroy(HIKEffectorSetState *pESetState, HIKFree pFree)
Destroy HIKEffectorSetState pESetState.
Definition: humanik.h:242
void HIKSetNodeStateTQAlignfv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float *pTQ, size_t pTOffset, size_t pQOffset)
Set the translation (T) and quaternion rotation (Q) in global space of Node pNodeId in HIKCharacterSt...
Definition: humanik.h:484
void HIKSolveForEffectorSetHeadAndNeck(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the head and neck IK solver for character pCharacter.
Definition: humanik.h:278
Definition: humanik.h:243
Definition: humanik.h:153
Activates Lock & Mirror modifiers.
Definition: humanik.h:375
Definition: humanik.h:300
Definition: humanik.h:113
Definition: humanik.h:149
Euler y, z, y.
Definition: humanik.h:672
size_t mParameterOffset
Definition: humanik.h:1955
Definition: humanik.h:225
size_t mMatrixOffset
Definition: humanik.h:1657
void HIKGetDOFFromLocalQfv(const HIKCharacter *pCharacter, int pNodeId, const float pQuat[4], float pEuler[4])
Compute the euler angle equivalent of a local quaternion, using the DOFs structures (pre-rotation...
float HIKGetResist(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
Retrieve the Resist constraint for Effector pEffectorIndex.
Definition: humanik.h:251
void 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:816
void HIKSetCharacterStateTransformTQS_SoA(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, const void *pDataSet)
Set the translation (T), quaternion rotation (Q) and scaling (S) of multiple Nodes from data set pDat...
Definition: humanik.h:483
void HIKSolveForEffectorSetRollExtraction(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the roll extraction solver for character pCharacter.
Definition: humanik.h:125
Definition: humanik.h:146
Activate maximum limit on Z axis.
Definition: humanik.h:658
void HIKSetPull(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
Set the Pull constraint for Effector pEffectorIndex.
Definition: humanik.h:172
Solves the character's right leg, from RightHipNodeId to RightFootNodeId inclusive.
Definition: humanik.h:359
Spheric x, y, z.
Definition: humanik.h:679
Definition: humanik.h:353
void HIKSetParentOffsetdv(HIKCharacter *pCharacter, int pNodeId, const double pParentTOffset[4], const double pParentQOffset[4], const double pParentSOffset[4])
Set the parent offset for Node pNodeId.
void HIKGetCharacterStateTransformTQS_SoA(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, void *pDataSet)
Retrieve the translation (T), quaternion rotation (Q) and scaling (S) of multiple Nodes from HIKChara...
Definition: humanik.h:255
Definition: humanik.h:154
void HIKEffectorSetFromCharacter(const HIKCharacter *pCharacter, HIKEffectorSetState *pEffectorSetState, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState)
Set up HIKEffectorSetState pEffectorSetState to match character pCharacter in HIKCharacterState pChar...
void HIKSetNodeStatefv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pXForm[16])
Set the transform matrix of Node pNodeId in HIKCharacterState pCharacterState.
size_t HIKCharacterStateSizeFromState(const HIKCharacterState *pCharacterState)
Returns the size of HIKCharacterState pCharacterState in bytes. All HIKCharacterStates for a given ch...
void HIKSetCharacterStateTransformTQ(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, const void *pDataSet)
Set the translation (T) and quaternion rotation (Q) of multiple Nodes from data set pDataSet...
Definition: humanik.h:195
Definition: humanik.h:292
size_t HIKCharacterStateSize(const HIKCharacter *pCharacter)
Returns the size in bytes required by any HIKCharacterState that defines a pose for HIKCharacter pCha...
Definition: humanik.h:209
Definition: humanik.h:277
void HIKSolveForCharacterRetarget(const HIKCharacter *pDstCharacter, HIKCharacterState *pDstCharacterState, const HIKCharacter *pSrcCharacter, const HIKCharacterState *pSrcCharacterState, const HIKPropertySetState *pDstPropertyState)
Simple rotation mapper between pSrcCharacter and pDstCharacter.
Activate maximum limit on Y axis.
Definition: humanik.h:657
Definition: humanik.h:180
void HIKGetEffectorStateTQfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pT[4], float pQ[4])
Retrieve the translation (T) and quaternion rotation (Q) in global space of Effector pEffectorIndex i...
void HIKGetEffectorStateData(const HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescriptionMatrix *pDataDescription, void *pDataSet)
Retrieve the transform matrix and IK constraints of multiple Effectors from HIKEffectorSetState pEffe...
Definition: humanik.h:284
Definition: humanik.h:185
Definition: humanik.h:136
void HIKSetMaxXYZRotationdv(HIKCharacter *pCharacter, int pNodeId, const double pMax[3], int pMaxActiveMask)
Set the maximum rotation for the Node pNodeId.
Definition: humanik.h:142
Definition: humanik.h:207
void HIKGetCharacterizeNodeStateTQSfv(const HIKCharacter *pCharacter, int pNodeId, float pT[4], float pQ[4], float pS[4])
Retrieve the translation, orientation and scaling for the Node pNodeId when the character is standing...
Definition: humanik.h:143
Definition: humanik.h:234
Definition: humanik.h:308
size_t mStride
Definition: humanik.h:1623
void HIKSetOriginalSnSLength(HIKCharacter *pCharacter, bool pFromCharacterizationPose, HIKCharacterState *pCharacterState)
Allow setting original length for joints from CharacterState instead of characterization pose (defaul...
Solves the character's spine, including WaistNodeId, and Spine1NodeId to Spine9NodeId.
Definition: humanik.h:365
Definition: humanik.h:152
void HIKSetCharacterizeNodeStatefv(HIKCharacter *pCharacter, int pNodeId, const float pXForm[16])
Set the transform matrix for the Node pNodeId when the character is standing in the default T-stance...
Definition: humanik.h:248
Definition: humanik.h: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:1660
void HIKSetEffectorStateDataTQS(HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescription *pDataDescription, const void *pDataSet)
Set the translation (T), quaternion rotation (Q), scaling (S), and IK constraints of multiple Effecto...
void HIKSetCharacterStateTransformTQS(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, const void *pDataSet)
Set the translation (T), quaternion rotation (Q) and scaling (S) of multiple Nodes from data set pDat...
Definition: humanik.h:116
size_t mSOffset
Definition: humanik.h:1933
size_t HIKCharacterStateSizeFromDefinition(const HIKCharacterDefinition *pCharacterDefinition)
Returns the size in bytes required by any HIKCharacterState that defines a pose for an HIKCharacter b...
void HIKGetCharacterStateTransformTQS(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, void *pDataSet)
Retrieve the translation (T), quaternion rotation (Q) and scaling (S) of multiple Nodes from HIKChara...
Definition: humanik.h:158
void HIKSetEffectorStatedv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const double pXForm[16])
Set the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState.
Definition: humanik.h:168
Activates Squash & Strech for the right arm, from RightShoulderNodeId to RightHandNodeId inclusive...
Definition: humanik.h:372
size_t mSOffset
Definition: humanik.h:1621
void HIKGetEffectorStateTQAlignfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float *pTQ, size_t pTOffset, size_t pQOffset)
Retrieve the translation (T) and quaternion rotation (Q) in global space of Effector pEffectorIndex i...
Defines which Nodes are to be used by an HIKCharacter.
Definition: humanik.h:497
void HIKSetPostQfv(HIKCharacter *pCharacter, int pNodeId, const float pPostQ[4])
Apply the post rotation pPostQ to the Node pNodeId.
size_t mMatrixOffset
Definition: humanik.h:1954
Activates Squash & Strech for the left arm, from LeftHipNodeId to LeftFootNodeId inclusive.
Definition: humanik.h:373
void HIKSetMaxXYZRotationfv(HIKCharacter *pCharacter, int pNodeId, const float pMax[3], int pMaxActiveMask)
Set the maximum rotation for the Node pNodeId.
Definition: humanik.h:204
Definition: humanik.h:281
Definition: humanik.h:121
Solves the fingers of the right hand. Note that RightHandNodeId itself is included in HIKSolvingStepR...
Definition: humanik.h:361
size_t HIKCharacterSize(const HIKCharacter *pCharacter)
Returns the size of HIKCharacter pCharacter in bytes.
Defines a character to be used with HumanIK.
Definition: humanik.h:170
void HIKSetEffectorStateTQSAlignfv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float *pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset)
Set the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEffecto...
enum HIKRotationOrder eHIKRotationOrder
Definition: humanik.h:683
Definition: humanik.h:216
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:656
void HIKGetEffectorStateFromCharacterfv(const HIKCharacter *pCharacter, int pEffectorIndex, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState, float pXForm[16])
Retrieve the transform matrix of Effector pEffectorIndex for character pCharacter in HIKCharacterStat...
Definition: humanik.h:348
void HIKSetRotationActive(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
Set the Reach Rotation constraint for Effector pEffectorIndex.
void HIKSetCharacterizeNodeStateTQSdv(HIKCharacter *pCharacter, int pNodeId, const double pT[4], const double pQ[4], const double pS[4])
Set the translation, orientation and scaling for the Node pNodeId when the character is standing in t...
Definition: humanik.h:382
Definition: humanik.h: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