00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013 #ifndef _FBXSDK_SCENE_ANIMATION_EVALUATOR_CLASSIC_H_
00014 #define _FBXSDK_SCENE_ANIMATION_EVALUATOR_CLASSIC_H_
00015
00016 #include <fbxsdk/fbxsdk_def.h>
00017
00018 #include <fbxsdk/core/fbxobject.h>
00019 #include <fbxsdk/scene/animation/fbxanimevaluator.h>
00020 #include <fbxsdk/scene/animation/fbxanimlayer.h>
00021
00022 #include <fbxsdk/fbxsdk_nsbegin.h>
00023
00032 class FBXSDK_DLL FbxAnimEvalClassic : public FbxAnimEvaluator
00033 {
00034 FBXSDK_OBJECT_DECLARE(FbxAnimEvalClassic, FbxAnimEvaluator);
00035
00036 enum EBlendType {eSimple, eRotation, eScaling};
00037
00048 void ComputeTRSLocal(FbxNodeEvalState* pResult, FbxNode* pNode, FbxTime pTime, FbxAnimStack* pStack);
00049
00063 void ComputeGlobalTransform(FbxNodeEvalState* pResult, FbxNode* pNode, FbxTime pTime, FbxAnimStack* pStack, FbxNode::EPivotSet pPivotSet, bool pApplyTarget);
00064
00078 void ComputeLocalTransform(FbxNodeEvalState* pResult, FbxNode* pNode, FbxTime pTime, FbxAnimStack* pStack, FbxNode::EPivotSet pPivotSet, bool pApplyTarget);
00079
00085 bool HasAnimationCurveNode(FbxProperty& pProperty, FbxAnimLayer* pAnimLayer);
00086
00100 void ComputeTRSAnimationLayer(FbxNodeEvalState* pResult, FbxNode* pNode, FbxVector4& pLT, FbxVector4& pLR, FbxVector4& pLS, FbxTime pTime, FbxAnimLayer* pLayer, bool pBlend);
00101
00112 void BlendPropertyEvalWithLayer(double* pResult, int pResultSize, FbxProperty& pProperty, FbxNodeEvalState* pEvalState, FbxTime pTime, FbxAnimLayer* pLayer, EBlendType pType);
00113
00124 void BlendSimple(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode);
00125
00138 void BlendRotation(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode, FbxAnimLayer::ERotationAccumulationMode pRotAccuMode, int pRotationOrder);
00139
00151 void BlendScaling(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode, FbxAnimLayer::EScaleAccumulationMode pScaleAccuMode);
00152
00153
00154
00155
00156 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00157 protected:
00158 virtual void Construct(const FbxAnimEvalClassic* pFrom);
00159 virtual void Destruct(bool pRecursive);
00160
00161 virtual void EvaluateNodeTransform(FbxNodeEvalState* pResult, FbxNode* pNode, FbxTime pTime, FbxAnimStack* pStack, FbxNode::EPivotSet pPivotSet, bool pApplyTarget);
00162 virtual void EvaluatePropertyValue(FbxAnimCurveNode* pResult, FbxProperty& pProperty, FbxTime pTime, FbxAnimStack* pStack);
00163
00164 private:
00165 double* mPropertyValues;
00166 int mPropertySize;
00167
00168 double* mCurveNodeEvalValues;
00169 int mCurveNodeEvalSize;
00170 #endif
00171 };
00172
00173 #include <fbxsdk/fbxsdk_nsend.h>
00174
00175 #endif