Open CASCADE Technology 7.8.0
Data Structures | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
RWGltf_CafWriter Class Reference

glTF writer context from XCAF document. More...

#include <RWGltf_CafWriter.hxx>

Inheritance diagram for RWGltf_CafWriter:
Inheritance graph
[legend]

Data Structures

struct  Hasher
 
struct  Mesh
 Mesh. More...
 
struct  RWGltf_StyledShape
 Shape + Style pair. More...
 

Public Member Functions

 RWGltf_CafWriter (const TCollection_AsciiString &theFile, Standard_Boolean theIsBinary)
 Main constructor.
 
virtual ~RWGltf_CafWriter ()
 Destructor.
 
const RWMesh_CoordinateSystemConverterCoordinateSystemConverter () const
 Return transformation from OCCT to glTF coordinate system.
 
RWMesh_CoordinateSystemConverterChangeCoordinateSystemConverter ()
 Return transformation from OCCT to glTF coordinate system.
 
void SetCoordinateSystemConverter (const RWMesh_CoordinateSystemConverter &theConverter)
 Set transformation from OCCT to glTF coordinate system.
 
bool IsBinary () const
 Return flag to write into binary glTF format (.glb), specified within class constructor.
 
RWGltf_WriterTrsfFormat TransformationFormat () const
 Return preferred transformation format for writing into glTF file; RWGltf_WriterTrsfFormat_Compact by default.
 
void SetTransformationFormat (RWGltf_WriterTrsfFormat theFormat)
 Set preferred transformation format for writing into glTF file.
 
RWMesh_NameFormat NodeNameFormat () const
 Return name format for exporting Nodes; RWMesh_NameFormat_InstanceOrProduct by default.
 
void SetNodeNameFormat (RWMesh_NameFormat theFormat)
 Set name format for exporting Nodes.
 
RWMesh_NameFormat MeshNameFormat () const
 Return name format for exporting Meshes; RWMesh_NameFormat_Product by default.
 
void SetMeshNameFormat (RWMesh_NameFormat theFormat)
 Set name format for exporting Meshes.
 
bool IsForcedUVExport () const
 Return TRUE to export UV coordinates even if there are no mapped texture; FALSE by default.
 
void SetForcedUVExport (bool theToForce)
 Set flag to export UV coordinates even if there are no mapped texture; FALSE by default.
 
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.
 
Standard_Boolean ToEmbedTexturesInGlb ()
 Return flag to write image textures into GLB file (binary gltf export); TRUE by default. When set to FALSE, texture images will be written as separate files. Has no effect on writing into non-binary format.
 
void SetToEmbedTexturesInGlb (Standard_Boolean theToEmbedTexturesInGlb)
 Set flag to write image textures into GLB file (binary gltf export).
 
bool ToMergeFaces () const
 Return flag to merge faces within a single part; FALSE by default.
 
void SetMergeFaces (bool theToMerge)
 Set flag to merge faces within a single part. May reduce JSON size thanks to smaller number of primitive arrays.
 
bool ToSplitIndices16 () const
 Return flag to prefer keeping 16-bit indexes while merging face; FALSE by default.
 
void SetSplitIndices16 (bool theToSplit)
 Set flag to prefer keeping 16-bit indexes while merging face. Has effect only with ToMergeFaces() option turned ON. May reduce binary data size thanks to smaller triangle indexes.
 
bool ToParallel () const
 Return TRUE if multithreaded optimizations are allowed; FALSE by default.
 
void SetParallel (bool theToParallel)
 Setup multithreaded execution.
 
const RWGltf_DracoParametersCompressionParameters () const
 Return Draco parameters.
 
void SetCompressionParameters (const RWGltf_DracoParameters &theDracoParameters)
 Set Draco parameters.
 
virtual bool Perform (const Handle< TDocStd_Document > &theDocument, const TDF_LabelSequence &theRootLabels, const TColStd_MapOfAsciiString *theLabelFilter, const TColStd_IndexedDataMapOfStringString &theFileInfo, const Message_ProgressRange &theProgress)
 Write glTF file and associated binary file. Triangulation data should be precomputed within shapes!
 
virtual bool Perform (const Handle< TDocStd_Document > &theDocument, const TColStd_IndexedDataMapOfStringString &theFileInfo, const Message_ProgressRange &theProgress)
 Write glTF file and associated binary file. Triangulation data should be precomputed within shapes!
 
