00001
00004 #ifndef FBXFILESDK_KFBXPLUGINS_KFBXSYSTEMUNIT_H
00005 #define FBXFILESDK_KFBXPLUGINS_KFBXSYSTEMUNIT_H
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #include <fbxfilesdk/components/kbaselib/kaydaradef_h.h>
00043 #include <fbxfilesdk/components/kbaselib/kaydara.h>
00044
00045 #include <fbxfilesdk/components/kbaselib/klib/kstring.h>
00046 #include <fbxfilesdk/components/kbaselib/klib/karrayul.h>
00047
00048 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00049
00050 class KFbxGlobalSettings;
00051 class KFCurve;
00052 class KFbxXMatrix;
00053 class KFbxNode;
00054 class KFbxScene;
00055
00059 class KFBX_DLL KFbxSystemUnit
00060 {
00061 public:
00062
00065 struct KFbxUnitConversionOptions
00066 {
00067 bool mConvertLightIntensity;
00068 bool mConvertRrsNodes;
00069 };
00070
00076 KFbxSystemUnit(double pScaleFactor, double pMultiplier = 1.0);
00077 ~KFbxSystemUnit();
00078
00079
00080 static const KFbxSystemUnit mm;
00081 static const KFbxSystemUnit dm;
00082 static const KFbxSystemUnit cm;
00083 static const KFbxSystemUnit m;
00084 static const KFbxSystemUnit km;
00085 static const KFbxSystemUnit Inch;
00086 static const KFbxSystemUnit Foot;
00087 static const KFbxSystemUnit Mile;
00088 static const KFbxSystemUnit Yard;
00089
00090 #define KFbxSystemUnit_sPredefinedUnitCount 9
00091 static const KFbxSystemUnit *sPredefinedUnits;
00092
00093 static const KFbxUnitConversionOptions DefaultConversionOptions;
00094
00099 void ConvertScene( KFbxScene* pScene, const KFbxUnitConversionOptions& pOptions = DefaultConversionOptions ) const;
00100
00109 void ConvertChildren( KFbxNode* pRoot, const KFbxSystemUnit& pSrcUnit, const KFbxUnitConversionOptions& pOptions = DefaultConversionOptions ) const;
00110
00119 void ConvertScene( KFbxScene* pScene, KFbxNode* pFbxRoot, const KFbxUnitConversionOptions& pOptions = DefaultConversionOptions ) const;
00120
00126 double GetScaleFactor() const;
00127
00131 KString GetScaleFactorAsString(bool pAbbreviated = true) const;
00132
00135 KString GetScaleFactorAsString_Plurial() const;
00136
00139 double GetMultiplier() const;
00140
00141 bool operator ==(const KFbxSystemUnit& pOther) const;
00142 bool operator !=(const KFbxSystemUnit& pOther) const;
00143
00147 double GetConversionFactorTo( const KFbxSystemUnit& pTarget ) const;
00148
00152 double GetConversionFactorFrom( const KFbxSystemUnit& pSource ) const;
00153
00155
00156
00157
00158
00159
00160
00162
00163 protected:
00164 double mScaleFactor;
00165 double mMultiplier;
00166
00167 void ApplyMultiplier(KFbxNode* pRoot, bool pSubChildrenOnly) const;
00168 void ConvertSTProperties(KArrayTemplate<KFbxNode*>& pNodes, double pConversionFactor) const;
00169 void ConvertSProperty(KArrayTemplate<KFbxNode*>& pNodes, double pConversionFactor) const;
00170 void ConvertFCurve(KArrayTemplate<KFCurve*>& pFCurves, double pConversionFactor) const;
00171 double GetConversionFactor( double pTargetScaleFactor, double pSourceScaleFactor) const;
00172 void AdjustPivots(KFbxNode* pNode, double pConversionFactor, KFbxXMatrix& pOriginalGlobalM ) const;
00173 void AdjustLimits(KFbxNode* pNode, double pConversionFactor) const;
00174 void AdjustPoses(KFbxScene* pScene, double pConversionFactor) const;
00175
00176 void AdjustCluster(KFbxNode* pNode, double pConversionFactor) const;
00177 void AdjustLightIntensity(KFbxNode* pNode, const double pConversionFactor) const;
00178 void AdjustPhotometricLightProperties(KFbxNode* pNode, const double pConversionFactor) const;
00179 void AdjustCameraClipPlanes(KFbxNode* pNode, const double pConversionFactor) const;
00180
00181 void ConvertChildren( KFbxNode* pRoot, const KFbxSystemUnit& pSrcUnit, bool pSubChildrenOnly, const KFbxUnitConversionOptions& pOptions ) const;
00182
00183 friend class KFbxGlobalSettings;
00184 };
00185
00186 #include <fbxfilesdk/fbxfilesdk_nsend.h>
00187
00188 #endif // FBXFILESDK_KFBXPLUGINS_KFBXSYSTEMUNIT_H
00189