IFC 4.3.0.0 (IFC4X3) final

8.12.3.35 IfcSurfaceTexture

ABSTRACT This definition may not be instantiated

8.12.3.35.1 Semantic definition

An IfcSurfaceTexture provides a 2-dimensional image-based texture map. It can either be given by referencing an external image file through an URL reference (IfcImageTexture), including the image file as a blob (long binary) into the data set (IfcBlobTexture), or by explicitly including an array of pixels (IfcPixelTexture).

The following definitions from ISO/IEC 19775-1 X3D Architecture and base components (X3D Specification) apply:

  • Texture: An image used in a texture map to create visual appearance effects when applied to geometry.
  • Texture map: A texture plus the general parameters necessary for mapping the texture to geometry.
  • Textures are defined by 2D images that contain an array of colour values describing the texture. The texture values are interpreted differently depending on the number of components in the texture and the specifics of the image format. In general, texture may be described using one of the following forms:
    1. Intensity textures (one-component)
    2. Intensity plus alpha opacity textures (two-component)
    3. Full RGB textures (three-component)
    4. Full RGB plus alpha opacity textures (four-component)

8.12.3.35.1.1 Texture coordinate systems

Figure 8.12.3.35.1.2.A illustrates the texture coordinate system.

texture coordinates
Figure 8.12.3.35.1.2.A — Surface texture coordinates

The following definitions from ISO/IEC 19775-1 X3D Architecture and base components (X3D Specification) on texture coordinates apply:

  • Texture maps are defined in a 2D coordinate system (s, t) that ranges from [0.0, 1.0] in both directions. The bottom edge of the image corresponds to the S-axis of the texture map, and left edge of the image corresponds to the T-axis of the texture map. The lower-left pixel of the image corresponds to s=0, t=0, and the top-right pixel of the image corresponds to s=1, t=1. Texture maps may be viewed as two dimensional colour functions that, given an (s, t) coordinate, return a colour value colour(s, t).
  • The RepeatS and RepeatT Boolean flags control whether the texture map is repeated outside the [0.0, 1.0] texture coordinate range, when applied to a geometric surface, or clamped to lie within the [0.0, 1.0] range. The TextureTransform applies a 2D non-uniform transformation to the texture before it is applied to a geometric surface.
  • These parameters support changes to the size, orientation, and position of textures on shapes. Note that these operations appear reversed when viewed on the surface of geometry. For example, a scale value of (2 2) will scale the texture coordinates and have the net effect of shrinking the texture size by a factor of 2 (texture coordinates are twice as large and thus cause the texture to repeat). A translation of (0.5 0.0) translates the texture coordinates +.5 units along the S-axis and has the net effect of translating the texture −0.5 along the S-axis on the geometry's surface. A rotation of Ï€/2 of the texture coordinates results in a −π/2 rotation of the texture on the geometry.
  • The center field specifies a translation offset in texture coordinate space about which the rotation and scale fields are applied. The scale field specifies a scaling factor in S and T of the texture coordinates about the center point. scale values shall be in the range (−∞,∞). The rotation field specifies a rotation in radians of the texture coordinates about the center point after the scale has been applied. A positive rotation value makes the texture coordinates rotate counterclockwise about the centre, thereby rotating the appearance of the texture itself clockwise. The translation field specifies a translation of the texture coordinates.

The following conventions apply:

  • center = TextureTransform.LocalOrigin;
  • rotation = TextureTransform.Axis1
  • scale S = TextureTransform.Scale
  • scale T = TextureTransform.Scale2

The mapping of the texture onto the surface or the solid is determined with the following priority:

  1. If the geometry is of a special IFC type which defines a texture mapping, such as an IfcSphere, IfcBlock, or IfcExtrudedAreaSolid, then that definition is the default texture mapping.
  2. If IfcTextureCoordinate texture coordinates are assigned to a surface texture, these texture coordinates are used.
  3. If the geometry has no texture mapping definition and no texture coordinates, the texture s coordinate comes from local vertex X coordinate, and t coordinate comes from local vertex Y coordinate. Along each axis, the s and t texture coordinate goes from 0 to 1, as the geometry goes from bounding box minimum to maximum.

