Open CASCADE Technology 7.8.0
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
RWGltf_GltfMaterialMap Class Reference

Material manager for exporting into glTF format. More...

#include <RWGltf_GltfMaterialMap.hxx>

Inheritance diagram for RWGltf_GltfMaterialMap:
Inheritance graph
[legend]

Public Member Functions

 RWGltf_GltfMaterialMap (const TCollection_AsciiString &theFile, const Standard_Integer theDefSamplerId)
 Main constructor.
 
virtual ~RWGltf_GltfMaterialMap ()
 Destructor.
 
void AddGlbImages (std::ostream &theBinFile, const XCAFPrs_Style &theStyle)
 Add material images into GLB stream.
 
void FlushGlbBufferViews (RWGltf_GltfOStreamWriter *theWriter, const Standard_Integer theBinDataBufferId, Standard_Integer &theBuffViewId)
 Add bufferView's into RWGltf_GltfRootElement_BufferViews section with images collected by AddImagesToGlb().
 
void FlushGlbImages (RWGltf_GltfOStreamWriter *theWriter)
 Write RWGltf_GltfRootElement_Images section with images collected by AddImagesToGlb().
 
void AddImages (RWGltf_GltfOStreamWriter *theWriter, const XCAFPrs_Style &theStyle, Standard_Boolean &theIsStarted)
 Add material images in case of non-GLB file (an alternative to AddImagesToGlb() + FlushBufferViews() + FlushImagesGlb()).
 
void AddMaterial (RWGltf_GltfOStreamWriter *theWriter, const XCAFPrs_Style &theStyle, Standard_Boolean &theIsStarted)
 Add material.
 
void AddTextures (RWGltf_GltfOStreamWriter *theWriter, const XCAFPrs_Style &theStyle, Standard_Boolean &theIsStarted)
 Add material textures.
 
Standard_Integer NbImages () const
 Return extent of images map.
 
Standard_Integer NbTextures () const
 Return extent of textures map.
 
- Public Member Functions inherited from RWMesh_MaterialMap
 RWMesh_MaterialMap (const TCollection_AsciiString &theFile)
 Main constructor.
 
virtual ~RWMesh_MaterialMap ()
 Destructor.
 
const XCAFPrs_StyleDefaultStyle () const
 Return default material definition to be used for nodes with only color defined.
 
void SetDefaultStyle (const XCAFPrs_Style &theStyle)
 Set default material definition to be used for nodes with only color defined.
 
TCollection_AsciiString FindMaterial (const XCAFPrs_Style &theStyle) const
 Find already registered material.
 
virtual bool CreateTextureFolder ()
 Create texture folder "modelName/textures"; for example: MODEL: Path/ModelName.gltf IMAGES: Path/ModelName/textures/ Warning! Output folder is NOT cleared.
 
virtual bool CopyTexture (TCollection_AsciiString &theResTexture, const Handle< Image_Texture > &theTexture, const TCollection_AsciiString &theKey)
 Copy and rename texture file to the new location.
 
bool IsFailed () const
 Return failed flag.
 
- Public Member Functions inherited from Standard_Transient
 Standard_Transient ()
 Empty constructor.
 
 Standard_Transient (const Standard_Transient &)
 Copy constructor – does nothing.
 
Standard_Transientoperator= (const Standard_Transient &)
 Assignment operator, needed to avoid copying reference counter.
 
virtual ~Standard_Transient ()
 Destructor must be virtual.
 
virtual const opencascade::handle< Standard_Type > & DynamicType () const
 Returns a type descriptor about this object.
 
Standard_Boolean IsInstance (const opencascade::handle< Standard_Type > &theType) const
 Returns a true value if this is an instance of Type.
 
Standard_Boolean IsInstance (const Standard_CString theTypeName) const
 Returns a true value if this is an instance of TypeName.
 
Standard_Boolean IsKind (const opencascade::handle< Standard_Type > &theType) const
 Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
 
Standard_Boolean IsKind (const Standard_CString theTypeName) const
 Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
 
Standard_TransientThis () const
 Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero.
 
Standard_Integer GetRefCount () const noexcept
 Get the reference counter of this object.
 
