VRML缺点:建模粗糙、对大型场景的管理能力较差、可实现的交互性操作比较简单、对多用户和共享场景的支持能力比较有限。
公司打算弄一套 三维系统,用VRML加载3D Max 模型,实时数据在三维界面的显示,所以需要学习这门语言(虽然过时,但是能实现某些东西,结果 js和算法导论一同学习)。
VRML文件采用的是文本文件格式,扩展名为.wrl和.wrz。
在运行.wrl文件时,首先要加载VRML浏览器,然后进入浏览器观察运行结果。
VRML文件一般有 文件头、节点和路由组成。节点是VRML文件的基本单位:
#VRML V 2.0 UTF8 #VRML的文件标志
节点名{ #VRML的各种节点
域 域值 #对应节点的域和域值
}
Script{ #脚本Script节点
}
ROUTE 入事件 TO 出事件 #路由:把入事件与出事件相关联
VRML文件区分大小写。
注释方法: 1、# 2 //
VRML空间是一个虚拟的三维空间,在该空间中造型的位置是由这个造型所处的三维空间坐标系决定的。
点的坐标是通过坐标值来确定的。
在VRML 中,空间单位都是统一的,只有一个单位标量,即VRML单位,和尺寸没有可比性。
VRML的事件可分为绝对事件和相对时间。
VRML的数据类型分为两类:单值和多值。单位:其类型符为:SF ,多值:MF ,多个MF数据之间用逗号或者空格分开,并且用方括号括起来,单值不需要。
SFBool:布尔值,值为TRUE或FALSE,不能用 0和1 表示。
SFFolt 和MFFolt:单个或多个单精度浮点数,如: 1.1,[0.0 1.2]。如果定义 field MFFolt A[0.1 ,1.2],若用数组表示时,则为: A[0] = 0.1,A[1]=1.2
SFString 和MFString:单个或多个字符串。VRML字符串用双引号。如果字符串中有双引号,需要在双引号前加反斜杠“\”。
SFVec2f 和MFVec2f:单个或多个二维向量,每个二维向量包含两个浮点数,如 0.0 1.0,[0.3 1.2,0.1 0.0](含有两组浮点数)。
SFVec3f 和MFVec3f:单个或多个三维向量,每个三维向量包含两个浮点数,如 0.0 1.0 0.5,[0.3 1.2,0.1 0.0,0.0 2.1](含有两组浮点数)。
SFTime和MFTime:单个或多个时间值,时间采用绝对时间。
SFRotation 和MFRotation:单个或多个围绕指定转轴的一组数据,包含四个浮点数,前三个是指定的旋转轴坐标,后一个是以弧度表示的旋转角度,弧度大于0表示顺时针旋转,否则是逆时针旋转。如 0.0 1.0 0.0 1.57 ,表示绕Y轴顺时针旋转90度。
SFImage和MFImage:单个或多个非压缩的二维彩色或灰色图像,数据以三个整数引导,后跟多个用空格或者逗号分离的十六进制数,前面两个是每个图元素的宽度和高度比,第三个整数表示十六进制数的字节个数。如 2 2 3 0X3F6030 0X05FF20 0X4080FF 0XFIFB09.
SFColor 和MFColor:单个或多个颜色分量。每个颜色分量包含三个浮点数,如 0.0 1.0 0.5 ,分别对应 红、绿、蓝 颜色的分量。
SFNode 和MFNode :单个或多个单节点,如 field SFNode sec USE A1 ,定义个一个普通域 SFNode型变量 sec,对应于按照标准节点编写的节点A1.
在VRML中,节点是构成虚拟场景的基本单元,节点由域和事件组成,域的取值决定节点的取值,从而决定虚拟场景的当前状态。
节点是对现实世界中各种对象和概念的抽象描述,作用是描述空间造型及其属性。
VRML提供了54种节点类型:(7种):几何节点、属性节点、编制节点、传感器节点、插补节点、脚本节点和其他节点。
VRML2.0使用场景图来规定节点之间的等级关系与镶嵌关系。
域可以理解为 高级语言中的 变量 数组 数据库的字段等。
具有属性、行为的实体或模型称为对象,VRML中的节点就是对象,也可以是自定义的其他对象,有的对象具有收发信息的功能,它是通过对象本身的事件来完成的。
事件为节点提供接受外界消息及向外界发送消息的功能。
单击鼠标是操作者所为,事件传感器的定时系统本身产生的事件,坐标值变化时节点本身产生的事件等。对象的事件具有数据类型,即事件传递的节点域值的数据类型。
每一个节点都有两种事件:入事件和出事件。入事件接受变化的域值,是自己的域发生变化,以改变虚拟场景。出事件对域值改变进行设置。
连接一个对象的出事件和另一个对象的入事件的路径称为路由。它是产生事件和接受事件的节点之间的连接通道。创建路由之后,线路路由将处于睡眠状态,直到有一个事件从发送点发送到接受节点。