以前,Web 上使用的 3D 曾经许诺要与构建一个 Web 页面一样简单。不幸的是,3D(即使是非常简单的 3D)也都比显示滚动的文本和图片要更加复杂。每个 VRML 供应商都实现了一组不同的规范,而且从来都不相互进行沟通。因此 Web 上的 3D 就慢慢消失了。否则又能怎样呢?后来出现了 XML 风格的 VRML:X3D,它已经成长为 VRML 的兄弟 H-Anim(Humanoid Animation)和 GeoVRML。Web 上的 3D 的最终用途可以超过虚拟购物中心吗?这篇有关 XML 媒体的最新文章展示了它能实现哪些功能。在本文中,Dethe 会着重介绍 X3D 的两种现在已经可以使用的用法,并展望一下 X3D 的未来。
从 Virtual Reality Markup Language(虚拟现实标记语言,VRML)试图卷入 Web 风潮而未获成功以来已经有 10 年的时间了。现在 X3D(使用 XML 开发的 VRML)已经成为一项 ISO 标准,并开始开发实现了。XGL(使用 XML 编写的 OpenGL)是一个与之竞争的 3D XML 规范。Web Hypertext Application Technologies Working Group(Web 超文本应用技术工作组,WHATWG)目前正在从事 3D canvas 提案的工作。开放源码的 3D 工具 Blender 现在可以导出 X3D(请参阅 参考资料中更多有关这些技术的内容)。在所有这些技术充分发展之后,也许就是浏览器中 3D 显示的新纪元了。这些技术会如何发展呢?它们可以与其他 XML 实现进行集成吗?例如 XHTML 和 SVG?
VRML 发生了什么?
当 HTML 依然是星星之火时,VRML 就已经出现了。这是试图将 View Source 和虚拟现实的概念连接在一起的一次尝试,可以对 Web 迅速进行扩展。作为一个概念来说这非常不错,但是它却面对着太多的限制:硬件尚未准备好,OpenGL 也不是一种标准的特性,现有的实现尚不完整,兼容性也不好。VRML 最广泛的用途就是虚拟购物中心,这并没有太多用处;因为这除了依然具有访问真正超市的所有不便之处,还引入了互联网购物的风险。VRML 继续被研究,大部分工作都是在研究领域中开展的,但是 Web 社区却不关心这种技术了。
但是它从来都没有完全消亡,而且时代已经变了。随着 XML 得到无所不在的应用,VRML 规范进行了重写,从而利用 XML 解释器的优点(以及程序员对 XML 比较熟悉这个优点)。最终得到的规范 X3D 是由 Web3D Consortium 负责维护的,它提供了开放源码的工具、例子和文档(请参阅 参考资料)。游戏、OpenGL 和廉价的显卡都驱动着标准计算机的图形能力向超过早期专用图形工作站(这些机器的成本比普通计算机高几个数量级)的方向发展。这些因素现在促进了 VRML 的又一次蓬勃发展。
X3D 正在不断发展。尽管目前它仍然只是一种前沿技术,但是使用这种技术的领域正在不断发展,而且变得更加重要。本文提供了两个在 X3D 的主要商业应用领域之外的例子:快速原型设计和教育。
它的性能怎么样呢?诸如 Quake 之类的游戏的引擎针对特定的角度和图像类型进行了优化;它们并不是通用的 3D 呈现引擎。另一方面,X3D 播放器不但是一个通用的 3D 引擎,而且构建并维护了一个场景图和一个 XML Document Object Model(DOM)树。然而,对于很多应用来说,目前的性能就已经足够了,以后可以再进行改进。
X3D(可能)成功的秘密是 OpenGL 已经成为无处不在的技术。使用 OpenGL,可以实时地呈现高品质的 3D 场景,而没有光线跟踪器那样大的开销。在 OpenGL 基础上构建的语言有很多,从 XGL(请参阅参考资料),它负责使用 XML 对 OpenGL API 进行编码;到 X3D,它负责提供一种高级接口,用来合并场景图、动画和脚本;再到 Flatland 的 3DML,这是基于构建块的概念的。尽管这些技术的使用日益简单,但是它们还是有很多限制。与易用性相比,X3D 看起来对性能的关注似乎不够;因为 XGL Web 页面已经有两年的时间没有更新了,而且 3DML 格式还没有广泛地得到应用。
在 VRML 进行标准化之后,又提出并开发了两个扩展:
- GeoVRML 用来克服 VRML 对整个世界的视角的有限性 —— 仅限于房间中的东西。GeoVRML 使得对室外场景使用 VRML 更加简单,例如海拔图。
- H-Anim 用来允许 VRML 对动画特性图进行建模 —— 这与商业程序 Poser 可以实现的功能类似,但是对于联结操作(用于逆向运动,从而提供真实的动画动作)方面有一些限制。
GeoVRML 和 H-Anim 都被吸收到了 X3D 规范中,但是由于 X3D 是模块化的,所以并非所有的配置文件和查看器都支持这些扩展。由于目前已经成为一项 ISO 标准,X3D 也从中获益良多。
- X3D 使用配置文件的形式定义了完整规范的几个子集:
- Interchange 配置文件可以支持几何、结构、基本光源和动画,它主要用来在应用程序之间转换数据。
- Interactive 配置文件添加了其他光源、增益和传感器节点,用来与 3D 环境进行交互。
- Immersive 配置文件添加了音频、冲突、雾化和脚本功能。
- Full 配置文件添加了 NURBS、H-Anim 和 GeoSpatial 组件。
这些是基本的配置文件。其他配置文件包括 MPEG-4 Interactive,这是 Interactive 配置文件的一个低级版本,目标是用于移动设备上;还有 CAD Distillation Format(CDF),用来转换和交换 Computer Aided Drafting(CAD)数据。
因此,X3D 目前可以用来干什么呢?Web3D 站点上列出的主要领域有 CAD、医疗图像和可视化仿真,但是还提到了制图、交互、技术训练和制作文档。X3D 还可以用于数据的可视化、快速原型、娱乐和游戏的开发。在本文中我们无法涵盖所有这些领域的内容,因此将只关注其中的两个领域 —— 快速原型开发和教育,然后我们再介绍一下 X3D 的前景。
快速原型开发
假设您希望开发一个新产品。但是应该如何向自己的潜在投资者(或顾客)介绍这个产品呢?可以构建一个物理模型,让一个艺术家在纸上将其呈现出来,或者使用 X3D 将其仿制出来,并让有兴趣的团体观看它。

图 1. 图形(一个概念性手持式计算机)