void IncrementRefCounter () noexcept
 Increments the reference counter of this object.
 
Standard_Integer DecrementRefCounter () noexcept
 Decrements the reference counter of this object; returns the decremented value.
 
virtual void Delete () const
 Memory deallocator for transient classes.
 

Static Public Member Functions

static const Handle< Image_Texture > & baseColorTexture (const Handle< XCAFDoc_VisMaterial > &theMat)
 Return base color texture.
 
- Static Public Member Functions inherited from Standard_Transient
static constexpr const charget_type_name ()
 Returns a type descriptor about this object.
 
static const opencascade::handle< Standard_Type > & get_type_descriptor ()
 Returns type descriptor of Standard_Transient class.
 

Protected Member Functions

void addImage (RWGltf_GltfOStreamWriter *theWriter, const Handle< Image_Texture > &theTexture, Standard_Boolean &theIsStarted)
 Add texture image.
 
void addGlbImage (std::ostream &theBinFile, const Handle< Image_Texture > &theTexture)
 Add texture image into GLB stream.
 
void addTexture (RWGltf_GltfOStreamWriter *theWriter, const Handle< Image_Texture > &theTexture, Standard_Boolean &theIsStarted)
 Add texture.
 
virtual TCollection_AsciiString AddMaterial (const XCAFPrs_Style &theStyle) override
 Add material.
 
virtual void DefineMaterial (const XCAFPrs_Style &theStyle, const TCollection_AsciiString &theKey, const TCollection_AsciiString &theName) override
 Virtual method actually defining the material (e.g. export to the file).
 

Protected Attributes

RWGltf_GltfOStreamWritermyWriter
 
NCollection_IndexedDataMap< Handle< Image_Texture >, RWGltf_GltfBufferViewmyImageMap
 
NCollection_Map< Handle< Image_Texture > > myTextureMap
 
Standard_Integer myDefSamplerId
 
- Protected Attributes inherited from RWMesh_MaterialMap
TCollection_AsciiString myFolder
 output folder for glTF file
 
TCollection_AsciiString myTexFolder
 output folder for images (full path)
 
TCollection_AsciiString myTexFolderShort
 output folder for images (short path)
 
TCollection_AsciiString myFileName
 output glTF file path
 
TCollection_AsciiString myShortFileNameBase
 output glTF file name without extension
 
TCollection_AsciiString myKeyPrefix
 prefix for generated keys
 
NCollection_DoubleMap< XCAFPrs_Style, TCollection_AsciiStringmyStyles
 map of processed styles
 
NCollection_Map< Handle< Image_Texture > > myImageFailMap
 map of images failed to be copied
 
XCAFPrs_Style myDefaultStyle
 default material definition to be used for nodes with only color defined
 
Standard_Integer myNbMaterials
 number of registered materials
 
Standard_Boolean myIsFailed
 flag indicating failure
 
Standard_Boolean myMatNameAsKey
 flag indicating usage of material name as key
 

Additional Inherited Members

- Public Types inherited from Standard_Transient
typedef void base_type
 Returns a type descriptor about this object.
 
- Static Protected Member Functions inherited from RWMesh_MaterialMap
static bool copyFileTo (const TCollection_AsciiString &theFileSrc, const TCollection_AsciiString &theFileDst)
 Copy file to another place.
 

Detailed Description

Material manager for exporting into glTF format.

Constructor & Destructor Documentation

◆ RWGltf_GltfMaterialMap()

RWGltf_GltfMaterialMap::RWGltf_GltfMaterialMap ( const TCollection_AsciiString theFile,
const Standard_Integer  theDefSamplerId 
)

Main constructor.

◆ ~RWGltf_GltfMaterialMap()

virtual RWGltf_GltfMaterialMap::~RWGltf_GltfMaterialMap ( )
virtual

Destructor.

Member Function Documentation

◆ addGlbImage()

void RWGltf_GltfMaterialMap::addGlbImage ( std::ostream &  theBinFile,
const Handle< Image_Texture > &  theTexture 
)
protected

Add texture image into GLB stream.

