fbxcharacter.h 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971
  1. /****************************************************************************************
  2. Copyright (C) 2015 Autodesk, Inc.
  3. All rights reserved.
  4. Use of this software is subject to the terms of the Autodesk license agreement
  5. provided at the time of installation or download, or which otherwise accompanies
  6. this software in either electronic or hard copy form.
  7. ****************************************************************************************/
  8. //! \file fbxcharacter.h
  9. #ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_
  10. #define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_
  11. #include <fbxsdk/fbxsdk_def.h>
  12. #include <fbxsdk/core/math/fbxtransforms.h>
  13. #include <fbxsdk/scene/constraint/fbxconstraint.h>
  14. #include <fbxsdk/fbxsdk_nsbegin.h>
  15. class FbxControlSet;
  16. /** \class FbxCharacterLink
  17. *
  18. * \brief This class represents a link between a given FBX node and the associated node in the character hierarchy. It also contains
  19. * the transform matrix (offset) for the linked character's node.
  20. */
  21. class FBXSDK_DLL FbxCharacterLink
  22. {
  23. public:
  24. /** \enum EType Character link type */
  25. enum EType
  26. {
  27. eCharacterLink,
  28. eControlSetLink,
  29. eControlSetEffector,
  30. eControlSetEffectorAux
  31. };
  32. /** Default Constructor. */
  33. FbxCharacterLink();
  34. /** Copy Constructor. */
  35. FbxCharacterLink(const FbxCharacterLink& pCharacterLink);
  36. /** Assignment operation
  37. * \param pCharacterLink Another FbxCharacterLink object assigned to this one.
  38. */
  39. FbxCharacterLink& operator=(const FbxCharacterLink& pCharacterLink);
  40. /** Reset to default values. */
  41. void Reset();
  42. FbxNode* mNode; //! The character's node in hierarchy linked to this character link.
  43. FbxString mTemplateName; //! A template name is a naming convention that is used to automatically map the nodes of other skeletons that use the same naming convention.
  44. FbxVector4 mOffsetT; //! Get offset position of this character link.
  45. FbxVector4 mOffsetR; //! Get offset rotation of this character link.
  46. FbxVector4 mOffsetS; //! Get offset scale of this character link.
  47. FbxVector4 mParentROffset; //! Get the parent offset rotation of this character link
  48. bool mHasRotSpace; //! \c true if this character link has a defined rotation space
  49. FbxLimits mRLimits; //! Get the rotation limits of this character link
  50. FbxVector4 mPreRotation; //! Get the PreRotation of this character link
  51. FbxVector4 mPostRotation; //! Get the PostRotation of this character link
  52. int mRotOrder; //! Get the rotation order of this character link
  53. double mAxisLen; //! Get the axis length of this character link
  54. /*****************************************************************************************************************************
  55. ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
  56. *****************************************************************************************************************************/
  57. #ifndef DOXYGEN_SHOULD_SKIP_THIS
  58. FbxProperty mPropertyLink;
  59. FbxProperty mPropertyOffsetT;
  60. FbxProperty mPropertyOffsetR;
  61. FbxProperty mPropertyOffsetS;
  62. FbxProperty mPropertyParentOffsetR;
  63. FbxProperty mPropertyTemplateName;
  64. #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
  65. };
  66. /** A Character is a person or animal with pre-defined skeleton system. The skeleton system is composed of multiple named node (skeleton).
  67. * This class contains all methods to setup an exported character or query information on an imported character.
  68. * This class also contains some methods for manipulating the FbxCharacterLink, FbxControlSet
  69. *
  70. * The most important part of a FbxCharacter is the FbxCharacterLink. There is one FbxCharacterLink for each characterized node.
  71. * For more information see FbxCharacterLink class documentation.
  72. *
  73. * \see FbxCharacterLink, FbxControlSet
  74. */
  75. class FBXSDK_DLL FbxCharacter : public FbxConstraint
  76. {
  77. FBXSDK_OBJECT_DECLARE(FbxCharacter, FbxConstraint);
  78. public:
  79. /** \enum EInputType Character input type.
  80. * - \e eInputActor Not supported.
  81. * - \e eInputCharacter The character's input is another character.
  82. * - \e eInputMarkerSet The character's input is a control rig.
  83. * - \e eOutputMarkerSet Not supported.
  84. * - \e eInputStancePose The character's input is the stance pose.
  85. */
  86. enum EInputType
  87. {
  88. eInputActor,
  89. eInputCharacter,
  90. eInputMarkerSet,
  91. eOutputMarkerSet,
  92. eInputStancePose
  93. };
  94. /** \enum EGroupId Define ID for character groups that contains multiple character nodes. */
  95. enum EGroupId
  96. {
  97. eGroupBase,
  98. eGroupAuxiliary,
  99. eGroupSpine,
  100. eGroupRoll,
  101. eGroupSpecial,
  102. eGroupLeftHand,
  103. eGroupRightHand,
  104. eGroupProps,
  105. eGroupGameModeParent,
  106. eGroupNeck,
  107. eGroupLeftFoot,
  108. eGroupRightFoot,
  109. eGroupFloorContact,
  110. eGroupIdCount
  111. };
  112. /** \enum ENodeId Define ID for each character node.
  113. */
  114. enum ENodeId
  115. {
  116. eHips,
  117. eLeftHip,
  118. eLeftKnee,
  119. eLeftAnkle,
  120. eLeftFoot,
  121. eRightHip,
  122. eRightKnee,
  123. eRightAnkle,
  124. eRightFoot,
  125. eWaist,
  126. eChest,
  127. eLeftCollar,
  128. eLeftShoulder,
  129. eLeftElbow,
  130. eLeftWrist,
  131. eRightCollar,
  132. eRightShoulder,
  133. eRightElbow,
  134. eRightWrist,
  135. eNeck,
  136. eHead,
  137. eLeftHipRoll,
  138. eLeftKneeRoll,
  139. eRightHipRoll,
  140. eRightKneeRoll,
  141. eLeftShoulderRoll,
  142. eLeftElbowRoll,
  143. eRightShoulderRoll,
  144. eRightElbowRoll,
  145. eSpine2,
  146. eSpine3,
  147. eSpine4,
  148. eSpine5,
  149. eSpine6,
  150. eSpine7,
  151. eSpine8,
  152. eSpine9,
  153. eLeftThumbA,
  154. eLeftThumbB,
  155. eLeftThumbC,
  156. eLeftIndexA,
  157. eLeftIndexB,
  158. eLeftIndexC,
  159. eLeftMiddleA,
  160. eLeftMiddleB,
  161. eLeftMiddleC,
  162. eLeftRingA,
  163. eLeftRingB,
  164. eLeftRingC,
  165. eLeftPinkyA,
  166. eLeftPinkyB,
  167. eLeftPinkyC,
  168. eRightThumbA,
  169. eRightThumbB,
  170. eRightThumbC,
  171. eRightIndexA,
  172. eRightIndexB,
  173. eRightIndexC,
  174. eRightMiddleA,
  175. eRightMiddleB,
  176. eRightMiddleC,
  177. eRightRingA,
  178. eRightRingB,
  179. eRightRingC,
  180. eRightPinkyA,
  181. eRightPinkyB,
  182. eRightPinkyC,
  183. eReference,
  184. eLeftFloor,
  185. eRightFloor,
  186. eHipsTranslation,
  187. eProps0,
  188. eProps1,
  189. eProps2,
  190. eProps3,
  191. eProps4,
  192. eGameModeParentLeftHipRoll,
  193. eGameModeParentLeftKnee,
  194. eGameModeParentLeftKneeRoll,
  195. eGameModeParentRightHipRoll,
  196. eGameModeParentRightKnee,
  197. eGameModeParentRightKneeRoll,
  198. eGameModeParentLeftShoulderRoll,
  199. eGameModeParentLeftElbow,
  200. eGameModeParentLeftElbowRoll,
  201. eGameModeParentRightShoulderRoll,
  202. eGameModeParentRightElbow,
  203. eGameModeParentRightElbowRoll,
  204. eLeftUpLegRoll,
  205. eLeftLegRoll,
  206. eRightUpLegRoll,
  207. eRightLegRoll,
  208. eLeftArmRoll,
  209. eLeftForeArmRoll,
  210. eRightArmRoll,
  211. eRightForeArmRoll,
  212. eLeftHandFloor,
  213. eRightHandFloor,
  214. eLeftHand,
  215. eRightHand,
  216. eNeck1,
  217. eNeck2,
  218. eNeck3,
  219. eNeck4,
  220. eNeck5,
  221. eNeck6,
  222. eNeck7,
  223. eNeck8,
  224. eNeck9,
  225. eLeftInHandThumb,
  226. eLeftThumbD,
  227. eLeftInHandIndex,
  228. eLeftIndexD,
  229. eLeftInHandMiddle,
  230. eLeftMiddleD,
  231. eLeftInHandRing,
  232. eLeftRingD,
  233. eLeftInHandPinky,
  234. eLeftPinkyD,
  235. eLeftInHandExtraFinger,
  236. eLeftExtraFingerA,
  237. eLeftExtraFingerB,
  238. eLeftExtraFingerC,
  239. eLeftExtraFingerD,
  240. eRightInHandThumb,
  241. eRightThumbD,
  242. eRightInHandIndex,
  243. eRightIndexD,
  244. eRightInHandMiddle,
  245. eRightMiddleD,
  246. eRightInHandRing,
  247. eRightRingD,
  248. eRightInHandPinky,
  249. eRightPinkyD,
  250. eRightInHandExtraFinger,
  251. eRightExtraFingerA,
  252. eRightExtraFingerB,
  253. eRightExtraFingerC,
  254. eRightExtraFingerD,
  255. eLeftInFootThumb,
  256. eLeftFootThumbA,
  257. eLeftFootThumbB,
  258. eLeftFootThumbC,
  259. eLeftFootThumbD,
  260. eLeftInFootIndex,
  261. eLeftFootIndexA,
  262. eLeftFootIndexB,
  263. eLeftFootIndexC,
  264. eLeftFootIndexD,
  265. eLeftInFootMiddle,
  266. eLeftFootMiddleA,
  267. eLeftFootMiddleB,
  268. eLeftFootMiddleC,
  269. eLeftFootMiddleD,
  270. eLeftInFootRing,
  271. eLeftFootRingA,
  272. eLeftFootRingB,
  273. eLeftFootRingC,
  274. eLeftFootRingD,
  275. eLeftInFootPinky,
  276. eLeftFootPinkyA,
  277. eLeftFootPinkyB,
  278. eLeftFootPinkyC,
  279. eLeftFootPinkyD,
  280. eLeftInFootExtraFinger,
  281. eLeftFootExtraFingerA,
  282. eLeftFootExtraFingerB,
  283. eLeftFootExtraFingerC,
  284. eLeftFootExtraFingerD,
  285. eRightInFootThumb,
  286. eRightFootThumbA,
  287. eRightFootThumbB,
  288. eRightFootThumbC,
  289. eRightFootThumbD,
  290. eRightInFootIndex,
  291. eRightFootIndexA,
  292. eRightFootIndexB,
  293. eRightFootIndexC,
  294. eRightFootIndexD,
  295. eRightInFootMiddle,
  296. eRightFootMiddleA,
  297. eRightFootMiddleB,
  298. eRightFootMiddleC,
  299. eRightFootMiddleD,
  300. eRightInFootRing,
  301. eRightFootRingA,
  302. eRightFootRingB,
  303. eRightFootRingC,
  304. eRightFootRingD,
  305. eRightInFootPinky,
  306. eRightFootPinkyA,
  307. eRightFootPinkyB,
  308. eRightFootPinkyC,
  309. eRightFootPinkyD,
  310. eRightInFootExtraFinger,
  311. eRightFootExtraFingerA,
  312. eRightFootExtraFingerB,
  313. eRightFootExtraFingerC,
  314. eRightFootExtraFingerD,
  315. eLeftCollarExtra,
  316. eRightCollarExtra,
  317. eLeafLeftHipRoll1,
  318. eLeafLeftKneeRoll1,
  319. eLeafRightHipRoll1,
  320. eLeafRightKneeRoll1,
  321. eLeafLeftShoulderRoll1,
  322. eLeafLeftElbowRoll1,
  323. eLeafRightShoulderRoll1,
  324. eLeafRightElbowRoll1,
  325. eLeafLeftHipRoll2,
  326. eLeafLeftKneeRoll2,
  327. eLeafRightHipRoll2,
  328. eLeafRightKneeRoll2,
  329. eLeafLeftShoulderRoll2,
  330. eLeafLeftElbowRoll2,
  331. eLeafRightShoulderRoll2,
  332. eLeafRightElbowRoll2,
  333. eLeafLeftHipRoll3,
  334. eLeafLeftKneeRoll3,
  335. eLeafRightHipRoll3,
  336. eLeafRightKneeRoll3,
  337. eLeafLeftShoulderRoll3,
  338. eLeafLeftElbowRoll3,
  339. eLeafRightShoulderRoll3,
  340. eLeafRightElbowRoll3,
  341. eLeafLeftHipRoll4,
  342. eLeafLeftKneeRoll4,
  343. eLeafRightHipRoll4,
  344. eLeafRightKneeRoll4,
  345. eLeafLeftShoulderRoll4,
  346. eLeafLeftElbowRoll4,
  347. eLeafRightShoulderRoll4,
  348. eLeafRightElbowRoll4,
  349. eLeafLeftHipRoll5,
  350. eLeafLeftKneeRoll5,
  351. eLeafRightHipRoll5,
  352. eLeafRightKneeRoll5,
  353. eLeafLeftShoulderRoll5,
  354. eLeafLeftElbowRoll5,
  355. eLeafRightShoulderRoll5,
  356. eLeafRightElbowRoll5,
  357. eNodeIdCount,
  358. eNodeIdInvalid=-1
  359. };
  360. enum EOffAutoUser
  361. {
  362. eParamModeOff,
  363. eParamModeAuto,
  364. eParamModeUser
  365. };
  366. enum EAutoUser
  367. {
  368. eParamModeAuto2,
  369. eParamModeUser2
  370. };
  371. enum EPostureMode
  372. {
  373. ePostureBiped,
  374. ePostureQuadriped,
  375. ePostureCount
  376. };
  377. enum EFloorPivot
  378. {
  379. eFloorPivotAuto,
  380. eFloorPivotAnkle,
  381. eFloorPivotToes,
  382. eFloorPivotCount
  383. };
  384. enum ERollExtractionMode
  385. {
  386. eRelativeRollExtraction,
  387. eAbsoluteRollExtraction,
  388. eRollExtractionTypeCount
  389. };
  390. enum EHipsTranslationMode
  391. {
  392. eHipsTranslationWorldRigid,
  393. eHipsTranslationBodyRigid,
  394. eHipsTranslationTypeCount
  395. };
  396. enum EFootContactType
  397. {
  398. eFootTypeNormal,
  399. eFootTypeAnkle,
  400. eFootTypeToeBase,
  401. eFootTypeHoof,
  402. eFootContactModeCount
  403. };
  404. enum EHandContactType
  405. {
  406. eHandTypeNormal,
  407. eHandTypeWrist,
  408. eHandTypeFingerBase,
  409. eHandTypeHoof,
  410. eHandContactModeCount
  411. };
  412. enum EFingerContactMode
  413. {
  414. eFingerContactModeSticky,
  415. eFingerContactModeSpread,
  416. eFingerContactModeStickySpread,
  417. eFingerContactModeCount
  418. };
  419. enum EContactBehaviour
  420. {
  421. eContactNeverSync,
  422. eContactSyncOnKey,
  423. eContactAlwaysSync,
  424. eContactBehaviorCount
  425. };
  426. enum EPropertyUnit
  427. {
  428. ePropertyNoUnit,
  429. ePropertyPercent,
  430. ePropertySecond,
  431. ePropertyCentimeter,
  432. ePropertyDegree,
  433. ePropertyEnum,
  434. ePropertyReal
  435. };
  436. enum EErrorCode
  437. {
  438. eInternalError,
  439. eErrorCount
  440. };
  441. /** Reset to default values.
  442. * - Input type will be set to eInputStancePose.
  443. * - Input object will be set to NULL.
  444. * - Each Character link will be reset.
  445. * - The control set will be reset.
  446. */
  447. void Reset();
  448. /** Set input type and index.
  449. * \param pInputType Input type.
  450. * \param pInputObject Pointer to input character if input type equals eInputCharacter, otherwise \c NULL.
  451. */
  452. void SetInput(EInputType pInputType, FbxObject* pInputObject = NULL);
  453. //! Get input type.
  454. EInputType GetInputType() const;
  455. /** Get input actor or character.
  456. * \return Pointer or \c Null, depending on the input type.
  457. * - If the input type is set to eInputCharacter. The returned pointer can be casted to a pointer of type FbxCharacter.
  458. * - \c Null pointer if the input object has not been set, or if the input type is not set to eInputCharacter.
  459. */
  460. FbxObject* GetInputObject() const;
  461. /** Associate a character link to a given character node ID. If a character link already exists for this character node ID,
  462. * the character link will be removed.
  463. * \param pCharacterNodeId Character node ID.
  464. * \param pCharacterLink Character link.
  465. * \param pUpdateObjectList Set to \c true to update the object list (default value).
  466. * \return \c true if successful, \c false otherwise.
  467. */
  468. bool SetCharacterLink(ENodeId pCharacterNodeId, const FbxCharacterLink& pCharacterLink, bool pUpdateObjectList = true);
  469. /** Get a character link associated with a given character node ID.
  470. * \param pCharacterNodeId ID of character node requested.
  471. * \param pCharacterLink Optional pointer to receive the character link if function succeeds.
  472. * \return \c true if successful, \c false otherwise.
  473. */
  474. bool GetCharacterLink(ENodeId pCharacterNodeId, FbxCharacterLink* pCharacterLink = NULL) const;
  475. /** Get control set associated with the character.
  476. * \return Return the control set associated with the character.
  477. */
  478. FbxControlSet& GetControlSet() const;
  479. /** Get number of elements in a given character group.
  480. * \param pCharacterGroupId Character group ID.
  481. * \return The number of elements in the pCharacterGroupId character group.
  482. */
  483. static int GetCharacterGroupCount(EGroupId pCharacterGroupId);
  484. /** Get character node ID of an element in a given character group.
  485. * \param pCharacterGroupId Character group ID.
  486. * \param pIndex Character index ID.
  487. * \return Character node ID.
  488. */
  489. static ENodeId GetCharacterGroupElementByIndex(EGroupId pCharacterGroupId, int pIndex);
  490. /** Get character node name of an element in a given character group.
  491. * \param pCharacterGroupId Character group ID.
  492. * \param pIndex Character index ID.
  493. * \return Character node name.
  494. */
  495. static char* GetCharacterGroupNameByIndex(EGroupId pCharacterGroupId, int pIndex);
  496. /** Get character node version of an element in a given character group.
  497. * \param pCharacterGroupId Character group ID.
  498. * \param pIndex Character index ID.
  499. * \return Character node version.
  500. */
  501. static int GetCharacterGroupVersionByIndex(EGroupId pCharacterGroupId, int pIndex);
  502. /** Find the character group index associated with a given character node name.
  503. * \param pName Character node name.
  504. * \param pForceGroupId Set to \c true to force the character group ID.
  505. * \param pCharacterGroupId Receives character group ID.
  506. * \param pIndex Receives character index ID.
  507. * \return \c true if successful, otherwise \c false.
  508. */
  509. static bool FindCharacterGroupIndexByName(const char* pName, bool pForceGroupId, EGroupId& pCharacterGroupId, int& pIndex);
  510. /** Get character node group and index of a given character node ID.
  511. * \param pCharacterNodeId Character node ID.
  512. * \param pCharacterGroupId if the Character node ID is found, the method returns the group ID through this parameter
  513. * \param pIndex if the Character node ID is found, the method returns the index through this parameter
  514. * \remarks Only works for a character node ID that is part of a group.
  515. * \return \c true if successful, \c false otherwise.
  516. */
  517. static bool GetCharacterGroupIndexByElement(ENodeId pCharacterNodeId, EGroupId& pCharacterGroupId, int& pIndex);
  518. /** Get character node version of a given character node ID.
  519. * \param pCharacterNodeId Character node ID to get version.
  520. * \param pVersion if the node ID is found, the method returns the version through this parameter
  521. * \remarks Only works for a character node ID is part of a group.
  522. * \return \c true if successful, \c false otherwise.
  523. */
  524. static bool GetCharacterGroupVersionByElement(ENodeId pCharacterNodeId, int& pVersion);
  525. /** Get character node name associated with a given character node ID.
  526. * \param pCharacterNodeId Character node ID to get name.
  527. * \param pName if the node ID is found, the method returns the node name through this parameter
  528. * Since the Pointer points to internal data, it is not necessary to allocate a string buffer
  529. * before calling this function.
  530. * \return \c true if a name exists for the given node ID.
  531. */
  532. static bool GetCharacterNodeNameFromNodeId(ENodeId pCharacterNodeId, char*& pName);
  533. /** Get the character node ID associated with a given character node name.
  534. * \param pName Character node name to get node ID.
  535. * \param pCharacterNodeId if the node name is found, this method returns the node ID through this parameter
  536. * \return \c true if a node ID exists for the given node name.
  537. */
  538. static bool GetCharacterNodeIdFromNodeName(const char* pName, ENodeId& pCharacterNodeId);
  539. // FbxCharacter Properties
  540. FbxPropertyT<FbxInt> PullIterationCount;
  541. FbxPropertyT<EPostureMode> Posture;
  542. FbxPropertyT<FbxBool> ForceActorSpace;
  543. FbxPropertyT<FbxDouble> ScaleCompensation;
  544. FbxPropertyT<EOffAutoUser> ScaleCompensationMode;
  545. FbxPropertyT<FbxDouble> HipsHeightCompensation;
  546. FbxPropertyT<EOffAutoUser> HipsHeightCompensationMode;
  547. FbxPropertyT<FbxDouble> AnkleHeightCompensation;
  548. FbxPropertyT<EOffAutoUser> AnkleHeightCompensationMode;
  549. FbxPropertyT<FbxDouble> AnkleProximityCompensation;
  550. FbxPropertyT<EOffAutoUser> AnkleProximityCompensationMode;
  551. FbxPropertyT<FbxDouble> MassCenterCompensation;
  552. FbxPropertyT<FbxBool> ApplyLimits;
  553. FbxPropertyT<FbxDouble> ChestReduction;
  554. FbxPropertyT<FbxDouble> CollarReduction;
  555. FbxPropertyT<FbxDouble> NeckReduction;
  556. FbxPropertyT<FbxDouble> HeadReduction;
  557. FbxPropertyT<FbxDouble> ReachActorLeftAnkle;
  558. FbxPropertyT<FbxDouble> ReachActorRightAnkle;
  559. FbxPropertyT<FbxDouble> ReachActorLeftKnee;
  560. FbxPropertyT<FbxDouble> ReachActorRightKnee;
  561. FbxPropertyT<FbxDouble> ReachActorChest;
  562. FbxPropertyT<FbxDouble> ReachActorHead;
  563. FbxPropertyT<FbxDouble> ReachActorLeftWrist;
  564. FbxPropertyT<FbxDouble> ReachActorRightWrist;
  565. FbxPropertyT<FbxDouble> ReachActorLeftElbow;
  566. FbxPropertyT<FbxDouble> ReachActorRightElbow;
  567. FbxPropertyT<FbxDouble> ReachActorLeftFingerBase;
  568. FbxPropertyT<FbxDouble> ReachActorRightFingerBase;
  569. FbxPropertyT<FbxDouble> ReachActorLeftToesBase;
  570. FbxPropertyT<FbxDouble> ReachActorRightToesBase;
  571. FbxPropertyT<FbxDouble> ReachActorLeftFingerBaseRotation;
  572. FbxPropertyT<FbxDouble> ReachActorRightFingerBaseRotation;
  573. FbxPropertyT<FbxDouble> ReachActorLeftToesBaseRotation;
  574. FbxPropertyT<FbxDouble> ReachActorRightToesBaseRotation;
  575. FbxPropertyT<FbxDouble> ReachActorLeftAnkleRotation;
  576. FbxPropertyT<FbxDouble> ReachActorRightAnkleRotation;
  577. FbxPropertyT<FbxDouble> ReachActorHeadRotation;
  578. FbxPropertyT<FbxDouble> ReachActorLeftWristRotation;
  579. FbxPropertyT<FbxDouble> ReachActorRightWristRotation;
  580. FbxPropertyT<FbxDouble> ReachActorChestRotation;
  581. FbxPropertyT<FbxDouble> ReachActorLowerChestRotation;
  582. FbxPropertyT<FbxDouble3> HipsTOffset;
  583. FbxPropertyT<FbxDouble3> ChestTOffset;
  584. FbxPropertyT<ERollExtractionMode> RollExtractionMode;
  585. FbxPropertyT<FbxDouble> LeftUpLegRoll;
  586. FbxPropertyT<FbxBool> LeftUpLegRollMode;
  587. FbxPropertyT<FbxDouble> LeftLegRoll;
  588. FbxPropertyT<FbxBool> LeftLegRollMode;
  589. FbxPropertyT<FbxDouble> RightUpLegRoll;
  590. FbxPropertyT<FbxBool> RightUpLegRollMode;
  591. FbxPropertyT<FbxDouble> RightLegRoll;
  592. FbxPropertyT<FbxBool> RightLegRollMode;
  593. FbxPropertyT<FbxDouble> LeftArmRoll;
  594. FbxPropertyT<FbxBool> LeftArmRollMode;
  595. FbxPropertyT<FbxDouble> LeftForeArmRoll;
  596. FbxPropertyT<FbxBool> LeftForeArmRollMode;
  597. FbxPropertyT<FbxDouble> RightArmRoll;
  598. FbxPropertyT<FbxBool> RightArmRollMode;
  599. FbxPropertyT<FbxDouble> RightForeArmRoll;
  600. FbxPropertyT<FbxBool> RightForeArmRollMode;
  601. FbxPropertyT<FbxDouble> LeftUpLegRollEx;
  602. FbxPropertyT<FbxBool> LeftUpLegRollExMode;
  603. FbxPropertyT<FbxDouble> LeftLegRollEx;
  604. FbxPropertyT<FbxBool> LeftLegRollExMode;
  605. FbxPropertyT<FbxDouble> RightUpLegRollEx;
  606. FbxPropertyT<FbxBool> RightUpLegRollExMode;
  607. FbxPropertyT<FbxDouble> RightLegRollEx;
  608. FbxPropertyT<FbxBool> RightLegRollExMode;
  609. FbxPropertyT<FbxDouble> LeftArmRollEx;
  610. FbxPropertyT<FbxBool> LeftArmRollExMode;
  611. FbxPropertyT<FbxDouble> LeftForeArmRollEx;
  612. FbxPropertyT<FbxBool> LeftForeArmRollExMode;
  613. FbxPropertyT<FbxDouble> RightArmRollEx;
  614. FbxPropertyT<FbxBool> RightArmRollExMode;
  615. FbxPropertyT<FbxDouble> RightForeArmExRoll;
  616. FbxPropertyT<FbxBool> RightForeArmRollExMode;
  617. FbxPropertyT<EContactBehaviour> ContactBehaviour;
  618. FbxPropertyT<FbxBool> FootFloorContact;
  619. FbxPropertyT<FbxBool> FootAutomaticToes;
  620. FbxPropertyT<EFloorPivot> FootFloorPivot;
  621. FbxPropertyT<FbxDouble> FootBottomToAnkle;
  622. FbxPropertyT<FbxDouble> FootBackToAnkle;
  623. FbxPropertyT<FbxDouble> FootMiddleToAnkle;
  624. FbxPropertyT<FbxDouble> FootFrontToMiddle;
  625. FbxPropertyT<FbxDouble> FootInToAnkle;
  626. FbxPropertyT<FbxDouble> FootOutToAnkle;
  627. FbxPropertyT<FbxDouble> FootContactSize;
  628. FbxPropertyT<FbxBool> FootFingerContact;
  629. FbxPropertyT<EFootContactType> FootContactType;
  630. FbxPropertyT<EFingerContactMode> FootFingerContactMode;
  631. FbxPropertyT<FbxDouble> FootContactStiffness;
  632. FbxPropertyT<FbxDouble> FootFingerContactRollStiffness;
  633. FbxPropertyT<FbxBool> HandFloorContact;
  634. FbxPropertyT<FbxBool> HandAutomaticFingers;
  635. FbxPropertyT<EFloorPivot> HandFloorPivot;
  636. FbxPropertyT<FbxDouble> HandBottomToWrist;
  637. FbxPropertyT<FbxDouble> HandBackToWrist;
  638. FbxPropertyT<FbxDouble> HandMiddleToWrist;
  639. FbxPropertyT<FbxDouble> HandFrontToMiddle;
  640. FbxPropertyT<FbxDouble> HandInToWrist;
  641. FbxPropertyT<FbxDouble> HandOutToWrist;
  642. FbxPropertyT<FbxDouble> HandContactSize;
  643. FbxPropertyT<FbxBool> HandFingerContact;
  644. FbxPropertyT<EHandContactType> HandContactType;
  645. FbxPropertyT<EFingerContactMode> HandFingerContactMode;
  646. FbxPropertyT<FbxDouble> HandContactStiffness;
  647. FbxPropertyT<FbxDouble> HandFingerContactRollStiffness;
  648. FbxPropertyT<FbxDouble> LeftHandThumbTip;
  649. FbxPropertyT<FbxDouble> LeftHandIndexTip;
  650. FbxPropertyT<FbxDouble> LeftHandMiddleTip;
  651. FbxPropertyT<FbxDouble> LeftHandRingTip;
  652. FbxPropertyT<FbxDouble> LeftHandPinkyTip;
  653. FbxPropertyT<FbxDouble> LeftHandExtraFingerTip;
  654. FbxPropertyT<FbxDouble> RightHandThumbTip;
  655. FbxPropertyT<FbxDouble> RightHandIndexTip;
  656. FbxPropertyT<FbxDouble> RightHandMiddleTip;
  657. FbxPropertyT<FbxDouble> RightHandRingTip;
  658. FbxPropertyT<FbxDouble> RightHandPinkyTip;
  659. FbxPropertyT<FbxDouble> RightHandExtraFingerTip;
  660. FbxPropertyT<FbxDouble> LeftFootThumbTip;
  661. FbxPropertyT<FbxDouble> LeftFootIndexTip;
  662. FbxPropertyT<FbxDouble> LeftFootMiddleTip;
  663. FbxPropertyT<FbxDouble> LeftFootRingTip;
  664. FbxPropertyT<FbxDouble> LeftFootPinkyTip;
  665. FbxPropertyT<FbxDouble> LeftFootExtraFingerTip;
  666. FbxPropertyT<FbxDouble> RightFootThumbTip;
  667. FbxPropertyT<FbxDouble> RightFootIndexTip;
  668. FbxPropertyT<FbxDouble> RightFootMiddleTip;
  669. FbxPropertyT<FbxDouble> RightFootRingTip;
  670. FbxPropertyT<FbxDouble> RightFootPinkyTip;
  671. FbxPropertyT<FbxDouble> RightFootExtraFingerTip;
  672. FbxPropertyT<FbxBool> FingerSolving;
  673. FbxPropertyT<FbxDouble> CtrlPullLeftToeBase;
  674. FbxPropertyT<FbxDouble> CtrlPullLeftFoot;
  675. FbxPropertyT<FbxDouble> CtrlPullLeftKnee;
  676. FbxPropertyT<FbxDouble> CtrlPullRightToeBase;
  677. FbxPropertyT<FbxDouble> CtrlPullRightFoot;
  678. FbxPropertyT<FbxDouble> CtrlPullRightKnee;
  679. FbxPropertyT<FbxDouble> CtrlPullLeftFingerBase;
  680. FbxPropertyT<FbxDouble> CtrlPullLeftHand;
  681. FbxPropertyT<FbxDouble> CtrlPullLeftElbow;
  682. FbxPropertyT<FbxDouble> CtrlPullRightFingerBase;
  683. FbxPropertyT<FbxDouble> CtrlPullRightHand;
  684. FbxPropertyT<FbxDouble> CtrlPullRightElbow;
  685. FbxPropertyT<FbxDouble> CtrlChestPullLeftHand;
  686. FbxPropertyT<FbxDouble> CtrlChestPullRightHand;
  687. FbxPropertyT<FbxDouble> CtrlPullHead;
  688. FbxPropertyT<FbxDouble> CtrlResistHipsPosition;
  689. FbxPropertyT<FbxDouble> CtrlEnforceGravity;
  690. FbxPropertyT<FbxDouble> CtrlResistHipsOrientation;
  691. FbxPropertyT<FbxDouble> CtrlResistChestPosition;
  692. FbxPropertyT<FbxDouble> CtrlResistChestOrientation;
  693. FbxPropertyT<FbxDouble> CtrlResistLeftCollar;
  694. FbxPropertyT<FbxDouble> CtrlResistRightCollar;
  695. FbxPropertyT<FbxDouble> CtrlResistLeftKnee;
  696. FbxPropertyT<FbxDouble> CtrlResistMaximumExtensionLeftKnee;
  697. FbxPropertyT<FbxDouble> CtrlResistCompressionFactorLeftKnee;
  698. FbxPropertyT<FbxDouble> CtrlResistRightKnee;
  699. FbxPropertyT<FbxDouble> CtrlResistMaximumExtensionRightKnee;
  700. FbxPropertyT<FbxDouble> CtrlResistCompressionFactorRightKnee;
  701. FbxPropertyT<FbxDouble> CtrlResistLeftElbow;
  702. FbxPropertyT<FbxDouble> CtrlResistMaximumExtensionLeftElbow;
  703. FbxPropertyT<FbxDouble> CtrlResistCompressionFactorLeftElbow;
  704. FbxPropertyT<FbxDouble> CtrlResistRightElbow;
  705. FbxPropertyT<FbxDouble> CtrlResistMaximumExtensionRightElbow;
  706. FbxPropertyT<FbxDouble> CtrlResistCompressionFactorRightElbow;
  707. FbxPropertyT<FbxDouble> CtrlSpineStiffness;
  708. FbxPropertyT<FbxDouble> CtrlNeckStiffness;
  709. FbxPropertyT<FbxBool> MirrorMode;
  710. FbxPropertyT<FbxDouble> ShoulderCorrection;
  711. FbxPropertyT<FbxBool> LeftKneeKillPitch;
  712. FbxPropertyT<FbxBool> RightKneeKillPitch;
  713. FbxPropertyT<FbxBool> LeftElbowKillPitch;
  714. FbxPropertyT<FbxBool> RightElbowKillPitch;
  715. FbxPropertyT<EHipsTranslationMode> HipsTranslationMode;
  716. FbxPropertyT<FbxBool> WriteReference;
  717. FbxPropertyT<FbxBool> SyncMode;
  718. FbxPropertyT<FbxDouble> Damping;
  719. FbxPropertyT<FbxDouble> OrientationDamping;
  720. FbxPropertyT<EOffAutoUser> OrientationDampingMode;
  721. FbxPropertyT<FbxDouble> DisplacementDamping;
  722. FbxPropertyT<EOffAutoUser> DisplacementDampingMode;
  723. FbxPropertyT<FbxDouble> DisplacementMemory;
  724. FbxPropertyT<EAutoUser> DisplacementMemoryMode;
  725. FbxPropertyT<FbxDouble> HipsDisplacementDamping;
  726. FbxPropertyT<EAutoUser> HipsDisplacementDampingMode;
  727. FbxPropertyT<FbxDouble> AnkleDisplacementDamping;
  728. FbxPropertyT<EAutoUser> AnkleDisplacementDampingMode;
  729. FbxPropertyT<FbxDouble> WristDisplacementDamping;
  730. FbxPropertyT<EAutoUser> WristDisplacementDampingMode;
  731. FbxPropertyT<FbxDouble> Stabilization;
  732. FbxPropertyT<FbxDouble> AnkleStabilizationTime;
  733. FbxPropertyT<EAutoUser> AnkleStabilizationTimeMode;
  734. FbxPropertyT<FbxDouble> AnkleStabilizationPerimeter;
  735. FbxPropertyT<EAutoUser> AnkleStabilizationPerimeterMode;
  736. FbxPropertyT<FbxDouble> AnkleStabilizationAngularPerimeter;
  737. FbxPropertyT<EOffAutoUser> AnkleStabilizationAngularPerimeterMode;
  738. FbxPropertyT<FbxDouble> AnkleStabilizationFloorProximity;
  739. FbxPropertyT<EOffAutoUser> AnkleStabilizationFloorProximityMode;
  740. FbxPropertyT<FbxDouble> AnkleStabilizationDamping;
  741. FbxPropertyT<EOffAutoUser> AnkleStabilizationDampingMode;
  742. FbxPropertyT<FbxDouble> AnkleStabilizationRecoveryTime;
  743. FbxPropertyT<EOffAutoUser> AnkleStabilizationRecoveryTimeMode;
  744. FbxPropertyT<FbxReference> SourceObject;
  745. FbxPropertyT<FbxReference> DestinationObject;
  746. FbxPropertyT<FbxReference> Actor;
  747. FbxPropertyT<FbxReference> Character;
  748. FbxPropertyT<FbxReference> ControlSet;
  749. FbxPropertyT<FbxDouble> HikVersion;
  750. FbxPropertyT<FbxBool> Characterize;
  751. FbxPropertyT<FbxBool> LockXForm;
  752. FbxPropertyT<FbxBool> LockPick;
  753. // HIK 4.6 new properties
  754. FbxPropertyT<FbxDouble> RealisticShoulder;
  755. FbxPropertyT<FbxDouble> CollarStiffnessX;
  756. FbxPropertyT<FbxDouble> CollarStiffnessY;
  757. FbxPropertyT<FbxDouble> CollarStiffnessZ;
  758. FbxPropertyT<FbxDouble> ExtraCollarRatio;
  759. FbxPropertyT<FbxDouble> LeftLegMaxExtensionAngle;
  760. FbxPropertyT<FbxDouble> RightLegMaxExtensionAngle;
  761. FbxPropertyT<FbxDouble> LeftArmMaxExtensionAngle;
  762. FbxPropertyT<FbxDouble> RightArmMaxExtensionAngle;
  763. FbxPropertyT<FbxDouble> StretchStartArmsAndLegs;
  764. FbxPropertyT<FbxDouble> StretchStopArmsAndLegs;
  765. FbxPropertyT<FbxDouble> SnSScaleArmsAndLegs;
  766. FbxPropertyT<FbxDouble> SnSReachLeftWrist;
  767. FbxPropertyT<FbxDouble> SnSReachRightWrist;
  768. FbxPropertyT<FbxDouble> SnSReachLeftAnkle;
  769. FbxPropertyT<FbxDouble> SnSReachRightAnkle;
  770. FbxPropertyT<FbxDouble> SnSScaleSpine;
  771. FbxPropertyT<FbxDouble> SnSScaleSpineChildren;
  772. FbxPropertyT<FbxDouble> SnSSpineFreedom;
  773. FbxPropertyT<FbxDouble> SnSReachChestEnd;
  774. FbxPropertyT<FbxDouble> SnSScaleNeck;
  775. FbxPropertyT<FbxDouble> SnSNeckFreedom;
  776. FbxPropertyT<FbxDouble> SnSReachHead;
  777. // HIK 2016.5.0 roll properties
  778. // Leaf roll properties
  779. FbxPropertyT<FbxDouble> LeafLeftUpLegRoll1;
  780. FbxPropertyT<FbxBool> LeafLeftUpLegRoll1Mode;
  781. FbxPropertyT<FbxDouble> LeafLeftLegRoll1;
  782. FbxPropertyT<FbxBool> LeafLeftLegRoll1Mode;
  783. FbxPropertyT<FbxDouble> LeafRightUpLegRoll1;
  784. FbxPropertyT<FbxBool> LeafRightUpLegRoll1Mode;
  785. FbxPropertyT<FbxDouble> LeafRightLegRoll1;
  786. FbxPropertyT<FbxBool> LeafRightLegRoll1Mode;
  787. FbxPropertyT<FbxDouble> LeafLeftArmRoll1;
  788. FbxPropertyT<FbxBool> LeafLeftArmRoll1Mode;
  789. FbxPropertyT<FbxDouble> LeafLeftForeArmRoll1;
  790. FbxPropertyT<FbxBool> LeafLeftForeArmRoll1Mode;
  791. FbxPropertyT<FbxDouble> LeafRightArmRoll1;
  792. FbxPropertyT<FbxBool> LeafRightArmRoll1Mode;
  793. FbxPropertyT<FbxDouble> LeafRightForeArmRoll1;
  794. FbxPropertyT<FbxBool> LeafRightForeArmRoll1Mode;
  795. FbxPropertyT<FbxDouble> LeafLeftUpLegRoll2;
  796. FbxPropertyT<FbxBool> LeafLeftUpLegRoll2Mode;
  797. FbxPropertyT<FbxDouble> LeafLeftLegRoll2;
  798. FbxPropertyT<FbxBool> LeafLeftLegRoll2Mode;
  799. FbxPropertyT<FbxDouble> LeafRightUpLegRoll2;
  800. FbxPropertyT<FbxBool> LeafRightUpLegRoll2Mode;
  801. FbxPropertyT<FbxDouble> LeafRightLegRoll2;
  802. FbxPropertyT<FbxBool> LeafRightLegRoll2Mode;
  803. FbxPropertyT<FbxDouble> LeafLeftArmRoll2;
  804. FbxPropertyT<FbxBool> LeafLeftArmRoll2Mode;
  805. FbxPropertyT<FbxDouble> LeafLeftForeArmRoll2;
  806. FbxPropertyT<FbxBool> LeafLeftForeArmRoll2Mode;
  807. FbxPropertyT<FbxDouble> LeafRightArmRoll2;
  808. FbxPropertyT<FbxBool> LeafRightArmRoll2Mode;
  809. FbxPropertyT<FbxDouble> LeafRightForeArmRoll2;
  810. FbxPropertyT<FbxBool> LeafRightForeArmRoll2Mode;
  811. FbxPropertyT<FbxDouble> LeafLeftUpLegRoll3;
  812. FbxPropertyT<FbxBool> LeafLeftUpLegRoll3Mode;
  813. FbxPropertyT<FbxDouble> LeafLeftLegRoll3;
  814. FbxPropertyT<FbxBool> LeafLeftLegRoll3Mode;
  815. FbxPropertyT<FbxDouble> LeafRightUpLegRoll3;
  816. FbxPropertyT<FbxBool> LeafRightUpLegRoll3Mode;
  817. FbxPropertyT<FbxDouble> LeafRightLegRoll3;
  818. FbxPropertyT<FbxBool> LeafRightLegRoll3Mode;
  819. FbxPropertyT<FbxDouble> LeafLeftArmRoll3;
  820. FbxPropertyT<FbxBool> LeafLeftArmRoll3Mode;
  821. FbxPropertyT<FbxDouble> LeafLeftForeArmRoll3;
  822. FbxPropertyT<FbxBool> LeafLeftForeArmRoll3Mode;
  823. FbxPropertyT<FbxDouble> LeafRightArmRoll3;
  824. FbxPropertyT<FbxBool> LeafRightArmRoll3Mode;
  825. FbxPropertyT<FbxDouble> LeafRightForeArmRoll3;
  826. FbxPropertyT<FbxBool> LeafRightForeArmRoll3Mode;
  827. FbxPropertyT<FbxDouble> LeafLeftUpLegRoll4;
  828. FbxPropertyT<FbxBool> LeafLeftUpLegRoll4Mode;
  829. FbxPropertyT<FbxDouble> LeafLeftLegRoll4;
  830. FbxPropertyT<FbxBool> LeafLeftLegRoll4Mode;
  831. FbxPropertyT<FbxDouble> LeafRightUpLegRoll4;
  832. FbxPropertyT<FbxBool> LeafRightUpLegRoll4Mode;
  833. FbxPropertyT<FbxDouble> LeafRightLegRoll4;
  834. FbxPropertyT<FbxBool> LeafRightLegRoll4Mode;
  835. FbxPropertyT<FbxDouble> LeafLeftArmRoll4;
  836. FbxPropertyT<FbxBool> LeafLeftArmRoll4Mode;
  837. FbxPropertyT<FbxDouble> LeafLeftForeArmRoll4;
  838. FbxPropertyT<FbxBool> LeafLeftForeArmRoll4Mode;
  839. FbxPropertyT<FbxDouble> LeafRightArmRoll4;
  840. FbxPropertyT<FbxBool> LeafRightArmRoll4Mode;
  841. FbxPropertyT<FbxDouble> LeafRightForeArmRoll4;
  842. FbxPropertyT<FbxBool> LeafRightForeArmRoll4Mode;
  843. FbxPropertyT<FbxDouble> LeafLeftUpLegRoll5;
  844. FbxPropertyT<FbxBool> LeafLeftUpLegRoll5Mode;
  845. FbxPropertyT<FbxDouble> LeafLeftLegRoll5;
  846. FbxPropertyT<FbxBool> LeafLeftLegRoll5Mode;
  847. FbxPropertyT<FbxDouble> LeafRightUpLegRoll5;
  848. FbxPropertyT<FbxBool> LeafRightUpLegRoll5Mode;
  849. FbxPropertyT<FbxDouble> LeafRightLegRoll5;
  850. FbxPropertyT<FbxBool> LeafRightLegRoll5Mode;
  851. FbxPropertyT<FbxDouble> LeafLeftArmRoll5;
  852. FbxPropertyT<FbxBool> LeafLeftArmRoll5Mode;
  853. FbxPropertyT<FbxDouble> LeafLeftForeArmRoll5;
  854. FbxPropertyT<FbxBool> LeafLeftForeArmRoll5Mode;
  855. FbxPropertyT<FbxDouble> LeafRightArmRoll5;
  856. FbxPropertyT<FbxBool> LeafRightArmRoll5Mode;
  857. FbxPropertyT<FbxDouble> LeafRightForeArmRoll5;
  858. FbxPropertyT<FbxBool> LeafRightForeArmRoll5Mode;
  859. // Full limb roll extraction
  860. FbxPropertyT<FbxDouble> LeftLegFullRollExtraction;
  861. FbxPropertyT<FbxDouble> RightLegFullRollExtraction;
  862. FbxPropertyT<FbxDouble> LeftArmFullRollExtraction;
  863. FbxPropertyT<FbxDouble> RightArmFullRollExtraction;
  864. /*****************************************************************************************************************************
  865. ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
  866. *****************************************************************************************************************************/
  867. #ifndef DOXYGEN_SHOULD_SKIP_THIS
  868. void SetVersion(int pVersion){ mCharacterVersion = pVersion; }
  869. int Version(){ return mCharacterVersion; }
  870. void SetValuesFromLegacyLoad();
  871. void SetValuesForLegacySave(int pVersion);
  872. void RestoreValuesFromLegacySave();
  873. bool IsLegacy();
  874. int GetPropertyInfoCount();
  875. void GetPropertyInfo(char* &pCharacterPropertyName, char* &pCharacterPropertyModeName, EPropertyUnit &pUnit, int &pPropertyIndex, char* &pHIKPropertyName, char* &pHIKPropertyModeName, int pIndex) const;
  876. void GetFbxCharacterPropertyFromHIKProperty(char* &pCharacterPropertyName, char* &pCharacterPropertyModeName, EPropertyUnit &pUnit, int &pPropertyIndex, const char* pHIKPropertyName) const;
  877. FbxCharacterLink* GetCharacterLinkPtr(ENodeId pCharacterNodeId);
  878. virtual FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const;
  879. protected:
  880. virtual void Construct(const FbxObject* pFrom);
  881. virtual void ConstructProperties(bool pForceSet);
  882. virtual void Destruct(bool pRecursive);
  883. virtual FbxObject& Copy(const FbxObject& pObject);
  884. virtual EType GetConstraintType() const;
  885. virtual FbxStringList GetTypeFlags() const;
  886. virtual bool ConnectNotify (FbxConnectEvent const &pEvent);
  887. private:
  888. bool InverseProperty(FbxProperty& pProp);
  889. int mCharacterVersion;
  890. FbxCharacterLink mCharacterLink[eNodeIdCount];
  891. FbxControlSet* mControlSet;
  892. friend class FbxNode;
  893. #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
  894. };
  895. inline EFbxType FbxTypeOf(const FbxCharacter::EOffAutoUser&){ return eFbxEnum; }
  896. inline EFbxType FbxTypeOf(const FbxCharacter::EAutoUser&){ return eFbxEnum; }
  897. inline EFbxType FbxTypeOf(const FbxCharacter::EPostureMode&){ return eFbxEnum; }
  898. inline EFbxType FbxTypeOf(const FbxCharacter::EFloorPivot&){ return eFbxEnum; }
  899. inline EFbxType FbxTypeOf(const FbxCharacter::ERollExtractionMode&){ return eFbxEnum; }
  900. inline EFbxType FbxTypeOf(const FbxCharacter::EHipsTranslationMode&){ return eFbxEnum; }
  901. inline EFbxType FbxTypeOf(const FbxCharacter::EFootContactType&){ return eFbxEnum; }
  902. inline EFbxType FbxTypeOf(const FbxCharacter::EHandContactType&){ return eFbxEnum; }
  903. inline EFbxType FbxTypeOf(const FbxCharacter::EFingerContactMode&){ return eFbxEnum; }
  904. inline EFbxType FbxTypeOf(const FbxCharacter::EContactBehaviour&){ return eFbxEnum; }
  905. #include <fbxsdk/fbxsdk_nsend.h>
  906. #endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ */