X3D - 一次编写、处处、时时都可渲染的三维图形格式

X3D,一次编写、处处、时时都可渲染的三维图形格式。


W3C 正致力于增加HTML 5中对3D的支持,Web3D协会的X3D-HTML5工作组正与W3C紧密协作,阐述他们对整合X3D与HTML的思路和想法。其目标是让每个浏览器中都有一种通过DOM整合的跨平台、开发标准的三维图形渲染能力。
X3D 是一种抽象的图形格式;只要操作系统底层及硬件支持某些形式的像素显示,X3D就可在该环境下被渲染。不管你的设备是使用DirectX图形库还是继续不断发展的OpenGl版本系列、或一些至今为写出来的低级图形层,X3D将都能在其之上渲染,而且如果设备包含了用户i/o能力,X3D将也能使用该能力。

带有对HTML DOM使用事件传递的演示,可到此处观看,它采用X3DDOM - 一种实验性的开发运行环境,以JavaScript及WebGL实现,允许在(X)HTML页面中内联X3D内容。它执行当前 HTML5规范 - 描述性三维内容 并允许以作为HTML DOM树的方式包含X3D元素。
这种整合模型仍在发展中,并开发讨论。要推动该项尝试还有很多工作有待完成。有兴趣参与的请联系 John Stewart 。可以到X3D-HTML5 这里找到更多有关该工作组的信息。

 

 

Q1 HTML 5将增加对视频及3D的支持。我们谈论到了很多关于WebGL的内容,但你能给我们提供更多关于Web3D HTML 5工作组的信息吗?
A1 在开始这项讨论前,我将在HTML 5 3D沙箱中的沙里画一条线,并描述我在这条线两边所看到的,以及两边在Web上所具有的位置。
一方面,我们有Javascript的编程API,使用一些形式的三维画布,像WebGL或O3D。另一方面,我们有保留模式的、DOM整合的三维图形抽象,像X3D。
首先的一方面(让我们称之为Javascript方面)是由图形程序员创建,这些Coder有的希望让他们的硬件发挥最大的功效,有的则对 4x4矩阵的巧妙操作而陶醉,睡觉时都会梦到GLSL 。很多的X3D人,包括我自己,热衷于做这种东东。
第二个方面,我将称之为X3D方面,为那些web开发者或使用图形像他们的工作致意的人们。也许他们想构建三维用户界面,或者是他们在进行DNA的研究,或者采矿行业他们需要使用三维可视化作为工作的一部分。
分到X3D这边的人们可能也想使用在Javascript层所用不到的特性,如空间化声音,或者想使用已经包含在X3D的面向图形的概念,如光线交叉、碰撞检测或视图投影剔除(frustum culling )。
这些人可能也想他们的模型非常便携 - WebGL是紧密遵循 OpenGL ES 2.0的一种API,而同时设计上 X3D则是通用的,可以被OpenGL(任何版本)、DirectX或一些其它的未来的系统渲染。
所以,人们将会有选择。我们每天都会看到像这样的选择。拿汽车做比,有些人喜欢 like to get under the hood and tinker with the innards,有的人只喜欢进到车里面并开到目的地。我们把Javascript这边看作是修补工具,而X3D作为仅想舒适的从“A”到达“B”的人们的交通工具。
   
Q2 HTML5类浏览器在不需要任何插件的情况下将能显示X3D文件,有这种机会吗?
A2 这是绝对的 - 这正是我们与HTML5工作组联络的目标:在每款浏览器中以DOM形式整合、跨平台、开放标准的三维图形。
让HTML浏览器编写者原生支持SVG与MathML用了一段时间,所以我们预计X3D也需要一段时间。
   
Q3 HTML5包含了X3D的解析器吗?
A3 其实缺省情况下就具有该功能。 Dr. Behr的X3DOM实现就表明了X3D与HTML5的紧密集成确实是可行的,而且很容易做到。
当然,我们期望HTML5浏览器编写者最后会原生的包含对X3D的实现,要么是包含像FreeWRL (http://freewrl.sourceforge.net )这样的开源多平台库,或者是编写他们自己的库。
   
Q4 坦率的说,X3D一直都未成功做到让那些3D艺术家会从他们的DCC软件 (3ds max, maya, softimage,...)导出为这种格式。X3D与如Collada (.dae 与 .zae) 之间的优势各自是什么?
A4 我们应该谈谈X3D与Collada之间概念性区别。
主要的区别在于Collada仅仅是模型交换格式,而X3D提供了模型交换及三维运行时环境。X3D给了你创建虚拟模型及与之交互的能力;它提供了不仅在屏幕上获得三角形,并且交换及管理那些三角形(让Web页面创建者创建引人注目的内容)的方法学。
Collada允许用于 "bleeding edge"式的三维模型创建,而X3D给用户的是稳定的、ISO标准化的格式,这样就不仅仅是三维模型的一般的交换,还有该模型的交互效果。
所以,再重复一下,就是我们有二元性,它给用户可选择性。
Dr Johannes Behr of Fraunhofer, 给过我下面的一个实例,我认为它很好的展示了我们怎样看待Collada与X3D:
"Collada是一种真正的数据容器。所以你可以把你的模型从工具“A”搬到工具 “B”再搬到工具 “C”,而且还想在“C”中获取你在“A”中的特定的扩展,尽管“B”对之无法理解。你看,差不多每款Collada工具都编写并增加了自己对数据的扩展。Collada格式就是为了这种扩展性而生的,这是该设计的一种强大功能。
Collada因此也就是从工具“A”到工具“C”获取数据而不会丢失内容的一种容器。但它不是一种传递或部署用的格式。
这与图像和文本文件的情况相似。很多人用psd文件存储带有层结构的图像,并从一个工具到另一个工具可以获取数据,但没有一个人会把那个psd文件分发到网络上。文件文件也同样。每个人都会用.doc或.odf来存储文本,但最终用pdf来传递。因此,在不同领域都会有这种二元性。
3D方面也有同样的处理。在你的管线中使用Collada,而在最终的运行时则是一种传递格式(像X3D)。
这不仅仅是我的观点:想了解Collada和X3D之间更多背景知识,以及为什么“X3D是应用于Web的一种理想语言“请阅读白皮书, by Rémi Arnaud (founder of the COLLADA initiative) 及 Tony Parisi, (co-founder of VRML, and X3D architect):http://www.khronos.org/collada/presentations/Developing_Web_Applications_with_COLLADA_and_X3D.pdf )
   
Q5 Web上还有很多3D内容格式,看起来好像网站会宁可选择Flash的3D引擎,尽管其性能很低,也不愿选择其它插件。你认为伴随着HTML5的应用,这种情况会改变?
A5 是的,有几个原因。
1) Flash不是开放标准。而Web是建立在开发标准之上的。
2) Flash当前不支持GPU的使用。
3) Flash没有多厂商的支持。
   
