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!