Open CASCADE Technology
7.6.0
|
glTF writer context from XCAF document. More...
#include <RWGltf_CafWriter.hxx>
Data Structures | |
struct | RWGltf_StyledShape |
Shape + Style pair. More... | |
Public Member Functions | |
RWGltf_CafWriter (const TCollection_AsciiString &theFile, Standard_Boolean theIsBinary) | |
Main constructor. More... | |
virtual | ~RWGltf_CafWriter () |
Destructor. More... | |
const RWMesh_CoordinateSystemConverter & | CoordinateSystemConverter () const |
Return transformation from OCCT to glTF coordinate system. More... | |
RWMesh_CoordinateSystemConverter & | ChangeCoordinateSystemConverter () |
Return transformation from OCCT to glTF coordinate system. More... | |
void | SetCoordinateSystemConverter (const RWMesh_CoordinateSystemConverter &theConverter) |
Set transformation from OCCT to glTF coordinate system. More... | |
bool | IsBinary () const |
Return flag to write into binary glTF format (.glb), specified within class constructor. More... | |
RWGltf_WriterTrsfFormat | TransformationFormat () const |
Return preferred transformation format for writing into glTF file; RWGltf_WriterTrsfFormat_Compact by default. More... | |
void | SetTransformationFormat (RWGltf_WriterTrsfFormat theFormat) |
Set preferred transformation format for writing into glTF file. More... | |
RWMesh_NameFormat | NodeNameFormat () const |
Return name format for exporting Nodes; RWMesh_NameFormat_InstanceOrProduct by default. More... | |
void | SetNodeNameFormat (RWMesh_NameFormat theFormat) |
Set name format for exporting Nodes. More... | |
RWMesh_NameFormat | MeshNameFormat () const |
Return name format for exporting Meshes; RWMesh_NameFormat_Product by default. More... | |
void | SetMeshNameFormat (RWMesh_NameFormat theFormat) |
Set name format for exporting Meshes. More... | |
bool | IsForcedUVExport () const |
Return TRUE to export UV coordinates even if there are no mapped texture; FALSE by default. More... | |
void | SetForcedUVExport (bool theToForce) |
Set flag to export UV coordinates even if there are no mapped texture; FALSE by default. More... | |
const XCAFPrs_Style & | DefaultStyle () const |
Return default material definition to be used for nodes with only color defined. More... | |
void | SetDefaultStyle (const XCAFPrs_Style &theStyle) |
Set default material definition to be used for nodes with only color defined. More... | |
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. More... | |
void | SetToEmbedTexturesInGlb (Standard_Boolean theToEmbedTexturesInGlb) |
Set flag to write image textures into GLB file (binary gltf export). More... | |
bool | ToMergeFaces () const |
Return flag to merge faces within a single part; FALSE by default. More... | |
void | SetMergeFaces (bool theToMerge) |
Set flag to merge faces within a single part. May reduce JSON size thanks to smaller number of primitive arrays. More... | |
bool | ToSplitIndices16 () const |
Return flag to prefer keeping 16-bit indexes while merging face; FALSE by default. More... | |
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. More... | |
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! More... | |
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! More... | |
Public Member Functions inherited from Standard_Transient | |
Standard_Transient () | |
Empty constructor. More... | |
Standard_Transient (const Standard_Transient &) | |
Copy constructor – does nothing. More... | |
Standard_Transient & | operator= (const Standard_Transient &) |
Assignment operator, needed to avoid copying reference counter. More... | |
virtual | ~Standard_Transient () |
Destructor must be virtual. More... | |
virtual void | Delete () const |
Memory deallocator for transient classes. More... | |
virtual const opencascade::handle< Standard_Type > & | DynamicType () const |
Returns a type descriptor about this object. More... | |
Standard_Boolean | IsInstance (const opencascade::handle< Standard_Type > &theType) const |
Returns a true value if this is an instance of Type. More... | |
Standard_Boolean | IsInstance (const Standard_CString theTypeName) const |
Returns a true value if this is an instance of TypeName. More... | |
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. More... | |
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. More... | |
Standard_Transient * | This () 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. More... | |
Standard_Integer | GetRefCount () const |
Get the reference counter of this object. More... | |
void | IncrementRefCounter () const |
Increments the reference counter of this object. More... | |
Standard_Integer | DecrementRefCounter () const |
Decrements the reference counter of this object; returns the decremented value. More... | |
Protected Types | |
typedef NCollection_IndexedDataMap< RWGltf_StyledShape, Handle< RWGltf_GltfFaceList >, RWGltf_StyledShape > | ShapeToGltfFaceMap |
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! More... | |
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()). More... | |
virtual Standard_Boolean | toSkipFaceMesh (const RWMesh_FaceIterator &theFaceIter) |
Return TRUE if face mesh should be skipped (e.g. because it is invalid or empty). More... | |
virtual TCollection_AsciiString | formatName (RWMesh_NameFormat theFormat, const TDF_Label &theLabel, const TDF_Label &theRefLabel) const |
Generate name for specified labels. More... | |
virtual void | saveNodes (RWGltf_GltfFace &theGltfFace, std::ostream &theBinFile, const RWMesh_FaceIterator &theFaceIter, Standard_Integer &theAccessorNb) const |
Write mesh nodes into binary file. More... | |
virtual void | saveNormals (RWGltf_GltfFace &theGltfFace, std::ostream &theBinFile, RWMesh_FaceIterator &theFaceIter, Standard_Integer &theAccessorNb) const |
Write mesh normals into binary file. More... | |
virtual void | saveTextCoords (RWGltf_GltfFace &theGltfFace, std::ostream &theBinFile, const RWMesh_FaceIterator &theFaceIter, Standard_Integer &theAccessorNb) const |
Write mesh texture UV coordinates into binary file. More... | |
virtual void | saveIndices (RWGltf_GltfFace &theGltfFace, std::ostream &theBinFile, const RWMesh_FaceIterator &theFaceIter, Standard_Integer &theAccessorNb) |
Write mesh indexes into binary file. More... | |
virtual void | writePositions (const RWGltf_GltfFace &theGltfFace) |
Write bufferView for vertex positions within RWGltf_GltfRootElement_Accessors section. More... | |
virtual void | writeNormals (const RWGltf_GltfFace &theGltfFace) |
Write bufferView for vertex normals within RWGltf_GltfRootElement_Accessors section. More... | |
virtual void | writeTextCoords (const RWGltf_GltfFace &theGltfFace) |
Write bufferView for vertex texture coordinates within RWGltf_GltfRootElement_Accessors section. More... | |
virtual void | writeIndices (const RWGltf_GltfFace &theGltfFace) |
Write bufferView for triangle indexes within RWGltf_GltfRootElement_Accessors section. More... | |
virtual void | writeAccessors (const RWGltf_GltfSceneNodeMap &theSceneNodeMap) |
Write RWGltf_GltfRootElement_Accessors section. More... | |
virtual void | writeAnimations () |
Write RWGltf_GltfRootElement_Animations section (reserved). More... | |
virtual void | writeAsset (const TColStd_IndexedDataMapOfStringString &theFileInfo) |
Write RWGltf_GltfRootElement_Asset section. More... | |
virtual void | writeBufferViews (const Standard_Integer theBinDataBufferId) |
Write RWGltf_GltfRootElement_BufferViews section. More... | |
virtual void | writeBuffers () |
Write RWGltf_GltfRootElement_Buffers section. More... | |
virtual void | writeExtensions () |
Write RWGltf_GltfRootElement_ExtensionsUsed/RWGltf_GltfRootElement_ExtensionsRequired sections (reserved). More... | |
virtual void | writeImages (const RWGltf_GltfSceneNodeMap &theSceneNodeMap) |
Write RWGltf_GltfRootElement_Images section. More... | |
virtual void | writeMaterials (const RWGltf_GltfSceneNodeMap &theSceneNodeMap) |
Write RWGltf_GltfRootElement_Materials section. More... | |
virtual void | writeMeshes (const RWGltf_GltfSceneNodeMap &theSceneNodeMap) |
Write RWGltf_GltfRootElement_Meshes section. More... | |
virtual void | writePrimArray (const RWGltf_GltfFace &theGltfFace, const TCollection_AsciiString &theName, bool &theToStartPrims) |
Write a primitive array to RWGltf_GltfRootElement_Meshes section. More... | |
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. More... | |
virtual void | writeSamplers () |
Write RWGltf_GltfRootElement_Samplers section. More... | |
virtual void | writeScene (const Standard_Integer theDefSceneId) |
Write RWGltf_GltfRootElement_Scene section. More... | |
virtual void | writeScenes (const NCollection_Sequence< Standard_Integer > &theSceneRootNodeInds) |
Write RWGltf_GltfRootElement_Scenes section. More... | |
virtual void | writeSkins () |
Write RWGltf_GltfRootElement_Skins section (reserved). More... | |
virtual void | writeTextures (const RWGltf_GltfSceneNodeMap &theSceneNodeMap) |
Write RWGltf_GltfRootElement_Textures section. More... | |
Protected Attributes | |
TCollection_AsciiString | myFile |
output glTF file More... | |
TCollection_AsciiString | myBinFileNameFull |
output file with binary data (full path) More... | |
TCollection_AsciiString | myBinFileNameShort |
output file with binary data (short path) More... | |
RWGltf_WriterTrsfFormat | myTrsfFormat |
transformation format to write into glTF file More... | |
RWMesh_NameFormat | myNodeNameFormat |
name format for exporting Nodes More... | |
RWMesh_NameFormat | myMeshNameFormat |
name format for exporting Meshes More... | |
Standard_Boolean | myIsBinary |
flag to write into binary glTF format (.glb) More... | |
Standard_Boolean | myIsForcedUVExport |
export UV coordinates even if there are no mapped texture More... | |
Standard_Boolean | myToEmbedTexturesInGlb |
flag to write image textures into GLB file More... | |
Standard_Boolean | myToMergeFaces |
flag to merge faces within a single part More... | |
Standard_Boolean | myToSplitIndices16 |
flag to prefer keeping 16-bit indexes while merging face More... | |
RWMesh_CoordinateSystemConverter | myCSTrsf |
transformation from OCCT to glTF coordinate system More... | |
XCAFPrs_Style | myDefaultStyle |
default material definition to be used for nodes with only color defined More... | |
opencascade::std::shared_ptr< RWGltf_GltfOStreamWriter > | myWriter |
JSON writer. More... | |
Handle< RWGltf_GltfMaterialMap > | myMaterialMap |
map of defined materials More... | |
RWGltf_GltfBufferView | myBuffViewPos |
current buffer view with nodes positions More... | |
RWGltf_GltfBufferView | myBuffViewNorm |
current buffer view with nodes normals More... | |
RWGltf_GltfBufferView | myBuffViewTextCoord |
current buffer view with nodes UV coordinates More... | |
RWGltf_GltfBufferView | myBuffViewInd |
current buffer view with triangulation indexes More... | |
ShapeToGltfFaceMap | myBinDataMap |
map for TopoDS_Face to glTF face (merging duplicates) More... | |
int64_t | myBinDataLen64 |
length of binary file More... | |
Additional Inherited Members | |
Public Types inherited from Standard_Transient | |
typedef void | base_type |
Returns a type descriptor about this object. More... | |
Static Public Member Functions inherited from Standard_Transient | |
static const char * | get_type_name () |
Returns a type descriptor about this object. More... | |
static const opencascade::handle< Standard_Type > & | get_type_descriptor () |
Returns type descriptor of Standard_Transient class. More... | |
glTF writer context from XCAF document.
|
protected |
RWGltf_CafWriter::RWGltf_CafWriter | ( | const TCollection_AsciiString & | theFile, |
Standard_Boolean | theIsBinary | ||
) |
Main constructor.
theFile | [in] path to output glTF file |
theIsBinary | [in] flag to write into binary glTF format (.glb) |
|
virtual |
Destructor.
|
inline |
Return transformation from OCCT to glTF coordinate system.
|
inline |
Return transformation from OCCT to glTF coordinate system.
|
inline |
Return default material definition to be used for nodes with only color defined.
|
protectedvirtual |
Generate name for specified labels.
[in] | theFormat | name format to apply |
[in] | theLabel | instance label |
[in] | theRefLabel | product label |
|
inline |
Return flag to write into binary glTF format (.glb), specified within class constructor.
|
inline |
Return TRUE to export UV coordinates even if there are no mapped texture; FALSE by default.
|
inline |
Return name format for exporting Meshes; RWMesh_NameFormat_Product by default.
|
inline |
Return name format for exporting Nodes; RWMesh_NameFormat_InstanceOrProduct by default.
|
virtual |
Write glTF file and associated binary file. Triangulation data should be precomputed within shapes!
theDocument | [in] input document |
theFileInfo | [in] map with file metadata to put into glTF header section |
theProgress | [in] optional progress indicator |
|
virtual |
Write glTF file and associated binary file. Triangulation data should be precomputed within shapes!
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 |
|
protectedvirtual |
Write mesh indexes into binary file.
theGltfFace | [out] glTF face definition |
theBinFile | [out] output file to write into |
theFaceIter | [in] current face to write |
theAccessorNb | [in] [out] last accessor index |
|
protectedvirtual |
Write mesh nodes into binary file.
theGltfFace | [out] glTF face definition |
theBinFile | [out] output file to write into |
theFaceIter | [in] current face to write |
theAccessorNb | [in] [out] last accessor index |
|
protectedvirtual |
Write mesh normals into binary file.
theGltfFace | [out] glTF face definition |
theBinFile | [out] output file to write into |
theFaceIter | [in] current face to write |
theAccessorNb | [in] [out] last accessor index |
|
protectedvirtual |
Write mesh texture UV coordinates into binary file.
theGltfFace | [out] glTF face definition |
theBinFile | [out] output file to write into |
theFaceIter | [in] current face to write |
theAccessorNb | [in] [out] last accessor index |
|
inline |
Set transformation from OCCT to glTF coordinate system.
|
inline |
Set default material definition to be used for nodes with only color defined.
|
inline |
Set flag to export UV coordinates even if there are no mapped texture; FALSE by default.
|
inline |
Set flag to merge faces within a single part. May reduce JSON size thanks to smaller number of primitive arrays.
|
inline |
Set name format for exporting Meshes.
|
inline |
Set name format for exporting Nodes.
|
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.
|
inline |
Set flag to write image textures into GLB file (binary gltf export).
|
inline |
Set preferred transformation format for writing into glTF file.
|
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.
|
inline |
Return flag to merge faces within a single part; FALSE by default.
|
protectedvirtual |
Return TRUE if face mesh should be skipped (e.g. because it is invalid or empty).
|
inline |
Return flag to prefer keeping 16-bit indexes while merging face; FALSE by default.
|
inline |
Return preferred transformation format for writing into glTF file; RWGltf_WriterTrsfFormat_Compact by default.
|
protectedvirtual |
Write RWGltf_GltfRootElement_Accessors section.
theSceneNodeMap | [in] ordered map of scene nodes |
|
protectedvirtual |
Write RWGltf_GltfRootElement_Animations section (reserved).
|
protectedvirtual |
Write RWGltf_GltfRootElement_Asset section.
theFileInfo | [in] optional metadata to write into file header |
|
protectedvirtual |
Write binary data file with triangulation data. Triangulation data should be precomputed within shapes!
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 |
|
protectedvirtual |
Write RWGltf_GltfRootElement_Buffers section.
|
protectedvirtual |
Write RWGltf_GltfRootElement_BufferViews section.
theBinDataBufferId | [in] index of binary buffer with vertex data |
|
protectedvirtual |
Write RWGltf_GltfRootElement_ExtensionsUsed/RWGltf_GltfRootElement_ExtensionsRequired sections (reserved).
|
protectedvirtual |
Write RWGltf_GltfRootElement_Images section.
theSceneNodeMap | [in] ordered map of scene nodes |
theMaterialMap | [out] map of materials, filled with image files used by textures |
|
protectedvirtual |
Write bufferView for triangle indexes within RWGltf_GltfRootElement_Accessors section.
theGltfFace | [in] face definition to write |
|
protectedvirtual |
Write JSON file with glTF structure (should be called after writeBinData()).
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 |
|
protectedvirtual |
Write RWGltf_GltfRootElement_Materials section.
theSceneNodeMap | [in] ordered map of scene nodes |
theMaterialMap | [out] map of materials, filled with materials |
|
protectedvirtual |
Write RWGltf_GltfRootElement_Meshes section.
theSceneNodeMap | [in] ordered map of scene nodes |
theMaterialMap | [in] map of materials |
|
protectedvirtual |
Write RWGltf_GltfRootElement_Nodes section.
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()) |
|
protectedvirtual |
Write bufferView for vertex normals within RWGltf_GltfRootElement_Accessors section.
theGltfFace | [in] face definition to write |
|
protectedvirtual |
Write bufferView for vertex positions within RWGltf_GltfRootElement_Accessors section.
theGltfFace | [in] face definition to write |
|
protectedvirtual |
Write a primitive array to RWGltf_GltfRootElement_Meshes section.
[in] | theGltfFace | face to write |
[in] | theName | primitive array name |
[in,out] | theToStartPrims | flag indicating that primitive array has been started |
|
protectedvirtual |
Write RWGltf_GltfRootElement_Samplers section.
|
protectedvirtual |
Write RWGltf_GltfRootElement_Scene section.
theDefSceneId | [in] index of default scene (0) |
|
protectedvirtual |
Write RWGltf_GltfRootElement_Scenes section.
theSceneRootNodeInds | [in] sequence of scene nodes pointing to root shapes |
|
protectedvirtual |
Write RWGltf_GltfRootElement_Skins section (reserved).
|
protectedvirtual |
Write bufferView for vertex texture coordinates within RWGltf_GltfRootElement_Accessors section.
theGltfFace | [in] face definition to write |
|
protectedvirtual |
Write RWGltf_GltfRootElement_Textures section.
theSceneNodeMap | [in] ordered map of scene nodes |
theMaterialMap | [out] map of materials, filled with textures |
|
protected |
length of binary file
|
protected |
map for TopoDS_Face to glTF face (merging duplicates)
|
protected |
output file with binary data (full path)
|
protected |
output file with binary data (short path)
|
protected |
current buffer view with triangulation indexes
|
protected |
current buffer view with nodes normals
|
protected |
current buffer view with nodes positions
|
protected |
current buffer view with nodes UV coordinates
|
protected |
transformation from OCCT to glTF coordinate system
|
protected |
default material definition to be used for nodes with only color defined
|
protected |
output glTF file
|
protected |
flag to write into binary glTF format (.glb)
|
protected |
export UV coordinates even if there are no mapped texture
|
protected |
map of defined materials
|
protected |
name format for exporting Meshes
|
protected |
name format for exporting Nodes
|
protected |
flag to write image textures into GLB file
|
protected |
flag to merge faces within a single part
|
protected |
flag to prefer keeping 16-bit indexes while merging face
|
protected |
transformation format to write into glTF file
|
protected |
JSON writer.