VRML---第一章(基本概念、语法)

VRML缺点:建模粗糙、对大型场景的管理能力较差、可实现的交互性操作比较简单、对多用户和共享场景的支持能力比较有限。

公司打算弄一套 三维系统,用VRML加载3D Max 模型,实时数据在三维界面的显示,所以需要学习这门语言(虽然过时,但是能实现某些东西,结果  js和算法导论一同学习)。

 

VRML的语法与结构

VRML文件采用的是文本文件格式,扩展名为.wrl和.wrz。

在运行.wrl文件时,首先要加载VRML浏览器,然后进入浏览器观察运行结果。

VRML文件一般有 文件头、节点和路由组成。节点是VRML文件的基本单位:

#VRML  V 2.0 UTF8   #VRML的文件标志

节点名{                      #VRML的各种节点

    域             域值      #对应节点的域和域值

}

Script{                      #脚本Script节点

}

ROUTE 入事件 TO 出事件   #路由:把入事件与出事件相关联

 

VRML文件区分大小写。

注释方法:  1、# 2 //

 

VRML的空间坐标

VRML空间是一个虚拟的三维空间,在该空间中造型的位置是由这个造型所处的三维空间坐标系决定的。

 

VRML---第一章(基本概念、语法)_第1张图片

点的坐标是通过坐标值来确定的。

VRML计量单位

在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中,节点是构成虚拟场景的基本单元,节点由域和事件组成,域的取值决定节点的取值,从而决定虚拟场景的当前状态。

节点是对现实世界中各种对象和概念的抽象描述,作用是描述空间造型及其属性。

VRML提供了54种节点类型:(7种):几何节点、属性节点、编制节点、传感器节点、插补节点、脚本节点和其他节点。

VRML2.0使用场景图来规定节点之间的等级关系与镶嵌关系。

域可以理解为 高级语言中的 变量 数组 数据库的字段等。

VRML的事件和路由

具有属性、行为的实体或模型称为对象,VRML中的节点就是对象,也可以是自定义的其他对象,有的对象具有收发信息的功能,它是通过对象本身的事件来完成的。

事件

事件为节点提供接受外界消息及向外界发送消息的功能。

单击鼠标是操作者所为,事件传感器的定时系统本身产生的事件,坐标值变化时节点本身产生的事件等。对象的事件具有数据类型,即事件传递的节点域值的数据类型。

每一个节点都有两种事件:入事件和出事件。入事件接受变化的域值,是自己的域发生变化,以改变虚拟场景。出事件对域值改变进行设置。

 

路由

连接一个对象的出事件和另一个对象的入事件的路径称为路由。它是产生事件和接受事件的节点之间的连接通道。创建路由之后,线路路由将处于睡眠状态,直到有一个事件从发送点发送到接受节点。

 

 

你可能感兴趣的:(VRML语法)