- 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.
 

Protected Types

typedef NCollection_IndexedDataMap< RWGltf_StyledShape, Handle< RWGltf_GltfFaceList >, HasherShapeToGltfFaceMap
 

Protected Member Functions

virtual bool writeBinData (const Handle< TDocStd_Document > &theDocument, const TDF_LabelSequence &theRootLabels, const TColStd_MapOfAsciiString *theLabelFilter, const Message_ProgressRange &theProgress)
 Write binary data file with triangulation data. Triangulation data should be precomputed within shapes!
 
virtual bool writeJson (const Handle< TDocStd_Document > &theDocument, const TDF_LabelSequence &theRootLabels, const TColStd_MapOfAsciiString *theLabelFilter, const TColStd_IndexedDataMapOfStringString &theFileInfo, const Message_ProgressRange &theProgress)
 Write JSON file with glTF structure (should be called after writeBinData()).
 
virtual Standard_Boolean toSkipFaceMesh (const RWMesh_FaceIterator &theFaceIter)
 Return TRUE if face mesh should be skipped (e.g. because it is invalid or empty).
 
virtual TCollection_AsciiString formatName (RWMesh_NameFormat theFormat, const TDF_Label &theLabel, const TDF_Label &theRefLabel) const
 Generate name for specified labels.
 
virtual void saveNodes (RWGltf_GltfFace &theGltfFace, std::ostream &theBinFile, const RWMesh_FaceIterator &theFaceIter, Standard_Integer &theAccessorNb, const std::shared_ptr< RWGltf_CafWriter::Mesh > &theMesh) const
 Write mesh nodes into binary file.
 
virtual void saveNormals (RWGltf_GltfFace &theGltfFace, std::ostream &theBinFile, RWMesh_FaceIterator &theFaceIter, Standard_Integer &theAccessorNb, const std::shared_ptr< RWGltf_CafWriter::Mesh > &theMesh) const
 Write mesh normals into binary file.
 
virtual void saveTextCoords (RWGltf_GltfFace &theGltfFace, std::ostream &theBinFile, const RWMesh_FaceIterator &theFaceIter, Standard_Integer &theAccessorNb, const std::shared_ptr< RWGltf_CafWriter::Mesh > &theMesh) const
 Write mesh texture UV coordinates into binary file.
 
virtual void saveIndices (RWGltf_GltfFace &theGltfFace, std::ostream &theBinFile, const RWMesh_FaceIterator &theFaceIter, Standard_Integer &theAccessorNb, const std::shared_ptr< RWGltf_CafWriter::Mesh > &theMesh)
 Write mesh indexes into binary file.
 
virtual void writePositions (const RWGltf_GltfFace &theGltfFace)
 Write bufferView for vertex positions within RWGltf_GltfRootElement_Accessors section.
 
virtual void writeNormals (const RWGltf_GltfFace &theGltfFace)
 Write bufferView for vertex normals within RWGltf_GltfRootElement_Accessors section.
 
virtual void writeTextCoords (const RWGltf_GltfFace &theGltfFace)
 Write bufferView for vertex texture coordinates within RWGltf_GltfRootElement_Accessors section.
 
virtual void writeIndices (const RWGltf_GltfFace &theGltfFace)
 Write bufferView for triangle indexes within RWGltf_GltfRootElement_Accessors section.
 
virtual void writeAccessors (const RWGltf_GltfSceneNodeMap &theSceneNodeMap)
 Write RWGltf_GltfRootElement_Accessors section.
 
virtual void writeAnimations ()
 Write RWGltf_GltfRootElement_Animations section (reserved).
 
virtual void writeAsset (const TColStd_IndexedDataMapOfStringString &theFileInfo)
 Write RWGltf_GltfRootElement_Asset section.
 
virtual void writeBufferViews (const Standard_Integer theBinDataBufferId)
 Write RWGltf_GltfRootElement_BufferViews section.
 
virtual void writeBuffers ()
 Write RWGltf_GltfRootElement_Buffers section.
 
virtual void writeExtensions ()
 Write RWGltf_GltfRootElement_ExtensionsUsed/RWGltf_GltfRootElement_ExtensionsRequired sections (reserved).
 