Q6 HTML 5将会用JavaScript来处理交互。从性能的角度,你相信JavaScript能处理大场景、游戏交互(AI、物理学等等)?
A6 ... 及场景中对象的碰撞检测,及投影剔除(frustum culling ),及导航与用户交互及场景中的动作,以及用户当前所期望的其它所有内容,或者希望以他们的知识水平扩展....
Javascript能”处理“大场景吗?你可以以任何一门计算语言来编写出几乎所有东西,它是否是最理想的反而不是真正的问题所在。

首先,我们来谈谈顶点/纹理渲染的速度。
In Javascript over WebGL,最少量的Javascript被用于渲染三角形与纹理 - 因为GPU在进行渲染。如果你丢入少量的housekeeping或交互,帧频会显著下降。
用一些真实世界的数字: Dr. Johannes Behr of Fraunhofer发现在他的 X3D-Javascript-WebGL X3DOM实现中,小模型的渲染比同样平台原生X3D浏览器至少要慢30至50倍。当然,更多的代码优化仍会进行;但要正确的来看待,我认为我为FreeWRL做的最大的优化是移除了用Perl进行housekeeping而完全基于C实现 - 帧频的提升是比较显著的。对于光线交叉、投影剔除、用户交互等,Javascript能计算得多快还有待确定,但看起来与原生应用程序相比至少要慢两个级别。对于桌面系统,那可能还不是问题,但在移动领域电池使用时间与CPU周期紧密相关,可能需要更多的考虑。

第二,读者也应该要记住X3D有内置的运行时环境;X3D浏览器作者花费了相当多的时间在确保运行时环境执行良好。具有原生X3D实现不仅意味着对三角形和纹理的更快渲染,也意味着统一、高效的运行时架构。

第三,我们发现浮点数的精度对高精度位置数据来说还不够,所以X3D使用了双精度数来进行内部计算,如插值器以及地理空间数据管理等。Dr. Behr已提到他的小组在X3DOM 基于Javascript的X3D实现时已遭遇这个浮点精度问题。

最后,有个似乎被很多人漏过的问题,X3D提供了你的图形软件一种抽象的视图,那是X3D浏览器实现者的工作,即确保几何体尽可能高效快捷的被选入,而且 X3D浏览器会跟随软件及相关库的改进。艺术家的时间最理想化的使用不是担忧运行时的实现及特定软件的效率,而是创建引人注目的跨平台内容。
   
Q7 对非专业人士来说,Web3D协会意味着VRML。你认为协会能带来被广泛应用的新技术吗?
A7 VRML 是标准以前的系列。不否认在开始的时候,VRML图形文件显示出 - 与现在的标准比较 - 粗糙的、非现实感图形。但要记得当VRML-1出来的时候,计算机图形行业正处于它的幼年,而且能渲染这种图形的计算机非常昂贵,很多感兴趣的人无法接触到。所以可能对于VRML的一些负面感受中很少一部分是真正针对VRML,而更多的是对那时计算机行业的状态。
当前的X3D规范保留了与VRML-97的向后兼容性。我们在继续保持这种完整的向后兼容性,同时让标准成长到满足当今的图形需求,并推动该技术发展;比如X3D实现光线跟踪。
VRML/X3D标准的“长寿性”和“跨平台性”对很多用户非常重要。我讲个故事。最近有一位NASA的员工问我将VRML-1整合进FreeWRL浏览器的事,VRML-1先于VRML-97.我寻找在线规范,而且半天之后,该用户就能在他的桌面Macintosh计算机上查看这些文件了。其它15岁的图形格式还有多少能被渲染呢?
有人提到“三维图形”的时候,从脑海里面出现的第一件事就是这个伟大的产品来自好莱坞及游戏公司。我们倾向于忘记科学及医学成像这些领域中3D模型的“长寿性”与跨平台的兼容性是最为重要的事情。
Web3D协会正在继续向世界带来开放的三维渲染技术。
X3D:一次编写、任何地方、任何时候都可渲染。
   
Q8 关于嵌入式设备如 Smartphones & iPhones;HTML5将也能够在那些”计算机“上显示三维内容吗?
A8 X3D是一种抽象的图形格式;只要操作系统底层及硬件支持某些形式的像素显示,X3D就可在该环境下被渲染。不管你的设备是使用DirectX图形库还是继续不断发展的OpenGL版本系列、或一些至今未写出来的低级图形层,X3D将都能在其之上渲染,而且如果设备包含了用户i/o能力,X3D将也能使用该能力。

你可能感兴趣的:(X3D - 一次编写、处处、时时都可渲染的三维图形格式)