00001 #ifndef __FBCHARACTER_H__
00002 #define __FBCHARACTER_H__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00046 #include <kaydaradef.h>
00047 #ifndef FBSDK_DLL
00048
00051 #define FBSDK_DLL K_DLLIMPORT
00052 #endif
00053
00054 #include <fbsdk/fbconstraint.h>
00055
00056 #include <fbsdk/fbcharacterextension.h>
00057
00058 #ifdef FBSDKUseNamespace
00059 namespace FBSDKNamespace {
00060 #endif
00061
00062 class FBCharacterSolver;
00063
00065 enum FBSkeletonNodeId
00066 {
00067 kFBSkeletonInvalidIndex = -1,
00068 kFBSkeletonHipsIndex = 0,
00069 kFBSkeletonLeftHipIndex,
00070 kFBSkeletonLeftKneeIndex,
00071 kFBSkeletonLeftAnkleIndex,
00072 kFBSkeletonLeftFootIndex,
00073 kFBSkeletonRightHipIndex,
00074 kFBSkeletonRightKneeIndex,
00075 kFBSkeletonRightAnkleIndex,
00076 kFBSkeletonRightFootIndex,
00077 kFBSkeletonWaistIndex,
00078 kFBSkeletonChestIndex,
00079 kFBSkeletonLeftCollarIndex,
00080 kFBSkeletonLeftShoulderIndex,
00081 kFBSkeletonLeftElbowIndex,
00082 kFBSkeletonLeftWristIndex,
00083 kFBSkeletonRightCollarIndex,
00084 kFBSkeletonRightShoulderIndex,
00085 kFBSkeletonRightElbowIndex,
00086 kFBSkeletonRightWristIndex,
00087 kFBSkeletonNeckIndex,
00088 kFBSkeletonHeadIndex,
00089 kFBSkeletonLeftThumbAIndex,
00090 kFBSkeletonLeftThumbBIndex,
00091 kFBSkeletonLeftThumbCIndex,
00092 kFBSkeletonLeftIndexAIndex,
00093 kFBSkeletonLeftIndexBIndex,
00094 kFBSkeletonLeftIndexCIndex,
00095 kFBSkeletonLeftMiddleAIndex,
00096 kFBSkeletonLeftMiddleBIndex,
00097 kFBSkeletonLeftMiddleCIndex,
00098 kFBSkeletonLeftRingAIndex,
00099 kFBSkeletonLeftRingBIndex,
00100 kFBSkeletonLeftRingCIndex,
00101 kFBSkeletonLeftPinkyAIndex,
00102 kFBSkeletonLeftPinkyBIndex,
00103 kFBSkeletonLeftPinkyCIndex,
00104 kFBSkeletonRightThumbAIndex,
00105 kFBSkeletonRightThumbBIndex,
00106 kFBSkeletonRightThumbCIndex,
00107 kFBSkeletonRightIndexAIndex,
00108 kFBSkeletonRightIndexBIndex,
00109 kFBSkeletonRightIndexCIndex,
00110 kFBSkeletonRightMiddleAIndex,
00111 kFBSkeletonRightMiddleBIndex,
00112 kFBSkeletonRightMiddleCIndex,
00113 kFBSkeletonRightRingAIndex,
00114 kFBSkeletonRightRingBIndex,
00115 kFBSkeletonRightRingCIndex,
00116 kFBSkeletonRightPinkyAIndex,
00117 kFBSkeletonRightPinkyBIndex,
00118 kFBSkeletonRightPinkyCIndex,
00119 kFBSkeletonReferenceIndex,
00120 kFBSkeletonLastIndex
00121 };
00122
00124 enum FBBodyNodeId
00125 {
00126 kFBInvalidNodeId = -1,
00127 kFBHipsNodeId = 0,
00128 kFBLeftHipNodeId,
00129 kFBLeftKneeNodeId,
00130 kFBLeftAnkleNodeId,
00131 kFBLeftFootNodeId,
00132 kFBRightHipNodeId,
00133 kFBRightKneeNodeId,
00134 kFBRightAnkleNodeId,
00135 kFBRightFootNodeId,
00136 kFBWaistNodeId,
00137 kFBChestNodeId,
00138 kFBLeftCollarNodeId,
00139 kFBLeftShoulderNodeId,
00140 kFBLeftElbowNodeId,
00141 kFBLeftWristNodeId,
00142 kFBRightCollarNodeId,
00143 kFBRightShoulderNodeId,
00144 kFBRightElbowNodeId,
00145 kFBRightWristNodeId,
00146 kFBNeckNodeId,
00147 kFBHeadNodeId,
00148 kFBLeftHipRollNodeId,
00149 kFBLeftKneeRollNodeId,
00150 kFBRightHipRollNodeId,
00151 kFBRightKneeRollNodeId,
00152 kFBLeftShoulderRollNodeId,
00153 kFBLeftElbowRollNodeId,
00154 kFBRightShoulderRollNodeId,
00155 kFBRightElbowRollNodeId,
00156 kFBSpine2NodeId,
00157 kFBSpine3NodeId,
00158 kFBSpine4NodeId,
00159 kFBSpine5NodeId,
00160 kFBSpine6NodeId,
00161 kFBSpine7NodeId,
00162 kFBSpine8NodeId,
00163 kFBSpine9NodeId,
00164 kFBLeftThumbANodeId,
00165 kFBLeftThumbBNodeId,
00166 kFBLeftThumbCNodeId,
00167 kFBLeftIndexANodeId,
00168 kFBLeftIndexBNodeId,
00169 kFBLeftIndexCNodeId,
00170 kFBLeftMiddleANodeId,
00171 kFBLeftMiddleBNodeId,
00172 kFBLeftMiddleCNodeId,
00173 kFBLeftRingANodeId,
00174 kFBLeftRingBNodeId,
00175 kFBLeftRingCNodeId,
00176 kFBLeftPinkyANodeId,
00177 kFBLeftPinkyBNodeId,
00178 kFBLeftPinkyCNodeId,
00179 kFBRightThumbANodeId,
00180 kFBRightThumbBNodeId,
00181 kFBRightThumbCNodeId,
00182 kFBRightIndexANodeId,
00183 kFBRightIndexBNodeId,
00184 kFBRightIndexCNodeId,
00185 kFBRightMiddleANodeId,
00186 kFBRightMiddleBNodeId,
00187 kFBRightMiddleCNodeId,
00188 kFBRightRingANodeId,
00189 kFBRightRingBNodeId,
00190 kFBRightRingCNodeId,
00191 kFBRightPinkyANodeId,
00192 kFBRightPinkyBNodeId,
00193 kFBRightPinkyCNodeId,
00194 kFBReferenceNodeId,
00195
00196 kFBLeftThumbInNodeId,
00197 kFBLeftThumbDNodeId,
00198 kFBLeftIndexInNodeId,
00199 kFBLeftIndexDNodeId,
00200 kFBLeftMiddleInNodeId,
00201 kFBLeftMiddleDNodeId,
00202 kFBLeftRingInNodeId,
00203 kFBLeftRingDNodeId,
00204 kFBLeftPinkyInNodeId,
00205 kFBLeftPinkyDNodeId,
00206 kFBRightThumbInNodeId,
00207 kFBRightThumbDNodeId,
00208 kFBRightIndexInNodeId,
00209 kFBRightIndexDNodeId,
00210 kFBRightMiddleInNodeId,
00211 kFBRightMiddleDNodeId,
00212 kFBRightRingInNodeId,
00213 kFBRightRingDNodeId,
00214 kFBRightPinkyInNodeId,
00215 kFBRightPinkyDNodeId,
00216
00217 kFBLeftExtraFingerInNodeId,
00218 kFBLeftExtraFingerANodeId,
00219 kFBLeftExtraFingerBNodeId,
00220 kFBLeftExtraFingerCNodeId,
00221 kFBLeftExtraFingerDNodeId,
00222 kFBRightExtraFingerInNodeId,
00223 kFBRightExtraFingerANodeId,
00224 kFBRightExtraFingerBNodeId,
00225 kFBRightExtraFingerCNodeId,
00226 kFBRightExtraFingerDNodeId,
00227
00228 kFBLeftFootThumbInNodeId,
00229 kFBLeftFootThumbANodeId,
00230 kFBLeftFootThumbBNodeId,
00231 kFBLeftFootThumbCNodeId,
00232 kFBLeftFootThumbDNodeId,
00233 kFBLeftFootIndexInNodeId,
00234 kFBLeftFootIndexANodeId,
00235 kFBLeftFootIndexBNodeId,
00236 kFBLeftFootIndexCNodeId,
00237 kFBLeftFootIndexDNodeId,
00238 kFBLeftFootMiddleInNodeId,
00239 kFBLeftFootMiddleANodeId,
00240 kFBLeftFootMiddleBNodeId,
00241 kFBLeftFootMiddleCNodeId,
00242 kFBLeftFootMiddleDNodeId,
00243 kFBLeftFootRingInNodeId,
00244 kFBLeftFootRingANodeId,
00245 kFBLeftFootRingBNodeId,
00246 kFBLeftFootRingCNodeId,
00247 kFBLeftFootRingDNodeId,
00248 kFBLeftFootPinkyInNodeId,
00249 kFBLeftFootPinkyANodeId,
00250 kFBLeftFootPinkyBNodeId,
00251 kFBLeftFootPinkyCNodeId,
00252 kFBLeftFootPinkyDNodeId,
00253 kFBRightFootThumbInNodeId,
00254 kFBRightFootThumbANodeId,
00255 kFBRightFootThumbBNodeId,
00256 kFBRightFootThumbCNodeId,
00257 kFBRightFootThumbDNodeId,
00258 kFBRightFootIndexInNodeId,
00259 kFBRightFootIndexANodeId,
00260 kFBRightFootIndexBNodeId,
00261 kFBRightFootIndexCNodeId,
00262 kFBRightFootIndexDNodeId,
00263 kFBRightFootMiddleInNodeId,
00264 kFBRightFootMiddleANodeId,
00265 kFBRightFootMiddleBNodeId,
00266 kFBRightFootMiddleCNodeId,
00267 kFBRightFootMiddleDNodeId,
00268 kFBRightFootRingInNodeId,
00269 kFBRightFootRingANodeId,
00270 kFBRightFootRingBNodeId,
00271 kFBRightFootRingCNodeId,
00272 kFBRightFootRingDNodeId,
00273 kFBRightFootPinkyInNodeId,
00274 kFBRightFootPinkyANodeId,
00275 kFBRightFootPinkyBNodeId,
00276 kFBRightFootPinkyCNodeId,
00277 kFBRightFootPinkyDNodeId,
00278
00279 kFBLeftExtraFootFingerInNodeId,
00280 kFBLeftExtraFootFingerANodeId,
00281 kFBLeftExtraFootFingerBNodeId,
00282 kFBLeftExtraFootFingerCNodeId,
00283 kFBLeftExtraFootFingerDNodeId,
00284 kFBRightExtraFootFingerInNodeId,
00285 kFBRightExtraFootFingerANodeId,
00286 kFBRightExtraFootFingerBNodeId,
00287 kFBRightExtraFootFingerCNodeId,
00288 kFBRightExtraFootFingerDNodeId,
00289
00290 kFBLeftHandNodeId,
00291 kFBRightHandNodeId,
00292 kFBNeck1NodeId,
00293 kFBNeck2NodeId,
00294 kFBNeck3NodeId,
00295 kFBNeck4NodeId,
00296 kFBNeck5NodeId,
00297 kFBNeck6NodeId,
00298 kFBNeck7NodeId,
00299 kFBNeck8NodeId,
00300 kFBNeck9NodeId,
00301
00302 kFBHipsTranslationNodeId,
00303 kFBLastNodeId
00304 };
00305
00307 const int kFBLastActorNodeId = ( kFBHeadNodeId + 1 );
00308
00310 enum FBEffectorId
00311 {
00312 kFBInvalidEffectorId = -1,
00313 kFBHipsEffectorId = 0,
00314 kFBLeftAnkleEffectorId,
00315 kFBRightAnkleEffectorId,
00316 kFBLeftWristEffectorId,
00317 kFBRightWristEffectorId,
00318 kFBLeftKneeEffectorId,
00319 kFBRightKneeEffectorId,
00320 kFBLeftElbowEffectorId,
00321 kFBRightElbowEffectorId,
00322 kFBChestOriginEffectorId,
00323 kFBChestEndEffectorId,
00324 kFBLeftFootEffectorId,
00325 kFBRightFootEffectorId,
00326 kFBLeftShoulderEffectorId,
00327 kFBRightShoulderEffectorId,
00328 kFBHeadEffectorId,
00329 kFBLeftHipEffectorId,
00330 kFBRightHipEffectorId,
00331
00332 kFBLeftHandEffectorId,
00333 kFBRightHandEffectorId,
00334 kFBLeftHandThumbEffectorId,
00335 kFBLeftHandIndexEffectorId,
00336 kFBLeftHandMiddleEffectorId,
00337 kFBLeftHandRingEffectorId,
00338 kFBLeftHandPinkyEffectorId,
00339 kFBLeftHandExtraFingerEffectorId,
00340 kFBRightHandThumbEffectorId,
00341 kFBRightHandIndexEffectorId,
00342 kFBRightHandMiddleEffectorId,
00343 kFBRightHandRingEffectorId,
00344 kFBRightHandPinkyEffectorId,
00345 kFBRightHandExtraFingerEffectorId,
00346 kFBLeftFootThumbEffectorId,
00347 kFBLeftFootIndexEffectorId,
00348 kFBLeftFootMiddleEffectorId,
00349 kFBLeftFootRingEffectorId,
00350 kFBLeftFootPinkyEffectorId,
00351 kFBLeftFootExtraFingerEffectorId,
00352 kFBRightFootThumbEffectorId,
00353 kFBRightFootIndexEffectorId,
00354 kFBRightFootMiddleEffectorId,
00355 kFBRightFootRingEffectorId,
00356 kFBRightFootPinkyEffectorId,
00357 kFBRightFootExtraFingerEffectorId,
00358 kFBLastEffectorId
00359 };
00360
00362 enum FBEffectorSetID
00363 {
00364 FBEffectorSetDefault = 0,
00365 FBEffectorSetAux1,
00366 FBEffectorSetAux2,
00367 FBEffectorSetAux3,
00368 FBEffectorSetAux4,
00369 FBEffectorSetAux5,
00370 FBEffectorSetAux6,
00371 EFBffectorSetAux7,
00372 FBEffectorSetAux8,
00373 FBEffectorSetAux9,
00374 FBEffectorSetAux10,
00375 FBEffectorSetAux11,
00376 FBEffectorSetAux12,
00377 FBEffectorSetAux13,
00378 FBEffectorSetAux14,
00379 FBLastEffectorSetIndex
00380 };
00381
00383 enum FBFloorContactID
00384 {
00385 FBLeftHandMemberIndex,
00386 FBRightHandMemberIndex,
00387 FBLeftFootMemberIndex,
00388 FBRightFootMemberIndex,
00389 FBLastCharacterMember
00390 };
00391
00393 enum FBBodyPartId
00394 {
00395 kFBCtrlSetPartNone = 0,
00396 kFBCtrlSetPartHips,
00397 kFBCtrlSetPartChest,
00398 kFBCtrlSetPartLeftArm,
00399 kFBCtrlSetPartRightArm,
00400 kFBCtrlSetPartLeftLeg,
00401 kFBCtrlSetPartRightLeg,
00402 kFBCtrlSetPartHead,
00403 kFBCtrlSetPartLeftHand,
00404 kFBCtrlSetPartRightHand,
00405 kFBCtrlSetPartLeftFoot,
00406 kFBCtrlSetPartRightFoot,
00407 kFBLastCtrlSetPartIndex
00408 };
00409
00410
00411
00413 enum FBCharacterInputType
00414 {
00415 kFBCharacterInputActor,
00416 kFBCharacterInputCharacter,
00417 kFBCharacterInputMarkerSet,
00418 kFBCharacterOutputMarkerSet,
00419 kFBCharacterInputStance
00420 };
00421 FB_DEFINE_ENUM( FBSDK_DLL, CharacterInputType );
00422
00424 enum FBCharacterKeyingMode
00425 {
00426 kFBCharacterKeyingFullBody,
00427 kFBCharacterKeyingBodyPart,
00428 kFBCharacterKeyingSelection,
00429 };
00430 FB_DEFINE_ENUM( FBSDK_DLL, CharacterKeyingMode );
00431
00433 enum FBCharacterResetProperties
00434 {
00435 kFBCharacterResetPropertiesAll,
00436 kFBCharacterResetPropertiesSolving,
00437 kFBCharacterResetPropertiesDefinition
00438 };
00439
00441 enum FBCharacterPlotWhere
00442 {
00443 kFBCharacterPlotOnControlRig,
00444 kFBCharacterPlotOnSkeleton
00445 };
00446 FB_DEFINE_ENUM( FBSDK_DLL, CharacterPlotWhere );
00447
00449 enum FBCharacterHipsTranslationMode
00450 {
00451 kFBParamHipsTranslationWorldRigid = 0,
00452 kFBParamHipsTranslationBodyRigid,
00453 kFBLastHipsTranslationMode
00454 };
00455 FB_DEFINE_ENUM( FBSDK_DLL, CharacterHipsTranslationMode );
00456
00458 enum FBCharacterRollSolver
00459 {
00460 kFBParamRollSolver70 = 0,
00461 kFBParamRollSolver75,
00462 kFBLastRollSolver
00463 };
00464 FB_DEFINE_ENUM( FBSDK_DLL, CharacterRollSolver );
00465
00467 enum FBCharacterContactBehaviour
00468 {
00469 kFBParamContactNeverSync = 0,
00470 kFBParamContactSyncOnKey,
00471 kFBParamContactAlwaysSync,
00472 kFBLastContactBehaviour
00473 };
00474 FB_DEFINE_ENUM( FBSDK_DLL, CharacterContactBehaviour );
00475
00477 enum FBControlSetType
00478 {
00479 kFBControlSetTypeNone = 0,
00480 kFBControlSetTypeFKIK,
00481 kFBControlSetTypeIKOnly
00482 };
00483 FB_DEFINE_ENUM( FBSDK_DLL, ControlSetType );
00484
00489 FBSDK_DLL const char* FBCharacterBodyNodeNameFromId( FBBodyNodeId pBodyNodeId );
00490
00495 FBSDK_DLL const char* FBCharacterEffectorNameFromId( FBEffectorId pEffectorId );
00496
00498
00500 __FB_FORWARD( FBMarkerSet );
00501 FB_DEFINE_COMPONENT( FBSDK_DLL, MarkerSet );
00502 FB_FORWARD( FBModel );
00503
00505 typedef class FBSDK_DLL FBArrayTemplate<HFBModel> FBModelList;
00506
00511 class FBSDK_DLL FBMarkerSet : public FBComponent
00512 {
00513
00514 __FBClassDeclare( FBMarkerSet, FBComponent );
00515 public:
00521 FBMarkerSet(char* pName, HIObject pObject = NULL);
00522
00526 HFBModel GetReferenceModel( );
00527
00531 void SetReferenceModel( HFBModel pReferenceModel );
00532
00538 HFBModel GetMarkerModel( FBSkeletonNodeId pNodeId, int pMarkerIndex );
00539
00545 void SetMarkerModel( FBSkeletonNodeId pNodeId, int pMarkerIndex, HFBModel pModel );
00546
00551 bool SetMultipleMarkerModels( FBModelList* pModelList );
00552
00558 char* GetMarkerName( FBSkeletonNodeId pNodeId, int pMarkerIndex );
00559
00565 void SetMarkerName( FBSkeletonNodeId pNodeId, int pMarkerIndex, char* pMarkerName );
00566
00568
00573 void GetMarkerTOffset( FBSkeletonNodeId pNodeId, int pMarkerIndex, HFBTVector pTOffset );
00574 void SetMarkerTOffset( FBSkeletonNodeId pNodeId, int pMarkerIndex, HFBTVector pTOffset );
00576
00578
00583 void GetMarkerROffset( FBSkeletonNodeId pNodeId, int pMarkerIndex, HFBRVector pROffset );
00584 void SetMarkerROffset( FBSkeletonNodeId pNodeId, int pMarkerIndex, HFBRVector pROffset );
00586
00592 bool GetMarkerOriented( FBSkeletonNodeId pNodeId, int pMarkerIndex );
00593
00599 void SetMarkerOriented( FBSkeletonNodeId pNodeId, int pMarkerIndex, bool pIsOriented );
00600
00606 bool GetMarkerUsed( FBSkeletonNodeId pNodeId, int pMarkerIndex );
00607
00613 void SetMarkerUsed( FBSkeletonNodeId pNodeId, int pMarkerIndex, bool pUsed );
00614
00619 int GetMarkerCount( FBSkeletonNodeId pNodeId = kFBSkeletonInvalidIndex );
00620
00625 int GetUsedMarkerCount( FBSkeletonNodeId pNodeId = kFBSkeletonInvalidIndex );
00626
00633 int AddMarker( FBSkeletonNodeId pNodeId, HFBModel pModel = NULL, bool pIsOriented = false );
00634
00638 void SetMarkerSetVisibility(bool pVisibility);
00639
00643 int GetMarkerSetVisibility();
00644
00648 bool GetLinkToModelOk();
00649
00653 void BeginTransaction( );
00654
00658 void EndTransaction( );
00659
00660 };
00661
00663
00665 __FB_FORWARD( FBControlSet );
00666 FB_DEFINE_COMPONENT( FBSDK_DLL, ControlSet );
00667
00672 class FBSDK_DLL FBControlSet : public FBComponent
00673 {
00674
00675 __FBClassDeclare( FBControlSet, FBComponent );
00676 public:
00682 FBControlSet(char* pName, HIObject pObject = NULL);
00683
00687 HFBModel GetReferenceModel( );
00688
00692 char* GetReferenceName( );
00693
00698 int GetIKEffectorIndex(HFBModel pModel);
00704 HFBModel GetIKEffectorModel(FBEffectorId pEffectorIndex, int pPivotIndex = 0);
00708 int GetIKEffectorPivotCount(FBEffectorId pEffectorIndex);
00713 char* GetIKEffectorName(FBEffectorId pEffectorIndex);
00714
00715
00716
00721 int GetFKIndex(HFBModel pModel);
00726 HFBModel GetFKModel(int pIndex);
00731 char* GetFKName(int pIndex);
00732
00736 int GetFKCount();
00737
00738
00739
00740 FBPropertyControlSetType ControlSetType;
00741 FBPropertyBool UseAxis;
00742 FBPropertyDouble FKOpacity;
00743 };
00744
00749 __FB_FORWARD( FBSkeletonState );
00750 class FBSDK_DLL FBSkeletonState
00751 {
00752 public:
00757 void GetNodeMatrix(FBSkeletonNodeId pSkeletonId, FBMatrix &pSkeletonGlobalMatrix);
00758 };
00759
00761
00763 __FB_FORWARD( FBActor );
00764 FB_DEFINE_COMPONENT( FBSDK_DLL, Actor );
00765
00767 enum FBRecalcMarkerSetOffset
00768 {
00769 kFBRecalcMarkerSetOffsetTR,
00770 kFBRecalcMarkerSetOffsetROnly
00771 };
00772
00813 class FBSDK_DLL FBActor : public FBConstraint
00814 {
00815
00816 __FBClassDeclare( FBActor, FBConstraint );
00817 public:
00823 FBActor(char* pName, HIObject pObject = NULL);
00824
00828 virtual void FBDelete();
00829
00830 FBPropertyMarkerSet MarkerSet;
00831 FBPropertyMarkerSet OutputMarkerSet;
00832
00833 FBPropertyColor BodyColor;
00834 FBPropertyColor SkeletonColor;
00835 FBPropertyColor PivotColor;
00836 FBPropertyDouble MarkerSetSize;
00837 FBPropertyDouble PivotSize;
00838
00839 FBPropertyVector3d HipsPosition;
00840 FBPropertyVector3d LeftHipPosition;
00841 FBPropertyVector3d LeftKneePosition;
00842 FBPropertyVector3d LeftAnklePosition;
00843 FBPropertyVector3d LeftFootPosition;
00844 FBPropertyVector3d RightHipPosition;
00845 FBPropertyVector3d RightKneePosition;
00846 FBPropertyVector3d RightAnklePosition;
00847 FBPropertyVector3d RightFootPosition;
00848 FBPropertyVector3d WaistPosition;
00849 FBPropertyVector3d ChestPosition;
00850 FBPropertyVector3d LeftCollarPosition;
00851 FBPropertyVector3d LeftShoulderPosition;
00852 FBPropertyVector3d LeftElbowPosition;
00853 FBPropertyVector3d LeftWristPosition;
00854 FBPropertyVector3d RightCollarPosition;
00855 FBPropertyVector3d RightShoulderPosition;
00856 FBPropertyVector3d RightElbowPosition;
00857 FBPropertyVector3d RightWristPosition;
00858 FBPropertyVector3d NeckPosition;
00859 FBPropertyVector3d HeadPosition;
00860 FBPropertyBool Visibility;
00861
00862 FBPropertyAnimatableDouble LeftHandIndexIndex;
00863 FBPropertyAnimatableDouble LeftHandIndexMiddle;
00864 FBPropertyAnimatableDouble LeftHandIndexRing;
00865 FBPropertyAnimatableDouble LeftHandIndexPinky;
00866
00867 FBPropertyAnimatableDouble LeftHandMiddleIndex;
00868 FBPropertyAnimatableDouble LeftHandMiddleMiddle;
00869 FBPropertyAnimatableDouble LeftHandMiddleRing;
00870 FBPropertyAnimatableDouble LeftHandMiddlePinky;
00871
00872 FBPropertyAnimatableDouble LeftHandRingIndex;
00873 FBPropertyAnimatableDouble LeftHandRingMiddle;
00874 FBPropertyAnimatableDouble LeftHandRingRing;
00875 FBPropertyAnimatableDouble LeftHandRingPinky;
00876
00877 FBPropertyAnimatableDouble LeftHandPinkyIndex;
00878 FBPropertyAnimatableDouble LeftHandPinkyMiddle;
00879 FBPropertyAnimatableDouble LeftHandPinkyRing;
00880 FBPropertyAnimatableDouble LeftHandPinkyPinky;
00881
00882 FBPropertyAnimatableDouble RightHandIndexIndex;
00883 FBPropertyAnimatableDouble RightHandIndexMiddle;
00884 FBPropertyAnimatableDouble RightHandIndexRing;
00885 FBPropertyAnimatableDouble RightHandIndexPinky;
00886
00887 FBPropertyAnimatableDouble RightHandMiddleIndex;
00888 FBPropertyAnimatableDouble RightHandMiddleMiddle;
00889 FBPropertyAnimatableDouble RightHandMiddleRing;
00890 FBPropertyAnimatableDouble RightHandMiddlePinky;
00891
00892 FBPropertyAnimatableDouble RightHandRingIndex;
00893 FBPropertyAnimatableDouble RightHandRingMiddle;
00894 FBPropertyAnimatableDouble RightHandRingRing;
00895 FBPropertyAnimatableDouble RightHandRingPinky;
00896
00897 FBPropertyAnimatableDouble RightHandPinkyIndex;
00898 FBPropertyAnimatableDouble RightHandPinkyMiddle;
00899 FBPropertyAnimatableDouble RightHandPinkyRing;
00900 FBPropertyAnimatableDouble RightHandPinkyPinky;
00901
00902 FBPropertyAnimatableDouble FKFingerMultiplier;
00903 FBPropertyAnimatableDouble FKFingerTipMultiplier;
00904 FBPropertyAnimatableDouble FKThumbTipMultiplier;
00905 FBPropertyAnimatableBool HumanFingerLimits;
00906
00907
00911 virtual bool Snap( FBRecalcMarkerSetOffset pRecalcOffset );
00912
00913
00917 void UpdateValues( HFBEvaluateInfo pEvalInfo );
00918
00924 void SetDefinitionScaleVector( FBSkeletonNodeId pSkeletonId, FBVector3d pScaleVector, bool pSymmetricUpdate = true );
00925
00930 void GetDefinitionScaleVector( FBSkeletonNodeId pSkeletonId, FBVector3d &pScaleVector );
00931
00937 void SetDefinitionRotationVector( FBSkeletonNodeId pSkeletonId, FBVector3d pRotationVector, bool pSymmetricUpdate = true );
00938
00942 void SetActorTranslation( FBVector3d pTranslationVector );
00943
00947 HFBSkeletonState GetDefaultSkeletonState ();
00948
00952 HFBSkeletonState GetCurrentSkeletonState ();
00953
00957 HFBModel GetLeftGloveReferenceModel( );
00958
00962 void SetLeftGloveReferenceModel( HFBModel pReferenceModel );
00963
00967 HFBModel GetRightGloveReferenceModel( );
00968
00972 void SetRightGloveReferenceModel( HFBModel pReferenceModel );
00973 };
00974
00975
00977
00979 FB_FORWARD( FBPlotOptions );
00980 __FB_FORWARD( FBCharacter );
00981 FB_DEFINE_COMPONENT( FBSDK_DLL, Character );
00982
01022 class FBSDK_DLL FBCharacter : public FBConstraint
01023 {
01024
01025 __FBClassDeclare( FBCharacter, FBConstraint );
01026 public:
01032 FBCharacter(char* pName, HIObject pObject = NULL);
01033
01034 IObject_Declare(Implementation);
01035
01039 virtual void FBDelete();
01040
01042 FBCharacter* Clone();
01043
01044 FBPropertyCharacterInputType InputType;
01045 FBPropertyCharacterKeyingMode KeyingMode;
01046 FBPropertyActor InputActor;
01047 FBPropertyCharacter InputCharacter;
01048 FBPropertyBool ActiveInput;
01049
01050 FBPropertyListCharacterExtension CharacterExtensions;
01051
01055 void AddCharacterExtension(HFBCharacterExtension pExt);
01056
01060 void RemoveCharacterExtension(HFBCharacterExtension pExt);
01061
01065 HFBModel GetModel( FBBodyNodeId pBodyNodeId );
01066
01071 void GetSkinModelList( FBModelList& pSkinModelList );
01072
01076 FBBodyNodeId GetIndexByModel( HFBModel pModel );
01077
01081 HFBModel GetCtrlRigModel( FBBodyNodeId pBodyNodeId );
01082
01086 FBBodyNodeId GetCtrlRigIndexByModel( HFBModel pModel );
01087
01093 HFBModel GetEffectorModel( FBEffectorId pEffectorId, FBEffectorSetID pEffectorSetID = FBEffectorSetDefault );
01094
01099 HFBModel GetFloorContactModel( FBFloorContactID pMemberIndex );
01100
01101
01102
01103
01104 void GetTOffset( FBBodyNodeId pBodyNodeId, HFBTVector pTVector );
01105
01106
01107
01108
01109 void GetROffset( FBBodyNodeId pBodyNodeId, HFBRVector pRVector );
01110
01111
01112
01113
01114 void GetSOffset( FBBodyNodeId pBodyNodeId, HFBSVector pSVector );
01115
01116
01117
01118
01119 void GetTransformOffset( FBBodyNodeId pBodyNodeId, FBMatrix *pOffsetMatrix );
01120
01121
01122
01123
01124 void GetParentROffset( FBBodyNodeId pBodyNodeId, HFBRVector pRVector );
01125
01129 virtual bool PlotAnimation( FBCharacterPlotWhere pPlotWhere, FBPlotOptions* pPlotOptions );
01130
01134 bool ReadyForRetarget();
01135
01139 void Retarget( bool pOnBaseLayer );
01140
01143 void CopyAnimation();
01144
01148 virtual void ResetProperties( FBCharacterResetProperties pType );
01149
01156 void SelectModels( bool pSelect, bool pApplyToCharacter, bool pApplyToRig, bool pApplyToExtensions );
01157
01162 void GoToStancePose( bool pPushUndo = false, bool pIncludeCharacterExtensions = true );
01163
01168 bool SetCharacterizeOn( bool pSetAsBiped );
01169
01173 const char * GetCharacterizeError();
01174
01177 void SetCharacterizeOff();
01178
01182 bool GetCharacterize();
01183
01188 bool CreateControlRig(bool pSetFKIK);
01189
01193 void ConnectControlRig(FBControlSet* pControlSet, bool pUpdateLimit, bool pResetHierarchy);
01194
01197 void DisconnectControlRig();
01198
01206 bool CreateAuxiliary(FBEffectorId pEffectorId, bool pPivot, double pAuxReachT=100, double pAuxReachR=100);
01207
01212 FBControlSet * GetCurrentControlSet(bool pForce = false);
01213
01218 bool IsParentNodeOffset( FBBodyNodeId pNodeId );
01219
01223 FBCharacterSolver *GetExternalSolver();
01224
01228 void SetExternalSolver(int pIndex);
01229
01233 void SetExternalSolver(FBCharacterSolver* pSolver);
01234
01238 void GetActiveBodyPart(bool* pActivePart);
01239
01244 bool IsRotationPin(FBEffectorId pEffectorIndex);
01249 bool IsTranslationPin(FBEffectorId pEffectorIndex);
01250
01254 bool IsCtrlSetReady();
01255
01259 bool IsPlottingActorToCtrlRig();
01260
01262 FBString mCharacterizeError;
01263
01265
01266 FBPropertyBool MirrorMode;
01267 FBPropertyAnimatableDouble ShoulderCorrection;
01268 FBPropertyBool LeftKneeKillPitch;
01269 FBPropertyBool RightKneeKillPitch;
01270 FBPropertyBool LeftElbowKillPitch;
01271 FBPropertyBool RightElbowKillPitch;
01272 FBPropertyCharacterHipsTranslationMode HipsTranslationMode;
01273 FBPropertyBool WriteReference;
01274 FBPropertyBool SyncMode;
01275 FBPropertyBool InverseLeftKnee;
01276 FBPropertyBool InverseRightKnee;
01277 FBPropertyBool InverseLeftElbow;
01278 FBPropertyBool InverseRightElbow;
01279 FBPropertyCharacterRollSolver RollSolver;
01280 FBPropertyCharacterContactBehaviour ContactBehaviour;
01281
01282 FBPropertyAnimatableDouble ScaleCompensation;
01283 FBPropertyAnimatableDouble HipsHeightCompensation;
01284 FBPropertyAnimatableDouble AnkleHeightCompensation;
01285 FBPropertyAnimatableDouble AnkleProximityCompensation;
01286 };
01287
01288
01290
01292
01296 class FBSDK_DLL FBPropertyListMarkerSet : public FBPropertyListComponent
01297 {
01298 public:
01299 FBPropertyListMarkerSet();
01304 FBMarkerSet* operator[](int pIndex);
01309 virtual int Duplicate(int pIndex);
01310 };
01311
01313
01315
01319 class FBSDK_DLL FBPropertyListControlSet : public FBPropertyListComponent
01320 {
01321 public:
01322 FBPropertyListControlSet();
01327 FBControlSet* operator[](int pIndex);
01328 };
01329
01331
01333
01337 class FBSDK_DLL FBPropertyListActor : public FBPropertyListComponent
01338 {
01339 public:
01340 FBPropertyListActor();
01345 FBActor* operator[]( int pIndex );
01350 virtual int Duplicate( int pIndex );
01351 };
01352
01353
01355
01357 FB_FORWARD ( FBPropertyListCharacter );
01358
01363 class FBSDK_DLL FBPropertyListCharacter : public FBPropertyListComponent
01364 {
01365 public:
01366 FBPropertyListCharacter();
01371 HFBCharacter operator[]( int pIndex );
01376 virtual int Duplicate( int pIndex );
01377 };
01378
01379
01380
01384 FBSDK_DLL FBCharacterKeyingMode FBGetCharactersKeyingMode();
01385
01390 FBSDK_DLL FBBodyPartId FBGetEffectorBodyPart( FBEffectorId pEffectorId );
01391
01396 FBSDK_DLL FBBodyPartId FBGetBodyNodeBodyPart( FBBodyNodeId pBodyNodeId );
01397
01402 FBSDK_DLL HFBCharacter FBGetCharacterByAssociatedPart(HFBComponent pPart);
01403
01404 #ifdef FBSDKUseNamespace
01405 }
01406 #endif
01407 #endif