virtual void writeImages (const RWGltf_GltfSceneNodeMap &theSceneNodeMap)
 Write RWGltf_GltfRootElement_Images section.
 
virtual void writeMaterials (const RWGltf_GltfSceneNodeMap &theSceneNodeMap)
 Write RWGltf_GltfRootElement_Materials section.
 
virtual void writeMeshes (const RWGltf_GltfSceneNodeMap &theSceneNodeMap)
 Write RWGltf_GltfRootElement_Meshes section.
 
virtual void writePrimArray (const RWGltf_GltfFace &theGltfFace, const TCollection_AsciiString &theName, const int theDracoBufInd, bool &theToStartPrims)
 Write a primitive array to RWGltf_GltfRootElement_Meshes section.
 
virtual void writeNodes (const Handle< TDocStd_Document > &theDocument, const TDF_LabelSequence &theRootLabels, const TColStd_MapOfAsciiString *theLabelFilter, const RWGltf_GltfSceneNodeMap &theSceneNodeMap, NCollection_Sequence< Standard_Integer > &theSceneRootNodeInds)
 Write RWGltf_GltfRootElement_Nodes section.
 
virtual void writeSamplers ()
 Write RWGltf_GltfRootElement_Samplers section.
 
virtual void writeScene (const Standard_Integer theDefSceneId)
 Write RWGltf_GltfRootElement_Scene section.
 
virtual void writeScenes (const NCollection_Sequence< Standard_Integer > &theSceneRootNodeInds)
 Write RWGltf_GltfRootElement_Scenes section.
 
virtual void writeSkins ()
 Write RWGltf_GltfRootElement_Skins section (reserved).
 
virtual void writeTextures (const RWGltf_GltfSceneNodeMap &theSceneNodeMap)
 Write RWGltf_GltfRootElement_Textures section.
 

Protected Attributes

TCollection_AsciiString myFile
 output glTF file
 
TCollection_AsciiString myBinFileNameFull
 output file with binary data (full path)
 
TCollection_AsciiString myBinFileNameShort
 output file with binary data (short path)
 
RWGltf_WriterTrsfFormat myTrsfFormat
 transformation format to write into glTF file
 
RWMesh_NameFormat myNodeNameFormat
 name format for exporting Nodes
 
RWMesh_NameFormat myMeshNameFormat
 name format for exporting Meshes
 
Standard_Boolean myIsBinary
 flag to write into binary glTF format (.glb)
 
Standard_Boolean myIsForcedUVExport
 export UV coordinates even if there are no mapped texture
 
Standard_Boolean myToEmbedTexturesInGlb
 flag to write image textures into GLB file
 
Standard_Boolean myToMergeFaces
 flag to merge faces within a single part
 
Standard_Boolean myToSplitIndices16
 flag to prefer keeping 16-bit indexes while merging face
 
RWMesh_CoordinateSystemConverter myCSTrsf
 transformation from OCCT to glTF coordinate system
 
XCAFPrs_Style myDefaultStyle
 default material definition to be used for nodes with only color defined
 
std::shared_ptr< RWGltf_GltfOStreamWritermyWriter
 JSON writer.
 
Handle< RWGltf_GltfMaterialMapmyMaterialMap
 map of defined materials
 
RWGltf_GltfBufferView myBuffViewPos
 current buffer view with nodes positions
 
RWGltf_GltfBufferView myBuffViewNorm
 current buffer view with nodes normals
 
RWGltf_GltfBufferView myBuffViewTextCoord
 current buffer view with nodes UV coordinates
 
RWGltf_GltfBufferView myBuffViewInd
 current buffer view with triangulation indexes
 
ShapeToGltfFaceMap myBinDataMap
 map for TopoDS_Face to glTF face (merging duplicates)
 
int64_t myBinDataLen64
 length of binary file
 
std::vector< RWGltf_GltfBufferViewmyBuffViewsDraco
 vector of buffers view with compression data
 
Standard_Boolean myToParallel
 flag to use multithreading; FALSE by default
 
RWGltf_DracoParameters myDracoParameters
 Draco parameters.
 

Additional Inherited Members

- Public Types inherited from Standard_Transient
typedef void base_type
 Returns a type descriptor about this object.
 
- 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.
 

Detailed Description

glTF writer context from XCAF document.

Member Typedef Documentation

◆ ShapeToGltfFaceMap

