VRML是一种与互联网结合,用来描述三维交互世界的程序语言,VRML即Virtual-Reality Modeling Language。
SGI开发的Open Inventor软件的开放式三维文件格式被选定作为VRML的文件格式。1995年,VRML1.0版本正式推出,1996年推出了VRML2.0版本,添加了场景交互 多媒体支持 碰撞检测等功能,VRML2.0一直沿用,直到HTML5取代其地位。
第一章:简介篇
VRML文件被存储为.wrl格式(读作dot world),wrl是文本叙述文件,使用UTF-8字符集,可以使用任何文本编辑器来编写VRML文件,只要保存时保存成为.wrl后缀即可。wrl格式的文件可以被安装了插件的浏览器或专门的浏览wrl文件的软件打开,这里推荐几款相关的软件及下载链接:
wrl文件编辑器:VrmlPad3.0 这是一款不错的编辑器,可以帮助你分析 创建wrl文件;
wrl文件浏览器:Cortona3D 这块软件可以作为一个浏览器插件,也可以作为VrmlPad的预览工具;
在Matlab的 虚拟现实工具箱 也提供了打开和编辑wrl文件的工具,节点(Node)是VRML中的最基本单位,关于wrl文件的格式,将在下节进行详解。
第二章:格式篇
醒目,力荐:一份节点模型详尽介绍的文档:wrl.ppt
在介绍wrl文件之前,先展示一份wrl文件
#VRML V2.0 utf8 # File generated by InnovMetric Software Inc. # 16783 vertices, 32416 triangles. # 1 blocks. # Input directory: F:\POL-DB\001 Transform { children [ WorldInfo { info [ "Input Format: pol"] } Viewpoint { position 45.4901 -58.6223 -946.649 orientation 0 0 1 0 } # Block 1 Shape { appearance Appearance { material Material { diffuseColor 0.8 0.8 0.8 transparency 0 } } geometry IndexedFaceSet { coord Coordinate { point [ -143.705 -200.667 -1644, -143.129 -201.525 -1637.29, -141.77 -200.39 -1641.39, -141.235 -201.197 -1634.83, -140.022 -200.046 -1640.07, -139.323 -200.949 -1632.37, ......
1.VRML文件的头
#VRML V2.0 utf8
VRML文件的头是固定的,任何VRML程序的第一行一定要写上这个头,以表明:它是VRML文件 使用VRML2.0规格 使用UTF-8字符集。
其中 # 符号为文件的注释符。
2.节点
节点(Node)是VRML中的最基本单位,每个节点还可以包括子节点。一个节点通常包括节点的名称,一对大括号,以及字段和字段值,例如:
Material { diffuseColor 0.8 0.8 0.8 transparency 0 }
前面是字段,后面的数字是字段的值
VRML的节点分为两类:图形节点和非图形节点。
图形节点包括几何类型(Box Sphere 等)描述了某种形状, 属性节点(Appearance Material等)描述了物体的属性,如外观材质等,组节点(Shape Transform等)是由一组点或形状连同属性等一起组织起来的整体。
组节点 | 几何节点 | 属性节点 |
Shape Anchor Billboard Collsion Group Transform Inline LOD Switch |
Box Cone Cylinder ElevationGrid Extrusion IndexedFaceSet IndexedLineSet PointSet Sphere Text |
Appearance Color Coordinate FontStyle ImageTexture Material MovieTexture Normal PixelTexture TextureCoordinate TextureTransform |
非图形节点通过给3D世界增加声音/触发事件和动画数据给VRML2.0增加动态效果
声音 | 触发事件 | 动画数据 |
AudioClip Sound |
CylinderSensor PlaneSensor ProximitySensor SphereSensor TimeSensor TouchSensor VisibilitySensor Script |
ColorInterpolator CoordinateInterpolator NormalInterpolator OrientationInterpolator PositionInterpolator ScalarInterpolator |
3.事件
节点可以通过接受事件而改变,大部分节点有能力处理进入事件(eventin),通过接受eventin的只是,节点可以改变目前状态,例如:节点的颜色可以改变,再送出一些发生事件(Eventout),这一系列的过程被称作事件的路由。
第三章:节点篇
1.模型节点——Shape
2.箱形节点——Box
3.几何圆锥形节点——Cone
4.集合圆柱形节点——Cylinder
5.几何球体节点——Sphere
6.地标网格节点——ElevationGrid
7.成形节点——Extrusion
8.点集节点——PointSet
9.指针线集合节点——IndexedLineset
10.指针表面集合节点——IndexedFaceSet
11.文字节点——Text
……So on
这里有一份节点模型详尽介绍的文档:wrl.ppt
到这里,wrl文件的格式以及运行方式都在这份ppt当中,本篇便不赘述,下一节将进入实战,编写程序解析wrl格式的文件 。
See You Next Chapter!