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