Constructor & Destructor Documentation

◆ RWGltf_CafWriter()

RWGltf_CafWriter::RWGltf_CafWriter ( const TCollection_AsciiString theFile,
Standard_Boolean  theIsBinary 
)

Main constructor.

Parameters
theFile[in] path to output glTF file
theIsBinary[in] flag to write into binary glTF format (.glb)

◆ ~RWGltf_CafWriter()

virtual RWGltf_CafWriter::~RWGltf_CafWriter ( )
virtual

Destructor.

Member Function Documentation

◆ ChangeCoordinateSystemConverter()

RWMesh_CoordinateSystemConverter & RWGltf_CafWriter::ChangeCoordinateSystemConverter ( )
inline

Return transformation from OCCT to glTF coordinate system.

◆ CompressionParameters()

const RWGltf_DracoParameters & RWGltf_CafWriter::CompressionParameters ( ) const
inline

Return Draco parameters.

◆ CoordinateSystemConverter()

const RWMesh_CoordinateSystemConverter & RWGltf_CafWriter::CoordinateSystemConverter ( ) const
inline

Return transformation from OCCT to glTF coordinate system.

◆ DefaultStyle()

const XCAFPrs_Style & RWGltf_CafWriter::DefaultStyle ( ) const
inline

Return default material definition to be used for nodes with only color defined.

◆ formatName()

virtual TCollection_AsciiString RWGltf_CafWriter::formatName ( RWMesh_NameFormat  theFormat,
const TDF_Label theLabel,
const TDF_Label theRefLabel 
) const
protectedvirtual

Generate name for specified labels.

Parameters
[in]theFormatname format to apply
[in]theLabelinstance label
[in]theRefLabelproduct label

◆ IsBinary()

bool RWGltf_CafWriter::IsBinary ( ) const
inline

Return flag to write into binary glTF format (.glb), specified within class constructor.

◆ IsForcedUVExport()

bool RWGltf_CafWriter::IsForcedUVExport ( ) const
inline

Return TRUE to export UV coordinates even if there are no mapped texture; FALSE by default.

◆ MeshNameFormat()

RWMesh_NameFormat RWGltf_CafWriter::MeshNameFormat ( ) const
inline

Return name format for exporting Meshes; RWMesh_NameFormat_Product by default.

◆ NodeNameFormat()

RWMesh_NameFormat RWGltf_CafWriter::NodeNameFormat ( ) const
inline

Return name format for exporting Nodes; RWMesh_NameFormat_InstanceOrProduct by default.

◆ Perform() [1/2]

virtual bool RWGltf_CafWriter::Perform ( const Handle< TDocStd_Document > &  theDocument,
const TColStd_IndexedDataMapOfStringString theFileInfo,
const Message_ProgressRange theProgress 
)
virtual

Write glTF file and associated binary file. Triangulation data should be precomputed within shapes!

Parameters
theDocument[in] input document
theFileInfo[in] map with file metadata to put into glTF header section
theProgress[in] optional progress indicator
Returns
FALSE on file writing failure

◆ Perform() [2/2]

virtual bool RWGltf_CafWriter::Perform ( const Handle< TDocStd_Document > &  theDocument,
const TDF_LabelSequence theRootLabels,
const TColStd_MapOfAsciiString theLabelFilter,
const TColStd_IndexedDataMapOfStringString theFileInfo,
const Message_ProgressRange theProgress 
)
virtual

Write glTF file and associated binary file. Triangulation data should be precomputed within shapes!

Parameters
theDocument[in] input document
theRootLabels[in] list of root shapes to export
theLabelFilter[in] optional filter with document nodes to export, with keys defined by XCAFPrs_DocumentExplorer::DefineChildId() and filled recursively (leaves and parent assembly nodes at all levels); when not NULL, all nodes not included into the map will be ignored
theFileInfo[in] map with file metadata to put into glTF header section
theProgress[in] optional progress indicator
Returns
FALSE on file writing failure

◆ saveIndices()

virtual void RWGltf_CafWriter::saveIndices ( RWGltf_GltfFace theGltfFace,
std::ostream &  theBinFile,
const RWMesh_FaceIterator theFaceIter,
Standard_Integer theAccessorNb,
const std::shared_ptr< RWGltf_CafWriter::Mesh > &  theMesh 
)
protectedvirtual

