原文链接:http://17de.com/library/VRML_node/field.html

VRML97 域说明
VRML97 中有两类常见的域,一类只包含单值(所谓单值,可以是一个单独的数,也可以是定义一个向量或颜色的几个数,甚至可以是定义一幅图像的一组数)另外一类包含多个单值。单值类型的域,名称以“SF”开始;多值类型的域,名称以“MF”开始。在VRML文件中,表示多值域的方法是:一系列用逗号和空格间隔开的单值,整个用方括号括起来。如果一个多值域,不包含任何值,则只标出方括号(“[]”),其中不填任何数。如果一个多值域,恰好只包含一个数,可以不写括号,直接写该值。例如,可以表示一个多值域,其中只包含一个单独的整数1,下列两种方式均属有效:
本说明依次介绍两种域的值。单值类型的域按英文字母的顺序给出;多值域按相应的单值域配合列出。事件的类型与域的类型是完全一致的。每一个事件类型都具有一个相关的初始值,在类型描述中有所规定。当脚本试图读取一个尚未发送的输出事件的数值时,该初始值被返回。

SFBool

一个SFBool域只含有一个Bool值。TRUE和FALSE(不带引号也不带任何标点符号)是SFBool域仅有的两个有效值。SFBool输出事件的初始值是FALSE。注意:一般的程序设计重用1和0表示True和False值,在VRML中不允许。

SFColor 和 MFColor
SFColor域是只有一个颜色值的单值域。SFColor值和RGB值一样,由一组三个浮点数组成。每个数都是从0.0–1.0,极值包括在内,分别表示构成颜色的红绿蓝三个分量。MFColor域是一个多值域,包含任意数量的RGB颜色值。例如:

[ 1.0 0.0 0.0,0 1 0,0 0 1] 表示三种颜色红绿蓝的组成。

SFColor域的输出事件的初始值是(0,0,0)。而MFColor域的输出事件的初始值是[]。

SFFloat 和 MFFloat

一个SFFloat域含有一个ANSI C格式的单精度浮点数。一个MFFloat域含有零个或多个ANSI C格式的单精度浮点数。即允许空白,不赋任何值。SFFloat域输出事件的初始值为0.0。MFFloat域输出事件的初始值为[]。

SFImage

一个SFImage域含有非压缩的二维彩色图像或灰度图像。一个SFImage域,首先列出三个整数值,前两个表示图片的宽度和高度,第三个整数表示构成图像格式的元素个数(1–4),随后,按(宽度x高度)的格式列出一组16进制数,数与数之间以空格分隔,每一个16进制数表示图像中一个单独的像素。图像格式的元素个数表示这张图像是灰度图还是彩色图,以及是否包括透明像素或半透明像素。单元素图像中的每一个像素用一个16进制的字节表示,所表示的是一个像素的亮度。例如:0XFF表示最高亮度(白色),而0X00表示最低亮度(黑色)。双元素图像用两个字节表示一个像素。第一个字节表示亮度,第二个字节表示透明度。表示透明度时,字节为0xFF表示完全透明,而0x00表示不透明。所以0x40C0表示1/4亮度(暗灰)和3/4透明度。三元素图像的每个像素有三个字节表示,每个字节表示像素颜色中红绿蓝分量(所以0xFF0000表示红色)。四元素图像是在红绿蓝三色的值之外再加一个表示透明度的字节(所以0x0000FF80表示办透明的蓝色)。和双元素图像一样,透明度字节为0xFF表示完全透明,而0x00表示完全不透明。为了提高可读性,最好把所有的16进制字节都写全,包括前导0。然而,写出每个字节有时是不必要的。例如可以把一个三元素图像的蓝色像速写成0xFF而不是0x0000FF。像素的排列规定从左到右、从底到顶的顺序。第一个16进制数描述一个图像最左下角的像素,最后一个则描述右上角的像素。例:

1 2 1 0XFF 0X00 一个像素宽,两个像素高的灰度图像,底部像素是白的,顶部像素是黑的。

