Extensible 3D (X3D)
Part 1: Architecture and base components
5 Field type reference
域类型参考
这一章节描述了X3D用来定义节点的域 的语法和一般语义学以及基本的数据类型。节点由这一条款中定义的域组成。更多信息参见 4.4.2, 对象模型(Object model).
有两类常见的域:一类只包含单值(可能一个单独的数,或一个矢量,或甚至可能是一幅图像);另外一类包含一个列表列出多个值。单值类型的域类型的名称以“SF”开始;多值类型的域 类型的名称以“MF”开始。
多值域的用一个排序表列出多个独立的值。如果域为零值,值为空但仍然存在。
Table 5.1 提供了这一条款的主要标题。
SFBool 域只包含单一的Boolean值。MFBool 域包含多个 Boolean值。每个Boolean 值可以是TRUE 或 FALSE。如何描述这些值基于编码的方式。
未初始化的SFBool域的初始值为FALSE。未初始化的MFBool域的初始值为空列表。
SFColor域指定了一个RGB (红绿蓝) 色彩三分量。MFColor指定了零个或更多的RGB三分量。X3D文件中的每个颜色值都由RGB三分量组成,每个色彩分量是一个范围在0.0 到1.0的浮点数。
未初始化SFColor域的初始值为(0 0 0)。未初始化的MFColor域的初始值为空列表。
SFColorRGBA域指定了一个包括alpha信息(透明度)的RGBA(红-绿-蓝-透明度)色彩四分量。MFColorRGBA指定了零个或更多的RGBA四分量。 X3D文件中的每个颜色值都由RGBA四分量组成,每个色彩分量是一个范围在0.0 到1.0的浮点数。 Alpha 值的范围是0.0 (完全透明) 到1.0 (完全不透明)。
未初始化的SFColorRGBA域的初始值为(0 0 0 0)。未初始化的MFColorRGBA域的初始值为空列表。
SFDouble 域指定了一个双精度浮点数。MFDouble 指定了零个或更多的双精度浮点数。X3D文件中SFDouble 和MFDouble 根据不同的编码有不同的描述方式。
执行这个域和处理器的双精度浮点指标有关。允许用固定小数点的科学计数法执行这个域,这时对于正数或负数,指数的范围至少要达到[-12, 12],小数点后的精度至少要达到14 位。
未初始化的SFDouble域的初始值为0.0。未初始化的MFDouble域的初始值为空列表。
SFFloat 域指定了一个单精度浮点数。MFFloat指定了零个或更多的单精度浮点数。X3D文件中SFFloats 和MFFloats 根据不同的编码有不同的描述方式。
执行这个域和处理器的单精度浮点指标有关。允许用固定小数点的科学计数法执行这个域,这时对于正数或负数,指数的范围至少要达到[-12, 12],小数点后的精度至少要达到6 位。
未初始化的SFFloat域的初始值为0.0。未初始化的MFFloat域的初始值为空列表。
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域的初始值为空列表。
SFInt32 域指定了一个32比特的整数。MFInt32域指定了一个或多个32比特的整数。
未初始化的SFInt32域的初始值为0。未初始化的MFInt32域的初始值为空列表。
SFNode域指定了一个X3D节点。MFNode域指定了零个或多个节点。
未初始化的SFNode域的初始值为NULL。未初始化的MFNode域的初始值为空列表。
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域的初始值为空列表。
SFString 和 MFString 域包含了用UTF-8 通用字符集编码的字符串(参见 2.[UTF8])。SFString 指定了单个字符串。MFString 指定了零个或多个字符串。字符串由一个UTF-8八字节序列组成。
任何字符 (包括换行符和'#') 都可以出现在字符串中。
未初始化的SFString outputOnly 域的初始值为空字符串。未初始化的MFString域的初始值为空列表。
SFTime域指定一个单一的时间值。MFTime域指定了单个或多个时间值。时间值是双精度的浮点数。按不同的编码方式的定义,用指定的格式纪录这组双精度浮点值。时间值指定了从特定时间原点经过的秒数。一般的,SFTime域表示从1970年1月1日,格林威治时间 00:00:00 经过的秒数。
未初始化的SFTime 域的初始值为-1。未初始化的MFTimefield域的初始值为空列表。
SFVec2d 域指定一个二维矢量。MFVec2d域指定零组或多组二维矢量。SFVec2d和MFVec2d 描述了一对双精度浮点值(参见 5.4 SFDouble)。按不同的编码方式的定义,用指定的格式纪录这组双精度浮点值。
未初始化的SFVec2d 域的初始值为(0 0)。未初始化的MFVec2d域的初始值为空列表。
SFVec2f 域指定一个二维矢量。MFVec2f 域指定零组或多组二维矢量。SFVec2f和MFVec2f描述了一对单精度浮点值。按不同的编码方式的定义,用指定的格式纪录这组单精度浮点值。
未初始化的SFVec2f 域的初始值为(0 0)。未初始化的MFVec2f域的初始值为空列表。
SFVec3d 域或事件指定一个三维矢量。MFVec3d域或事件指定零组或多组三维矢量。SFVec3d和MFVec3d描述了三个双精度浮点值组成的元组(参见 5.4 SFDouble)。按不同的编码方式的定义,用指定的格式纪录这组三元组双精度浮点值。
未初始化的SFVec3d域的初始值为(0 0 0)。未初始化的MFVec3d域的初始值为空列表。
SFVec3f 域或事件指定一个三维矢量。MFVec3f 域或事件指定零组或多组三维矢量。SFVec3f和MFVec3f描述了三个单精度浮点值组成的元组。按不同的编码方式的定义,用指定的格式纪录这组三元组单精度浮点值。
未初始化的SFVec3f域的初始值为(0 0 0)。未初始化的MFVec3f域的初始值为空列表。
翻译m17 保留版权 如需转载请联系 http://m17design.myetang.com/x3d