Write mesh indexes into binary file.

Parameters
theGltfFace[out] glTF face definition
theBinFile[out] output file to write into
theFaceIter[in] current face to write
theAccessorNb[in] [out] last accessor index
theMesh[in] [out] mesh

◆ saveNodes()

virtual void RWGltf_CafWriter::saveNodes ( RWGltf_GltfFace theGltfFace,
std::ostream &  theBinFile,
const RWMesh_FaceIterator theFaceIter,
Standard_Integer theAccessorNb,
const std::shared_ptr< RWGltf_CafWriter::Mesh > &  theMesh 
) const
protectedvirtual

Write mesh nodes into binary file.

Parameters
theGltfFace[out] glTF face definition
theBinFile[out] output file to write into
theFaceIter[in] current face to write
theAccessorNb[in] [out] last accessor index
theMesh[in] [out] mesh

◆ saveNormals()

virtual void RWGltf_CafWriter::saveNormals ( RWGltf_GltfFace theGltfFace,
std::ostream &  theBinFile,
RWMesh_FaceIterator theFaceIter,
Standard_Integer theAccessorNb,
const std::shared_ptr< RWGltf_CafWriter::Mesh > &  theMesh 
) const
protectedvirtual

Write mesh normals into binary file.

Parameters
theGltfFace[out] glTF face definition
theBinFile[out] output file to write into
theFaceIter[in] current face to write
theAccessorNb[in] [out] last accessor index
theMesh[in] [out] mesh

◆ saveTextCoords()

virtual void RWGltf_CafWriter::saveTextCoords ( RWGltf_GltfFace theGltfFace,
std::ostream &  theBinFile,
const RWMesh_FaceIterator theFaceIter,
Standard_Integer theAccessorNb,
const std::shared_ptr< RWGltf_CafWriter::Mesh > &  theMesh 
) const
protectedvirtual

Write mesh texture UV coordinates into binary file.

Parameters
theGltfFace[out] glTF face definition
theBinFile[out] output file to write into
theFaceIter[in] current face to write
theAccessorNb[in] [out] last accessor index
theMesh[in] [out] mesh

◆ SetCompressionParameters()

void RWGltf_CafWriter::SetCompressionParameters ( const RWGltf_DracoParameters theDracoParameters)
inline

Set Draco parameters.

◆ SetCoordinateSystemConverter()

void RWGltf_CafWriter::SetCoordinateSystemConverter ( const RWMesh_CoordinateSystemConverter theConverter)
inline

Set transformation from OCCT to glTF coordinate system.

◆ SetDefaultStyle()

void RWGltf_CafWriter::SetDefaultStyle ( const XCAFPrs_Style theStyle)
inline

Set default material definition to be used for nodes with only color defined.

◆ SetForcedUVExport()

void RWGltf_CafWriter::SetForcedUVExport ( bool  theToForce)
inline

Set flag to export UV coordinates even if there are no mapped texture; FALSE by default.

◆ SetMergeFaces()

void RWGltf_CafWriter::SetMergeFaces ( bool  theToMerge)
inline

Set flag to merge faces within a single part. May reduce JSON size thanks to smaller number of primitive arrays.

◆ SetMeshNameFormat()

void RWGltf_CafWriter::SetMeshNameFormat ( RWMesh_NameFormat  theFormat)
inline

Set name format for exporting Meshes.

◆ SetNodeNameFormat()

void RWGltf_CafWriter::SetNodeNameFormat ( RWMesh_NameFormat  theFormat)
inline

Set name format for exporting Nodes.

◆ SetParallel()

void RWGltf_CafWriter::SetParallel ( bool  theToParallel)
inline

Setup multithreaded execution.

◆ SetSplitIndices16()

void RWGltf_CafWriter::SetSplitIndices16 ( bool  theToSplit)
inline

Set flag to prefer keeping 16-bit indexes while merging face. Has effect only with ToMergeFaces() option turned ON. May reduce binary data size thanks to smaller triangle indexes.

◆ SetToEmbedTexturesInGlb()

void RWGltf_CafWriter::SetToEmbedTexturesInGlb ( Standard_Boolean  theToEmbedTexturesInGlb)
inline

Set flag to write image textures into GLB file (binary gltf export).

◆ SetTransformationFormat()