Parameters
theBinFile[in] [out] output file stream
theTexture[in] texture image to add

◆ AddGlbImages()

void RWGltf_GltfMaterialMap::AddGlbImages ( std::ostream &  theBinFile,
const XCAFPrs_Style theStyle 
)

Add material images into GLB stream.

Parameters
theBinFile[in] [out] output file stream
theStyle[in] material images to add

◆ addImage()

void RWGltf_GltfMaterialMap::addImage ( RWGltf_GltfOStreamWriter theWriter,
const Handle< Image_Texture > &  theTexture,
Standard_Boolean theIsStarted 
)
protected

Add texture image.

◆ AddImages()

void RWGltf_GltfMaterialMap::AddImages ( RWGltf_GltfOStreamWriter theWriter,
const XCAFPrs_Style theStyle,
Standard_Boolean theIsStarted 
)

Add material images in case of non-GLB file (an alternative to AddImagesToGlb() + FlushBufferViews() + FlushImagesGlb()).

◆ AddMaterial() [1/2]

virtual TCollection_AsciiString RWGltf_GltfMaterialMap::AddMaterial ( const XCAFPrs_Style theStyle)
overrideprotectedvirtual

Add material.

Reimplemented from RWMesh_MaterialMap.

◆ AddMaterial() [2/2]

void RWGltf_GltfMaterialMap::AddMaterial ( RWGltf_GltfOStreamWriter theWriter,
const XCAFPrs_Style theStyle,
Standard_Boolean theIsStarted 
)

Add material.

◆ addTexture()

void RWGltf_GltfMaterialMap::addTexture ( RWGltf_GltfOStreamWriter theWriter,
const Handle< Image_Texture > &  theTexture,
Standard_Boolean theIsStarted 
)
protected

Add texture.

◆ AddTextures()

void RWGltf_GltfMaterialMap::AddTextures ( RWGltf_GltfOStreamWriter theWriter,
const XCAFPrs_Style theStyle,
Standard_Boolean theIsStarted 
)

Add material textures.

◆ baseColorTexture()

static const Handle< Image_Texture > & RWGltf_GltfMaterialMap::baseColorTexture ( const Handle< XCAFDoc_VisMaterial > &  theMat)
static

Return base color texture.

◆ DefineMaterial()

virtual void RWGltf_GltfMaterialMap::DefineMaterial ( const XCAFPrs_Style theStyle,
const TCollection_AsciiString theKey,
const TCollection_AsciiString theName 
)
overrideprotectedvirtual

Virtual method actually defining the material (e.g. export to the file).

Implements RWMesh_MaterialMap.

◆ FlushGlbBufferViews()

void RWGltf_GltfMaterialMap::FlushGlbBufferViews ( RWGltf_GltfOStreamWriter theWriter,
const Standard_Integer  theBinDataBufferId,
Standard_Integer theBuffViewId 
)

Add bufferView's into RWGltf_GltfRootElement_BufferViews section with images collected by AddImagesToGlb().

◆ FlushGlbImages()

void RWGltf_GltfMaterialMap::FlushGlbImages ( RWGltf_GltfOStreamWriter theWriter)

Write RWGltf_GltfRootElement_Images section with images collected by AddImagesToGlb().

◆ NbImages()

Standard_Integer RWGltf_GltfMaterialMap::NbImages ( ) const
inline

Return extent of images map.

◆ NbTextures()

Standard_Integer RWGltf_GltfMaterialMap::NbTextures ( ) const
inline

Return extent of textures map.

Field Documentation

◆ myDefSamplerId

Standard_Integer RWGltf_GltfMaterialMap::myDefSamplerId
protected

◆ myImageMap

NCollection_IndexedDataMap<Handle< Image_Texture >, RWGltf_GltfBufferView> RWGltf_GltfMaterialMap::myImageMap
protected

◆ myTextureMap

NCollection_Map<Handle< Image_Texture > > RWGltf_GltfMaterialMap::myTextureMap
protected

◆ myWriter

RWGltf_GltfOStreamWriter* RWGltf_GltfMaterialMap::myWriter
protected

The documentation for this class was generated from the following file: