Go to
the documentation of this file.
00001
00004 #ifndef FBXFILESDK_KFBXPLUGINS_KFBXMATERIALCONVERTER_H
00005 #define FBXFILESDK_KFBXPLUGINS_KFBXMATERIALCONVERTER_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 #include <fbxfilesdk/fbxfilesdk_def.h>
00042
00043 #include <fbxfilesdk/kfbxplugins/kfbxlayer.h>
00044 #include <fbxfilesdk/components/kbaselib/klib/kpair.h>
00045
00046 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00047
00048 class KFbxObject;
00049 class KFbxSdkManager;
00050 class KFbxScene;
00051 class KFbxGeometry;
00052 class KFbxLayer;
00053 class KFbxSurfaceMaterial;
00054 class KFbxLayeredTexture;
00055 class KFbxTexture;
00056
00057 class LayerConfig;
00058
00059 class KFbxMaterialConverterImpl;
00060
00067 class KFBX_DLL KFbxMaterialConverter
00068 {
00069 public:
00070 KFbxMaterialConverter( KFbxSdkManager& mManager, KFbxSurfaceMaterial* pDefaultMaterial = NULL);
00071 ~KFbxMaterialConverter();
00072
00079 bool ConnectTexturesToMaterials( KFbxScene& pScene );
00080
00087 bool ConnectTexturesToMaterials( KFbxNode* pNode );
00088
00096 bool AssignTexturesToLayerElements( KFbxScene& pScene );
00097
00099
00100
00101
00102
00103
00104
00106
00107 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00108
00109 private:
00110
00111 typedef KPair<KFbxTexture*, KFbxLayerElementTexture::EBlendMode> TexData;
00112
00113 KFbxSdkManager& mManager;
00114 KFbxSurfaceMaterial* mDefaultMaterial;
00115 KFbxMaterialConverterImpl* mImpl;
00116
00117
00118 void GetTextures( int pComponent, KFbxLayer* pLayer, LayerConfig& pLayerConfig ) const;
00119 KFbxSurfaceMaterial* GetMaterial( int pComponent, KFbxLayer* pLayer, KFbxNode* pNode, bool pLookOnNode );
00120 int GetMaterialOrder( int pComponent, KFbxLayer* pLayer, KFbxNode* pNode, bool pLookOnNode );
00121
00122 bool HasGoodMappingModes( KFbxNode* pNode, KFbxGeometry* pGeom ) const;
00123 void ConnectTextures( KFbxSurfaceMaterial* pMat, KFbxObject* pTexture, int pTextureType ) const;
00124 bool HasPerFaceMaterialMapping( KFbxGeometry* pGeom ) const;
00125 void SetTextureUVSets( KFbxGeometry* pGeom ) const;
00126 bool HasTextures( KFbxGeometry* pGeom ) const;
00127
00128 void GetTextureList( KArrayTemplate<TexData>& pTextures, KFbxLayeredTexture* pTex ) const;
00129
00130 KFbxLayer* FindLayerForTexture( KFbxTexture* pTex,
00131 KFbxLayerElement::ELayerElementType pTexType,
00132 KFbxLayerElementTexture::EBlendMode pTexBlendMode,
00133 KFbxGeometry* pGeom,
00134 int lComponentIndex,
00135 int lStartIndex = 0 ) const;
00136
00137 void InitTextureElement( KFbxLayerElementTexture* pTexElm, int pComponentCount,
00138 KFbxLayerElementTexture::EBlendMode pMode) const;
00139
00140 bool AssignTexturesToLayerElements( KFbxNode* pNode);
00141
00142 bool HasTextureLayerElements( KFbxGeometry& pGeom ) const;
00143
00144 void ConvertToPerFaceMapping( KFbxMesh* pGeom ) const;
00145
00146 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00147 };
00148
00149 #include <fbxfilesdk/fbxfilesdk_nsend.h>
00150
00151 #endif // FBXFILESDK_KFBXPLUGINS_KFBXMATERIALCONVERTER_H
00152