void RWGltf_CafWriter::SetTransformationFormat ( RWGltf_WriterTrsfFormat  theFormat)
inline

Set preferred transformation format for writing into glTF file.

◆ ToEmbedTexturesInGlb()

Standard_Boolean RWGltf_CafWriter::ToEmbedTexturesInGlb ( )
inline

Return flag to write image textures into GLB file (binary gltf export); TRUE by default. When set to FALSE, texture images will be written as separate files. Has no effect on writing into non-binary format.

◆ ToMergeFaces()

bool RWGltf_CafWriter::ToMergeFaces ( ) const
inline

Return flag to merge faces within a single part; FALSE by default.

◆ ToParallel()

bool RWGltf_CafWriter::ToParallel ( ) const
inline

Return TRUE if multithreaded optimizations are allowed; FALSE by default.

◆ toSkipFaceMesh()

virtual Standard_Boolean RWGltf_CafWriter::toSkipFaceMesh ( const RWMesh_FaceIterator theFaceIter)
protectedvirtual

Return TRUE if face mesh should be skipped (e.g. because it is invalid or empty).

◆ ToSplitIndices16()

bool RWGltf_CafWriter::ToSplitIndices16 ( ) const
inline

Return flag to prefer keeping 16-bit indexes while merging face; FALSE by default.

◆ TransformationFormat()

RWGltf_WriterTrsfFormat RWGltf_CafWriter::TransformationFormat ( ) const
inline

Return preferred transformation format for writing into glTF file; RWGltf_WriterTrsfFormat_Compact by default.

◆ writeAccessors()

virtual void RWGltf_CafWriter::writeAccessors ( const RWGltf_GltfSceneNodeMap theSceneNodeMap)
protectedvirtual

Write RWGltf_GltfRootElement_Accessors section.

Parameters
theSceneNodeMap[in] ordered map of scene nodes

◆ writeAnimations()

virtual void RWGltf_CafWriter::writeAnimations ( )
protectedvirtual

Write RWGltf_GltfRootElement_Animations section (reserved).

◆ writeAsset()

virtual void RWGltf_CafWriter::writeAsset ( const TColStd_IndexedDataMapOfStringString theFileInfo)
protectedvirtual

Write RWGltf_GltfRootElement_Asset section.

Parameters
theFileInfo[in] optional metadata to write into file header

◆ writeBinData()

virtual bool RWGltf_CafWriter::writeBinData ( const Handle< TDocStd_Document > &  theDocument,
const TDF_LabelSequence theRootLabels,
const TColStd_MapOfAsciiString theLabelFilter,
const Message_ProgressRange theProgress 
)
protectedvirtual

Write binary data file with triangulation data. Triangulation data should be precomputed within shapes!

Parameters
theDocument[in] input document
theRootLabels[in] list of root shapes to export
theLabelFilter[in] optional filter with document nodes to export
theProgress[in] optional progress indicator
Returns
FALSE on file writing failure

◆ writeBuffers()

virtual void RWGltf_CafWriter::writeBuffers ( )
protectedvirtual

Write RWGltf_GltfRootElement_Buffers section.

◆ writeBufferViews()

virtual void RWGltf_CafWriter::writeBufferViews ( const Standard_Integer  theBinDataBufferId)
protectedvirtual

Write RWGltf_GltfRootElement_BufferViews section.

Parameters
theBinDataBufferId[in] index of binary buffer with vertex data

◆ writeExtensions()

virtual void RWGltf_CafWriter::writeExtensions ( )
protectedvirtual

Write RWGltf_GltfRootElement_ExtensionsUsed/RWGltf_GltfRootElement_ExtensionsRequired sections (reserved).

◆ writeImages()

virtual void RWGltf_CafWriter::writeImages ( const RWGltf_GltfSceneNodeMap theSceneNodeMap)
protectedvirtual

Write RWGltf_GltfRootElement_Images section.

Parameters
theSceneNodeMap[in] ordered map of scene nodes
theMaterialMap[out] map of materials, filled with image files used by textures

◆ writeIndices()

virtual void RWGltf_CafWriter::writeIndices ( const RWGltf_GltfFace theGltfFace)
protectedvirtual

Write bufferView for triangle indexes within RWGltf_GltfRootElement_Accessors section.

Parameters
theGltfFace[in] face definition to write

◆ writeJson()

