第一章 实现电脑空间的梦想
1.1 本章主要内容
1.2 VRML 1.0的起源
1.2.1 科学幻想的遗产
1.2.2 虚拟现实
1.2.3 全球计算机网络
1.2.4 Pesce和Parise先生
1.2.5 VRML 2.0的实现
1.2.6 VRML 1.0的问题
1.3 索尼的Virtual Society计划
1.3.1 一个共享的空间结构
1.3.2 索尼的扩展VRML 1.0(E-VRML)
1.3.3 多用户行为
1.4 VRML 2.0的起源——Moving Worlds计划
1.5 从“Moving Worlds”的VRML 2.0
1.5.1 VRML 2.0的其它竞争对手
1.5.1.1 苹果机——Out of This World计划
1.5.1.2 德国国家信息产业研究中心GMD——The Power Of Dynamic Worlds计划
1.5.1.3 IBM日本公司——Reactive Virtual Environments计划
1.5.1.4 微软公司——Active VRML计划
1.5.1.5 Sun公司——HoloWeb计划
1.5.2 投票选举
1.5.3 把计划发展成一种标准
1.6 VRML 2.0目前的状态
1.7 小结
第二章 在3D场景中加入动作
2.1 本章主要内容
2.2 执行模式
2.3 行为的可能方法
2.3.1 API方法
2.3.2 语言方法
2.3.3 基于事件的方法
2.4 VRML 2.0的场景
2.4.1 结点
2.4.1.1 命名结点
2.4.1.2 组结点和子结点
2.4.1.3 页结点
2.4.2 场景
2.5 执和模式:细节
2.5.1 VRML 2.0中的字段
2.5.1.1 一个例子:Transform结点
2.5.2 路线
2.5.3 多连事件、散开模式和回路事件
2.5.4 骑自行车例
2.5.4.1 事件源
2.5.4.2 插入器
2.5.4.3 时间传感器
2.5.5 3D场景中的时间
2.5.6 执行模式的总结
2.6 静态、动态行为
2.7 更进一步:用户行为
2.8 看动作中的自行车例子
2.8.1 安装CP
2.8.2 第一个例子
2.8.3 试一试其他事情
2.9 小结
第三章 轻松JAVA
3.1 本章主要内容
3.2 动态行为
3.3 Script结点
3.4 在Script结点和JAVA程序代码之间通讯
3.4.1 从Script结点到JAVA代码
3.4.1.1 事件类
3.4.1.2 把VRML类型映射到JAVA类
3.4.2 访问Script结点的别的字段
3.4.2.1 一个例子:写JAVA控制台程序
3.4.3 从JAVA程序到Script结点
3.4.4 访问其他结点的域
3.4.4.1 结点类
3.4.5 其它特殊方法
3.4.5.1 ProcessEvent( )
3.4.5.2 EventsProcessed( )
3.4.5.3 Shutdown
3.5 Script和执行模式
3.5.1 Directoutput和MusteValue
3.6 JAVA类
3.7 Scripting的能力
3.7.1 为什么静态行为是不够的
3.7.2 编译Java Script程序
3.7.3 别的Java类
3.8 浏览器API
3.9 小结
第四章 高级VRML技术
4.1 本章主要内容
4.2 构造场景:一个音像店
4.3 接触传感器回顾
4.3.1 描述鼠标事件
4.3.2 将事件返回给灯
4.3.3 TouchSensor的其他有用信息
4.4 使用TimeSensor和JAVA
4.4.1 一次性计数器
4.5 Sound和AudioClip结点
4.5.1 Sound结点
4.5.2 AudioClip结点
4.5.3 对话代理机
4.6 在场景中确定用户的位置:Proximitysensor接近传感器
4.6.1 用ProximitySensor进行Fine-Grined跟踪
4.7 使智能代理机更灵活:Switch结点
4.8 碰撞检测
4.9 处理大型场景:使用LOD(Level Of Detail)
4.9.1 使用LOD在不同模型中切换
4.10 使用Viewpoint结点远距离传送
4.10.1 ViewPoint用于驾驶结点的高级技术
4.11 自己设计:Proto结点
4.12 共享你的成果:EXTERNPROTO
4.13 小结
第五章 高级JAVA技术
5.1 本章主要内容
5.2 JAVA、文件访问和VRML
5.2.1 Community Place的安全限制
5.2.2 设置访问控制列
5.2.3 简单文件的输入输出例子(日期信息)
5.2.3.1 例子是如何工作的
5.2.3.2 异常与VRML Java API
5.2.4 目录浏览实例
5.3 使用Java Windows System(AWT)
5.3.1 简单窗口例子(芝麻开门)
5.3.2 VRML场景
5.3.2.1 JAVA程序
5.3.2.2 例子是如何工作的
5.3.3 使用AWT构造一个简单的实时VRML操作器
5.3.3.1 VRML
5.3.3.2 JAVA程序
5.4 使用网络
5.4.1 网络访问控制
5.4.2 简单的网络例子(公路幻景)
5.4.2.1 位置服务器
5.4.2.2 位置服务器如何工作
5.4.2.3 运行服务器程序
5.4.2.4 客户端程序(ExampleClient.wrl和ExampleClient.java)
5.4.2.5 客户端如何工作
5.4.2.6 运行服务器
5.5 建立一个多用户系统
5.5.1 多线程
5.5.2 客户端代码
5.5.2.1 MuDispatcher
5.5.3 客户端代码
5.5.3.1 多用户VRML场景和它的替身
5.5.3.2 MuClient
5.5.3.3 MuReceiver
5.5.4 例子的扩展
5.6 小结
第六章 高效实用的VRML技巧和线索
6.1 本章主要内容
6.2 效果和VRML 2.0
6.3 执行模式
6.3.1 路径容错性
6.3.1.1 SFTime和时间相关结点
6.3.2 时间和插入器
6.3.2.1 平滑动画费用很大:Time Sensor是明选择
6.4 构造技术
6.4.1 双面多边形
6.4.2 使用视导导航
6.4.3 动画:权衡速度与表现力
6.4.3.1 技术之一:Script结点
6.4.3.2 技术之二:基于其它运动实体的动画
6.4.3.3 技术之三:在运行时动态添加和删除结点
6.4.4 实现高执行和优美外观
6.4.5 在大型复杂场景中使用LOD
6.4.6 使用内联模型
6.4.7 使用PROTO
6.4.8 使用EXTERN PROTO构造普通类库
6.4.9 Community Place的开发功能
6.5 JAVA执行
6.5.1 在Script结点中保存值
6.5.2 限制Script实行的数目
6.5.3 限制实时对象生成的使用
6.5.4 各种各样的调试技巧
6.5.4.1 在Script结点的字段中设置参数
6.5.5 使用“调试与捕获”
6.6 声音、Community Place和VRML 2.0
6.6.1 MIDI
6.6.2 WAV
6.6.3 MOD
6.6.4 DirectSound
6.6.4.1 声音合成
6.6.4.2 声音的立体化
6.7 小结
第七章 VRML的未来
7.1 本章主要内容
7.2 VRML出路在何方
7.2.1 目前工作
7.2.1.1 二进制文件格式
7.2.1.2 扩展接口
7.2.1.3 内置脚本语言
7.3 行业技术
7.3.1 连续媒体技术
7.3.2 商用电子对应的家用PC机
7.3.2.1 WEB电视
7.3.2.2 Set Top Boxes
7.4 多用户支持和共享场景
7.4.1 Living World
7.4.2 Universal Avatars
7.4.3 共享行为
7.4.3.1 共享行为的语义学
7.5 Community Place的多用户部分
7.5.1 浏览器——服务器通信
7.5.2 服务器
7.5.3 应用程序模式
7.5.3.1 简单共享脚本
7.5.3.2 应用对象AO
7.6 多用户技术的应用
7.7 小结
附录 A VRML和3D原理
A.1 开始
A.1.1 VRML标准单位
A.1.2 坐标系统、光线模式和显示
A.2 在三维空间中的线性变换和其它变形
A.2.1 对象旋转
A.2.2 改变比例
A.2.3 Center、ScaleOrientation及Transform结点字段
A.3 VRML结点
A.3.1 结点字段
A.3.2 显示色彩系统
A.3.3 加视虚拟场景
A.4 有用的结点描述
A.4.1 群组结点
A.4.1.1 Anchor{}
A.4.1.2 Billboard{}
A.4.1.3 Inline{}
A.4.2 有用的结点描述
A.4.2.1 Anchor{}
A.4.2.2 NavigationInfo{}
A.4.2.3 Background{}
A.4.2.4 Fog{}
A.4.2.5 WorldInfo{}
A.5 将你的VRML文件在Internet网上发表
A.6 欢迎您加入
附录 B 用于VRML 2.0的JAVA类别
B.1 Exposed类和结点及字段的方法
B.1.1 字段类和ConstField类
B.1.1.1 只读类
B.1.1.2 可写类
B.1.2 字段类方法
B.2 结点类
B.3 浏览器类
B.4 用户定义的类和封装
B.5 标准JAVA封装
B.6 异常
B.7 类层次结构
B.8 VRML封装
B.9 VRML.FIELD包
B.10 VRML.NODE包
B.11 异常类的例子
附录 C 参考资源
C.1 参考文献
C.2 与VRML相关的站点
C.3 VRML 2.0计划
C.4 与JAVA相关的站点
附录 D 安装Community Place
D.1 怎样安装Community Place(版本1.1测试版)
D.1.1 复制
D.1.2 解压缩
D.1.3 安装
D.1.4 启动Community-Place浏览器
D.2 删除Community Place
D.3 Community Place的路径结构
D.4 如何从光盘上安装JDK
D.4.1 删除过去的JDK版本
D.4.2 复制
D.4.3 解压缩
D.4.4 刷新路径环境变量
D.4.5 刷新CLASSPATH的环境变量
D.4.6 使用JDK
D.5 为Community Place Browser设置Java Development环境
D.5.1 解压缩
D.5.2 刷新CLSSPATH环境变量
D.5.3 为Community Place Broswer编辑JAVA程序
D.6 为Community Place的帮助版安装Netscape
D.7 硬件要求
附录 E 所附光盘的内容
E.1 索尼公司的Community Place VRML 2.0版本的浏览器
E.2 Community Place Bureau多用户服务器
E.3 介绍Win 95服务器
E.4 在线的Community Place教程
E.5 转换器VRML1.0到VRML 2.0
E.6 VRML 2.0说明
E.7 本书的例子
第二章
第三章
第四章
第五章
第六章
E.8 其它例子
E.9 Virual Society主页
E.10 资源目录
E.10.1 VRML相关的网址
E.10.2 与JAVA相关的网址
E.11 转换器(VRML 1.0到VRML 2.0)