Class Ifc4::IfcSurfaceStyleRendering

Nested Relationships

This class is a nested type of Struct Ifc4.

Inheritance Relationships

Base Type

Class Documentation

class Ifc4::IfcSurfaceStyleRendering : public Ifc4::IfcSurfaceStyleShading

IfcSurfaceStyleRendering holds the properties for visualization related to a particular surface side style.

It allows rendering properties to be defined by:

a transparency component (Transparency attribute) a colour component (SurfaceColour attribute inherited from IfcSurfaceStyleShading) a reflectance component, given either by

applying reflectance factors to the surface colour:

diffuse component (SurfaceColour * DiffuseFactor)

transmission component (SurfaceColour * TransmissionFactor) diffuse transmission component (SurfaceColour * DiffuseTransmissionFactor) reflection component (SurfaceColour * ReflectionFactor) specular component (SurfaceColour * SpecularFactor attribute together with SpecularHighlight)

explicitly defining such factors as colours (DiffuseColour, TransmissionColour, DiffuseTransmissionColour, ReflectionColour and SpecularColour)

a displacement component, currently only given by a texture map with the TextureType = bump a coverage component, currently only given by the alpha component of the texture map (2 or 4 component colour texture)

NOTE: The inherited attribute SurfaceColour is treated as the ambient colour and specifies how much ambient light from light sources this surface shall reflect. Ambient light is omnidirectional and depends only on the number of light sources, not their positions with respect to the surface.

NOTE: If the reflectance method, as given by the IfcReflectanceMethodEnum is “GLASS”, the transmission factor controls the level of transparency in the glass, In this case the transparency factor is interpreted as transmission factor.

NOTE: Both Transparency and TransmissionColour (or factor) are included, the following definitions apply:

Transparency is the ratio of the transmitted flux in a solid angle of 2 * PI sr (one hemisphere). It is a simple colour filtration that does not account for refraction. Transmission factor of a material is the ratio of transmitted flux in a given solid angle to the transmitted flux of a completely diffuse material with 100% transmission in the same solid angle. It is the portion of light that goes through the material and may be refracted.

NOTE: IFC 2x2 adds additional capability for presentation of physically accurate illuminance on surfaces. VRML type rendering and rendering based on ISO 10303-46 continues to be supported by a subset of the information. For reflectance equations and further information about the surface style properties and its processing, see:

ISO/IEC 14772-1: 1997: The Virtual Reality Modeling Language

NOTE: The definition of IfcSurfaceStyleRenderingProperties includes the definitions as found in ISO 10303-46:1994, in particular of:

surface_style_rendering_with_properties surface_style_rendering_ambient surface_style_rendering_ambient_diffuse surface_style_rendering_ambient_diffuse_specular surface_style_transparent

In addition to the attributes as defined in ISO 10303-46, (ambient_reflectance, diffuse_reflectance, specular_reflectance, specular_exponent, and specular_colour), the current IFC definition adds other colours, reflectance factors and specular roughness.

HISTORY: New Entity in IFC 2x.

Public Functions

bool hasDiffuseColour() const

Whether the optional attribute DiffuseColour is defined for this IfcSurfaceStyleRendering.

::Ifc4::IfcColourOrFactor *DiffuseColour() const

The diffuse part of the reflectance equation can be given as either a colour or a scalar factor. The diffuse colour field reflects all light sources depending on the angle of the surface with respect to the light source. The more directly the surface faces the light, the more diffuse light reflects. The diffuse factor field specifies how much diffuse light from light sources this surface shall reflect. Diffuse light depends on the angle of the surface with respect to the light source. The more directly the surface faces the light, the more diffuse light reflects. The diffuse colour is then defined by surface colour * diffuse factor.

void setDiffuseColour(::Ifc4::IfcColourOrFactor *v)
bool hasTransmissionColour() const

Whether the optional attribute TransmissionColour is defined for this IfcSurfaceStyleRendering.

::Ifc4::IfcColourOrFactor *TransmissionColour() const

The transmissive part of the reflectance equation can be given as either a colour or a scalar factor. It only applies to materials which Transparency field is greater than zero. The transmissive colour field specifies the colour that passes through a transparant material (like the colour that shines through a glass). The transmissive factor defines the transmissive part, the transmissive colour is then defined by surface colour * transmissive factor.

void setTransmissionColour(::Ifc4::IfcColourOrFactor *v)
bool hasDiffuseTransmissionColour() const

Whether the optional attribute DiffuseTransmissionColour is defined for this IfcSurfaceStyleRendering.

::Ifc4::IfcColourOrFactor *DiffuseTransmissionColour() const

The diffuse transmission part of the reflectance equation can be given as either a colour or a scalar factor. It only applies to materials whose Transparency field is greater than zero. The diffuse transmission colour specifies how much diffuse light is reflected at the opposite side of the material surface. The diffuse transmission factor field specifies how much diffuse light from light sources this surface shall reflect on the opposite side of the material surface. The diffuse transmissive colour is then defined by surface colour * diffuse transmissive factor.

void setDiffuseTransmissionColour(::Ifc4::IfcColourOrFactor *v)
bool hasReflectionColour() const

Whether the optional attribute ReflectionColour is defined for this IfcSurfaceStyleRendering.

::Ifc4::IfcColourOrFactor *ReflectionColour() const

The reflection (or mirror) part of the reflectance equation can be given as either a colour or a scalar factor. Applies to “glass” and “mirror” reflection models. The reflection colour specifies the contribution made by light from the mirror direction, i.e. light being reflected from the surface. The reflection factor specifies the amount of contribution made by light from the mirror direction. The reflection colour is then defined by surface colour * reflection factor.

void setReflectionColour(::Ifc4::IfcColourOrFactor *v)
bool hasSpecularColour() const

Whether the optional attribute SpecularColour is defined for this IfcSurfaceStyleRendering.

::Ifc4::IfcColourOrFactor *SpecularColour() const

The specular part of the reflectance equation can be given as either a colour or a scalar factor. The specular colour determine the specular highlights (e.g., the shiny spots on an apple). When the angle from the light to the surface is close to the angle from the surface to the viewer, the specular colour is added to the diffuse and ambient colour calculations. The specular factor defines the specular part, the specular colour is then defined by surface colour * specular factor.

void setSpecularColour(::Ifc4::IfcColourOrFactor *v)
bool hasSpecularHighlight() const

Whether the optional attribute SpecularHighlight is defined for this IfcSurfaceStyleRendering.

::Ifc4::IfcSpecularHighlightSelect *SpecularHighlight() const

The exponent or roughness part of the specular reflectance.

void setSpecularHighlight(::Ifc4::IfcSpecularHighlightSelect *v)
::Ifc4::IfcReflectanceMethodEnum::Value ReflectanceMethod() const

Identifies the predefined types of reflectance method from which the method required may be set.

void setReflectanceMethod(::Ifc4::IfcReflectanceMethodEnum::Value v)
const IfcParse::entity &declaration() const
IfcSurfaceStyleRendering(IfcEntityInstanceData *e)
IfcSurfaceStyleRendering(::Ifc4::IfcColourRgb *v1_SurfaceColour, boost::optional<double> v2_Transparency, ::Ifc4::IfcColourOrFactor *v3_DiffuseColour, ::Ifc4::IfcColourOrFactor *v4_TransmissionColour, ::Ifc4::IfcColourOrFactor *v5_DiffuseTransmissionColour, ::Ifc4::IfcColourOrFactor *v6_ReflectionColour, ::Ifc4::IfcColourOrFactor *v7_SpecularColour, ::Ifc4::IfcSpecularHighlightSelect *v8_SpecularHighlight, ::Ifc4::IfcReflectanceMethodEnum::Value v9_ReflectanceMethod)

Public Static Functions

const IfcParse::entity &Class()