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)
-
- IfcSurfaceTexture
- IfcColourRgbList
- IfcColourSpecification
- IfcCurveStyleFont
- IfcCurveStyleFontAndScaling
- IfcCurveStyleFontPattern
- IfcIndexedColourMap
- IfcPreDefinedItem
- IfcSurfaceStyleLighting
- IfcSurfaceStyleRefraction
- IfcSurfaceStyleShading
- IfcSurfaceStyleWithTextures
- IfcTextStyleForDefinedFont
- IfcTextStyleTextModel
- IfcTextureCoordinate
- IfcTextureVertex
- IfcTextureVertexList
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.4 形式化命题(Formal propositions)
| 名称 | 描述 |
|---|---|
| MinPixelInS |
宽度(S 坐标)方向上的最小像素数应为 1。 |
|
|
| MinPixelInT |
高度(T 坐标)方向上的最小像素数应为 1。 |
|
|
| NumberOfColours |
颜色分量的数量应为 1、2、3 或 4。 |
|
|
| PixelAsByteAndSameLength |
为每个 Pixel 提供的二进制值应为 8 位的倍数。并且所有像素应具有相同的二进制长度。 |
|
|
| SizeOfPixelList |
像素列表应恰好有 width*height 个成员。 |
|
|
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;