kfbxcharacterpose.h
Go to the documentation of this file.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);
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 virtual KFbxObject::ENameSpace GetNameSpace() const;
00179 virtual KObject* GetFbxObject_internal();
00180 virtual KObject const* GetFbxObject_internal() const;
00181
00182
00183 virtual KFbxObject* Clone(KFbxObject::ECloneType pCloneType) const;
00184
00185 protected:
00186 KFbxCharacterPose& operator=(KFbxCharacterPose const& pCharacterPose);
00187
00188 private:
00189 static char const* GetNamePrefix() { return POSE_PREFIX; }
00190
00191 KFbxCharacterPose(KFbxSdkManager& pManager, char const* pName);
00192 ~KFbxCharacterPose();
00193
00194 virtual void Destruct(bool pRecursive, bool pDependents);
00195
00196 void CopyNode(KFbxNode* pSrcNode, KFbxNode* pDstNode);
00197 void CopyCharacter(KFbxCharacter* pSrcCharacter, KFbxCharacter* pDstCharacter, KFbxNode* pDstRootNode);
00198
00199 KFbxCharacterPose_internal* mPH;
00200
00201 KFbxScene* mScene;
00202
00203 friend class KFbxCharacterPose_internal;
00204 friend class KFbxScene;
00205 friend class KFbxReaderFbx;
00206 friend class KFbxReaderFbx6;
00207 friend class KFbxWriterFbx;
00208 friend class KFbxWriterFbx6;
00209
00210 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00211
00212 };
00213
00214 #include <fbxfilesdk_nsend.h>
00215
00216 #endif // #ifndef _FBXSDK_CHARACTER_POSE_H_
00217
00218