HIK2016/humanik/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 5
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 
298 };
299 
300 /* *********************************************** */
306 {
309  HipsEffectorId = 0, // 0
356 };
357 
358 /* *********************************************** */
367 {
373 };
374 
375 /* *********************************************** */
381 {
404  HIKSolvingStepHead = 1 << 13,
407 
416 
423 };
424 
428 typedef void* (HIK_API * HIKMalloc)(size_t);
429 
433 typedef void (HIK_API * HIKFree)(void *);
434 
435 
436 /* *********************************************** */
458 struct HIKCharacter;
459 
460 
481 struct HIKEffectorSetState;
482 
483 
497 struct HIKCharacterState;
498 
499 
514 struct HIKPropertySetState;
515 
520 {
522  HIKNodeUsed = 1 << 0,
525 };
526 
536 typedef struct sHIKCharacterDefinition
537 {
542  int mUsedNodes[LastNodeId];
544 
545 
546 /* *********************************************** */
556  #if defined(HIK_VERBOSE)
557 
564  bool HIKValidateHierarchy(const HIKCharacterDefinition *pCharacterDefinition);
565 
576  bool HIKValidateGeometry(const HIKCharacter *pCharacter);
577 #endif
578 
586  HIK_EXPORT HIKCharacter * HIK_API HIKCharacterCreate( const HIKCharacterDefinition *pCharacterDefinition, HIKMalloc pMalloc, const char *pValidationString);
587 
598  HIK_EXPORT HIKCharacter * HIK_API HIKCharacterCreateInPlace( const HIKCharacterDefinition *pCharacterDefinition, void* pBuffer, const char *pValidationString);
599 
600 
608 
617 
627 
637 
638 /* *********************************************** */
653 HIK_EXPORT void HIK_API HIKCharacterDestroy (HIKCharacter *pCharacter, HIKFree pFree);
654 
661 
668 
669 /* *********************************************** */
691 {
692  HIKActiveMinX = 1 << 0,
693  HIKActiveMinY = 1 << 1,
694  HIKActiveMinZ = 1 << 2,
695  HIKActiveMaxX = 1 << 3,
696  HIKActiveMaxY = 1 << 4,
697  HIKActiveMaxZ = 1 << 5
698 };
699 
705 {
719 };
720 
723 
724 
731 HIK_EXPORT void HIK_API HIKSetCharacterizeNodeStatefv(HIKCharacter *pCharacter, int pNodeId, const float pXForm[16]);
735 HIK_EXPORT void HIK_API HIKSetCharacterizeNodeStatedv(HIKCharacter *pCharacter, int pNodeId, const double pXForm[16]);
736 
745 HIK_EXPORT void HIK_API HIKSetCharacterizeNodeStateTQSfv(HIKCharacter *pCharacter, int pNodeId, const float pT[4], const float pQ[4], const float pS[4]);
749 HIK_EXPORT void HIK_API HIKSetCharacterizeNodeStateTQSdv(HIKCharacter *pCharacter, int pNodeId, const double pT[4], const double pQ[4], const double pS[4]);
750 
759 HIK_EXPORT void HIK_API HIKGetCharacterizeNodeStateTQSfv(const HIKCharacter *pCharacter, int pNodeId, float pT[4], float pQ[4], float pS[4]);
763 HIK_EXPORT void HIK_API HIKGetCharacterizeNodeStateTQSdv(const HIKCharacter *pCharacter, int pNodeId, double pT[4], double pQ[4], double pS[4]);
764 
771 HIK_EXPORT void HIK_API HIKGetCharacterizeNodeStatefv(const HIKCharacter *pCharacter, int pNodeId, float pXForm[16]);
772 
785 
792 HIK_EXPORT void HIK_API HIKGetDefaultState(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState);
793 
794 
800 HIK_EXPORT void HIK_API HIKGetRelaxPose(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState);
801 
812 HIK_EXPORT int HIK_API HIKGetNodeUse(const HIKCharacter *pCharacter, int pNodeId);
813 
828 HIK_EXPORT void HIK_API HIKSetParentOffsetfv(HIKCharacter *pCharacter, int pNodeId, const float pParentTOffset[4], const float pParentQOffset[4], const float pParentSOffset[4]);
832 HIK_EXPORT void HIK_API HIKSetParentOffsetdv(HIKCharacter *pCharacter, int pNodeId, const double pParentTOffset[4], const double pParentQOffset[4], const double pParentSOffset[4]);
833 
844 HIK_EXPORT void HIK_API HIKGetParentOffsetfv(const HIKCharacter *pCharacter, int pNodeId, float pParentTOffset[4], float pParentQOffset[4], float pParentSOffset[4]);
848 HIK_EXPORT void HIK_API HIKGetParentOffsetdv(const HIKCharacter *pCharacter, int pNodeId, double pParentTOffset[4], double pParentQOffset[4], double pParentSOffset[4]);
849 
854 {
859 };
860 
863 
873 HIK_EXPORT void HIK_API HIKInverseJoint(HIKCharacter *pCharacter, eHIKMiddleJoint pJoint, int pInverse);
874 
884 HIK_EXPORT int HIK_API HIKIsJointInverted(const HIKCharacter *pCharacter, eHIKMiddleJoint pJoint);
885 
893 HIK_EXPORT void HIK_API HIKSetMinXYZRotationfv(HIKCharacter *pCharacter, int pNodeId, const float pMin[3], int pMinActiveMask);
897 HIK_EXPORT void HIK_API HIKSetMinXYZRotationdv(HIKCharacter *pCharacter, int pNodeId, const double pMin[3], int pMinActiveMask);
898 
906 HIK_EXPORT void HIK_API HIKSetMaxXYZRotationfv(HIKCharacter *pCharacter, int pNodeId, const float pMax[3], int pMaxActiveMask);
910 HIK_EXPORT void HIK_API HIKSetMaxXYZRotationdv(HIKCharacter *pCharacter, int pNodeId, const double pMax[3], int pMaxActiveMask);
911 
918 HIK_EXPORT void HIK_API HIKSetRotationOrder(HIKCharacter *pCharacter, int pNodeId, eHIKRotationOrder pRotationOrder);
919 
926 HIK_EXPORT void HIK_API HIKSetPreQfv(HIKCharacter *pCharacter, int pNodeId, const float pPreQ[4]);
930 HIK_EXPORT void HIK_API HIKSetPreQdv(HIKCharacter *pCharacter, int pNodeId, const double pPreQ[4]);
931 
938 HIK_EXPORT void HIK_API HIKSetPostQfv(HIKCharacter *pCharacter, int pNodeId, const float pPostQ[4]);
942 HIK_EXPORT void HIK_API HIKSetPostQdv(HIKCharacter *pCharacter, int pNodeId, const double pPostQ[4]);
943 
964 HIK_EXPORT void HIK_API HIKSetLimitsfv(HIKCharacter *pCharacter, int pNodeId,
965  const float pMin[3], const float pMax[3],
966  const float pPreQ[4], const float pPostQ[4],
967  int pActiveMask,
968  eHIKRotationOrder pRotationOrder);
972 HIK_EXPORT void HIK_API HIKSetLimitsdv(HIKCharacter *pCharacter, int pNodeId,
973  const double pMin[3], const double pMax[3],
974  const double pPreQ[4], const double pPostQ[4],
975  int pActiveMask,
976  eHIKRotationOrder pRotationOrder);
977 
986 HIK_EXPORT void HIKSetTranslationLimitsf(HIKCharacter *pCharacter,int pNodeId,
987  float pMin, float pMax, bool pActive);
988 
992 HIK_EXPORT void HIKSetTranslationLimitsd(HIKCharacter *pCharacter,int pNodeId,
993  double pMin, double pMax, bool pActive);
994 
1011 HIK_EXPORT void HIK_API HIKGetLimitsfv(const HIKCharacter *pCharacter, int pNodeId,
1012  float pMin[3], float pMax[3],
1013  float pPreQ[4], float pPostQ[4],
1014  int &pActiveMask,
1015  eHIKRotationOrder &pRotationOrder);
1019 HIK_EXPORT void HIK_API HIKGetLimitsdv(const HIKCharacter *pCharacter, int pNodeId,
1020  double pMin[3], double pMax[3],
1021  double pPreQ[4],double pPostQ[4],
1022  int &pActiveMask,
1023  eHIKRotationOrder &pRotationOrder);
1024 
1043 HIK_EXPORT void HIK_API HIKAddQuadripedOffset(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState);
1044 
1051 HIK_EXPORT void HIK_API HIKSubQuadripedOffset(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState);
1052 
1053 /* *********************************************** */
1094 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);
1095 
1106 HIK_EXPORT void HIK_API HIKSolveForCharacterRetarget(const HIKCharacter *pDstCharacter, HIKCharacterState *pDstCharacterState, const HIKCharacter *pSrcCharacter, const HIKCharacterState *pSrcCharacterState, const HIKPropertySetState *pDstPropertyState);
1107 
1120 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);
1121 
1122 // ***********************************************
1143 HIK_EXPORT void HIK_API HIKGetEffectorStateFromCharacterfv(const HIKCharacter *pCharacter, int pEffectorIndex, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState, float pXForm[16]);
1148 HIK_EXPORT void HIK_API HIKGetEffectorStateFromCharacterdv(const HIKCharacter *pCharacter, int pEffectorIndex, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState, double pXForm[16]);
1149 
1157 HIK_EXPORT void HIK_API HIKEffectorSetFromCharacter(const HIKCharacter *pCharacter, HIKEffectorSetState *pEffectorSetState, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState);
1158 
1186 HIK_EXPORT void HIK_API HIKSolveForEffectorSet(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1187 
1203 HIK_EXPORT void HIK_API HIKSolveForEffectorSetBegin(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1204 
1217 HIK_EXPORT void HIK_API HIKSolveForEffectorSetFloorContactApprox(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1218 
1227 HIK_EXPORT void HIK_API HIKSolveForEffectorSetBodyPull(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1228 
1237 HIK_EXPORT void HIK_API HIKSolveForEffectorSetArmsAndLegs(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1238 
1247 HIK_EXPORT void HIK_API HIKSolveForEffectorSetFingersAndToes(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1248 
1257 HIK_EXPORT void HIK_API HIKSolveForEffectorSetHeadAndNeck(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1258 
1270 HIK_EXPORT void HIK_API HIKSolveForEffectorSetFloorContact(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1271 
1280 HIK_EXPORT void HIK_API HIKSolveForEffectorSetHipsTranslation(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1281 
1290 HIK_EXPORT void HIK_API HIKSolveForEffectorSetRollExtraction(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState,HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1291 
1300 HIK_EXPORT void HIK_API HIKSolveForEffectorSetModifiers(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState);
1301 
1302 // ***********************************************
1329 HIK_EXPORT void HIK_API HIKSetEffectorStatefv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float pXForm[16]);
1334 HIK_EXPORT void HIK_API HIKSetEffectorStatedv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const double pXForm[16]);
1335 
1345 HIK_EXPORT void HIK_API HIKSetEffectorStateTQSfv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float pT[4], const float pQ[4], const float pS[4]);
1350 HIK_EXPORT void HIK_API HIKSetEffectorStateTQSdv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const double pT[4], const double pQ[4], const double pS[4]);
1351 
1365 HIK_EXPORT void HIK_API HIKSetEffectorStateTQSAlignfv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float* pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset);
1366 
1381 HIK_EXPORT void HIK_API HIKSetEffectorStateTQAlignfv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float* pTQ, size_t pTOffset, size_t pQOffset);
1382 
1389 HIK_EXPORT void HIK_API HIKGetEffectorStatefv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pXForm[16]);
1394 HIK_EXPORT void HIK_API HIKGetEffectorStatedv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, double pXForm[16]);
1395 
1404 HIK_EXPORT void HIK_API HIKGetEffectorStateTQSfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pT[4], float pQ[4], float pS[4]);
1413 HIK_EXPORT void HIK_API HIKGetEffectorStateTQfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pT[4], float pQ[4]);
1418 HIK_EXPORT void HIK_API HIKGetEffectorStateTQSdv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, double pT[4], double pQ[4], double pS[4]);
1419 
1433 HIK_EXPORT void HIK_API HIKGetEffectorStateTQSAlignfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float* pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset);
1434 
1447 HIK_EXPORT void HIK_API HIKGetEffectorStateTQAlignfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float* pTQ, size_t pTOffset, size_t pQOffset);
1448 
1455 HIK_EXPORT void HIK_API HIKSetTranslationActive(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue);
1456 
1463 HIK_EXPORT float HIK_API HIKGetTranslationActive(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex);
1464 
1471 HIK_EXPORT void HIK_API HIKSetRotationActive(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue);
1472 
1479 HIK_EXPORT float HIK_API HIKGetRotationActive(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex);
1480 
1487 HIK_EXPORT void HIK_API HIKSetPull(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue);
1488 
1495 HIK_EXPORT float HIK_API HIKGetPull(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex);
1496 
1503 HIK_EXPORT void HIK_API HIKSetResist(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue);
1504 
1511 HIK_EXPORT float HIK_API HIKGetResist(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex);
1512 
1513 
1523 HIK_EXPORT void HIK_API HIKSetHandPullHips(HIKEffectorSetState *pEffectorSetState, int pLeft, float pValue);
1524 
1531 HIK_EXPORT float HIK_API HIKGetHandPullHips(const HIKEffectorSetState *pEffectorSetState, int pLeft);
1532 
1547 HIK_EXPORT void HIK_API HIKSetEffectorFloorStatefv(HIKEffectorSetState *pEffectorSetState, int pFloor, const float pXForm[16]);
1551 HIK_EXPORT void HIK_API HIKSetEffectorFloorStatedv(HIKEffectorSetState *pEffectorSetState, int pFloor, const double pXForm[16]);
1552 
1560 HIK_EXPORT void HIK_API HIKSetEffectorFloorStateTQfv(HIKEffectorSetState *pEffectorSetState, int pFloor, const float pT[4], const float pQ[4]);
1564 HIK_EXPORT void HIK_API HIKSetEffectorFloorStateTQdv(HIKEffectorSetState *pEffectorSetState, int pFloor, const double pT[4], const double pQ[4]);
1565 
1572 HIK_EXPORT void HIK_API HIKGetEffectorFloorStatefv(const HIKEffectorSetState *pEffectorSetState, int pFloor, float pXForm[16]);
1576 HIK_EXPORT void HIK_API HIKGetEffectorFloorStatedv(const HIKEffectorSetState *pEffectorSetState, int pFloor, double pXForm[16]);
1577 
1585 HIK_EXPORT void HIK_API HIKGetEffectorFloorStateTQfv(const HIKEffectorSetState *pEffectorSetState, int pFloor, float pT[4], float pQ[4]);
1589 HIK_EXPORT void HIK_API HIKGetEffectorFloorStateTQdv(const HIKEffectorSetState *pEffectorSetState, int pFloor, double pT[4],double pQ[4]);
1590 
1596 HIK_EXPORT int HIK_API HIKGetIKSolvingStep(const HIKEffectorSetState *pEffectorSetState);
1597 
1603 HIK_EXPORT void HIK_API HIKSetIKSolvingStep(HIKEffectorSetState *pEffectorSetState,int pSolvingStep);
1604 
1605 // ***********************************************
1630 {
1631  HIKNotUsed = -1,
1633 };
1634 
1636 typedef enum HIKToken eHIKToken;
1637 
1638 
1649 typedef struct sHIKDataDescription
1650 {
1652  enum
1653  {
1654  HIKGlobalSpace = 0,
1655  HIKLocalSpace = 1
1656  }mTransformSpace;
1657 
1658  size_t mTOffset;
1659  size_t mQOffset;
1660  size_t mSOffset;
1662  size_t mStride;
1663  int *mHIKNodeId;
1666 
1687 typedef struct sHIKDataDescriptionMatrix
1688 {
1690  enum
1691  {
1692  HIKGlobalSpace = 0,
1693  HIKLocalSpace = 1
1694  }mTransformSpace;
1695 
1696  size_t mMatrixOffset;
1698  size_t mStride;
1699  int *mHIKNodeId;
1702 
1712 HIK_EXPORT void HIK_API HIKSetCharacterStateTransformTQS(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, const void* pDataSet);
1720 HIK_EXPORT void HIK_API HIKSetCharacterStateTransformTQ(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, const void* pDataSet);
1721 
1726 HIK_EXPORT void HIK_API HIKSetCharacterStateTransform(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescriptionMatrix* pDataDescription, const void* pDataSet);
1727 
1737 HIK_EXPORT void HIK_API HIKSetCharacterStateTransformTQS_SoA(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, const void* pDataSet);
1738 
1746 HIK_EXPORT void HIK_API HIKSetNodeStatefv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pXForm[16]);
1752 HIK_EXPORT void HIK_API HIKSetNodeStatedv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const double pXForm[16]);
1753 
1763 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]);
1770 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]);
1777 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]);
1778 
1790 HIK_EXPORT void HIKSetNodeStateTQSfvComputeDependent(const HIKCharacter* pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float * pT, const float * pQ, const float * pS, const bool pLocal);
1791 
1802 HIK_EXPORT void HIK_API HIKSetNodeStateTQfv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pT[4], const float pQ[4]);
1803 
1818 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);
1819 
1835 HIK_EXPORT void HIK_API HIKSetNodeStateTQAlignfv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float* pTQ, size_t pTOffset, size_t pQOffset);
1836 
1837 
1847 HIK_EXPORT void HIK_API HIKGetCharacterStateTransformTQS(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, void* pDataSet);
1852 HIK_EXPORT void HIK_API HIKGetCharacterStateTransformTQ(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, void* pDataSet);
1857 HIK_EXPORT void HIK_API HIKGetCharacterStateTransformQ(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, void* pDataSet);
1858 
1863 HIK_EXPORT void HIK_API HIKGetCharacterStateTransform(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescriptionMatrix* pDataDescription, void* pDataSet);
1864 
1874 HIK_EXPORT void HIK_API HIKGetCharacterStateTransformTQS_SoA(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription* pDataDescription, void* pDataSet);
1875 
1883 HIK_EXPORT void HIK_API HIKGetNodeStatefv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pXForm[16]);
1889 HIK_EXPORT void HIK_API HIKGetNodeStatedv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, double pXForm[16]);
1890 
1900 HIK_EXPORT void HIK_API HIKGetNodeStateTQSfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4], float pS[4]);
1907 HIK_EXPORT void HIK_API HIKGetNodeStateTQNonUniformSfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4], float pS[4]);
1913 HIK_EXPORT void HIK_API HIKGetNodeStateTQSdv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, double pT[4], double pQ[4], double pS[4]);
1914 
1923 HIK_EXPORT void HIK_API HIKGetNodeStateTQfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4]);
1924 
1939 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);
1940 
1954 HIK_EXPORT void HIK_API HIKGetNodeStateTQAlignfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float* pTQ, size_t pTOffset, size_t pQOffset);
1955 
1956 
1968 typedef struct sHIKEffectorDataDescription
1969 {
1970  size_t mTOffset;
1971  size_t mQOffset;
1972  size_t mSOffset;
1973  size_t mParameterOffset;
1975  size_t mStride;
1976  int *mHIKEffectorId;
1979 
1991 typedef struct sHIKEffectorDataDescriptionMatrix
1992 {
1993  size_t mMatrixOffset;
1994  size_t mParameterOffset;
1996  size_t mStride;
1997  int *mHIKEffectorId;
2000 
2009 HIK_EXPORT void HIK_API HIKSetEffectorStateDataTQS(HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescription* pDataDescription, const void* pDataSet);
2010 
2015 HIK_EXPORT void HIK_API HIKSetEffectorStateData(HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescriptionMatrix* pDataDescription, const void* pDataSet);
2016 
2025 HIK_EXPORT void HIK_API HIKGetEffectorStateDataTQS(const HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescription* pDataDescription, void* pDataSet);
2026 
2031 HIK_EXPORT void HIK_API HIKGetEffectorStateData(const HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescriptionMatrix* pDataDescription, void* pDataSet);
2032 
2033 // ***********************************************
2043 HIK_EXPORT int HIK_API HIKNodeIdFromNodeName(const char* pName);
2044 
2050 HIK_EXPORT const char* HIK_API HIKNodeNameFromNodeId(int pNodeId);
2051 
2057 HIK_EXPORT int HIK_API HIKEffectorIdFromEffectorName(const char* pName);
2058 
2064 HIK_EXPORT const char* HIK_API HIKEffectorNameFromEffectorId(int pEffectorId);
2065 
2070 HIK_EXPORT void HIK_API HIKGetLocalQFromDOFfv(const HIKCharacter *pCharacter, int pNodeId, const float pEuler[4], float pQuat[4]);
2071 
2076 HIK_EXPORT void HIK_API HIKGetDOFFromLocalQfv(const HIKCharacter *pCharacter, int pNodeId, const float pQuat[4], float pEuler[4]);
2077 
2082 HIK_EXPORT void HIK_API HIKQTransform(const float quat[4], const float p[4], float q[4]);
2083 
2088 HIK_EXPORT void HIK_API HIKEulerFromQuat(const float quat[4], float euler[4]);
2089 
2094 HIK_EXPORT void HIK_API HIKSetOriginalSnSLength(HIKCharacter *pCharacter, bool pFromCharacterizationPose, HIKCharacterState *pCharacterState);
2095 
2096 // ***********************************************
2108 HIK_EXPORT size_t HIK_API HIKCharacterDefinitionSize(const HIKCharacterDefinition *pCharacterDefinition);
2109 
2115 
2116 
2117 
2122 HIK_EXPORT size_t HIK_API HIKCharacterSize(const HIKCharacter* pCharacter);
2123 
2129 HIK_EXPORT size_t HIK_API HIKCharacterStateSize(const HIKCharacter* pCharacter);
2130 
2131 
2138 
2143 
2144 #ifdef __cplusplus
2145 }
2146 #endif
2147 #define HIK_INTERNAL_PLACEHOLDER
2148 #endif
void HIKGetNodeStateTQNonUniformSfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4], float pS[4])
Retrieve the translation (T), quaternion rotation (Q) and non-uniform scaling (S) in global space of ...
Activate maximum limit on Y axis.
Definition: humanik.h:656
Solves the toes of the left foot.
Definition: humanik.h:362
void HIKCharacterStateDestroy(HIKCharacterState *pCharacterState, HIKFree pFree)
Destroy HIKCharacterState pCharacterState.
float HIKGetRotationActive(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
Retrieve the Reach Rotation constraint for Effector pEffectorIndex.
Spheric x, y, z.
Definition: humanik.h:678
Provides an IK goal point for the RightHandNodeId.
Definition: humanik.h:290
HIKEffectorSetState * HIKEffectorSetStateCreate(HIKMalloc pMalloc)
Create a new HIKEffectorSetState.
Provides an IK goal point for the last Node in the ring finger of the left hand.
Definition: humanik.h:294
size_t mQOffset
Specifies the offset of the quaternion rotation data within each data block.
Definition: humanik.h:1619
Solves the character's right arm, from RightShoulderNodeId to RightHandNodeId inclusive.
Definition: humanik.h:357
void HIKSetEffectorStateData(HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescriptionMatrix *pDataDescription, const void *pDataSet)
Set the transform matrix and IK constraints of multiple Effectors from data set pDataSet, interpreted according to data description pDataDescription.
Activate maximum limit on X axis.
Definition: humanik.h:655
size_t mTOffset
Specifies the offset of the translation data within each data block.
Definition: humanik.h:1618
enum HIKToken eHIKToken
see enum HIKToken
Definition: humanik.h:1596
Euler y, z, x.
Definition: humanik.h:670
void HIKCharacterDestroy(HIKCharacter *pCharacter, HIKFree pFree)
Destroy HIKCharacter pCharacter.
Represents the right elbow (HIKNodeId::RightElbowNodeId).
Definition: humanik.h:818
void HIKSetTranslationLimitsd(HIKCharacter *pCharacter, int pNodeId, double pMin, double pMax, bool pActive)
Set the translation limits for Node pNodeId.
int HIKGetIKSolvingStep(const HIKEffectorSetState *pEffectorSetState)
Retrieve the IK solving steps currently set for HIKEffectorSetState pEffectorSetState.
void HIKSetEffectorFloorStateTQfv(HIKEffectorSetState *pEffectorSetState, int pFloor, const float pT[4], const float pQ[4])
Set the translation and rotation in global space of the oriented plane that the floor contact engine ...
Provides an IK goal point for the RightElbowNodeId.
Definition: humanik.h:277
Solves the fingers of the left hand.
Definition: humanik.h:360
HIKSolvingStep
Lists the solving steps supported by the IK solver.
Definition: humanik.h:340
Provides an IK goal point for the last Node in the middle finger of the right hand.
Definition: humanik.h:299
Node is characterized.
Definition: humanik.h:482
void HIKGetEffectorStatedv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, double pXForm[16])
Retrieve the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState.
int HIKEffectorIdFromEffectorName(const char *pName)
Retrieve the Effector ID from a descriptive name.
void HIKGetCharacterStateTransformTQ(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, void *pDataSet)
Retrieve the translation (T) and quaternion rotation (Q) of multiple Nodes from HIKCharacterState pCh...
HIKLimitActiveMask
Lists the possible types of limits that can be activated for a Node.
Definition: humanik.h:650
void HIKSetEffectorFloorStatefv(HIKEffectorSetState *pEffectorSetState, int pFloor, const float pXForm[16])
Set the transform matrix of the oriented plane that the floor contact engine applies to one of your c...
A description of a data set that contains separate translation, quaternion rotation, and scaling values for multiple Effectors in an HIKEffectorSetState.
Solves the character's left leg, from LeftHipNodeId to LeftFootNodeId inclusive.
Definition: humanik.h:358
enum sHIKDataDescription::@2 mTransformSpace
Indicates whether your Node data is expressed in local or global space.
Solves the character's right leg, from RightHipNodeId to RightFootNodeId inclusive.
Definition: humanik.h:359
int mUsedNodes[LastNodeId]
An array of integers that contains an element for each Node known to HumanIK, listed in the HIKNodeId...
Definition: humanik.h:502
void HIKSetParentOffsetfv(HIKCharacter *pCharacter, int pNodeId, const float pParentTOffset[4], const float pParentQOffset[4], const float pParentSOffset[4])
Set the parent offset for Node pNodeId.
size_t mParameterOffset
pecifies the offset of the IK constraint data within each data block.
Definition: humanik.h:1954
Provides an IK goal point for the LeftAnkleNodeId.
Definition: humanik.h:270
Marks the end of the enumeration.
Definition: humanik.h:332
void HIKGetLimitsfv(const HIKCharacter *pCharacter, int pNodeId, float pMin[3], float pMax[3], float pPreQ[4], float pPostQ[4], int &pActiveMask, eHIKRotationOrder &pRotationOrder)
Retrieve the limits set for Node pNodeId.
void(* HIKFree)(void *)
Memory de-allocator function.
Definition: humanik.h:393
size_t mStride
Specifies the total size of each data block.
Definition: humanik.h:1935
void HIKInverseJoint(HIKCharacter *pCharacter, eHIKMiddleJoint pJoint, int pInverse)
Reverses the direction in which a middle joint bends, such as a knee or elbow.
HIKToken
Lists special values that you can use within the list of Node IDs in a data description.
Definition: humanik.h:1589
void HIKGetDefaultState(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
Retrieve the default T-stance for character pCharacter, storing it in HIKCharacterState pCharacterSta...
void HIKGetNodeStateTQfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4])
Retrieve the translation (T) and quaternion rotation (Q) in global space of Node pNodeId in HIKCharac...
Marks the end of the enumeration.
Definition: humanik.h:257
Provides an IK goal point for the last Node in the extra finger of the left hand. ...
Definition: humanik.h:296
Solves the fingers of the right hand.
Definition: humanik.h:361
void HIKSolveForCharacter(const HIKCharacter *pDstCharacter, HIKCharacterState *pCharacterState, const HIKCharacter *pSrcCharacter, const HIKCharacterState *pSrcCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pDstPropertyState, const HIKPropertySetState *pSrcPropertyState)
Given source character pSrcCharacter with HIKCharacterState pSrcCharacterState, calculate HIKCharacte...
void HIKGetNodeStateTQAlignfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float *pTQ, size_t pTOffset, size_t pQOffset)
Retrieve the translation (T) and quaternion rotation (Q) in global space of Node pNodeId in HIKCharac...
Provides an IK goal point for the LeftShoulderNodeId.
Definition: humanik.h:284
Provides an IK goal point for the last Node in the extra toe of the right foot.
Definition: humanik.h:314
void HIKSetEffectorStateTQSdv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const double pT[4], const double pQ[4], const double pS[4])
Set the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEffecto...
void HIKGetEffectorStateTQSdv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, double pT[4], double pQ[4], double pS[4])
Retrieve the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEf...
void HIKSetEffectorStateTQAlignfv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float *pTQ, size_t pTOffset, size_t pQOffset)
Set the translation (T) and quaternion rotation (Q) in global space of Effector pEffectorIndex in HIK...
void HIKGetEffectorFloorStatefv(const HIKEffectorSetState *pEffectorSetState, int pFloor, float pXForm[16])
Retrieve the transform matrix of the oriented plane that the floor contact engine applies to one of y...
Provides an IK goal point for the last Node in the thumb of the left hand.
Definition: humanik.h:291
size_t mStride
Specifies the total size of each data block.
Definition: humanik.h:1956
Left hand floor contact.
Definition: humanik.h:328
void HIKSetNodeStateTQNonUniformSfv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pT[4], const float pQ[4], const float pS[4])
Set the translation (T), quaternion rotation (Q) and non-uniform scaling (S) in global space of Node ...
void HIKSetRotationOrder(HIKCharacter *pCharacter, int pNodeId, eHIKRotationOrder pRotationOrder)
Sets the order in which the axes are specified in the limits set for Node pNodeId.
void HIKSetNodeStatedv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const double pXForm[16])
Set the transform matrix of Node pNodeId in HIKCharacterState pCharacterState.
float HIKGetHandPullHips(const HIKEffectorSetState *pEffectorSetState, int pLeft)
Retrieve the amount of pull the left or right hand can exert on the hips.
HIKCharacterState * HIKCharacterStateCreateInPlace(const HIKCharacter *pCharacter, void *pBuffer)
Create a new HIKCharacterState in the buffer pBuffer.
Optional.
Definition: humanik.h:100
float HIKGetTranslationActive(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
Retrieve the Reach Translation constraint for Effector pEffectorIndex.
void HIKGetNodeStatefv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pXForm[16])
Retrieve the transform matrix of Node pNodeId in HIKCharacterState pCharacterState.
void HIKSolveForEffectorSetFloorContactApprox(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the floor contact approximation solver for character pCharacter.
int HIKIsJointInverted(const HIKCharacter *pCharacter, eHIKMiddleJoint pJoint)
Indicates whether or not a middle joint is inverted.
Provides an IK goal point for the LeftHipNodeId.
Definition: humanik.h:287
#define HIK_API
Definition: humanik.h:60
Provides an IK goal point for the last Node in the ring toe of the left foot.
Definition: humanik.h:306
Data is expressed in global space.
Definition: humanik.h:1652
HIKRotationOrder
Lists the possible rotation orders for the values set in the HIKSetRotationOrder() function...
Definition: humanik.h:664
void HIKSetResist(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
Set the Resist constraint for Effector pEffectorIndex.
void HIKGetEffectorStateTQSfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pT[4], float pQ[4], float pS[4])
Retrieve the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEf...
Adjusts the translation of the character's hips, if necessary.
Definition: humanik.h:366
void HIKGetEffectorStateDataTQS(const HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescription *pDataDescription, void *pDataSet)
Retrieve the translation (T), quaternion rotation (Q), scaling (S), and IK constraints of multiple Ef...
size_t mTOffset
Specifies the offset of the translation data within each data block.
Definition: humanik.h:1930
void HIKSetPreQdv(HIKCharacter *pCharacter, int pNodeId, const double pPreQ[4])
Apply the pre rotation pPreQ to Node pNodeId.
struct sHIKEffectorDataDescription HIKEffectorDataDescription
void HIKSetNodeStateTQSAlignfv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float *pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset)
Set the translation (T), quaternion rotation (Q) and scaling (S) in global space of Node pNodeId in H...
void HIKGetNodeStateTQSfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float pT[4], float pQ[4], float pS[4])
Retrieve the translation (T), quaternion rotation (Q) and scaling (S) in global space of Node pNodeId...
Provides an IK goal point for the last Node in the ring finger of the right hand. ...
Definition: humanik.h:300
HIKMiddleJoint
Lists the joints that can be inverted using the HIKInverseJoint() function.
Definition: humanik.h:813
void HIKGetCharacterizeNodeStateTQSdv(const HIKCharacter *pCharacter, int pNodeId, double pT[4], double pQ[4], double pS[4])
Retrieve the translation, orientation and scaling for the Node pNodeId when the character is standing...
Activates Lock & Mirror modifiers.
Definition: humanik.h:375
size_t mStride
Specifies the total size of each data block.
Definition: humanik.h:1658
Solves the character's neck and head, including NeckNodeId, Neck1NodeId to Neck9NodeId, and HeadNodeId.
Definition: humanik.h:364
void HIKGetRelaxPose(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
Calculate a basic seated pose for character pCharacter, storing it in HIKCharacterState pCharacterSta...
void HIKSolveForEffectorSetHipsTranslation(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the special hips translation solver for character pCharacter.
HIKNodeId
Lists all Nodes known to HumanIK, used to set up and access data for .
Definition: humanik.h:77
void HIKSetMinXYZRotationdv(HIKCharacter *pCharacter, int pNodeId, const double pMin[3], int pMinActiveMask)
Set the minimum rotation for the Node pNodeId.
Represents the left elbow (HIKNodeId::LeftElbowNodeId).
Definition: humanik.h:817
void HIKSetCharacterizeNodeStatedv(HIKCharacter *pCharacter, int pNodeId, const double pXForm[16])
Set the transform matrix for the Node pNodeId when the character is standing in the default T-stance...
void HIKSetCharacterizeNodeStateTQSfv(HIKCharacter *pCharacter, int pNodeId, const float pT[4], const float pQ[4], const float pS[4])
Set the translation, orientation and scaling for the Node pNodeId when the character is standing in t...
void HIKSetNodeStateTQSfvComputeDependent(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float *pT, const float *pQ, const float *pS, const bool pLocal)
Set the translation (T), quaternion rotation (Q) and scaling (S) in global or local space of Node pNo...
void HIKSetEffectorFloorStateTQdv(HIKEffectorSetState *pEffectorSetState, int pFloor, const double pT[4], const double pQ[4])
Set the translation and rotation in global space of the oriented plane that the floor contact engine ...
A description of a data set that contains separate translation, quaternion rotation, and scaling values for multiple different Nodes in an HIKCharacterState.
void HIKSolveForEffectorSet(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Solve character pCharacter with HIKEffectorSetState pEffectorSetState and initial HIKCharacterState p...
size_t HIKEffectorSetStateSize()
Return the size of an HIKEffectorSetState object in bytes.
void HIKGetCharacterStateTransformQ(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, void *pDataSet)
Retrieve the quaternion rotation (Q) of multiple Nodes from HIKCharacterState pCharacterState, writing them to memory in data set pDataSet according to data description pDataDescription.
Provides an IK goal point for the RightWristNodeId.
Definition: humanik.h:273
int HIKGetNodeUse(const HIKCharacter *pCharacter, int pNodeId)
Retrieve the characterization flag set for Node pNodeId in HIKCharacter pCharacter.
Activates the full-body Pull engine for the inverse kinematics solver.
Definition: humanik.h:344
Defines an HIKEffectorSetState.
Definition: humanik.h:418
void HIKGetParentOffsetdv(const HIKCharacter *pCharacter, int pNodeId, double pParentTOffset[4], double pParentQOffset[4], double pParentSOffset[4])
Retrieve the parent offset set for Node pNodeId.
Euler y, x, y.
Definition: humanik.h:673
Provides an IK goal point for the LeftKneeNodeId.
Definition: humanik.h:274
HIKEffectorId
Lists all Effectors used by HumanIK as goal points for IK solving.
Definition: humanik.h:265
Solves the character's left collar bones: LeftCollarNodeId and LeftCollarExtraNodeId.
Definition: humanik.h:354
Represents the right knee (HIKNodeId::RightKneeNodeId).
Definition: humanik.h:816
Provides an IK goal point for the last Node in the pinky toe of the right foot.
Definition: humanik.h:313
Provides an IK goal point for the WaistNodeId.
Definition: humanik.h:278
Euler x, y, x.
Definition: humanik.h:667
int * mHIKNodeId
A list of HumanIK Node IDs indicating which Node each of your data blocks applies to...
Definition: humanik.h:1623
Provides an IK goal point for the RightAnkleNodeId.
Definition: humanik.h:271
void HIKSolveForCharacterPrepareEffectorSet(const HIKCharacter *pDstCharacter, HIKCharacterState *pDstCharacterState, const HIKCharacter *pSrcCharacter, const HIKCharacterState *pSrcCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pDstPropertyState, const HIKPropertySetState *pSrcPropertyState)
Sync IK pEffectorSetState on source FK pSrcCharacterState and adjust IK relative to destination chara...
Indicates the end of the list of Nodes.
Definition: humanik.h:1592
Enables all solving steps listed above.
Definition: humanik.h:382
Activate minimum limit on X axis.
Definition: humanik.h:652
void HIKSetMinXYZRotationfv(HIKCharacter *pCharacter, int pNodeId, const float pMin[3], int pMinActiveMask)
Set the minimum rotation for the Node pNodeId.
A description of a data set that contains transform matrices for multiple different Nodes in an HIKCh...
Provides an IK goal point for the last Node in the thumb of the right hand.
Definition: humanik.h:297
Right foot floor contact.
Definition: humanik.h:331
void HIKAddQuadripedOffset(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
Add quadruped offsets to HIKCharacterState pCharacterState.
Provides an IK goal point for the last Node in the middle toe of the right foot.
Definition: humanik.h:311
void HIKSetIKSolvingStep(HIKEffectorSetState *pEffectorSetState, int pSolvingStep)
Set the IK solving steps for HIKEffectorSetState pEffectorSetState.
Enables the solving steps for all body parts, from HIKSolvingStepLeftShoulder to HIKSolvingStepSpine...
Definition: humanik.h:378
Provides an IK goal point for the last Node in the extra finger of the right hand.
Definition: humanik.h:302
Provides an IK goal point for the last Node in the thumb of the left foot.
Definition: humanik.h:303
Provides an IK goal point for the last Node in the pinky toe of the left foot.
Definition: humanik.h:307
void HIKSetPostQdv(HIKCharacter *pCharacter, int pNodeId, const double pPostQ[4])
Apply the post rotation pPostQ to the Node pNodeId.
void HIKSetNodeStateTQSfv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pT[4], const float pQ[4], const float pS[4])
Set the translation (T), quaternion rotation (Q) and scaling (S) in global space of Node pNodeId in H...
void HIKEulerFromQuat(const float quat[4], float euler[4])
Compute euler angles from a quaternion (default XYZ order)
float HIKGetPull(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
Retrieve the Pull constraint for Effector pEffectorIndex.
HIKEffectorSetState * HIKEffectorSetStateCreateInPlace(void *pBuffer)
Create a new HIKEffectorSetState in the buffer pBuffer.
Provides an IK goal point for the last Node in the middle toe of the left foot.
Definition: humanik.h:305
Provides an IK goal point for the last Node in the thumb of the right foot.
Definition: humanik.h:309
Euler y, x, z.
Definition: humanik.h:672
struct sHIKEffectorDataDescriptionMatrix HIKEffectorDataDescriptionMatrix
void HIKSetTranslationLimitsf(HIKCharacter *pCharacter, int pNodeId, float pMin, float pMax, bool pActive)
Set the translation limits for Node pNodeId.
Euler y, z, y.
Definition: humanik.h:671
void HIKGetNodeStateTQSdv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, double pT[4], double pQ[4], double pS[4])
Retrieve the translation (T), quaternion rotation (Q) and scaling (S) in global space of Node pNodeId...
void HIKSetEffectorStateTQSfv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float pT[4], const float pQ[4], const float pS[4])
Set the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEffecto...
void HIKGetEffectorStateTQSAlignfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float *pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset)
Retrieve the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEf...
bool HIKCharacterizeGeometry(HIKCharacter *pCharacter)
Set up and initialize character pCharacter for solving.
Activates Squash & Strech for the right arm, from RightHipNodeId to RightFootNodeId inclusive...
Definition: humanik.h:374
void HIKSolveForEffectorSetModifiers(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the Mirror and Lock modifiers for character pCharacter.
size_t mMatrixOffset
Specifies the offset of the transform matrix within each data block.
Definition: humanik.h:1656
size_t mSOffset
Specifies the offset of the scaling data within each data block.
Definition: humanik.h:1620
void HIKSetCharacterStateTransform(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescriptionMatrix *pDataDescription, const void *pDataSet)
Set the transform matrix of multiple Nodes from data set pDataSet, interpreted according to data desc...
Shifts a percentage of the roll rotation from the character's shoulders, elbows, hips and knees to th...
Definition: humanik.h:370
A description of a data set that contains transform matrices for multiple different Effectors in an H...
struct sHIKCharacterDefinition HIKCharacterDefinition
Indicates that the data block represented by this index should not be read by HumanIK.
Definition: humanik.h:1591
enum HIKRotationOrder eHIKRotationOrder
see enum HIKRotationOrder
Definition: humanik.h:682
Euler x, z, x.
Definition: humanik.h:669
void HIKGetEffectorFloorStateTQdv(const HIKEffectorSetState *pEffectorSetState, int pFloor, double pT[4], double pQ[4])
Retrieve the translation and rotation in global space of the oriented plane that the floor contact en...
void HIKGetLocalQFromDOFfv(const HIKCharacter *pCharacter, int pNodeId, const float pEuler[4], float pQuat[4])
Compute a local quaternion from an euler angle, using the DOFs structures (pre-rotation, rotation order, ...)
enum HIKMiddleJoint eHIKMiddleJoint
see enum HIKMiddleJoint
Definition: humanik.h:822
size_t mParameterOffset
Specifies the offset of the IK constraint data within each data block.
Definition: humanik.h:1933
void HIKSolveForEffectorSetFloorContact(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the floor solver for character pCharacter.
Defines a character's properties.
Definition: humanik.h:457
Provides an IK goal point for the LeftHandNodeId.
Definition: humanik.h:289
void HIKSetEffectorStatefv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float pXForm[16])
Set the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState.
void HIKGetEffectorFloorStatedv(const HIKEffectorSetState *pEffectorSetState, int pFloor, double pXForm[16])
Retrieve the transform matrix of the oriented plane that the floor contact engine applies to one of y...
Provides an IK goal point for the last Node in the pinky finger of the left hand. ...
Definition: humanik.h:295
Solves the toes of the right foot.
Definition: humanik.h:363
void HIKSetHandPullHips(HIKEffectorSetState *pEffectorSetState, int pLeft, float pValue)
Set the amount of pull the left or right hand can exert on the hips.
Euler z, x, z.
Definition: humanik.h:675
void HIKSetTranslationActive(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
Set the Reach Translation constraint for Effector pEffectorIndex.
Provides an IK goal point for the last Node in the index toe of the left foot.
Definition: humanik.h:304
void HIKSetLimitsdv(HIKCharacter *pCharacter, int pNodeId, const double pMin[3], const double pMax[3], const double pPreQ[4], const double pPostQ[4], int pActiveMask, eHIKRotationOrder pRotationOrder)
Set up limits for Node pNodeId.
void HIKGetNodeStatedv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, double pXForm[16])
Retrieve the transform matrix of Node pNodeId in HIKCharacterState pCharacterState.
int * mHIKEffectorId
A list of HumanIK Effector IDs indicating which Effector each of your data blocks applies to...
Definition: humanik.h:1936
void HIKSetNodeStateTQSdv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const double pT[4], const double pQ[4], const double pS[4])
Set the translation (T), quaternion rotation (Q) and scaling (S) in global space of Node pNodeId in H...
void HIKGetEffectorStateFromCharacterdv(const HIKCharacter *pCharacter, int pEffectorIndex, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState, double pXForm[16])
Retrieve the transform matrix of Effector pEffectorIndex for character pCharacter in HIKCharacterStat...
struct sHIKDataDescription HIKDataDescription
Euler z, y, z.
Definition: humanik.h:677
Data is expressed in local space.
Definition: humanik.h:1653
void HIKSetPreQfv(HIKCharacter *pCharacter, int pNodeId, const float pPreQ[4])
Apply the pre rotation pPreQ to Node pNodeId.
int * mHIKNodeId
A list of HumanIK Node IDs indicating which Node each of your data blocks applies to...
Definition: humanik.h:1659
Provides an IK goal point for an imaginary point on the character's skeleton that lies exactly half-w...
Definition: humanik.h:281
Provides an IK goal point for the last Node in the middle finger of the left hand.
Definition: humanik.h:293
struct sHIKDataDescriptionMatrix HIKDataDescriptionMatrix
void HIKGetParentOffsetfv(const HIKCharacter *pCharacter, int pNodeId, float pParentTOffset[4], float pParentQOffset[4], float pParentSOffset[4])
Retrieve the parent offset set for Node pNodeId.
void HIKGetCharacterStateTransform(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescriptionMatrix *pDataDescription, void *pDataSet)
Retrieve the transform matrices of multiple Nodes from HIKCharacterState pCharacterState, writing them to memory in data set pDataSet according to data description pDataDescription.
size_t mStride
Specifies the total size of each data block.
Definition: humanik.h:1622
void HIKSubQuadripedOffset(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState)
Subtract quadruped offsets from HIKCharacterState pCharacterState.
Provides an IK goal point for the LeftFootNodeId.
Definition: humanik.h:282
Activates Squash & Strech for the left arm, from LeftHipNodeId to LeftFootNodeId inclusive.
Definition: humanik.h:373
size_t mQOffset
Specifies the offset of the quaternion rotation data within each data block.
Definition: humanik.h:1931
void HIKGetCharacterizeNodeStatefv(const HIKCharacter *pCharacter, int pNodeId, float pXForm[16])
Retrieve the transform matrix for the Node pNodeId when the character is standing in the default T-st...
Provides an IK goal point for the last Node in the index finger of the right hand.
Definition: humanik.h:298
Required.
Definition: humanik.h:82
Provides an IK goal point for the LeftWristNodeId.
Definition: humanik.h:272
void HIKSolveForEffectorSetBegin(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Initializes an IK solve for character pCharacter.
Defines a pose for a character.
Definition: humanik.h:441
HIKCharacterState * HIKCharacterStateCreate(const HIKCharacter *pCharacter, HIKMalloc pMalloc)
Create a new HIKCharacterState.
void HIKSetLimitsfv(HIKCharacter *pCharacter, int pNodeId, const float pMin[3], const float pMax[3], const float pPreQ[4], const float pPostQ[4], int pActiveMask, eHIKRotationOrder pRotationOrder)
Set up limits for Node pNodeId.
Provides an IK goal point for the last Node in the ring toe of the right foot.
Definition: humanik.h:312
Euler x, z, y.
Definition: humanik.h:668
void HIKEffectorSetStateDestroy(HIKEffectorSetState *pESetState, HIKFree pFree)
Destroy HIKEffectorSetState pESetState.
void HIKSetNodeStateTQAlignfv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float *pTQ, size_t pTOffset, size_t pQOffset)
Set the translation (T) and quaternion rotation (Q) in global space of Node pNodeId in HIKCharacterSt...
Node has limits (DoF).
Definition: humanik.h:484
Euler z, x, y.
Definition: humanik.h:674
void HIKSolveForEffectorSetHeadAndNeck(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the head and neck IK solver for character pCharacter.
Euler x, y, z.
Definition: humanik.h:666
void HIKGetDOFFromLocalQfv(const HIKCharacter *pCharacter, int pNodeId, const float pQuat[4], float pEuler[4])
Compute the euler angle equivalent of a local quaternion, using the DOFs structures (pre-rotation...
Activates the Foot and Hand Contact engine for the inverse kinematics solver.
Definition: humanik.h:348
Provides an IK goal point for the RightHipNodeId.
Definition: humanik.h:288
float HIKGetResist(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex)
Retrieve the Resist constraint for Effector pEffectorIndex.
void HIKGetEffectorFloorStateTQfv(const HIKEffectorSetState *pEffectorSetState, int pFloor, float pT[4], float pQ[4])
Retrieve the translation and rotation in global space of the oriented plane that the floor contact en...
void HIKGetLimitsdv(const HIKCharacter *pCharacter, int pNodeId, double pMin[3], double pMax[3], double pPreQ[4], double pPostQ[4], int &pActiveMask, eHIKRotationOrder &pRotationOrder)
Retrieve the limits set for Node pNodeId.
void HIKGetNodeStateTQSAlignfv(const HIKCharacter *pCharacter, const HIKCharacterState *pCharacterState, int pNodeId, float *pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset)
Retrieve the translation (T), quaternion rotation (Q) and scaling (S) in global space of Node pNodeId...
Represents the left knee (HIKNodeId::LeftKneeNodeId).
Definition: humanik.h:815
void HIKSetCharacterStateTransformTQS_SoA(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, const void *pDataSet)
Set the translation (T), quaternion rotation (Q) and scaling (S) of multiple Nodes from data set pDat...
Configures the inverse kinematics solver to perform an initial approximate solving with the floor con...
Definition: humanik.h:353
An optional repository for the overall translation, rotation and scale of your character.
Definition: humanik.h:79
Node has a parent unknown to HumanIK, used for local space transform and DoF.
Definition: humanik.h:483
void HIKSolveForEffectorSetRollExtraction(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the roll extraction solver for character pCharacter.
Provides an IK goal point for the RightKneeNodeId.
Definition: humanik.h:275
void *(* HIKMalloc)(size_t)
Memory allocator function.
Definition: humanik.h:388
unsigned char * p
Definition: floatobject.h:103
int * mHIKEffectorId
A list of HumanIK Effector IDs indicating which Effector each of your data blocks applies to...
Definition: humanik.h:1957
Euler z, y, x.
Definition: humanik.h:676
void HIKSetPull(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
Set the Pull constraint for Effector pEffectorIndex.
const char * HIKNodeNameFromNodeId(int pNodeId)
Retrieve a descriptive name for Node pNodeId.
Provides an IK goal point for the HeadNodeId.
Definition: humanik.h:286
void HIKSetParentOffsetdv(HIKCharacter *pCharacter, int pNodeId, const double pParentTOffset[4], const double pParentQOffset[4], const double pParentSOffset[4])
Set the parent offset for Node pNodeId.
void HIKGetCharacterStateTransformTQS_SoA(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, void *pDataSet)
Retrieve the translation (T), quaternion rotation (Q) and scaling (S) of multiple Nodes from HIKChara...
Provides an IK goal point for the RightFootNodeId.
Definition: humanik.h:283
void HIKEffectorSetFromCharacter(const HIKCharacter *pCharacter, HIKEffectorSetState *pEffectorSetState, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState)
Set up HIKEffectorSetState pEffectorSetState to match character pCharacter in HIKCharacterState pChar...
void HIKSetNodeStatefv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pXForm[16])
Set the transform matrix of Node pNodeId in HIKCharacterState pCharacterState.
Activates Squash & Strech for the right arm, from RightShoulderNodeId to RightHandNodeId inclusive...
Definition: humanik.h:372
size_t HIKCharacterStateSizeFromState(const HIKCharacterState *pCharacterState)
Returns the size of HIKCharacterState pCharacterState in bytes.
void HIKSetCharacterStateTransformTQ(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, const void *pDataSet)
Set the translation (T) and quaternion rotation (Q) of multiple Nodes from data set pDataSet...
size_t HIKCharacterStateSize(const HIKCharacter *pCharacter)
Returns the size in bytes required by any HIKCharacterState that defines a pose for HIKCharacter pCha...
void HIKSolveForCharacterRetarget(const HIKCharacter *pDstCharacter, HIKCharacterState *pDstCharacterState, const HIKCharacter *pSrcCharacter, const HIKCharacterState *pSrcCharacterState, const HIKPropertySetState *pDstPropertyState)
Simple rotation mapper between pSrcCharacter and pDstCharacter.
void HIKGetEffectorStateTQfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pT[4], float pQ[4])
Retrieve the translation (T) and quaternion rotation (Q) in global space of Effector pEffectorIndex i...
Provides an IK goal point for the last Node in the extra toe of the left foot.
Definition: humanik.h:308
void HIKGetEffectorStateData(const HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescriptionMatrix *pDataDescription, void *pDataSet)
Retrieve the transform matrix and IK constraints of multiple Effectors from HIKEffectorSetState pEffe...
Left foot floor contact.
Definition: humanik.h:330
void HIKSetMaxXYZRotationdv(HIKCharacter *pCharacter, int pNodeId, const double pMax[3], int pMaxActiveMask)
Set the maximum rotation for the Node pNodeId.
const char * HIKEffectorNameFromEffectorId(int pEffectorId)
Retrieve a descriptive name for Effector pEffectorId.
void HIKGetCharacterizeNodeStateTQSfv(const HIKCharacter *pCharacter, int pNodeId, float pT[4], float pQ[4], float pS[4])
Retrieve the translation, orientation and scaling for the Node pNodeId when the character is standing...
Solves the character's left arm, from LeftShoulderNodeId to LeftHandNodeId inclusive.
Definition: humanik.h:356
void HIKSetOriginalSnSLength(HIKCharacter *pCharacter, bool pFromCharacterizationPose, HIKCharacterState *pCharacterState)
Allow setting original length for joints from CharacterState instead of characterization pose (defaul...
Provides an IK goal point for an imaginary point on the character's skeleton that lies exactly half-w...
Definition: humanik.h:269
void HIKSetCharacterizeNodeStatefv(HIKCharacter *pCharacter, int pNodeId, const float pXForm[16])
Set the transform matrix for the Node pNodeId when the character is standing in the default T-stance...
#define HIK_EXPORT
Definition: humanik.h:56
Data is expressed in local space.
Definition: humanik.h:1615
Provides an IK goal point for the last Node in the index toe of the right foot.
Definition: humanik.h:310
Data is expressed in global space.
Definition: humanik.h:1614
Activates Squash & Strech for the left arm, from LeftShoulderNodeId to LeftHandNodeId inclusive...
Definition: humanik.h:371
void HIKQTransform(const float quat[4], const float p[4], float q[4])
Compute the result of a point tranformed by a quaternion.
Node is not characterized.
Definition: humanik.h:481
size_t mSOffset
Specifies the offset of the scaling data within each data block.
Definition: humanik.h:1932
void HIKSetEffectorStateDataTQS(HIKEffectorSetState *pEffectorSetState, const HIKEffectorDataDescription *pDataDescription, const void *pDataSet)
Set the translation (T), quaternion rotation (Q), scaling (S), and IK constraints of multiple Effecto...
void HIKSetCharacterStateTransformTQS(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, const void *pDataSet)
Set the translation (T), quaternion rotation (Q) and scaling (S) of multiple Nodes from data set pDat...
size_t HIKCharacterStateSizeFromDefinition(const HIKCharacterDefinition *pCharacterDefinition)
Returns the size in bytes required by any HIKCharacterState that defines a pose for an HIKCharacter b...
void HIKGetCharacterStateTransformTQS(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, const HIKDataDescription *pDataDescription, void *pDataSet)
Retrieve the translation (T), quaternion rotation (Q) and scaling (S) of multiple Nodes from HIKChara...
void HIKSetEffectorStatedv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const double pXForm[16])
Set the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState.
Right hand floor contact.
Definition: humanik.h:329
Marks the end of the enumeration.
Definition: humanik.h:315
const char void * pValue
Definition: fbcontrols.h:2116
void HIKGetEffectorStateTQAlignfv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float *pTQ, size_t pTOffset, size_t pQOffset)
Retrieve the translation (T) and quaternion rotation (Q) in global space of Effector pEffectorIndex i...
Solves the character's spine, including WaistNodeId, and Spine1NodeId to Spine9NodeId.
Definition: humanik.h:365
Defines which Nodes are to be used by an HIKCharacter.
void HIKSetPostQfv(HIKCharacter *pCharacter, int pNodeId, const float pPostQ[4])
Apply the post rotation pPostQ to the Node pNodeId.
void HIKSetMaxXYZRotationfv(HIKCharacter *pCharacter, int pNodeId, const float pMax[3], int pMaxActiveMask)
Set the maximum rotation for the Node pNodeId.
size_t HIKCharacterSize(const HIKCharacter *pCharacter)
Returns the size of HIKCharacter pCharacter in bytes.
Defines a character to be used with HumanIK.
void HIKSetEffectorStateTQSAlignfv(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, const float *pTQS, size_t pTOffset, size_t pQOffset, size_t pSOffset)
Set the translation (T), quaternion rotation (Q) and scaling (S) in global space of Effector pEffecto...
void HIKSetEffectorFloorStatedv(HIKEffectorSetState *pEffectorSetState, int pFloor, const double pXForm[16])
Set the transform matrix of the oriented plane that the floor contact engine applies to one of your c...
HIKCharacter * HIKCharacterCreateInPlace(const HIKCharacterDefinition *pCharacterDefinition, void *pBuffer, const char *pValidationString)
Create a new HIKCharacter in the buffer pBuffer.
void HIKSolveForEffectorSetFingersAndToes(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the fingers and toes IK solver for character pCharacter.
void HIKGetEffectorStatefv(const HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pXForm[16])
Retrieve the transform matrix of Effector pEffectorIndex in HIKEffectorSetState pEffectorSetState.
void HIKGetEffectorStateFromCharacterfv(const HIKCharacter *pCharacter, int pEffectorIndex, const HIKCharacterState *pCharacterState, const HIKPropertySetState *pPropertyState, float pXForm[16])
Retrieve the transform matrix of Effector pEffectorIndex for character pCharacter in HIKCharacterStat...
void HIKSetRotationActive(HIKEffectorSetState *pEffectorSetState, int pEffectorIndex, float pValue)
Set the Reach Rotation constraint for Effector pEffectorIndex.
Provides an IK goal point for the last Node in the pinky finger of the right hand.
Definition: humanik.h:301
void HIKSetCharacterizeNodeStateTQSdv(HIKCharacter *pCharacter, int pNodeId, const double pT[4], const double pQ[4], const double pS[4])
Set the translation, orientation and scaling for the Node pNodeId when the character is standing in t...
Activate minimum limit on Y axis.
Definition: humanik.h:653
size_t mMatrixOffset
Specifies the offset of the transform matrix within each data block.
Definition: humanik.h:1953
Provides an IK goal point for the LeftElbowNodeId.
Definition: humanik.h:276
void HIKSolveForEffectorSetArmsAndLegs(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the arms, legs and shoulders IK solver for character pCharacter.
HIKFloorContact
Lists the surfaces that can be controlled by the floor contact engine.
Definition: humanik.h:326
Provides an IK goal point for the RightShoulderNodeId.
Definition: humanik.h:285
void HIKSolveForEffectorSetBodyPull(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, HIKEffectorSetState *pEffectorSetState, const HIKPropertySetState *pPropertyState)
Call the pull solver for character pCharacter.
size_t HIKCharacterDefinitionSize(const HIKCharacterDefinition *pCharacterDefinition)
Returns the size in bytes required by an HIKCharacter based on HIKCharacterDefinition pCharacterDefin...
void HIKSetNodeStateTQfv(const HIKCharacter *pCharacter, HIKCharacterState *pCharacterState, int pNodeId, const float pT[4], const float pQ[4])
Set the translation (T) and quaternion rotation (Q) in global space of Node pNodeId in HIKCharacterSt...
Provides an IK goal point for the last Node in the index finger of the left hand. ...
Definition: humanik.h:292
int HIKNodeIdFromNodeName(const char *pName)
Retrieve the Node ID from a descriptive name.
enum sHIKDataDescriptionMatrix::@3 mTransformSpace
Indicates whether your Node data is expressed in local or global space.
Solves the character's right collar bones: RightCollarNodeId and RightCollarExtraNodeId.
Definition: humanik.h:355
Activate maximum limit on Z axis.
Definition: humanik.h:657
HIKCharacter * HIKCharacterCreate(const HIKCharacterDefinition *pCharacterDefinition, HIKMalloc pMalloc, const char *pValidationString)
Create a new HIKCharacter.
Activate minimum limit on Z axis.
Definition: humanik.h:654
HIKNodeFlags
Flags used in the characterization process, in conjunction with HIKCharacterDefinition.
Definition: humanik.h:479