Extensible 3D (X3D)
Part 1: Architecture and base components

5 Field type reference

域类型参考

--- X3D separator bar ---

cube 5.1 General

这一章节描述了X3D用来定义节点的 的语法和一般语义学以及基本的数据类型。节点由这一条款中定义的域组成。更多信息参见 4.4.2, 对象模型(Object model).

有两类常见的域:一类只包含单值(可能一个单独的数,或一个矢量,或甚至可能是一幅图像);另外一类包含一个列表列出多个值。单值类型的域类型的名称以“SF”开始;多值类型的域 类型的名称以“MF”开始。

多值域的用一个排序表列出多个独立的值。如果域为零值,值为空但仍然存在。

Table 5.1 提供了这一条款的主要标题。

表 5.1 — 这一条款的主要标题

--- X3D separator bar ---

cube 5.2 SFBool and MFBool

SFBool 域只包含单一的Boolean值。MFBool 域包含多个 Boolean值。每个Boolean 值可以是TRUE 或 FALSE。如何描述这些值基于编码的方式。

未初始化的SFBool域的初始值为FALSE。未初始化的MFBool域的初始值为空列表。

--- X3D separator bar ---

cube 5.3 SFColor and MFColor

SFColor域指定了一个RGB (红绿蓝) 色彩三分量。MFColor指定了零个或更多的RGB三分量。X3D文件中的每个颜色值都由RGB三分量组成,每个色彩分量是一个范围在0.0 到1.0的浮点数。

未初始化SFColor域的初始值为(0 0 0)。未初始化的MFColor域的初始值为空列表。

--- X3D separator bar ---

cube 5.4 SFColorRGBA and MFColorRGBA

SFColorRGBA域指定了一个包括alpha信息(透明度)的RGBA(红-绿-蓝-透明度)色彩四分量。MFColorRGBA指定了零个或更多的RGBA四分量。 X3D文件中的每个颜色值都由RGBA四分量组成,每个色彩分量是一个范围在0.0 到1.0的浮点数。 Alpha 值的范围是0.0 (完全透明) 到1.0 (完全不透明)。

未初始化的SFColorRGBA域的初始值为(0 0 0 0)。未初始化的MFColorRGBA域的初始值为空列表。

--- X3D separator bar ---

cube 5.5 SFDouble and MFDouble

SFDouble 域指定了一个双精度浮点数。MFDouble 指定了零个或更多的双精度浮点数。X3D文件中SFDouble 和MFDouble 根据不同的编码有不同的描述方式。

执行这个域和处理器的双精度浮点指标有关。允许用固定小数点的科学计数法执行这个域,这时对于正数或负数,指数的范围至少要达到[-12, 12],小数点后的精度至少要达到14 位。

未初始化的SFDouble域的初始值为0.0。未初始化的MFDouble域的初始值为空列表。

--- X3D separator bar ---

cube 5.6 SFFloat and MFFloat

SFFloat 域指定了一个单精度浮点数。MFFloat指定了零个或更多的单精度浮点数。X3D文件中SFFloats 和MFFloats 根据不同的编码有不同的描述方式。

执行这个域和处理器的单精度浮点指标有关。允许用固定小数点的科学计数法执行这个域,这时对于正数或负数,指数的范围至少要达到[-12, 12],小数点后的精度至少要达到6 位。

未初始化的SFFloat域的初始值为0.0。未初始化的MFFloat域的初始值为空列表。

--- X3D separator bar ---

cube 5.7 SFImage and MFImage

SFImage 域指定了一个非压缩的二维像素图像。SFImage域首先列出三个整数值:图像宽、高、像素分量的数量,接下来按照 宽×高 数量以十六进制值或整数值,描述图像中每一个像素。 MFImage 包含零个或多个SFImage域。MFImage 域中的每一个SFImage域可以定义不同的图像宽、高、像素分量的数量,可以定义不同的十六进制值或整数值。

像素值限制在256级强度(比如十进制数0-255 或十六进制数0x00-0xFF )。单分量图像指定了单字节的十六进制数或整数值,以描述图像的亮度。比如,0xFF 是十六进制表示的全亮度(十进制的255),0x00 表示没有亮度(十进制的0)。双分量的图像中,第一个字节(高位字节)指定了亮度信息,第二个字节(低位字节)指定了alpha透明度信息。三分量像素指定了红色(第一个字节(高位字节))、绿色、蓝色的分量信息。 (比如 0xFF0000 表示红色,0x00FF00 表示绿色,0x0000FF 表示蓝色)。四分量的图像在红/绿/蓝的字节后指定了alpha透明度的字节(比如 0x0000FF80 表示一个半透明的蓝色)。0x00 值表示完全透明,0xFF表示完全不透明。如果alpha 和 transparency 值范围0.0 到1.0之间,是alpha值设置为1.0 和transparency 值设置为1.0效果相同。

