Go to the
documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013 #ifndef _FBXSDK_CORE_SYSTEM_UNIT_H_
00014 #define _FBXSDK_CORE_SYSTEM_UNIT_H_
00015
00016 #include <fbxsdk/fbxsdk_def.h>
00017
00018 #include <fbxsdk/core/base/fbxstring.h>
00019 #include <fbxsdk/core/base/fbxarray.h>
00020
00021 #include <fbxsdk/fbxsdk_nsbegin.h>
00022
00023 class FbxAMatrix;
00024 class FbxScene;
00025 class FbxNode;
00026 class FbxAnimCurveNode;
00027
00031 class FBXSDK_DLL FbxSystemUnit
00032 {
00033 public:
00034
00047 struct ConversionOptions
00048 {
00050 bool mConvertRrsNodes;
00051
00053 bool mConvertLimits;
00054
00056 bool mConvertClusters;
00057
00059 bool mConvertLightIntensity;
00060
00062 bool mConvertPhotometricLProperties;
00063
00065 bool mConvertCameraClipPlanes;
00066 };
00067
00068 FbxSystemUnit();
00069
00075 FbxSystemUnit(double pScaleFactor, double pMultiplier = 1.0);
00076
00079 ~FbxSystemUnit();
00080
00082 static const FbxSystemUnit mm;
00083
00085 static const FbxSystemUnit dm;
00086
00088 static const FbxSystemUnit cm;
00089
00091 static const FbxSystemUnit m;
00092
00094 static const FbxSystemUnit km;
00095
00097 static const FbxSystemUnit Inch;
00098
00100 static const FbxSystemUnit Foot;
00101
00103 static const FbxSystemUnit Mile;
00104
00106 static const FbxSystemUnit Yard;
00107
00108 #define FBXSDK_SYSTEM_UNIT_PREDEF_COUNT 9
00109
00111 static const FbxSystemUnit *sPredefinedUnits;
00112
00114 static const ConversionOptions DefaultConversionOptions;
00115
00120 void ConvertScene( FbxScene* pScene, const ConversionOptions& pOptions = DefaultConversionOptions ) const;
00121
00130 void ConvertChildren( FbxNode* pRoot, const FbxSystemUnit& pSrcUnit, const ConversionOptions& pOptions = DefaultConversionOptions ) const;
00131
00139 void ConvertScene( FbxScene* pScene, FbxNode* pFbxRoot, const ConversionOptions& pOptions = DefaultConversionOptions ) const;
00140
00146 double GetScaleFactor() const;
00147
00152 FbxString GetScaleFactorAsString(bool pAbbreviated = true) const;
00153
00158 FbxString GetScaleFactorAsString_Plurial() const;
00159
00162 double GetMultiplier() const;
00163
00168 bool operator==(const FbxSystemUnit& pOther) const;
00169
00174 bool operator!=(const FbxSystemUnit& pOther) const;
00175
00179 FbxSystemUnit& operator=(const FbxSystemUnit& pSystemUnit);
00180
00184 double GetConversionFactorTo( const FbxSystemUnit& pTarget ) const;
00185
00189 double GetConversionFactorFrom( const FbxSystemUnit& pSource ) const;
00190
00191
00192
00193
00194 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00195 private:
00196 void ApplyMultiplier(FbxNode* pRoot, bool pSubChildrenOnly) const;
00197 void ConvertSTProperties(FbxArray<FbxNode*>& pNodes, double pConversionFactor) const;
00198 void ConvertSProperty(FbxArray<FbxNode*>& pNodes, double pConversionFactor) const;
00199 void ConvertAnimCurveNode(FbxArray<FbxAnimCurveNode*>& pFCurves, double pConversionFactor) const;
00200 double GetConversionFactor(double pTargetScaleFactor, double pSourceScaleFactor) const;
00201 void AdjustPivots(FbxNode* pNode, double pConversionFactor, FbxAMatrix& pOriginalGlobalM ) const;
00202 void AdjustLimits(FbxNode* pNode, double pConversionFactor) const;
00203 void AdjustPoses(FbxScene* pScene, double pConversionFactor) const;
00204 void AdjustCluster(FbxNode* pNode, double pConversionFactor) const;
00205 void AdjustLightIntensity(FbxNode* pNode, const double pConversionFactor) const;
00206 void AdjustPhotometricLightProperties(FbxNode* pNode, const double pConversionFactor) const;
00207 void AdjustCameraClipPlanes(FbxNode* pNode, const double pConversionFactor) const;
00208 void ConvertChildren(FbxNode* pRoot, const FbxSystemUnit& pSrcUnit, bool pSubChildrenOnly, const ConversionOptions& pOptions) const;
00209
00210 double mScaleFactor;
00211 double mMultiplier;
00212
00213 friend class FbxGlobalSettings;
00214 #endif
00215 };
00216
00217 #include <fbxsdk/fbxsdk_nsend.h>
00218
00219 #endif