8.12.3.35.1.2 Texture modes

A texture may belong to a mode, which determines how the texture affects the reflectance method in IfcSurfaceStyleRendering as described in Table 8.12.3.35.1.2.A. Only a single texture may be supplied per texture Mode type (DIFFUSE, SPECULAR, etc).

Mode PHONG PHYSICAL FLAT
AMBIENT Yes No No
NORMAL Yes Yes No
EMISSIVE Yes Yes Yes
METALLICROUGHNESS No Yes No
OCCLUSION Yes Yes No
SHININESS Yes No No
SPECULAR Yes No No
DIFFUSE Yes Yes No
Table 8.12.3.35.1.2.A — Which texture nodes are applicable in different reflectance methods.

8.12.3.35.2 Entity inheritance

8.12.3.35.3 Attributes

# Attribute Type Description
IfcSurfaceTexture (7)
1 RepeatS IfcBoolean

The RepeatS field specifies how the texture wraps in the S direction. If RepeatS is TRUE (the default), the texture map is repeated outside the [0.0, 1.0] texture coordinate range in the S direction so that it fills the shape. If RepeatS is FALSE, the texture coordinates are clamped in the S direction to lie within the [0.0, 1.0] range.

2 RepeatT IfcBoolean

The RepeatT field specifies how the texture wraps in the T direction. If RepeatT is TRUE (the default), the texture map is repeated outside the [0.0, 1.0] texture coordinate range in the T direction so that it fills the shape. If RepeatT is FALSE, the texture coordinates are clamped in the T direction to lie within the [0.0, 1.0] range.

3 Mode OPTIONAL IfcIdentifier

Mode shall hold the type of map this corresponds to, chosen from the following list: AMBIENT, NORMAL, EMISSIVE, METALLICROUGHNESS, OCCLUSION, SHININESS, SPECULAR, DIFFUSE.

If Mode is omitted, DIFFUSE is assumed.

4 TextureTransform OPTIONAL IfcCartesianTransformationOperator2D

The TextureTransform defines a 2D transformation that is applied to the texture coordinates. It affects the way texture coordinates are applied to the surfaces of geometric representation itesm. The 2D transformation supports changes to the size, orientation, and position of textures on shapes. Mirroring is not allowed to be used in the IfcCartesianTransformationOperator

5 Parameter OPTIONAL LIST [1:?] OF IfcIdentifier
IsMappedBy SET [0:?] OF IfcTextureCoordinate FOR Maps

Texture coordinates, either provided by a corresponding list of texture vertices to vertex-based geometric items or by a texture coordinate generator, that applies the surface texture to the surfaces of the geometric items.

UsedInStyles SET [0:?] OF IfcSurfaceStyleWithTextures FOR Textures

No description available.

Table 8.12.3.35.1.2.B

8.12.3.35.4 Formal representation

ENTITY IfcSurfaceTexture
 ABSTRACT SUPERTYPE OF (ONEOF
	(IfcBlobTexture
	,IfcImageTexture
	,IfcPixelTexture))
 SUBTYPE OF (IfcPresentationItem);
	RepeatS : IfcBoolean;
	RepeatT : IfcBoolean;
	Mode : OPTIONAL IfcIdentifier;
	TextureTransform : OPTIONAL IfcCartesianTransformationOperator2D;
	Parameter : OPTIONAL LIST [1:?] OF IfcIdentifier;
 INVERSE
	IsMappedBy : SET [0:?] OF IfcTextureCoordinate FOR Maps;
	UsedInStyles : SET [0:?] OF IfcSurfaceStyleWithTextures FOR Textures;
END_ENTITY;

8.12.3.35.5 References

8.12.3.35.6 Changelog

  • attributes, Parameter
  • inverses, IsMappedBy
  • inverses, UsedInStyles
  • attributes RepeatS definition, Changed from boolean to IfcBoolean
  • attributes RepeatT definition, Changed from boolean to IfcBoolean
  • attributes TextureType definition, Changed from IfcSurfaceTextureEnum to IfcIdentifier
  • attributes TextureType is_optional, Changed from False to True
  • attributes TextureType name, Changed from TextureType to Mode