fbxanimevalclassic.h

Go to the documentation of this file.
00001 /****************************************************************************************
00002  
00003    Copyright (C) 2012 Autodesk, Inc.
00004    All rights reserved.
00005  
00006    Use of this software is subject to the terms of the Autodesk license agreement
00007    provided at the time of installation or download, or which otherwise accompanies
00008    this software in either electronic or hard copy form.
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 public:
00038 //
00039 //  WARNING!
00040 //
00041 //    Anything beyond these lines may not be documented accurately and is 
00042 //     subject to change without notice.
00043 //
00045 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00046 protected:
00047     virtual void EvaluateNodeTransform(FbxNodeEvalState* pResult, FbxNode* pNode, FbxTime pTime, FbxAnimStack* pStack, FbxNode::EPivotSet pPivotSet, bool pApplyTarget);
00048     virtual void EvaluatePropertyValue(FbxAnimCurveNode* pResult, FbxProperty& pProperty, FbxTime pTime, FbxAnimStack* pStack);
00049 
00050 private:
00051     FbxAnimEvalClassic(FbxManager& pManager, char const* pName);
00052     virtual void Destruct(bool pRecursive, bool pDependents);
00053 
00054     enum EBlendType {eSimple, eRotation, eScaling};
00055 
00066     void ComputeTRSLocal(FbxNodeEvalState* pResult, FbxNode* pNode, FbxTime pTime, FbxAnimStack* pStack);
00067     
00081     void ComputeGlobalTransform(FbxNodeEvalState* pResult, FbxNode* pNode, FbxTime pTime, FbxAnimStack* pStack, FbxNode::EPivotSet pPivotSet, bool pApplyTarget);
00082     
00096     void ComputeLocalTransform(FbxNodeEvalState* pResult, FbxNode* pNode, FbxTime pTime, FbxAnimStack* pStack, FbxNode::EPivotSet pPivotSet, bool pApplyTarget);
00097     
00103     bool HasAnimationCurveNode(FbxProperty& pProperty, FbxAnimLayer* pAnimLayer);
00104 
00118     void ComputeTRSAnimationLayer(FbxNodeEvalState* pResult, FbxNode* pNode, FbxVector4& pLT, FbxVector4& pLR, FbxVector4& pLS, FbxTime pTime, FbxAnimLayer* pLayer, bool pBlend);
00119     
00130     void BlendPropertyEvalWithLayer(double* pResult, int pResultSize, FbxProperty& pProperty, FbxNodeEvalState* pEvalState, FbxTime pTime, FbxAnimLayer* pLayer, EBlendType pType);
00131     
00142     void BlendSimple(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode);
00143     
00156     void BlendRotation(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode, FbxAnimLayer::ERotationAccumulationMode pRotAccuMode, int pRotationOrder);
00157     
00169     void BlendScaling(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode, FbxAnimLayer::EScaleAccumulationMode pScaleAccuMode);
00170 
00171     double* mPropertyValues;
00172     int     mPropertySize;
00173 
00174     double* mCurveNodeEvalValues;
00175     int     mCurveNodeEvalSize;
00176 
00177 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS 
00178 };
00179 
00180 #include <fbxsdk/fbxsdk_nsend.h>
00181 
00182 #endif /* _FBXSDK_SCENE_ANIMATION_EVALUATOR_CLASSIC_H_ */