Go to the
documentation of this file.
00001
00004 #ifndef FBXFILESDK_KFBXCHARACTER_KFBXCHARACTERPOSE_H
00005 #define FBXFILESDK_KFBXCHARACTER_KFBXCHARACTERPOSE_H
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
00039
00040
00041 #include <fbxfilesdk/fbxfilesdk_def.h>
00042
00043 #include <fbxfilesdk/kfbxplugins/kfbxobject.h>
00044 #include <fbxfilesdk/kfbxplugins/kfbxscene.h>
00045 #include <fbxfilesdk/components/kbaselib/klib/kstring.h>
00046 #include <fbxfilesdk/kfbxmath/kfbxxmatrix.h>
00047 #include <fbxfilesdk/kfbxplugins/kfbxnode.h>
00048 #include <fbxfilesdk/kfbxcharacter/kfbxcharacter.h>
00049
00050 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00051
00052 class KFbxScene;
00053 class KFbxSdkManager;
00054
00079 class KFBX_DLL KFbxCharacterPose : public KFbxObject
00080 {
00081 KFBXOBJECT_DECLARE(KFbxCharacterPose,KFbxObject);
00082
00083 public:
00085 void Reset();
00086
00090 KFbxNode* GetRootNode() const;
00091
00095 KFbxCharacter* GetCharacter() const;
00096
00102 bool GetOffset(ECharacterNodeId pCharacterNodeId, KFbxXMatrix& pOffset) const
00103 {
00104 KFbxCharacterLink lCharacterLink;
00105
00106 if (!GetCharacter()) return false;
00107
00108 if (!GetCharacter()->GetCharacterLink(pCharacterNodeId, &lCharacterLink)) return false;
00109
00110 pOffset.SetTRS(lCharacterLink.mOffsetT, lCharacterLink.mOffsetR, lCharacterLink.mOffsetS);
00111
00112 return true;
00113 }
00114
00122 bool GetLocalPosition(ECharacterNodeId pCharacterNodeId, KFbxVector4& pLocalT, KFbxVector4& pLocalR, KFbxVector4& pLocalS) const
00123 {
00124 KFbxCharacterLink lCharacterLink;
00125 if( !GetCharacter() || !GetCharacter()->GetCharacterLink(pCharacterNodeId, &lCharacterLink) ) return false;
00126
00127 pLocalT = lCharacterLink.mNode->EvaluateLocalTranslation();
00128 pLocalR = lCharacterLink.mNode->EvaluateLocalRotation();
00129 pLocalS = lCharacterLink.mNode->EvaluateLocalScaling();
00130 return true;
00131 }
00132
00138 bool GetGlobalPosition(ECharacterNodeId pCharacterNodeId, KFbxXMatrix& pGlobalPosition) const
00139 {
00140 KFbxCharacterLink lCharacterLink;
00141 if( !GetCharacter() || !GetCharacter()->GetCharacterLink(pCharacterNodeId, &lCharacterLink) ) return false;
00142
00143 pGlobalPosition = lCharacterLink.mNode->EvaluateGlobalTransform();
00144 return true;
00145 }
00146
00148
00149
00150
00151
00152
00153
00155 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00156 virtual KFbxObject& Copy(const KFbxObject& pObject);
00157
00158 private:
00159 KFbxCharacterPose(KFbxSdkManager& pManager, char const* pName);
00160
00161 virtual void Destruct(bool pRecursive, bool pDependents);
00162
00163 void CopyNode(KFbxNode* pSrcNode, KFbxNode* pDstNode);
00164 void CopyCharacter(KFbxCharacter* pSrcCharacter, KFbxCharacter* pDstCharacter, KFbxNode* pDstRootNode);
00165
00166 public:
00167 KFbxScene* mScene;
00168
00169 private:
00170 friend class KFbxScene;
00171 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00172
00173 };
00174
00175 #include <fbxfilesdk/fbxfilesdk_nsend.h>
00176
00177 #endif // FBXFILESDK_KFBXCHARACTER_KFBXCHARACTERPOSE_H
00178