Go to the
documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013 #ifndef _FBXSDK_UTILS_MANIPULATORS_H_
00014 #define _FBXSDK_UTILS_MANIPULATORS_H_
00015
00016 #include <fbxsdk/fbxsdk_def.h>
00017
00018 #include <fbxsdk/core/fbxobject.h>
00019 #include <fbxsdk/core/math/fbxvector2.h>
00020 #include <fbxsdk/core/math/fbxvector4.h>
00021 #include <fbxsdk/scene/geometry/fbxcamera.h>
00022
00023 #include <fbxsdk/fbxsdk_nsbegin.h>
00024
00025 class FbxCameraManipulationState;
00026
00030 class FBXSDK_DLL FbxCameraManipulator : public FbxObject
00031 {
00032 FBXSDK_OBJECT_DECLARE(FbxCameraManipulator, FbxObject);
00033
00034 public:
00036 enum EAction
00037 {
00038 eNone,
00039 eOrbit,
00040 eDolly,
00041 ePan,
00042 eFreePan
00043 };
00044
00049 void Begin(EAction pAction, float pX, float pY);
00050
00055 void Notify(float pX, float pY, float pZ=0);
00056
00058 void End();
00059
00063 void FrameAll(const FbxTime& pTime=FBXSDK_TIME_INFINITE, int pOnAnimLayer=0);
00064
00068 void FrameSelected(const FbxTime& pTime=FBXSDK_TIME_INFINITE, int pOnAnimLayer=0);
00069
00072 EAction GetCurrentAction() const;
00073
00075 FbxPropertyT<FbxReference> Camera;
00076
00079 FbxPropertyT<FbxFloat> ViewportWidth;
00080
00083 FbxPropertyT<FbxFloat> ViewportHeight;
00084
00086 FbxPropertyT<FbxBool> Restore;
00087
00088
00089
00090
00091 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00092 protected:
00093 virtual void Construct(const FbxCameraManipulator* pFrom);
00094 virtual void Destruct(bool pRecursive);
00095 virtual void ConstructProperties(bool pForceSet);
00096 virtual bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty);
00097
00098 private:
00099 void Reset();
00100 FbxCamera* GetCamera() const;
00101 FbxNode* GetCameraNode() const;
00102 FbxNode* GetCameraLookAtNode() const;
00103 FbxVector4 GetCameraPosition() const;
00104 void SetCameraPosition(const FbxVector4& pPosition);
00105 FbxVector4 GetCameraRotation() const;
00106 void SetCameraRotation(const FbxVector4& pRotation);
00107 FbxVector4 GetCameraLookAtPosition() const;
00108 void SetCameraLookAtPosition(const FbxVector4& pPosition);
00109 void StoreCameraState();
00110
00111 double ComputeRotationAxis(FbxVector4& pFront, FbxVector4& pUp, FbxVector4& pRight) const;
00112 void ComputeRotationMatrix(FbxAMatrix& pRM);
00113 void UpdateCameraRotation();
00114
00115 void MoveCameraToFitBBoxInFrustum(int pOnAnimLayer, const FbxTime& pTime, const FbxVector4& pBBoxMin, const FbxVector4& pBBoxMax);
00116 bool Frame(int pOnAnimLayer, const FbxTime& pTime, bool pSelected);
00117 void Evaluate(double& v, const FbxTime& pTime, FbxProperty& p, FbxAnimLayer* pAnimLayer);
00118 FbxVector4 RejectionOfOn(const FbxVector4& a, const FbxVector4& b);
00119
00120 EAction mCurrentAction;
00121 float mBeginX, mBeginY;
00122 FbxVector4 mBeginPosition, mBeginLookAtPosition;
00123 FbxVector4 mAxisX, mAxisY, mAxisZ;
00124 FbxVector4 mInitialPosition, mInitialRotation, mInitialLookAt;
00125 #endif
00126 };
00127
00128 #include <fbxsdk/fbxsdk_nsend.h>
00129
00130 #endif