Go to the
documentation of this file.
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 KFbxNodeAttribute::EAttributeType GetAttributeType() const;
00096
00097
00098
00099 static const int MAX_SUBDIV_LEVEL = 16;
00100
00101
00102 KArrayTemplate<KFbxMesh*> mSubDivLevel;
00103
00104
00105 KFbxMesh* GetBaseMesh() const;
00106
00107
00108 KFbxMesh* GetFinestMesh() const;
00109
00110
00111 bool SetFinestMesh(KFbxMesh* pMesh);
00112
00113
00114 bool SetBaseMesh(KFbxMesh* pMesh);
00115
00116
00117 KFbxMesh* GetMesh(int pLevel) const;
00118
00124 void SetSubdivLevelMesh(int pLevel, KFbxMesh* pMesh);
00125
00126 int GetLevelCount() const;
00127 void SetLevelCount(int pLevelCount);
00128
00129 int GetCurrentLevel() const;
00130 void SetCurrentLevel(int pCurrentLevel);
00131
00132 KFbxMesh* GetCurrentMesh() const;
00133
00134 KFbxSubdiv::SubdivScheme GetSubdivScheme() const;
00135
00136 KFbxSubdiv::TessPattern GetTessPattern() const;
00137
00138 void SetSubdivScheme(KFbxSubdiv::SubdivScheme pScheme);
00139
00140 void SetTessPattern(KFbxSubdiv::TessPattern pPattern);
00141
00142 KFbxSubdiv::SubdivDisplaySmoothness GetDisplaySmoothness() const;
00143
00144 void SetDisplaySmoothness(KFbxSubdiv::SubdivDisplaySmoothness pSmoothness);
00145
00146 private:
00147
00148
00149 KFbxMesh* mBaseMesh;
00150
00151
00152 KFbxMesh* mFinestMesh;
00153
00154
00155 int mCurrLevel;
00156
00157
00158 int mLevelCount;
00159
00160
00161 SubdivScheme mScheme;
00162
00163
00164 TessPattern mPattern;
00165
00166
00167 SubdivDisplaySmoothness mSmoothness;
00168
00169
00170
00171
00172 };
00173
00174 #include <fbxfilesdk/fbxfilesdk_nsend.h>
00175
00176 #endif // FBXFILESDK_KFBXPLUGINS_KFBXSUBDIV_H