Open CASCADE Technology Reference Manual 8.0.0
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions
XCAFDoc_VisMaterial Class Reference

Attribute storing Material definition for visualization purposes. More...

#include <XCAFDoc_VisMaterial.hxx>

Inheritance diagram for XCAFDoc_VisMaterial:
Inheritance graph
[legend]

Public Member Functions

 XCAFDoc_VisMaterial ()
 Empty constructor.
 
bool IsEmpty () const
 Return TRUE if material definition is empty.
 
void FillMaterialAspect (Graphic3d_MaterialAspect &theAspect) const
 Fill in material aspect.
 
void FillAspect (const occ::handle< Graphic3d_Aspects > &theAspect) const
 Fill in graphic aspects.
 
bool HasPbrMaterial () const
 Return TRUE if metal-roughness PBR material is defined; FALSE by default.
 
const XCAFDoc_VisMaterialPBRPbrMaterial () const
 Return metal-roughness PBR material. Note that default constructor creates an empty material (.
 
void SetPbrMaterial (const XCAFDoc_VisMaterialPBR &theMaterial)
 Setup metal-roughness PBR material.
 
void UnsetPbrMaterial ()
 Setup undefined metal-roughness PBR material.
 
bool HasCommonMaterial () const
 Return TRUE if common material is defined; FALSE by default.
 
const XCAFDoc_VisMaterialCommonCommonMaterial () const
 Return common material. Note that default constructor creates an empty material (.
 
void SetCommonMaterial (const XCAFDoc_VisMaterialCommon &theMaterial)
 Setup common material.
 
void UnsetCommonMaterial ()
 Setup undefined common material.
 
Quantity_ColorRGBA BaseColor () const
 Return base color.
 
Graphic3d_AlphaMode AlphaMode () const
 Return alpha mode; Graphic3d_AlphaMode_BlendAuto by default.
 
float AlphaCutOff () const
 Return alpha cutoff value; 0.5 by default.
 
void SetAlphaMode (Graphic3d_AlphaMode theMode, float theCutOff=0.5f)
 Set alpha mode.
 
Graphic3d_TypeOfBackfacingModel FaceCulling () const
 Returns if the material is double or single sided; Graphic3d_TypeOfBackfacingModel_Auto by default.
 
void SetFaceCulling (Graphic3d_TypeOfBackfacingModel theFaceCulling)
 Specifies whether the material is double or single sided.
 
bool IsDoubleSided () const
 
instead void SetDoubleSided (bool theIsDoubleSided)
 
const occ::handle< TCollection_HAsciiString > & RawName () const
 Return material name / tag (transient data, not stored in the document).
 
void SetRawName (const occ::handle< TCollection_HAsciiString > &theName)
 Set material name / tag (transient data, not stored in the document).
 
bool IsEqual (const occ::handle< XCAFDoc_VisMaterial > &theOther) const
 Compare two materials. Performs deep comparison by actual values - e.g. can be useful for merging materials.
 
XCAFDoc_VisMaterialCommon ConvertToCommonMaterial ()
 Return Common material or convert PBR into Common material.
 
XCAFDoc_VisMaterialPBR ConvertToPbrMaterial ()
 Return PBR material or convert Common into PBR material.
 
- Public Member Functions inherited from TDF_Attribute
virtual void SetID (const Standard_GUID &)
 Sets specific ID of the attribute (supports several attributes of one type at the same label feature).
 
virtual void SetID ()
 Sets default ID defined in nested class (to be used for attributes having User ID feature).
 
const TDF_Label Label () const
 Returns the label to which the attribute is attached. If the label is not included in a DF, the label is null. See Label. Warning: If the label is not included in a data framework, it is null. This function should not be redefined inline.
 
int Transaction () const
 Returns the transaction index in which the attribute has been created or modified.
 
int UntilTransaction () const
 Returns the upper transaction index until which the attribute is/was valid. This number may vary. A removed attribute validity range is reduced to its transaction index.
 
bool IsValid () const
 Returns true if the attribute is valid; i.e. not a backuped or removed one.
 
bool IsNew () const
 Returns true if the attribute has no backup.
 
bool IsForgotten () const
 Returns true if the attribute forgotten status is set.
 
bool IsAttribute (const Standard_GUID &anID) const
 Returns true if it exists an associated attribute of <me> with <anID> as ID.
 
bool FindAttribute (const Standard_GUID &anID, occ::handle< TDF_Attribute > &anAttribute) const
 Finds an associated attribute of <me>, according to <anID>. the returned <anAttribute> is a valid one. The method returns True if found, False otherwise. A removed attribute cannot be found using this method.
 
template<class T >
bool FindAttribute (const Standard_GUID &theID, occ::handle< T > &theAttr) const
 Safe variant for arbitrary type of argument.
 
void AddAttribute (const occ::handle< TDF_Attribute > &other) const
 Adds an Attribute <other> to the label of <me>. Raises if there is already one of the same GUID than <other>.
 
bool ForgetAttribute (const Standard_GUID &aguid) const
 Forgets the Attribute of GUID <aguid> associated to the label of <me>. Be careful that if <me> is the attribute of <guid>, <me> will have a null label after this call. If the attribute doesn't exist returns False. Otherwise returns True.
 
void ForgetAllAttributes (const bool clearChildren=true) const
 Forgets all the attributes attached to the label of <me>. Does it on the sub-labels if <clearChildren> is set to true. Of course, this method is compatible with Transaction & Delta mechanisms. Be careful that if <me> will have a null label after this call.
 
virtual void AfterAddition ()
 Something to do after adding an Attribute to a label.
 
virtual void BeforeRemoval ()
 Something to do before removing an Attribute from a label.
 
virtual void BeforeForget ()
 Something to do before forgetting an Attribute to a label.
 
virtual void AfterResume ()
 Something to do after resuming an Attribute from a label.
 
virtual bool AfterRetrieval (const bool forceIt=false)
 Something to do AFTER creation of an attribute by persistent-transient translation. The returned status says if AfterUndo has been performed (true) or if this callback must be called once again further (false). If <forceIt> is set to true, the method MUST perform and return true. Does nothing by default and returns true.
 
virtual bool BeforeUndo (const occ::handle< TDF_AttributeDelta > &anAttDelta, const bool forceIt=false)
 Something to do before applying <anAttDelta>. The returned status says if AfterUndo has been performed (true) or if this callback must be called once again further (false). If <forceIt> is set to true, the method MUST perform and return true. Does nothing by default and returns true.
 
virtual bool AfterUndo (const occ::handle< TDF_AttributeDelta > &anAttDelta, const bool forceIt=false)
 Something to do after applying <anAttDelta>. The returned status says if AfterUndo has been performed (true) or if this callback must be called once again further (false). If <forceIt> is set to true, the method MUST perform and return true. Does nothing by default and returns true.
 
virtual void BeforeCommitTransaction ()
 A callback. By default does nothing. It is called by TDF_Data::CommitTransaction() method.
 
void Backup ()
 Backups the attribute. The backuped attribute is flagged "Backuped" and not "Valid".
 
bool IsBackuped () const
 Returns true if the attribute backup status is set. This status is set/unset by the Backup() method.
 
virtual occ::handle< TDF_AttributeBackupCopy () const
 Copies the attribute contents into a new other attribute. It is used by Backup().
 
virtual occ::handle< TDF_DeltaOnAdditionDeltaOnAddition () const
 Makes an AttributeDelta because <me> appeared. The only known use of a redefinition of this method is to return a null handle (no delta).
 
virtual occ::handle< TDF_DeltaOnForgetDeltaOnForget () const
 Makes an AttributeDelta because <me> has been forgotten.
 
virtual occ::handle< TDF_DeltaOnResumeDeltaOnResume () const
 Makes an AttributeDelta because <me> has been resumed.
 
virtual occ::handle< TDF_DeltaOnModificationDeltaOnModification (const occ::handle< TDF_Attribute > &anOldAttribute) const
 Makes a DeltaOnModification between <me> and.
 
virtual void DeltaOnModification (const occ::handle< TDF_DeltaOnModification > &aDelta)
 Applies a DeltaOnModification to <me>.
 
virtual occ::handle< TDF_DeltaOnRemovalDeltaOnRemoval () const
 Makes a DeltaOnRemoval on <me> because <me> has disappeared from the DS.
 
virtual void References (const occ::handle< TDF_DataSet > &aDataSet) const
 Adds the first level referenced attributes and labels to <aDataSet>.
 
virtual Standard_OStreamDump (Standard_OStream &anOS) const
 Dumps the minimum information about <me> on <aStream>.
 
Standard_OStreamoperator<< (Standard_OStream &anOS) const
 
virtual void ExtendedDump (Standard_OStream &anOS, const TDF_IDFilter &aFilter, NCollection_IndexedMap< occ::handle< TDF_Attribute > > &aMap) const
 Dumps the attribute content on <aStream>, using <aMap> like this: if an attribute is not in the map, first put add it to the map and then dump it. Use the map rank instead of dumping each attribute field.
 
void Forget (const int aTransaction)
 Forgets the attribute. <aTransaction> is the current transaction in which the forget is done. A forgotten attribute is also flagged not "Valid".
 
- 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 Standard_GUIDGetID ()
 Return attribute GUID.
 
- 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.
 

interface implementation

Return GUID of this attribute type.

const Standard_GUIDID () const override
 material name / tag (transient data)
 
void Restore (const occ::handle< TDF_Attribute > &theWith) override
 Restore attribute from specified state.
 
occ::handle< TDF_AttributeNewEmpty () const override
 Create a new empty attribute.
 
void Paste (const occ::handle< TDF_Attribute > &theInto, const occ::handle< TDF_RelocationTable > &theRelTable) const override
 Paste this attribute into another one.
 
void DumpJson (Standard_OStream &theOStream, int theDepth=-1) const override
 Dumps the content of me into the stream.
 

Additional Inherited Members

- Public Types inherited from Standard_Transient
typedef void base_type
 Returns a type descriptor about this object.
 
- Protected Member Functions inherited from TDF_Attribute
 TDF_Attribute ()
 Initializes fields.
 

Detailed Description

Attribute storing Material definition for visualization purposes.

Visualization material provides extended information about how object should be displayed on the screen (albedo, metalness, roughness - not just a single color as in case of XCAFDoc_Color). It is expected to correlate with physical material properties (XCAFDoc_Material), but not necessarily (like painted/polished/rusty object).

The document defines the list of visualization materials via global attribute XCAFDoc_VisMaterialTool, while particular material assignment to the shape is done through tree-nodes links. Therefore, XCAFDoc_VisMaterialTool methods should be used for managing XCAFDoc_VisMaterial attributes.

Visualization material definition consists of two options: Common and PBR (for Physically Based Rendering). Common material definition is an obsolete model defined by very first version of OpenGL graphics API and having specific hardware-accelerated implementation in past (like T&L). PBR metallic-roughness model is closer to physical material properties, and intended to be used within physically-based renderer.

For compatibility reasons, this attribute allows defining both material models, so that it is up-to Data Exchange and Application deciding which one to define and use for rendering (depending on viewer capabilities). Automatic conversion from one model to another is possible, but lossy (converted material will not look the same).

Within Data Exchange, different file formats have different capabilities for storing visualization material properties from simple color (STEP, IGES), to common (OBJ, glTF 1.0) and PBR (glTF 2.0). This should be taken into account while defining or converting document into one or another format - material definition might be lost or disturbed.

See also
XCAFDoc_VisMaterialTool

Constructor & Destructor Documentation

◆ XCAFDoc_VisMaterial()

XCAFDoc_VisMaterial::XCAFDoc_VisMaterial ( )

Empty constructor.

Member Function Documentation

◆ AlphaCutOff()

float XCAFDoc_VisMaterial::AlphaCutOff ( ) const
inline

Return alpha cutoff value; 0.5 by default.

◆ AlphaMode()

Graphic3d_AlphaMode XCAFDoc_VisMaterial::AlphaMode ( ) const
inline

Return alpha mode; Graphic3d_AlphaMode_BlendAuto by default.

◆ BaseColor()

Quantity_ColorRGBA XCAFDoc_VisMaterial::BaseColor ( ) const

Return base color.

◆ CommonMaterial()

const XCAFDoc_VisMaterialCommon & XCAFDoc_VisMaterial::CommonMaterial ( ) const
inline

Return common material. Note that default constructor creates an empty material (.

See also
XCAFDoc_VisMaterialCommon::IsDefined).

◆ ConvertToCommonMaterial()

XCAFDoc_VisMaterialCommon XCAFDoc_VisMaterial::ConvertToCommonMaterial ( )

Return Common material or convert PBR into Common material.

◆ ConvertToPbrMaterial()

XCAFDoc_VisMaterialPBR XCAFDoc_VisMaterial::ConvertToPbrMaterial ( )

Return PBR material or convert Common into PBR material.

◆ DumpJson()

void XCAFDoc_VisMaterial::DumpJson ( Standard_OStream & theOStream,
int theDepth = -1 ) const
overridevirtual

Dumps the content of me into the stream.

Reimplemented from TDF_Attribute.

◆ FaceCulling()

Graphic3d_TypeOfBackfacingModel XCAFDoc_VisMaterial::FaceCulling ( ) const
inline

Returns if the material is double or single sided; Graphic3d_TypeOfBackfacingModel_Auto by default.

◆ FillAspect()

void XCAFDoc_VisMaterial::FillAspect ( const occ::handle< Graphic3d_Aspects > & theAspect) const

Fill in graphic aspects.

◆ FillMaterialAspect()

void XCAFDoc_VisMaterial::FillMaterialAspect ( Graphic3d_MaterialAspect & theAspect) const

Fill in material aspect.

◆ GetID()

static const Standard_GUID & XCAFDoc_VisMaterial::GetID ( )
static

Return attribute GUID.

◆ HasCommonMaterial()

bool XCAFDoc_VisMaterial::HasCommonMaterial ( ) const
inline

Return TRUE if common material is defined; FALSE by default.

◆ HasPbrMaterial()

bool XCAFDoc_VisMaterial::HasPbrMaterial ( ) const
inline

Return TRUE if metal-roughness PBR material is defined; FALSE by default.

◆ ID()

const Standard_GUID & XCAFDoc_VisMaterial::ID ( ) const
inlineoverridevirtual

material name / tag (transient data)

Implements TDF_Attribute.

◆ IsDoubleSided()

bool XCAFDoc_VisMaterial::IsDoubleSided ( ) const
inline
Deprecated
("Deprecated method, FaceCulling() should be used instead")

◆ IsEmpty()

bool XCAFDoc_VisMaterial::IsEmpty ( ) const
inline

Return TRUE if material definition is empty.

◆ IsEqual()

bool XCAFDoc_VisMaterial::IsEqual ( const occ::handle< XCAFDoc_VisMaterial > & theOther) const
inline

Compare two materials. Performs deep comparison by actual values - e.g. can be useful for merging materials.

◆ NewEmpty()

occ::handle< TDF_Attribute > XCAFDoc_VisMaterial::NewEmpty ( ) const
overridevirtual

Create a new empty attribute.

Implements TDF_Attribute.

◆ Paste()

void XCAFDoc_VisMaterial::Paste ( const occ::handle< TDF_Attribute > & theInto,
const occ::handle< TDF_RelocationTable > & theRelTable ) const
overridevirtual

Paste this attribute into another one.

Parameters
theInto[in/out] target attribute to copy this into
[in]theRelTablerelocation table

Implements TDF_Attribute.

◆ PbrMaterial()

const XCAFDoc_VisMaterialPBR & XCAFDoc_VisMaterial::PbrMaterial ( ) const
inline

Return metal-roughness PBR material. Note that default constructor creates an empty material (.

See also
XCAFDoc_VisMaterialPBR::IsDefined).

◆ RawName()

const occ::handle< TCollection_HAsciiString > & XCAFDoc_VisMaterial::RawName ( ) const
inline

Return material name / tag (transient data, not stored in the document).

◆ Restore()

void XCAFDoc_VisMaterial::Restore ( const occ::handle< TDF_Attribute > & theWith)
overridevirtual

Restore attribute from specified state.

Parameters
[in]theWithattribute state to restore (copy into this)

Implements TDF_Attribute.

◆ SetAlphaMode()

void XCAFDoc_VisMaterial::SetAlphaMode ( Graphic3d_AlphaMode theMode,
float theCutOff = 0.5f )

Set alpha mode.

◆ SetCommonMaterial()

void XCAFDoc_VisMaterial::SetCommonMaterial ( const XCAFDoc_VisMaterialCommon & theMaterial)

Setup common material.

◆ SetDoubleSided()

instead void XCAFDoc_VisMaterial::SetDoubleSided ( bool theIsDoubleSided)
inline
Deprecated
("Deprecated method, SetFaceCulling() should be used "

◆ SetFaceCulling()

void XCAFDoc_VisMaterial::SetFaceCulling ( Graphic3d_TypeOfBackfacingModel theFaceCulling)

Specifies whether the material is double or single sided.

◆ SetPbrMaterial()

void XCAFDoc_VisMaterial::SetPbrMaterial ( const XCAFDoc_VisMaterialPBR & theMaterial)

Setup metal-roughness PBR material.

◆ SetRawName()

void XCAFDoc_VisMaterial::SetRawName ( const occ::handle< TCollection_HAsciiString > & theName)
inline

Set material name / tag (transient data, not stored in the document).

◆ UnsetCommonMaterial()

void XCAFDoc_VisMaterial::UnsetCommonMaterial ( )
inline

Setup undefined common material.

◆ UnsetPbrMaterial()

void XCAFDoc_VisMaterial::UnsetPbrMaterial ( )
inline

Setup undefined metal-roughness PBR material.


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