Open CASCADE Technology Reference Manual 8.0.0
Loading...
Searching...
No Matches
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 int theDefSamplerId)
 Main constructor.
 
 ~RWGltf_GltfMaterialMap () override
 Destructor.
 
void AddGlbImages (std::ostream &theBinFile, const XCAFPrs_Style &theStyle)
 Add material images into GLB stream.
 
void FlushGlbBufferViews (RWGltf_GltfOStreamWriter *theWriter, const int theBinDataBufferId, int &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, bool &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, bool &theIsStarted)
 Add material.
 
void AddTextures (RWGltf_GltfOStreamWriter *theWriter, const XCAFPrs_Style &theStyle, bool &theIsStarted)
 Add material textures.
 
int NbImages () const
 Return extent of images map.
 
int NbTextures () const
 Return extent of textures map.
 
- Public Member Functions inherited from RWMesh_MaterialMap
 RWMesh_MaterialMap (const TCollection_AsciiString &theFile)
 Main constructor.
 
 ~RWMesh_MaterialMap () override
 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 occ::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 ()=default
 Destructor must be virtual.
 
virtual const opencascade::handle< Standard_Type > & DynamicType () const
 Returns a type descriptor about this object.
 
bool IsInstance (const opencascade::handle< Standard_Type > &theType) const
 Returns a true value if this is an instance of Type.
 
bool IsInstance (const char *const theTypeName) const
 Returns a true value if this is an instance of TypeName.
 
bool 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.
 
bool IsKind (const char *const 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.
 
int GetRefCount () const noexcept
 Get the reference counter of this object.
 
void IncrementRefCounter () noexcept
 Increments the reference counter of this object. Uses relaxed memory ordering since incrementing only requires atomicity, not synchronization with other memory operations.
 
int DecrementRefCounter () noexcept
 Decrements the reference counter of this object; returns the decremented value. Uses release ordering for the decrement to ensure all writes to the object are visible before the count reaches zero. An acquire fence is added only when the count reaches zero, ensuring proper synchronization before deletion. This is more efficient than using acq_rel for every decrement.
 
virtual void Delete () const
 Memory deallocator for transient classes.
 

Static Public Member Functions

static const occ::handle< Image_Texture > & baseColorTexture (const occ::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 occ::handle< Image_Texture > &theTexture, bool &theIsStarted)
 Add texture image.
 
void addGlbImage (std::ostream &theBinFile, const occ::handle< Image_Texture > &theTexture)
 Add texture image into GLB stream.
 
void addTexture (RWGltf_GltfOStreamWriter *theWriter, const occ::handle< Image_Texture > &theTexture, bool &theIsStarted)
 Add texture.
 
TCollection_AsciiString AddMaterial (const XCAFPrs_Style &theStyle) override
 Add material.
 
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< occ::handle< Image_Texture >, RWGltf_GltfBufferViewmyImageMap
 
NCollection_Map< occ::handle< Image_Texture > > myTextureMap
 
int 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< occ::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
 
int myNbMaterials
 number of registered materials
 
bool myIsFailed
 flag indicating failure
 
bool 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 int theDefSamplerId )

Main constructor.

◆ ~RWGltf_GltfMaterialMap()

RWGltf_GltfMaterialMap::~RWGltf_GltfMaterialMap ( )
override

Destructor.

Member Function Documentation

◆ addGlbImage()

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

Add texture image into GLB stream.

Parameters
[in]

out] theBinFile output file stream

Parameters
[in]theTexturetexture image to add

◆ AddGlbImages()

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

Add material images into GLB stream.

Parameters
[in]

out] theBinFile output file stream

Parameters
[in]theStylematerial images to add

◆ addImage()

void RWGltf_GltfMaterialMap::addImage ( RWGltf_GltfOStreamWriter * theWriter,
const occ::handle< Image_Texture > & theTexture,
bool & theIsStarted )
protected

Add texture image.

◆ AddImages()

void RWGltf_GltfMaterialMap::AddImages ( RWGltf_GltfOStreamWriter * theWriter,
const XCAFPrs_Style & theStyle,
bool & theIsStarted )

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

◆ AddMaterial() [1/2]

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,
bool & theIsStarted )

Add material.

◆ addTexture()

void RWGltf_GltfMaterialMap::addTexture ( RWGltf_GltfOStreamWriter * theWriter,
const occ::handle< Image_Texture > & theTexture,
bool & theIsStarted )
protected

Add texture.

◆ AddTextures()

void RWGltf_GltfMaterialMap::AddTextures ( RWGltf_GltfOStreamWriter * theWriter,
const XCAFPrs_Style & theStyle,
bool & theIsStarted )

Add material textures.

◆ baseColorTexture()

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

Return base color texture.

◆ DefineMaterial()

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 int theBinDataBufferId,
int & 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()

int RWGltf_GltfMaterialMap::NbImages ( ) const
inline

Return extent of images map.

◆ NbTextures()

int RWGltf_GltfMaterialMap::NbTextures ( ) const
inline

Return extent of textures map.

Field Documentation

◆ myDefSamplerId

int RWGltf_GltfMaterialMap::myDefSamplerId
protected

◆ myImageMap

NCollection_IndexedDataMap<occ::handle<Image_Texture>, RWGltf_GltfBufferView> RWGltf_GltfMaterialMap::myImageMap
protected

◆ myTextureMap

NCollection_Map<occ::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: