00001 #ifndef FBXFILESDK_KFBXPLUGINS_KFBXSUBDIV_H
00002 #define FBXFILESDK_KFBXPLUGINS_KFBXSUBDIV_H
00003
00004
00005
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 #include <fbxfilesdk/fbxfilesdk_def.h>
00039
00040 #include <fbxfilesdk/kfbxplugins/kfbxgeometry.h>
00041
00042 #include <fbxfilesdk/kfbxmath/kfbxvector4.h>
00043 #include <fbxfilesdk/kfbxmath/kfbxvector2.h>
00044
00045 #include <fbxfilesdk/components/kbaselib/klib/karrayul.h>
00046
00047 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00048
00049 class KFbxMesh;
00050 class KFbxSdkManager;
00051
00052 class KFBX_DLL KFbxSubdiv : public KFbxGeometry
00053 {
00054 KFBXOBJECT_DECLARE(KFbxSubdiv,KFbxGeometry);
00055
00056 public:
00057
00058 enum SubdivScheme
00059 {
00060 CATMULL_CLARK,
00061 DOO_SABIN,
00062 LOOP,
00063 LINEAR,
00064 };
00065
00066 enum TessPattern
00067 {
00068 ODD_FRACTIONAL,
00069 EVEN_FRACTIONAL,
00070 INTEGER,
00071 POWER2,
00072 };
00073
00074 enum SubdivDisplaySmoothness
00075 {
00076 HULL,
00077 ROUGH,
00078 MEDIUM,
00079 FINE,
00080 };
00081
00087 void InitSubdivLevel(int pLevelCount,
00088 SubdivScheme pScheme = CATMULL_CLARK,
00089 TessPattern pPattern = POWER2);
00090
00091 KFbxSubdiv(KFbxSdkManager& pManager, char const* pName);
00092
00093 virtual void Destruct(bool pRecursive, bool pDependents);
00094
00095 virtual KString GetTypeName() const;
00096 virtual KFbxNodeAttribute::EAttributeType GetAttributeType() const;
00097
00098
00099
00100 static const int MAX_SUBDIV_LEVEL = 16;
00101
00102
00103 KArrayTemplate<KFbxMesh*> mSubDivLevel;
00104
00105
00106 KFbxMesh* GetBaseMesh() const;
00107
00108
00109 KFbxMesh* GetFinestMesh() const;
00110
00111
00112 bool SetFinestMesh(KFbxMesh* pMesh);
00113
00114
00115 bool SetBaseMesh(KFbxMesh* pMesh);
00116
00117
00118 KFbxMesh* GetMesh(int pLevel) const;
00119
00125 void SetSubdivLevelMesh(int pLevel, KFbxMesh* pMesh);
00126
00127 int GetLevelCount() const;
00128 void SetLevelCount(int pLevelCount);
00129
00130 int GetCurrentLevel() const;
00131 void SetCurrentLevel(int pCurrentLevel);
00132
00133 KFbxMesh* GetCurrentMesh() const;
00134
00135 KFbxSubdiv::SubdivScheme GetSubdivScheme() const;
00136
00137 KFbxSubdiv::TessPattern GetTessPattern() const;
00138
00139 void SetSubdivScheme(KFbxSubdiv::SubdivScheme pScheme);
00140
00141 void SetTessPattern(KFbxSubdiv::TessPattern pPattern);
00142
00143 KFbxSubdiv::SubdivDisplaySmoothness GetDisplaySmoothness() const;
00144
00145 void SetDisplaySmoothness(KFbxSubdiv::SubdivDisplaySmoothness pSmoothness);
00146
00147 private:
00148
00149
00150 KFbxMesh* mBaseMesh;
00151
00152
00153 KFbxMesh* mFinestMesh;
00154
00155
00156 int mCurrLevel;
00157
00158
00159 int mLevelCount;
00160
00161
00162 SubdivScheme mScheme;
00163
00164
00165 TessPattern mPattern;
00166
00167
00168 SubdivDisplaySmoothness mSmoothness;
00169
00170
00171
00172
00173 };
00174
00175 #include <fbxfilesdk/fbxfilesdk_nsend.h>
00176
00177 #endif // FBXFILESDK_KFBXPLUGINS_KFBXSUBDIV_H