Go to
the documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013 #ifndef _FBXSDK_UTILS_MATERIAL_CONVERTER_H_
00014 #define _FBXSDK_UTILS_MATERIAL_CONVERTER_H_
00015
00016 #include <fbxsdk/fbxsdk_def.h>
00017
00018 #include <fbxsdk/scene/geometry/fbxlayer.h>
00019
00020 #include <fbxsdk/fbxsdk_nsbegin.h>
00021
00022 class LayerConfig;
00023 class FbxMaterialConverter_Impl;
00024
00031 class FBXSDK_DLL FbxMaterialConverter
00032 {
00033 public:
00034 FbxMaterialConverter( FbxManager& mManager, FbxSurfaceMaterial* pDefaultMaterial = NULL);
00035 ~FbxMaterialConverter();
00036
00043 bool ConnectTexturesToMaterials( FbxScene& pScene );
00044
00051 bool ConnectTexturesToMaterials( FbxNode* pNode );
00052
00060 bool AssignTexturesToLayerElements( FbxScene& pScene );
00061
00062
00063
00064
00065 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00066 private:
00067 typedef FbxPair<FbxTexture*, FbxLayerElementTexture::EBlendMode> TexData;
00068
00069 FbxMaterialConverter& operator=(const FbxMaterialConverter&);
00070
00071 FbxManager& mManager;
00072 FbxSurfaceMaterial* mDefaultMaterial;
00073 FbxMaterialConverter_Impl* mImpl;
00074
00075
00076 void GetTextures( int pComponent, FbxLayer* pLayer, LayerConfig& pLayerConfig ) const;
00077 FbxSurfaceMaterial* GetMaterial( int pComponent, FbxLayer* pLayer, FbxNode* pNode, bool pLookOnNode );
00078 int GetMaterialOrder( int pComponent, FbxLayer* pLayer, FbxNode* pNode, bool pLookOnNode );
00079
00080 bool HasGoodMappingModes( FbxNode* pNode, FbxGeometry* pGeom ) const;
00081 void ConnectTextures( FbxSurfaceMaterial* pMat, FbxObject* pTexture, int pTextureType ) const;
00082 bool HasPerFaceMaterialMapping( FbxGeometry* pGeom ) const;
00083 void SetTextureUVSets( FbxGeometry* pGeom ) const;
00084 bool HasTextures( FbxGeometry* pGeom ) const;
00085
00086 void GetTextureList( FbxArray<TexData>& pTextures, FbxLayeredTexture* pTex ) const;
00087
00088 FbxLayer* FindLayerForTexture( FbxTexture* pTex,
00089 FbxLayerElement::EType pTexType,
00090 FbxLayerElementTexture::EBlendMode pTexBlendMode,
00091 FbxGeometry* pGeom,
00092 int lComponentIndex,
00093 int lStartIndex = 0 ) const;
00094
00095 void InitTextureElement( FbxLayerElementTexture* pTexElm, int pComponentCount,
00096 FbxLayerElementTexture::EBlendMode pMode) const;
00097
00098 bool AssignTexturesToLayerElements( FbxNode* pNode);
00099
00100 bool HasTextureLayerElements( FbxGeometry& pGeom ) const;
00101
00102 void ConvertToPerFaceMapping( FbxMesh* pGeom ) const;
00103 #endif
00104 };
00105
00106 #include <fbxsdk/fbxsdk_nsend.h>
00107
00108 #endif