virtual bool RWGltf_CafWriter::writeJson ( const Handle< TDocStd_Document > &  theDocument,
const TDF_LabelSequence theRootLabels,
const TColStd_MapOfAsciiString theLabelFilter,
const TColStd_IndexedDataMapOfStringString theFileInfo,
const Message_ProgressRange theProgress 
)
protectedvirtual

Write JSON file with glTF structure (should be called after writeBinData()).

Parameters
theDocument[in] input document
theRootLabels[in] list of root shapes to export
theLabelFilter[in] optional filter with document nodes to export
theFileInfo[in] map with file metadata to put into glTF header section
theProgress[in] optional progress indicator
Returns
FALSE on file writing failure

◆ writeMaterials()

virtual void RWGltf_CafWriter::writeMaterials ( const RWGltf_GltfSceneNodeMap theSceneNodeMap)
protectedvirtual

Write RWGltf_GltfRootElement_Materials section.

Parameters
theSceneNodeMap[in] ordered map of scene nodes
theMaterialMap[out] map of materials, filled with materials

◆ writeMeshes()

virtual void RWGltf_CafWriter::writeMeshes ( const RWGltf_GltfSceneNodeMap theSceneNodeMap)
protectedvirtual

Write RWGltf_GltfRootElement_Meshes section.

Parameters
theSceneNodeMap[in] ordered map of scene nodes
theMaterialMap[in] map of materials

◆ writeNodes()

virtual void RWGltf_CafWriter::writeNodes ( const Handle< TDocStd_Document > &  theDocument,
const TDF_LabelSequence theRootLabels,
const TColStd_MapOfAsciiString theLabelFilter,
const RWGltf_GltfSceneNodeMap theSceneNodeMap,
NCollection_Sequence< Standard_Integer > &  theSceneRootNodeInds 
)
protectedvirtual

Write RWGltf_GltfRootElement_Nodes section.

Parameters
theDocument[in] input document
theRootLabels[in] list of root shapes to export
theLabelFilter[in] optional filter with document nodes to export
theSceneNodeMap[in] ordered map of scene nodes
theSceneRootNodeInds[out] sequence of scene nodes pointing to root shapes (to be used for writeScenes())

◆ writeNormals()

virtual void RWGltf_CafWriter::writeNormals ( const RWGltf_GltfFace theGltfFace)
protectedvirtual

Write bufferView for vertex normals within RWGltf_GltfRootElement_Accessors section.

Parameters
theGltfFace[in] face definition to write

◆ writePositions()

virtual void RWGltf_CafWriter::writePositions ( const RWGltf_GltfFace theGltfFace)
protectedvirtual

Write bufferView for vertex positions within RWGltf_GltfRootElement_Accessors section.

Parameters
theGltfFace[in] face definition to write

◆ writePrimArray()

virtual void RWGltf_CafWriter::writePrimArray ( const RWGltf_GltfFace theGltfFace,
const TCollection_AsciiString theName,
const int  theDracoBufInd,
bool theToStartPrims 
)
protectedvirtual

Write a primitive array to RWGltf_GltfRootElement_Meshes section.

Parameters
[in]theGltfFaceface to write
[in]theNameprimitive array name
[in]theDracoBufInddraco buffer index
[in,out]theToStartPrimsflag indicating that primitive array has been started

◆ writeSamplers()

virtual void RWGltf_CafWriter::writeSamplers ( )
protectedvirtual

Write RWGltf_GltfRootElement_Samplers section.

◆ writeScene()

virtual void RWGltf_CafWriter::writeScene ( const Standard_Integer  theDefSceneId)
protectedvirtual

Write RWGltf_GltfRootElement_Scene section.

Parameters
theDefSceneId[in] index of default scene (0)

◆ writeScenes()

virtual void RWGltf_CafWriter::writeScenes ( const NCollection_Sequence< Standard_Integer > &  theSceneRootNodeInds)
protectedvirtual

Write RWGltf_GltfRootElement_Scenes section.

Parameters
theSceneRootNodeInds[in] sequence of scene nodes pointing to root shapes

◆ writeSkins()

virtual void RWGltf_CafWriter::writeSkins ( )
protectedvirtual

Write RWGltf_GltfRootElement_Skins section (reserved).

◆ writeTextCoords()