每一个值都被读成无符号数。所以,三分量的像素值 0x0000FF 也可以被写为 0xFF (十六进制) 或 255 (十进制)。像素顺序是从左至右,从下至上。第一个值是左下脚的像素,最后一个值是右上脚的像素。

SFImage outputOnly 域初始值为 (0 0 0)。MFImage域的初始值为空列表。

--- X3D separator bar ---

cube 5.8 SFInt32 and MFInt32

SFInt32 域指定了一个32比特的整数。MFInt32域指定了一个或多个32比特的整数。

未初始化的SFInt32域的初始值为0。未初始化的MFInt32域的初始值为空列表。

--- X3D separator bar ---

cube 5.9 SFNode and MFNode

SFNode域指定了一个X3D节点。MFNode域指定了零个或多个节点。

未初始化的SFNode域的初始值为NULL。未初始化的MFNode域的初始值为空列表。

--- X3D separator bar ---

cube 5.10 SFRotation and MFRotation

SFRotation域指定了一个任意的旋转。MFRotation 域指定了零个或多个任意的旋转值。X3D文件中的SFRotation 被写为一个四浮点数值。按不同的编码方式的定义,用指定的格式纪录这组浮点值。前面的三个值指定了沿旋转轴心旋转的轴的法线化向量。第四个值以弧度值指定了沿旋转轴的右手旋转量。

3x3 矩阵描述了(x y z a)的旋转

    [ tx2+c    txy+sz    txz-sy
      txy-sz   ty2+c     tyz+sx
      txz+sy   tyz-sx    tz2+c  ]

    其中 c = cos(a), s = sin(a), and t = 1-c

未初始化的SFRotation域的初始值为(0 0 1 0)。未初始化的MFRotation域的初始值为空列表。

--- X3D separator bar ---

cube 5.11 SFString and MFString

SFString 和 MFString 域包含了用UTF-8 通用字符集编码的字符串(参见 2.[UTF8])SFString 指定了单个字符串。MFString 指定了零个或多个字符串。字符串由一个UTF-8八字节序列组成。

任何字符 (包括换行符和'#') 都可以出现在字符串中。

未初始化的SFString outputOnly 域的初始值为空字符串。未初始化的MFString域的初始值为空列表。

--- X3D separator bar ---

cube 5.12 SFTime and MFTime

SFTime域指定一个单一的时间值。MFTime域指定了单个或多个时间值。时间值是双精度的浮点数。按不同的编码方式的定义,用指定的格式纪录这组双精度浮点值。时间值指定了从特定时间原点经过的秒数。一般的,SFTime域表示从1970年11日,格林威治时间 00:00:00 经过的秒数。

未初始化的SFTime 域的初始值为-1未初始化的MFTimefield域的初始值为空列表。

--- X3D separator bar ---

cube 5.13 SFVec2d and MFVec2d

SFVec2d 域指定一个二维矢量。MFVec2d域指定零组或多组二维矢量。SFVec2d和MFVec2d 描述了一对双精度浮点值(参见 5.4 SFDouble)。按不同的编码方式的定义,用指定的格式纪录这组双精度浮点值。

未初始化的SFVec2d 域的初始值为(0 0)。未初始化的MFVec2d域的初始值为空列表。

--- X3D separator bar ---

cube 5.14 SFVec2f and MFVec2f

SFVec2f 域指定一个二维矢量。MFVec2f 域指定零组或多组二维矢量。SFVec2f和MFVec2f描述了一对单精度浮点值。按不同的编码方式的定义,用指定的格式纪录这组单精度浮点值。

未初始化的SFVec2f 域的初始值为(0 0)未初始化的MFVec2f域的初始值为空列表。

--- X3D separator bar ---

cube 5.15 SFVec3d and MFVec3d

SFVec3d 域或事件指定一个三维矢量。MFVec3d域或事件指定零组或多组三维矢量。SFVec3d和MFVec3d描述了三个双精度浮点值组成的元组(参见 5.4 SFDouble)。按不同的编码方式的定义,用指定的格式纪录这组三元组双精度浮点值。

未初始化的SFVec3d域的初始值为(0 0 0)。未初始化的MFVec3d域的初始值为空列表。

--- X3D separator bar ---

cube 5.16 SFVec3f and MFVec3f

SFVec3f 域或事件指定一个三维矢量。MFVec3f 域或事件指定零组或多组三维矢量。SFVec3f和MFVec3f描述了三个单精度浮点值组成的元组。按不同的编码方式的定义,用指定的格式纪录这组三元组单精度浮点值。

未初始化的SFVec3f域的初始值为(0 0 0)。未初始化的MFVec3f域的初始值为空列表。

--- X3D separator bar ---