fbxsdk/scene/animation/fbxanimevaluator.h Source File
 
 
 
fbxsdk/scene/animation/fbxanimevaluator.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_H_
00014 #define _FBXSDK_SCENE_ANIMATION_EVALUATOR_H_
00015 
00016 #include <fbxsdk/fbxsdk_def.h>
00017 
00018 #include <fbxsdk/core/fbxobject.h>
00019 #include <fbxsdk/scene/animation/fbxanimevalstate.h>
00020 #include <fbxsdk/scene/animation/fbxanimstack.h>
00021 
00022 #include <fbxsdk/fbxsdk_nsbegin.h>
00023 
00024 struct FbxAnimEvaluator_internal;
00025 
00070 class FBXSDK_DLL FbxAnimEvaluator : public FbxObject
00071 {
00072     FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxAnimEvaluator, FbxObject);
00073 
00074 public:
00082     void SetContext(FbxAnimStack* pAnimStack);
00083 
00089         FbxAnimStack* GetContext();
00090 
00099         FbxAMatrix& GetNodeGlobalTransform(FbxNode* pNode, FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false);
00100 
00112     FbxAMatrix& GetNodeLocalTransform(FbxNode* pNode, FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false);
00113 
00123         FbxVector4& GetNodeLocalTranslation(FbxNode* pNode, FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false);
00124 
00134         FbxVector4& GetNodeLocalRotation(FbxNode* pNode, FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false);
00135 
00145         FbxVector4& GetNodeLocalScaling(FbxNode* pNode, FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false);
00146 
00153     FbxAnimCurveNode& GetPropertyValue(FbxProperty& pProperty, FbxTime pTime, bool pForceEval=false);
00154 
00160     FbxTime ValidateTime(FbxTime pTime);
00161 
00175         FbxAMatrix& GetNodeGlobalTransformFast(FbxNode* pNode, int& pDirectIndex, FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false);
00176 
00194         FbxAMatrix& GetNodeLocalTransformFast(FbxNode* pNode, int& pDirectIndex, FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false);
00195 
00209         FbxVector4& GetNodeLocalTranslationFast(FbxNode* pNode, int& pDirectIndex, FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false);
00210   
00225         FbxVector4& GetNodeLocalRotationFast(FbxNode* pNode, int& pDirectIndex, FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false);
00226   
00241         FbxVector4& GetNodeLocalScalingFast(FbxNode* pNode, int& pDirectIndex, FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false);
00242 
00253     FbxAnimCurveNode& GetPropertyValueFast(FbxProperty& pProperty, int& pDirectIndex, FbxTime pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false);
00254 
00258         void ResetEvaluationState();
00259 
00263         void InvalidateNode(FbxNode* pNode);
00264 
00268         void InvalidateProperty(FbxProperty& pProperty);
00269 
00284         void ComputeLocalTRSFromGlobal(FbxVector4& pRetLT, FbxVector4& pRetLR, FbxVector4& pRetLS, FbxNode* pNode, int& pDirectIndex, FbxAMatrix& pGX, FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false);
00285 
00286 /*****************************************************************************************************************************
00287 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
00288 *****************************************************************************************************************************/
00289 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00290 protected:
00291         virtual void Construct(const FbxAnimEvaluator* pFrom);
00292     virtual void Destruct(bool pRecursive);
00293 
00294     virtual void EvaluateNodeTransform(FbxNodeEvalState* pResult, FbxNode* pNode, FbxTime pTime, FbxAnimStack* pStack, FbxNode::EPivotSet pPivotSet, bool pApplyTarget) = 0;
00295     virtual void EvaluatePropertyValue(FbxAnimCurveNode* pResult, FbxProperty& pProperty, FbxTime pTime, FbxAnimStack* pStack) = 0;
00296 
00297         FbxAnimEvalState*       GetEvalState(FbxTime pTime);
00298         FbxNodeEvalState*       GetNodeEvalState(FbxNode* pNode, int& pDirectIndex, FbxTime pTime, FbxNode::EPivotSet pPivotSet, bool pApplyTarget, bool pForceEval);
00299 
00300 private:
00301         FbxAnimEvalState*       mEvalState;
00302         FbxAnimStack*           mAnimStack;
00303 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
00304 };
00305 
00306 #include <fbxsdk/fbxsdk_nsend.h>
00307 
00308 #endif /* _FBXSDK_SCENE_ANIMATION_EVALUATOR_H_ */