2 4 3 0XFF0000 0X00FF00 0 0 0 0 0XFFFFFF 0XFFFF00 两个像素宽,四个像素高的RBG图像,左下角像素是红色,右下角像素是绿色,中间两行是黑色,左上角像素是白色,右上角像素是黄色。

在任何脚本节点或原型内都可以使用这种类型的域,但是,使用的具体地点只能在PiexlTexture(像素纹理)节点。
SFImage域的输出事件的初始值为(0,0,0)。

SFInt32 和 MFInt32

一个SFInt32域含有一个32位整数。一个SFInt32值是由一个十进制或十六进制(以OX开头)格式的整数构成。
一个 MFInt32域是多值域,由任意数量的以逗号或空格分隔的整数组成。例如:

[17,-0xE20,-518820]

SFInt32域的输出事件的初始值为0,MFInt32域的输出事件的初始值为[]。

SFNode 和 MFNode

一个SFNode域含有一个单节点,必须按标准节点句法写成。一个MFNode域包含任意数量的节点。例:

[Transform{translation 1 0 0},
DEF PANDORA box{},
USE PANDORA]

一个SFNode允许包含一个关键字NULL,此时,表示它不包含任何节点。注意:一个组或一个变换的children域也就是列出一组节点的MFNode域。把SFNode域放入一个脚本节点,就使节点的脚本可以直接存取列在SFNode域的节点,而不需要一个ROUTE语句。SFNode域的输出事件的初始值为NULL,MFNode域的输出事件的初始值为[]。

SFRotation 和 MFRotation

SFRotation域规定一个绕任意轴的任意角度的旋转。SFRotation值含有四个浮点数,各数之间以空格分隔。前三个数表示旋转轴(从原点到给定点的向量);第四个数表示围绕上述轴旋转多少弧度。例:

绕y轴旋转180度; 表示为 0 1 0 3.1416

MFRotation域可包含任意数量的这类旋转值。注意:视点的旋转是从缺省的视点方向开始的,该方向是从(0,0,10)沿-z轴观察。SFRotation域的输出事件的初始值为(0 0 1 0),MFRotation域的输出事件的初始值为[]。

SFString 和 MFString

