fbxanimevalclassic.h

Go to the documentation of this file.
00001 /****************************************************************************************
00002  
00003    Copyright (C) 2013 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     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 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
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 /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
00171 };
00172 
00173 #include <fbxsdk/fbxsdk_nsend.h>
00174 
00175 #endif /* _FBXSDK_SCENE_ANIMATION_EVALUATOR_CLASSIC_H_ */