Go to the
documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013 #ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_POSE_H_
00014 #define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_POSE_H_
00015
00016 #include <fbxsdk/fbxsdk_def.h>
00017
00018 #include <fbxsdk/core/fbxobject.h>
00019 #include <fbxsdk/core/base/fbxstring.h>
00020 #include <fbxsdk/core/math/fbxaffinematrix.h>
00021 #include <fbxsdk/scene/fbxscene.h>
00022 #include <fbxsdk/scene/geometry/fbxnode.h>
00023 #include <fbxsdk/scene/constraint/fbxcharacter.h>
00024
00025 #include <fbxsdk/fbxsdk_nsbegin.h>
00026
00027 class FbxScene;
00028 class FbxManager;
00029
00054 class FBXSDK_DLL FbxCharacterPose : public FbxObject
00055 {
00056 FBXSDK_OBJECT_DECLARE(FbxCharacterPose,FbxObject);
00057
00058 public:
00060 void Reset();
00061
00065 FbxNode* GetRootNode() const;
00066
00070 FbxCharacter* GetCharacter() const;
00071
00077 bool GetOffset(FbxCharacter::ENodeId pCharacterNodeId, FbxAMatrix& pOffset) const
00078 {
00079 FbxCharacterLink lCharacterLink;
00080
00081 if (!GetCharacter()) return false;
00082
00083 if (!GetCharacter()->GetCharacterLink(pCharacterNodeId, &lCharacterLink)) return false;
00084
00085 pOffset.SetTRS(lCharacterLink.mOffsetT, lCharacterLink.mOffsetR, lCharacterLink.mOffsetS);
00086
00087 return true;
00088 }
00089
00097 bool GetLocalPosition(FbxCharacter::ENodeId pCharacterNodeId, FbxVector4& pLocalT, FbxVector4& pLocalR, FbxVector4& pLocalS) const
00098 {
00099 FbxCharacterLink lCharacterLink;
00100 if( !GetCharacter() || !GetCharacter()->GetCharacterLink(pCharacterNodeId, &lCharacterLink) ) return false;
00101
00102 pLocalT = lCharacterLink.mNode->EvaluateLocalTranslation();
00103 pLocalR = lCharacterLink.mNode->EvaluateLocalRotation();
00104 pLocalS = lCharacterLink.mNode->EvaluateLocalScaling();
00105 return true;
00106 }
00107
00113 bool GetGlobalPosition(FbxCharacter::ENodeId pCharacterNodeId, FbxAMatrix& pGlobalPosition) const
00114 {
00115 FbxCharacterLink lCharacterLink;
00116 if( !GetCharacter() || !GetCharacter()->GetCharacterLink(pCharacterNodeId, &lCharacterLink) ) return false;
00117
00118 pGlobalPosition = lCharacterLink.mNode->EvaluateGlobalTransform();
00119 return true;
00120 }
00121
00123
00124
00125
00126
00127
00128
00130 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00131 virtual FbxObject& Copy(const FbxObject& pObject);
00132
00133 private:
00134 FbxCharacterPose(FbxManager& pManager, char const* pName);
00135
00136 virtual void Destruct(bool pRecursive, bool pDependents);
00137
00138 void CopyNode(FbxNode* pSrcNode, FbxNode* pDstNode);
00139 void CopyCharacter(FbxCharacter* pSrcCharacter, FbxCharacter* pDstCharacter, FbxNode* pDstRootNode);
00140
00141 public:
00142 FbxScene* mScene;
00143
00144 private:
00145 friend class FbxScene;
00146 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00147
00148 };
00149
00150 #include <fbxsdk/fbxsdk_nsend.h>
00151
00152 #endif