00001
00004 #ifndef _FBXSDK_CHARACTER_POSE_H_
00005 #define _FBXSDK_CHARACTER_POSE_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
00042 #include <kaydaradef.h>
00043 #ifndef KFBX_DLL
00044 #define KFBX_DLL K_DLLIMPORT
00045 #endif
00046
00047 #include <kaydara.h>
00048
00049 #include <kfbxplugins/kfbxobject.h>
00050
00051 #include <klib/kstring.h>
00052
00053 #include <kfbxmath/kfbxxmatrix.h>
00054
00055 #include <kfbxplugins/kfbxnode.h>
00056
00057 #include <kfbxcharacter/kfbxcharacter.h>
00058
00059 #include <fbxfilesdk_nsbegin.h>
00060
00061 class KFbxScene;
00062 class KFbxSdkManager;
00063
00064 class KFbxCharacterPose_internal;
00065
00090 class KFBX_DLL KFbxCharacterPose : public KFbxObject
00091 {
00092 KFBXOBJECT_DECLARE(KFbxCharacterPose,KFbxObject);
00093
00094 public:
00096 void Reset();
00097
00101 KFbxNode* GetRootNode() const;
00102
00106 KFbxCharacter* GetCharacter() const;
00107
00113 bool GetOffset(ECharacterNodeId pCharacterNodeId, KFbxXMatrix& pOffset)
00114 {
00115 KFbxCharacterLink lCharacterLink;
00116
00117 if (!GetCharacter()) return false;
00118
00119 if (!GetCharacter()->GetCharacterLink(pCharacterNodeId, &lCharacterLink)) return false;
00120
00121 pOffset.SetTRS(lCharacterLink.mOffsetT, lCharacterLink.mOffsetR, lCharacterLink.mOffsetS);
00122
00123 return true;
00124 }
00125
00133 bool GetLocalPosition(ECharacterNodeId pCharacterNodeId, KFbxVector4& pLocalT, KFbxVector4& pLocalR, KFbxVector4& pLocalS)
00134 {
00135 KFbxCharacterLink lCharacterLink;
00136
00137 if (!GetCharacter()) return false;
00138
00139 if (!GetCharacter()->GetCharacterLink(pCharacterNodeId, &lCharacterLink)) return false;
00140
00141 pLocalT = lCharacterLink.mNode->GetLocalTFromDefaultTake();
00142 pLocalR = lCharacterLink.mNode->GetLocalRFromDefaultTake();
00143 pLocalS = lCharacterLink.mNode->GetLocalSFromDefaultTake();
00144
00145 return true;
00146 }
00147
00153 bool GetGlobalPosition(ECharacterNodeId pCharacterNodeId, KFbxXMatrix& pGlobalPosition)
00154 {
00155 KFbxCharacterLink lCharacterLink;
00156
00157 if (!GetCharacter()) return false;
00158
00159 if (!GetCharacter()->GetCharacterLink(pCharacterNodeId, &lCharacterLink)) return false;
00160
00161 pGlobalPosition = lCharacterLink.mNode->GetGlobalFromDefaultTake();
00162
00163 return true;
00164 }
00165
00167
00168
00169
00170
00171
00172
00174
00175 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00176
00177 public:
00178
00179 virtual KFbxObject* Clone(KFbxObject* pContainer, KFbxObject::ECloneType pCloneType) const;
00180
00181 protected:
00182 KFbxCharacterPose& operator=(KFbxCharacterPose const& pCharacterPose);
00183
00184 private:
00185 virtual KString GetTypeName() const;
00186
00187 KFbxCharacterPose(KFbxSdkManager& pManager, char const* pName);
00188 ~KFbxCharacterPose();
00189
00190 virtual void Destruct(bool pRecursive, bool pDependents);
00191
00192 void CopyNode(KFbxNode* pSrcNode, KFbxNode* pDstNode);
00193 void CopyCharacter(KFbxCharacter* pSrcCharacter, KFbxCharacter* pDstCharacter, KFbxNode* pDstRootNode);
00194
00195 KFbxCharacterPose_internal* mPH;
00196
00197 KFbxScene* mScene;
00198
00199 friend class KFbxCharacterPose_internal;
00200 friend class KFbxScene;
00201 friend class KFbxReaderFbx;
00202 friend class KFbxReaderFbx6;
00203 friend class KFbxWriterFbx;
00204 friend class KFbxWriterFbx6;
00205
00206 friend class KFbxReaderFbx7;
00207 friend class KFbxWriterFbx7;
00208
00209 friend struct KFbxReaderFbx7Impl;
00210 friend struct KFbxWriterFbx7Impl;
00211
00212 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00213
00214 };
00215
00216 #include <fbxfilesdk_nsend.h>
00217
00218 #endif // #ifndef _FBXSDK_CHARACTER_POSE_H_
00219
00220