IFC 4.3.2.20251031 (IFC4X3_ADD2) under development

8.12.3.22 IfcPixelTexture(像素纹理)

8.12.3.22.1 语义定义(Semantic definition)

IfcPixelTexture 提供基于二维图像的纹理贴图,作为像素值的显式数组(Pixel 二进制属性列表)。与 IfcImageTexture 不同,IfcPixelTexture 直接保存像素颜色(和透明度)的二维列表,而非引用 URL。

以下定义来自 ISO/IEC 19775-1 X3D 架构和基础组件(X3D 规范):

  • PixelTexture 节点将基于二维图像的纹理贴图定义为像素值(图像字段)的显式数组,以及控制纹理在几何体上平铺重复的参数。
  • 纹理贴图在二维坐标系 (s, t) 中定义,该坐标系在两个方向上的范围均为 0.0 到 1.0。像素图像的底边对应于纹理贴图的 S 轴,像素图像的左边对应于纹理贴图的 T 轴。像素图像的左下角像素对应于 s=0.0, t=0.0,图像的右上角像素对应于 s=1.0, t=1.0。
  • Image 字段指定单个未压缩的二维像素图像。图像字段包含三个整数,分别表示图像的宽度、高度和组件数量,后跟表示图像中像素的宽度×高度个十六进制值。像素值限制为 256 个强度级别(即十六进制的 0x00-0xFF)。
  • 单组件图像指定一个字节的十六进制值,表示图像的强度。例如,0xFF 是十六进制的全强度(十进制的 255),0x00 是无强度(十进制的 0)。
  • 双组件图像在第一个(高位)字节中指定强度,在第二个(低位)字节中指定 alpha 不透明度。
  • 三组件图像中的像素在第一个(高位)字节中指定红色分量,后跟绿色和蓝色分量(例如,0xFF0000 是红色,0x00FF00 是绿色,0x0000FF 是蓝色)。
  • 四组件图像在红/绿/蓝之后指定 alpha 不透明度字节(例如,0x0000FF80 是半透明蓝色)。值 00 表示完全透明,FF 表示完全不透明,80 表示半透明。
  • 请注意,如果 alpha 和透明度各自的范围为 0.0 到 1.0,则 alpha 等于 (1.0 - 透明度)。

8.12.3.22.2 实体继承(Entity inheritance)

8.12.3.22.3 特性(Attributes)

# 特性(Attributes) 类型 描述
IfcSurfaceTexture (7)
1 RepeatS IfcBoolean

RepeatS 字段指定纹理在 S 方向上的包裹方式。如果 RepeatS 为 TRUE(默认值),纹理贴图在 S 方向的 [0.0, 1.0] 纹理坐标范围外重复,以填充形状。如果 RepeatS 为 FALSE,纹理坐标在 S 方向上被限制在 [0.0, 1.0] 范围内。

2 RepeatT IfcBoolean

RepeatT 字段指定纹理在 T 方向上的包裹方式。如果 RepeatT 为 TRUE(默认值),纹理贴图在 T 方向的 [0.0, 1.0] 纹理坐标范围外重复,以填充形状。如果 RepeatT 为 FALSE,纹理坐标在 T 方向上被限制在 [0.0, 1.0] 范围内。

3 Mode OPTIONAL IfcIdentifier

Mode 应保存此纹理对应的贴图类型,从以下列表中选择:AMBIENT、NORMAL、EMISSIVE、METALLICROUGHNESS、OCCLUSION、SHININESS、SPECULAR、DIFFUSE。

如果省略 Mode,则假定为 DIFFUSE。

4 TextureTransform OPTIONAL IfcCartesianTransformationOperator2D

TextureTransform 定义应用于纹理坐标的二维变换。它影响纹理坐标应用于几何表示项表面的方式。二维变换支持更改形状上纹理的大小、方向和位置。IfcCartesianTransformationOperator 中不允许使用镜像。

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

纹理坐标,由相应的纹理顶点列表提供给基于顶点的几何项,或由纹理坐标生成器提供,将表面纹理应用于几何项的表面。

UsedInStyles SET [0:?] OF IfcSurfaceStyleWithTextures FOR Textures

无可用描述

点击显示 7 个隐藏的继承特性 点击隐藏 7 个继承特性
IfcPixelTexture (4)
6 Width IfcInteger

宽度(S)方向上的像素数量。

7 Height IfcInteger

高度(T)方向上的像素数量。

8 ColourComponents IfcInteger

指示像素值是包含 1、2、3 还是 4 个颜色分量。

9 Pixel LIST [1:?] OF IfcBinary

十六进制值的平面列表,每个值通过 1、2、3 或 4 个分量描述一个像素。

表 8.12.3.22.A

8.12.3.22.4 形式化命题(Formal propositions)

名称 描述
MinPixelInS

宽度(S 坐标)方向上的最小像素数应为 1。

Width >= 1
MinPixelInT

高度(T 坐标)方向上的最小像素数应为 1。

Height >= 1
NumberOfColours

颜色分量的数量应为 1、2、3 或 4。

{1 <= ColourComponents <= 4}
PixelAsByteAndSameLength

为每个 Pixel 提供的二进制值应为 8 位的倍数。并且所有像素应具有相同的二进制长度。

SIZEOF(QUERY(temp<* Pixel |
 (BLENGTH(temp) MOD 8 = 0) AND
 (BLENGTH(temp) = BLENGTH(Pixel[1]))
)) = SIZEOF(Pixel)
SizeOfPixelList

像素列表应恰好有 width*height 个成员。

SIZEOF(Pixel) = (Width * Height)
表 8.12.3.22.B

8.12.3.22.5 形式化表示(Formal representation)

ENTITY IfcPixelTexture
 SUBTYPE OF (IfcSurfaceTexture);
	Width : IfcInteger;
	Height : IfcInteger;
	ColourComponents : IfcInteger;
	Pixel : LIST [1:?] OF IfcBinary;
 WHERE
	MinPixelInS : Width >= 1;
	MinPixelInT : Height >= 1;
	NumberOfColours : {1 <= ColourComponents <= 4};
	PixelAsByteAndSameLength : SIZEOF(QUERY(temp<* Pixel |
 (BLENGTH(temp) MOD 8 = 0) AND
 (BLENGTH(temp) = BLENGTH(Pixel[1]))
)) = SIZEOF(Pixel);
	SizeOfPixelList : SIZEOF(Pixel) = (Width * Height);
END_ENTITY;

8.12.3.22.6 参考文献