virtual void RWGltf_CafWriter::writeTextCoords ( const RWGltf_GltfFace theGltfFace)
protectedvirtual

Write bufferView for vertex texture coordinates within RWGltf_GltfRootElement_Accessors section.

Parameters
theGltfFace[in] face definition to write

◆ writeTextures()

virtual void RWGltf_CafWriter::writeTextures ( const RWGltf_GltfSceneNodeMap theSceneNodeMap)
protectedvirtual

Write RWGltf_GltfRootElement_Textures section.

Parameters
theSceneNodeMap[in] ordered map of scene nodes
theMaterialMap[out] map of materials, filled with textures

Field Documentation

◆ myBinDataLen64

int64_t RWGltf_CafWriter::myBinDataLen64
protected

length of binary file

◆ myBinDataMap

ShapeToGltfFaceMap RWGltf_CafWriter::myBinDataMap
protected

map for TopoDS_Face to glTF face (merging duplicates)

◆ myBinFileNameFull

TCollection_AsciiString RWGltf_CafWriter::myBinFileNameFull
protected

output file with binary data (full path)

◆ myBinFileNameShort

TCollection_AsciiString RWGltf_CafWriter::myBinFileNameShort
protected

output file with binary data (short path)

◆ myBuffViewInd

RWGltf_GltfBufferView RWGltf_CafWriter::myBuffViewInd
protected

current buffer view with triangulation indexes

◆ myBuffViewNorm

RWGltf_GltfBufferView RWGltf_CafWriter::myBuffViewNorm
protected

current buffer view with nodes normals

◆ myBuffViewPos

RWGltf_GltfBufferView RWGltf_CafWriter::myBuffViewPos
protected

current buffer view with nodes positions

◆ myBuffViewsDraco

std::vector<RWGltf_GltfBufferView> RWGltf_CafWriter::myBuffViewsDraco
protected

vector of buffers view with compression data

◆ myBuffViewTextCoord

RWGltf_GltfBufferView RWGltf_CafWriter::myBuffViewTextCoord
protected

current buffer view with nodes UV coordinates

◆ myCSTrsf

RWMesh_CoordinateSystemConverter RWGltf_CafWriter::myCSTrsf
protected

transformation from OCCT to glTF coordinate system

◆ myDefaultStyle

XCAFPrs_Style RWGltf_CafWriter::myDefaultStyle
protected

default material definition to be used for nodes with only color defined

◆ myDracoParameters

RWGltf_DracoParameters RWGltf_CafWriter::myDracoParameters
protected

Draco parameters.

◆ myFile

TCollection_AsciiString RWGltf_CafWriter::myFile
protected

output glTF file

◆ myIsBinary

Standard_Boolean RWGltf_CafWriter::myIsBinary
protected

flag to write into binary glTF format (.glb)

◆ myIsForcedUVExport

Standard_Boolean RWGltf_CafWriter::myIsForcedUVExport
protected

export UV coordinates even if there are no mapped texture

◆ myMaterialMap

Handle< RWGltf_GltfMaterialMap > RWGltf_CafWriter::myMaterialMap
protected

map of defined materials

◆ myMeshNameFormat

RWMesh_NameFormat RWGltf_CafWriter::myMeshNameFormat
protected

name format for exporting Meshes

◆ myNodeNameFormat

RWMesh_NameFormat RWGltf_CafWriter::myNodeNameFormat
protected

name format for exporting Nodes

◆ myToEmbedTexturesInGlb

Standard_Boolean RWGltf_CafWriter::myToEmbedTexturesInGlb
protected

flag to write image textures into GLB file

◆ myToMergeFaces

Standard_Boolean RWGltf_CafWriter::myToMergeFaces
protected

flag to merge faces within a single part

◆ myToParallel

Standard_Boolean RWGltf_CafWriter::myToParallel
protected

flag to use multithreading; FALSE by default

◆ myToSplitIndices16

Standard_Boolean RWGltf_CafWriter::myToSplitIndices16
protected

flag to prefer keeping 16-bit indexes while merging face

◆ myTrsfFormat

RWGltf_WriterTrsfFormat RWGltf_CafWriter::myTrsfFormat
protected

transformation format to write into glTF file

◆ myWriter

std::shared_ptr<RWGltf_GltfOStreamWriter> RWGltf_CafWriter::myWriter
protected

JSON writer.


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