开篇语 1
第一章 第一天课程——VRML背景 3
1.1 为何在web上使用3D 3
1.1.1 面向多媒体的web内容 4
1.2 用3D表示更丰富的用户经验 6
1.3 标准的3D文件格式 8
1.4 VRML的短暂历史 9
1.4.1 需求 10
1.4.2 发展过程 10
1.4.3 结束 11
1.5 创作VRML世界 11
1.5.1 创建3D内容 11
1.5.2 显示3D图形 12
1.6 建立VRML世界 13
1.7 小结 13
1.8 问与答 14
第二章 第二天课程——VRML的基本概念 15
2.1 2D与3D图形 15
2.2 什么是场景图 16
2.2.1 场景图的图形化描述 16
2.3 节点和域 18
2.4 形状和几何体 19
2.4.1 坐标空间 20
2.5 素材和外部特征 21
2.6 VRML 2文件格式 22
2.6.1 缩进和特殊符号 23
2.6.2 域数据类型 23
2.6.3 向文件中填加节点 24
2.7 小结 25
2.8 问与答 25
2.8.1 练习 26
2.8.2 答案 26
第三章 第三天课程——构造场景 27
3.1 变换和层次结构 27
3.1.1 放缩和旋转 32
3.1.2 center和scaleor?entation 34
3.1.3 组织各种层次变换 36
3.2 组和变换 37
3.3 基本几何原型 37
3.4 利用DEF/USE重用部分场景 40
3.5 小结 43
3.6 问与答 44
3.6.1 练习 44
第四章 第四天课程——构造复杂的对象 45
4.1 indexedFaceSet 45
4.2 线和点 51
4.3 仰角格 54
4.4 挤压 56
4.5 文本 60
4.6 将几何体组合到复杂的对象中 60
4.7 小结 61
4.8 问与答 62
4.8.1 练习 62
第五章 第五天课程——对象的外部特征 63
5.1 纹理 63
5.2 纹理变换 68
5.3 定制纹理应用 71
5.4 改变文本的字形 73
5.5 高级素材的使用 76
5.6 使用每一个顶点的颜色 77
5.7 小结 79
5.8 问与答 79
5.8.1 练习 80
第六章 第六天课程——使用光源 81
6.1 照亮3D模型 81
6.2 简单的VRML照明 82
6.3 高级VRML照明 85
6.4 素材、纹理和照明 89
6.5 介绍几何法向量 89
6.6 小结 92
6.7 问与答 92
6.7.1 练习 93
第七章 第七天课程——视点、声音和定位器 95
7.1 导航器介绍 95
7.1.1 化身 97
7.2 添加视点 97
7.3 环境声音 100
7.4 向场景中添加定位的声音 102
7.5 定位器 104
7.6 小结 106
7.7 问与答 106
7.7.1 练习 107
第八章 第八天课程——事件和路由 109
8.1 为3D世界赋予活力 109
8.1.1 节点之间的通信 110
8.1.2 改变域 111
8.2 创建路由 111
8.3 域和事件 112
8.3.1 eventln 114
8.3.2 eventout 114
8.3.3 Field(域) 114
8.3.4 exposedField 115
8.4 用TouchSensor感知对象 115
8.4.1 isOver和isActive事件 117
8.4.2 touchTime事件 119
8.4.3 Vector事件 120
8.5 小结 121
8.6 问与答 121
8.6.1 练习 121
8.6.2 答案 122
第九章 第九天课程——为对象加入行为 125
9.1 对象插值法 125
9.2 移动对象 126
9.3 随时间改变对象 127
9.4 旋转对象 129
9.4.1 复杂的旋转 131
9.5 变体 134
9.6 其它插值器 138
9.7 小结 139
9.8 问与答 139
9.8.1 练习 140
9.8.2 答案 140
第十章 第十天课程——脚本 147
10.1 为什么使用脚本 147
10.2 创建Script节点 148
10.2.1 Script节点中的域和事件 148
10.2.2 添加脚本 150
10.3 用eventIn执行脚本 151
10.4 用VRMLScript编写脚本 151
10.4.1 赋值 152
10.4.2 表达式 152
10.4.3 计算顺序 153
10.4.4 赋值操作符 154
10.4.5 具有字符串的表达式 154
10.4.6 类型转换 155
10.4.7 引用 156
10.4.8 条件(if)语句 157
10.4.9 比较操作符 157
10.4.10 布尔操作符 158
10.5 Script的eventout和域 159
10.6 访问其它节点 160
10.7 浏览器接口 161
10.8 其它脚本语言 162
10.9 小结 163
10.10 问与答 163
10.10.1 练习 164
10.10.2 答案 164
第十一章 第十一天课程——用户与对象进行交互 169
11.1 用TouchSensor进行感应 169
11.1.1 hitPoint_changed事件 170
11.1.2 hitNormal_changed事件 172
11.1.3 hitTexCoord_changed事件 175
11.2 拖拉对象 177
11.2.1 相对拖拉 179
11.2.2 PlancSensor的其它功能 180
11.3 高级操作 180
11.3.1 CylinderSensor 180
11.3.2 SphereSensor 182
11.4 感应用户的位置 183
11.5 其它类型的感应器 184
11.6 小结 185
11.7 问与答 185
11.7.1 练习 186
第十二章 第十二天课程——电影、切换和公告牌 187
12.1 MovieTexture节点 187
12.2 电影和声音 188
12.3 开始和停止电影 190
12.4 切换场景的组件 190
12.5 使用Billboard 193
12.6 动画角色 195
12.7 小结 199
12.8 问与答 200
12.8.1 练习 200
12.8.2 答案 200
第十三章 第十三天课程——定时事件和周期 207
13.1 定时的基础 207
13.2 设定将来的事件 209
13.3 用isActivc指示定时器何时运行 211
13.4 使用cycleTime和time输出 213
13.5 小结 214
13.6 问与答 214
13.6.1 练习 215
13.6.2 答案 215
第十四章 第十四天课程——动画视点和绑定 219
14.1 视点动画的基础 219
14.2 将用户绑定到视点 222
14.3 绑定堆栈 226
14.4 在绑定期间保留用户的位置 227
14.5 其它绑定节点 227
14.6 小结 229
14.7 问与答 229
14.7.1 练习 229
14.7.2 答案 230
第十五章 第十五天课程——充实场景和重用对象 235
15.1 用不同的资源组合对象 235
15.2 使用简单的VRML用户界面组件 238
15.3 使用Background节点 246
15.4 小结 248
15.5 问与答 249
15.5.1 练习 250
15.5.2 答案 250
第十六章 第十六天课程——制作高效的场景 255
16.1 多边形复杂性与纹理 255
16.2 LOD节点 257
16.3 公告牌用于远处的对象 262
16.4 用动画赋予对象生命 264
16.5 VisibilitySensor 265
16.6 小结 266
16.7 问与答 267
16.7.1 练习 268
16.7.2 答案 268
第十七章 第十七天课程——特殊效果 271
17.1 为降低复杂性而设定可视极限 271
17.2 使用烟雾 272
17.3 使用纹理坐标的动画 274
17.4 随时创建纹理 276
17.5 改变背景 278
17.6 小结 279
17.7 问与答 280
17.7.1 练习 281
17.7.2 答案 281
第十八章 第十八天课程——碰撞 285
18.1 碰撞如何工作 285
18.2 地势追踪和重力 286
18.3 碰撞感应 288
18.4 碰撞代理 290
18.5 小结 292
18.6 问与答 292
18.6.1 练习 293
18.6.2 答案 293
第十九章 第十九天课程——原型构造 297
19.1 原型构造的概念 297
19.2 PROTO节点 298
19.3 使用外部原型 301
19.4 通过原型构造创建标准接口 302
19.5 制作原型系统 304
19.6 小结 305
19.7 问与答 306
19.7.1 练习 306
19.7.2 答案 307
第二十章 第二十天课程——创建合成多媒体文档 313
20.1 帧的工作原理 313
20.2 用标准HTML标签创建帧 315
20.3 为VRML帧选择最佳选项 317
20.4 利用Anchor节点与HTML通信 317
20.5 用HTML的标签<A>与VRML帧通信 322
20.6 小结 324
20.7 问与答 324
20.7.1 练习 325
20.7.2 答案 325
第二十一章 第二十一天课程——未来展望 331
21.1 短期目标 331
21.1.1 外部创作接口 332
21.1.2 在Script节点中使用Java 332
21.1.3 提高性能的图形硬件 332
21.2 VRML的未来 333
21.2.1 一年以后 333
21.2.2 沿虚拟道路再走五年 333
21.2.3 远景目标 334
21.3 赛伯空间 334
21.3.1 第一步: 多用户环境 335
21.3.2 第二步: 共享行为 335
21.3.3 第三步: 持续性 336
21.3.4 第四步: 无缝环境 336
21.4 小结 336
21.5 问与答 337
21.5.1 练习 337
21.5.2 答案 337
附录A VRML节点参考 339
A.1 Anchor 340
A.2 Appesarance 340
A.3 AudoClip 341
A.4 Background 342
A.5 Billboard 343
A.6 Box 344
A.7 Collision 344
A.8 Color 345
A.9 ColorInterpoladtor 345
A.10 Cone 346
A.11 Coordinate 347
A.12 CoordinateInterpolator 347
A.13 Cylinder 348
A.14 CylinderSensor 348
A.15 DirectionalLight 349
A.16 ElevationGrid 350
A.17 Extrusion 351
A.18 Fog 352
A.19 FontStyle 353
A.20 Group 354
A.21 InageTexture 354
A.22 IndexedFaceSet 355
A.23 IndexedLineSet 357
A.24 InLine 357
A.25 LOD 358
A.26 Material 359
A.27 MovicTexture 359
A.28 NavigationInfo 360
A.29 Normal 361
A.30 Normallnterpolator 362
A.31 OrientationInterpolato 362
A.32 PixelTexture 363
A.33 PlaneScnsor 364
A.34 PointLight 364
A.35 PointSet 365
A.36 PositionInterpolator 366
A.37 ProximitySensor 366
A.38 ScalarInterpolator 367
A.39 Script 368
A.40 Shape 368
A.41 Sound 369
A.42 Sphere 370
A.43 SphereSensor 370
A.44 SpotLight 371
A.45 Switch 372
A.46 Text 373
A.47 TextureCoordinate 373
A.48 TextureTransform 374
A.49 TimeSensor 374
A.50 TouchSensor 375
A.51 Transform 376
A.52 Viewpoint 377
A.53 VisibilitySensor 378
A.54 WorldInfo 379
附录B VRML域和事件类型 381
B.1 SFBool 381
B.2 SFColor/MFColor 382
B.3 SFFloat/MFFloat 382
B.4 SFImage 382
B.5 SFInt 32/MFInt32 383
B.6 SFNode/MFNode 383
B.7 SFRotation/MFRotation 384
B.8 SFString/MFString 384
B.9 SFTime 384
B.10 SFVec2f/MFVec2f 385
B.11 SFVec3f/MFVec3f 385
附录C 词汇表 387