SFString域包含一串字符,各字符遵照UTF-8字符编码标准(ASCII是UTF-8的子集,可以由于SFString域)SFString值含有双引号括起来的UTF-8 octets字符串。任何字符(包括“#”和换行符)都可在双引号中出现。为了在字符中使用双引号,在它之前加一个反斜杠“\”。为了在字符串中使用反斜杠,连续打两个反斜杠“\”。例如:

“One,Two,Three,123.”
He asked, “Who is #1?”"

MFString域含有零个或多个单值,每个单值都和SFString值的格式一样。SFString域的输出事件的初始值为“”,MFString域的输出事件的初始值为[]。

SFTime 和 MFTime

SFTime域含有一个单独的时间值。每个时间值是一个ANSI C格式的双精度浮点数,表示的是从1970年1月1日(GMT,格林威治平均时)子夜开始计时,延续当前时间的秒数。MFTime域包含任意数量的时间值。SFTime域的输出事件的初始值为-1,MFTime域的输出事件的初始值为[]。

SFVec2f 和 MFVec2f

SFVec2f域定义了一个二维向量。SFVec2f的值是两个由空格分隔的浮点数。
MFVec2f域是多值域,包含任意数量的二维向量值。例如:

[0 0,1.2 3.4,98.6 -4e1]

SFVec2f域的输出事件的初始值为(0 0),MFVec2f域的输出事件的初始值为[]。

SFVec3f 和 MFVec3f

SFVec3f域定义了一个三维空间的向量。一个SFVec3f值包含三个浮点数,数与数之间以空格分隔。该值表示从原点到所给定点的向量。
MFVec3f域包含任意数量的三维向量值。例如:

[0 0 0,1.2 3.4 5.6,98.6 -461 451]

SFVec3f域的输出事件的初始值为(0 0 0),MFVec3f域的输出事件的初始值为[]。

【转】VRML97 域说明相关推荐

  1. RFC2616中文版

    转自:https://www.cnblogs.com/k1988/archive/2010/01/12/2165683.html 本备忘录的状态本文件规定了互联网社区的互联网标准跟踪协议,并要求对改进 ...

  2. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  3. kotlin设置CORS跨域资源共享,java设置允许跨域,服务端如何设置 springboot中设置跨域资源共享

    CORS通信过程,都是浏览器或http插件自动完成,不需要 用户/开发人员 参与.对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码是完全一样的.浏览器一旦发现AJAX请求跨源,就会自动添 ...

  4. 三层交换机原理:01路由器如何隔离广播域?

    前言: 当网络规模较大的时候,需要设备来隔离广播域,防止网络中因产生广播风暴而导致网络效率降低,而二层交换机不能隔离广播域,所以需要三层路由器设备来隔离广播域! 但三层路由器为什么能够隔离广播域,是如 ...

  5. 无监督域对抗算法:ICCV2019论文解析

    无监督域对抗算法:ICCV2019论文解析 Drop to Adapt: Learning Discriminative Features for Unsupervised Domain Adapta ...

  6. CVPR2019目标检测论文看点:并域上的广义交

    CVPR2019目标检测论文看点:并域上的广义交 Generalized Intersection over Union Generalized Intersection over Union: A ...

  7. 关于上传文件的跨域问题

    在进行新框架开发的过程中,需要自定义页面组件实现脱离表单的文件(图片)上传,考虑过wex5自带的attachmentsimple的自定义写法很难受,就改用了第三方插件webuploader来实现选择文 ...

  8. 170222、使用Spring Session和Redis解决分布式Session跨域共享问题

    使用Spring Session和Redis解决分布式Session跨域共享问题 原创 2017-02-27 徐刘根 Java后端技术 前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用 ...

  9. angularjs post 跨域

    web api搞好了:用Ajax妥妥的:但是前端用的AngulagJS,也懒得再换为Ajax了: 但是问题来了:提示: 已拦截跨源请求:同源策略禁止读取位于 http://x.x.x.x:port/a ...

最新文章

  1. 开源人工智能算法一种新颖的超像素采样网络深层特征来估计任务特定的超像素
  2. 声音信标发出白噪声和发出chirp信号的对比测距说明
  3. Cisco和H3C的两种不同动态***解决方案
  4. xml处理相关文章收藏
  5. python3 安装opencv_Page20-opencv的编译与安装
  6. oracle 10046详解
  7. 音视频技术开发周刊 | 144
  8. 存储过程打印超过8000的VARCHAR字符的问题
  9. 基于Jedis的工具类
  10. 前端学习(741):通过榨汁机看透函数
  11. html中怎么写多选框,如何在HTML中实现“选择所有”复选框?
  12. 关于如何提高代码执行效率。
  13. 用甘特图控件VARCHART XGantt搞定项目管理
  14. 关于peer‘s certificate issuer is not recognized问题的解决方法
  15. len(lst[0])
  16. 【oracle】oracle创建表、创建索引、创建自增id
  17. 什么是Accessibility(辅助功能)
  18. (2.1)关系模型之关系结构和约束
  19. 手机无线网络 dns服务器设置,iPhone手机网速慢?1分钟教你设置DNS,网速立马翻一番...
  20. 印度洋重建及东经九十度海岭

热门文章

  1. 单片机12864电子锁c语言代码,51单片机+LCD12864实现密码锁Proteus仿真和代码
  2. BreederDAO 元宇宙游戏资产工厂
  3. 【Python】piecewise与curve_fit分段线性函数拟合
  4. FZU - 1683 纪念SlingShot
  5. java打印ascii码_JAVA实现打印ascii码表的方法是什么
  6. 简述游标原理 mysql_SQL游标原理和使用方法_MySQL
  7. FPGA概念、芯片结构、工作原理、开发流程以及xilinx公司主要可编程芯片
  8. tof摄像头手势识别_手势控制背后的三种感应技术玄机
  9. 【C++ 泛型编程 进阶篇】:用std::integral_constant和std::is_*系列深入理解模板元编程
  10. Comparable和Comparator的用法和区别