X3D™ (Extensible 3D) Frequently Asked Questions (FAQ) Version 1.17 |
此翻译版本已更新,请访问 http://17de.com/x3d/www.web3d.org/x3d/faq/
内容
|
介绍
X3D是下一代的开放式的网络三维的标准。是多年来Web3D联盟 X3D Task Group 和后来成立的Browser Working Group的开发成果。Browser Working Group和X3D Task Group 的密切合作制定新的X3D规格,力求尽量满足业界的对如下方面的需要:
为了达到这些需求,引入了基于组件(component-based)的结构 ,以分离发布来支持寻址扩展,兼容性,故障调试, 编码等问题。每个组件包括一部分相关特性,比如一个集合包括相关节点,一个扩展事件的模型,或一个新脚本的支持。 相对需要完全适应全部规格的单一庞大的结构,基于组件的结构可以个别的特性支持创建不同的概貌(profiles)。这些概貌是场景内容的集合,一个关于profiles的例子是小的内核代码 ("core" profile)支持简单的非交互的动画,另一个关于profiles的例子是基本的VRML兼容的代码( "base" VRML-compatible profile)支持完全交互的场景。通过增加新的层("levels"), 组件(Components)可以个别的扩展或修改,或者可以加入新的组件来引入新的特性,比如流(streaming)。通过这种机制,一个部分的开发不会拖慢整体发展的速度,所以技术规格能快速发展。
|
概述 |
1. 什么是X3D?
X3D是下一代的开放式的网络三维的标准。它是一种可扩展的标准,创作工具、浏览器、三维软件很容易的对其输入输出进行支持。它代替了VRML,但也提供了对现有的VRML内容和浏览器的支持。现有的VRML内容不需要修改就可以用任何X3D-2浏览器播放,新的X3D-1和X3D-2内容可以被存在的VRML应用程序读取。
X3D是基于VRML的,支持VRML的全部规格,完全支持VRML的内容。X3D是可扩展的,可以用来创建简洁高效的3D动画播放器,用来支持最新的流技术和渲染扩展。X3D支持多种编码和API,所以通过XML,X3D能够轻易的整合到网络浏览器或其他的应用程序里。除了和XML的紧密结合,X3D还是MPEG-4支持的3D技术。 |
新的规格已经完成就要完成,并由Web3D.org校订和发布。人们期望更好的了解工作的进度。现在,以下页面提供了一份建立中的新规格的大纲: http://www.web3d.org/fs_specifications.htm 简单的说,X3D是把VRML97分解为组件,并使用可加入新组件的机制,来扩展VRML97的功能。X3D就和VRML一样。为了转换VRML文件为X3D文件,要增加如下的注释行:
如果内容包含非标准VRML的特性, 要增加如下的注释行: 这将告诉浏览器,层1(level 1):内容中包含流。这可能是一个支持流的节点集合,或可能是一个API-层的软件。假如是节点集合,这允许控制发浏览器存取包含外部原型声明的场景文件。 所以创建场景内容的时候不需要包括一大堆的组件和组件的列表,组件是包括在概貌中的。可以指定在一个概貌中增加许多功能区。举例来说,基本概貌(Base profile)包括新的组件(比如原型和声音)和包括不在 内核概貌(Core Profile)里的组件的新层(levels)(比如Box节点在几何组件里) ,你只要指定概貌, 而不需要列出组件:比如指定 '#X3D profile:base'。 当浏览器升级时,组件将加入到新的概貌中,所以下一带的浏览器可以包括诸如曲面、流这些组件。这就是基本的体系。 因为完全引入VRML比较困难,所以想设定不同层的X3D以方便输入输出。这就是为什么VRML被组合到组件和概貌中的原因。节点或功能被组合到组件中,比如几何组件组合了VRML 的几何节点(geometry nodes)。组件有不同的层,所以几何层1(geometry level 1)不包括Box节点,但几何层2包括。但新的几何节点加入时,就加入相应的新的几何层。 概貌是组件的集合,内核概貌(X3D-1)包括层1组件,用来支持几何和动画。X3D-2是VRML97概貌(VRML97 profile),用来支持所有的VRML97节点,主要是增加了原型 和脚本的功能。 X3D-1产品的能输入X3D-1兼容的内容,这些内容也可以被 X3D-1、X3D-2、或 VRML97 浏览器读取。 注意到这里并没有提到XML。因为XML的支持并不是必须的。现在的VRML97浏览器就是X3D-2兼容的。这是基本规格的要求。XML是附加的编码方法,就象二进制编码。XML编码和相关的API是用来把X3D和其他基于网络的技术整合的扩展机制,任务组(Task Group)做了许多工作来保证X3D将被其他XML工具支持。用来把内容在不同编码之间转换的转换软件也将开发出来。根据发布内容的范围编码被分割到不同的文档中。 一般来说,所有的VRML内容和工具里现在就可以在X3D的框架下使用了。X3D还可以增加那些非VRML97的特性,比如曲面(Nurbs)和GeoVRML(地理VRML)支持。这些特性被作为规格的一部分,成为所有浏览器的 缺省节点支持,而不再是作为一种性质扩展。X3D还使软件公司更容易选择对某层的X3D输入输出支持,确保对某层的完整支持而不是部分的支持。对于那些不需要VRML层功能的软件公司,X3D提供了一种方式创建简洁有效的浏览器,比如Shout3D。重要的是,X3D提供了一种方式,VRML97浏览器公司可以对现有的浏览器扩展新的特性,这些特性可以简单快速地整合到X3D的规格中,而不象以前那样总作为一种性质扩展。 加上可选的XML编码机制,X3D和其他网络技术可以更好的整合。 |
3. VRML也是可扩展的,为什么X3D的扩展机制比VRML的外部原形(EXTERNPROTO)提供了更多的扩展性?
一个组件能包含许多节点(nodes),比如Nurbs概貌(Nurbs profile)包含了所有相关的曲面节点(nurbs nodes)。组件中也可以增加其他的功能,比如新的脚本语言支持、用户界面支持等。组件也可以仅仅包括外部原型(externprotos)。 VRML只有外部原型(Externproto)的扩展机制,但并不是一种真正用来建立功能扩展组的机制。X3D的组件、层、概貌机制可以做到。并不需要所有的公司用原型或外部原型来实现这些扩展。 进一步,组件不仅只被看作一种节点,而被看做是整个功能区。举例来说,我们可能需要在X3D文件里镶入VRML脚本(ECMAScript)的某些项。组件机制允许做到这种扩展。 |
4. X3D 组件、层、概貌(Components, Levels,
and Profiles)是什么?
X3D的是广泛应用的工业标准,设计者意识到不同的公司不需要支持X3D提供的所有特性。举例来说,如果一个公司想制作简洁高效的3D动画引擎,就可能不需要对那些 几何地质渲染(geology rendering)的特性提供支持。因此,支持这些特性的集合就被封装到一个“组件”里。通常一个特殊功能组被分在一个组件里。(比如 "Geo component" 地理组件处理地理数据(geographic data),"geometry component"几何组件处理那些包含几何节点的组(geometry "nodes"), "scripting component"脚本组件引入脚本支持)。 虽然X3D可以通过组件来引入新的节点特性,但X3D仍然支持通过外部原形(Externprotos),原形(protos),脚本(scripts)进行扩展。实际上,组件支持也可以通过外部原形,原形或脚本来实现。 概貌(profile)是包含了不同功能区的组件的组,举例来说,完整概貌("Full" profile)处理所有的VRML97节点和功能 。概貌甚至也能包含其它概貌的功能(举例来说,完整概貌("Full" profile)包含较小的基于几何的内核概貌("Core" profile)的功能。 当认为一组概貌对很多运用都很重要的时,这些概貌被设置为确省概貌设置,这就建立了新版本(Versions)的X3D。新版本意味着比旧版本提供更多的功能。 公司可以创建支持不同版本(Versions),不同特性(profiles),不同组件(components)的浏览器、输入输出插件。举个例子,较小的播放器可能是X3D-1兼容的。VRML97全兼容的浏览器就是X3D-2兼容的。X3D-3可能支持包括诸如曲面,流之类的额外的功能。 |
5. 如何建立新的组件和概貌?
软件公司可以建立自己产品支持的新的组件,然后向X3D Board提交以获得正式批准。当组件被提交是,他的名称包括提交组件的公司名的前缀,正如OpenGL扩展包括建立扩展的公司名的前缀(比如 OW_)。然后组件将经过 X3D board、Web3D联盟、和业界的评测。 当一个组件被多家以上的接受和实现后,前缀就会改为 EXT_。当组件被 X3D board 批准后,前缀就会改为 X3D_. 当X3D Board 认为某些组件很重要或已经被广泛采用时,这些组件就会包括在性的概貌中。 |
6. 软件公司需要支持所有的
组件、层、概貌么?
不。有了概貌和组件的机制,公司可以根据自己的需要来决定支持哪些概貌和组件。 根据概貌,场景内容可以被自己公司的程序读取,而且只要其他程序支持相关的组件和概貌,就可以保证场景内容内在这些程序里运行。 许多公司并不想支持VRML97那样的庞大的复杂的规格。X3D的模块结构意味着公司可以从只支持X3D-1开始,然后逐渐加入他们认为实用的概貌。 |
7.
如果各个公司都创建了一大堆组件,那会有麻烦么?
不。被 X3D 规格接受的组件这提供了一种让 X3D 兼容的应用程序可以协同工作的机制。对这些组件创建新的层(levels),这样许多新的特性将被加入先有的组件中。 各个公司可以开发组件并且把组件提交给X3D,这样就带动了 X3D迅速而有效的发展。保证了 X3D 的发展和繁荣,而不在先前的标准那样废退。 |
8. 为什么要支持X3D?
X3D的优势:
|
技术概述 |
1. 为什么要加入XML语言(Extensible Markup
Language)?
以XML作为X3D的语法是为了解决如下问题:
|
2. 已经有通过的文档类型定义么?Document Type Definition (DTD)? X3D Task Group 花了许多时间来寻找一种方式用XML描述VRML97节点。专家组最后通过了 一个文件类型定义 DTD (Document Type Definition)。以下是该定义的链接 http://www.web3d.org/TaskGroups/x3d/translation/x3d-compromise.dtd. |
3. 其它的基于XML的技术是什么? X3D Task Group 对 W3C 的关于XML的标准进行了研究。如下的技术是X3D特别关注的: SMIL (Synchronized Multimedia), SVG (Scalable Vector Graphics), XHTML (the W3C's XML-ization of HTML), Schema, (enables complex datatypes in XML) and DOM (Document Object Model)。Web3D联盟也是W3C的成员,所以 X3D Task Group 能够紧跟每个领域的发展,在每个领域中找到最佳的发展道路。 |
4. 有什么工具支持X3D? 和X3D相关的工具包括,X3D文件 VRML97/XML-based 样式表(Stylesheet)编辑转换工具. Don Brutzman 制作了一个图表指明了许多现有的工具和X3D之间的关系。这是文挡的链接 。 |
5. XML 标记如何和网页浏览器结合?
一旦建立一套XML标签,依据浏览器如何使用XML,可以通过以下的方式使用XML:
|
6. 为了使用X3D,需要去了解多少缩写词?
所有的X3D创作者都需要知道如何自己编写DTDs
(Document Type Definitions - 文档类型定义),
CSS
(Cascading Stylesheets - 层叠样式表), XSL
(Extensible Stylesheets - 扩展样式表)之类的东西么?不。
所有这些工作都由X3D Task Group负责。X3D规格定义了一个DTD使VRML97节点和域与X3D的一一对应。创作者使用这些定义好的标签,因此不再需要开发自己的DTD。会制作转换软件把VRML文件转换为X3D文件,这样现有VRML模型资源就可以继续使用。开放源码的X3D文件分解/输入/输出软件范例,将能鼓励3D软件商更容易的在其VRML输入/输出 上增加X3D输入/输出功能。 |
7. 什么地方可以找到更多XML的资源?
以下是一些你可以找到的资源:
|
8. 组件化的优势是什么?
以下列举了一些组件化的优点:
注意: 这里涉及到一些技术规格。比如扩展特性,使用到内核,并且一般都需要配合某些特定操作系统使用。这就是说扩展特性,一般都不会和其他的浏览器或现有的执行代码兼容。X3D Browser Working Group 和 X3D Task Group 注意到并公布了这些问题。 |
9. 组件化可行么?
有许多复杂的内容都是围绕跨平台执行和跨浏览器组件的。从这些现有的内容中,X3D努力发掘一些使组件化可行的因素。
|
10. Box, ElevationGrid 之类的节点去除了么? 不。X3D并没有缩减功能,而是分割功能。因为可以用较低层的IndexedFaceSet节点轻松实现Box、Sphere、Cone、ElevationGrid 之类的节点,所以这些节点的确不将被包括在内核中,这些节点将会在扩展中实现,比如VRML97扩展。这样就简化了内核,并使内核实现和维护更加容易。 |
11. X3D就象VRMLLite么? 不。VRMLLite是VRML邮件列表上讨论的一种简化的VRML的概念。构想就是把不重要的功能从当前浏览器中剥离。X3D不会剥离任何功能 - 内核的概念也许和VRMLLite相似,但可以进一步扩展并改进功能才是整个X3D的核心思想是。 |
12. 内核中包括什么节点? 1999年9月27-29日举行的一个会议决定了哪些节点将包括在X3D的核心中。参见这次会议的记录。这个列表后来稍微地增加了。现在这些节点在X3D规格表9.2(核心概貌中的节点 - Table 9.2 :Nodes for conforming to the core profile)中有详细表述。 |
13. 什么是X3D的版本和概貌? X3D的是广泛应用的工业标准,设计者意识到不同的公司不需要支持X3D提供的所有特性。举例来说,如果一个公司想制作简洁高效的3D动画引擎,就可能不需要对那些 几何地质渲染(geology rendering)的特性提供支持 。因此,某一组特性就被包括在某一个“概貌”中。每一个概貌指定了一组特定的功能区域,比如"Geo"概貌是处理地理信息的;概貌也可以包括许多不同的功能区域,比如完整概貌处理所有的VRML97节点和功能;概貌甚至也能包含其它概貌的功能,比如完整概貌包含较小的基于几何的核心概貌的功能。 当认为一组概貌对很多运用都很重要的时,这些概貌被设置为确省概貌设置,这就建立了新版本的X3D。新版本意味着比旧版本提供更多的功能。 公司可以创建支持不同版本,不同概貌,的浏览器、输入输出插件。举个例子,较小的播放器可能是X3D-1兼容的。VRML97全兼容的浏览器就是X3D-2兼容的。X3D-3可能支持包括诸如曲面,流之类的额外的功能。 |
软件公司可以建立自己产品支持的新的组件,然后向X3D Board提交以获得正式批准。当组件被提交是,他的名称包括提交组件的公司名的前缀,正如OpenGL扩展包括建立扩展的公司名的前缀(比如 OW_)。然后组件将经过 X3D board、Web3D联盟、和业界的评测。 当一个组件被多家以上的接受和实现后,前缀就会改为 EXT_。当组件被 X3D board 批准后,前缀就会改为 X3D_. 当X3D Board 认为某些组件很重要或已经被广泛采用时,这些组件就会包括在性的概貌中。 |
15. 软件公司需要支持所有的概貌和版本么? 不。有了概貌和版本的机制,公司可以根据自己的需要来决定支持哪些概貌和组件。 根据概貌,场景内容可以被自己公司的程序读取,而且只要其他程序支持相关的版本和概貌,就可以保证场景内容内在这些程序里运行。 许多公司并不想支持VRML97那样的庞大的复杂的规格。X3D的模块结构意味着公司可以从只支持X3D-1开始,然后逐渐加入他们认为实用的概貌。 |
16. 如果各个公司都创建了一大堆组件,那会有麻烦么?
不。被 X3D 规格接受的组件这提供了一种让 X3D 兼容的应用程序可以协同工作的机制。对这些组件创建新的层(levels),这样许多新的特性将被加入先有的组件中。 各个公司可以开发组件并且把组件提交给X3D,这样就带动了 X3D迅速而有效的发展。保证了 X3D 的发展和繁荣,而不在先前的标准那样废退。 |
17. 什么是X3D节点类型(Node
Type)? 节点类型(Node Type)是一个对应相关功能节点的摘要节点。附:Object Hierarchy(对象层级),显示了每个节点与摘要节点类型(在对象层级中以"Node"为词尾的节点)的关系和对象层级的分支结构。
|
18. 已经有概貌被定义了么? 是的。基于GeoVRML 1.0 规格的10个节点,Don Brutzman 为GeoVRML概貌制定了文档类型定义(DTD)。 |
19. X3D是由Java编写的么? 不。X3D是一种3D场景格式。这种格式可以用C, C++, Java之类的任何语言来执行。 为了最终交付可使用的X3D规格,X3D Task Group发布X3D规格时计划推出两种可获得的开放源代码的执行码范例。现在选择的范例执行码可能将使用Java3D的开放源码编写,或使用Blaxxun's Contact community的C++源代码编写。其他的执行码可能包括 Shout(纯Java) 和 DRaW (FSG)。这就是说X3D执行码不限制只能用Java或C++编写, 或X3D限制只能使用Java applet执行。 |
20. VRML97浏览器能播放X3D内容么? X3D在文件格式中使用了XML语法。标准的VRML97浏览器不包括XML解析器,所以一般不能读出X3D内容。然而可以编写转换程序,X3D文件也可以被转换,就象VRML 1.0文件现在被转换为VRML97文件,这样VRML97浏览器也可以支持X3D。转换程序也可以作为现有的VRML97浏览器的插件和VRML97浏览器协同运行。 |
21. X3D内容可以播放VRML97内容么? 是的。这中对VRML97内容的向下兼容性是X3D规格中规定的。 |
22. Fahrenheit和X3D的关系? Fahrenheit体系包括三个API层:Fahrenheit Low Level (FLL), Fahrenheit Scene Graph (FSG), and Fahrenheit Large Model Visualization (FLM)。有些X3D浏览器在渲染层使用Fahrenheit API,就象现在的VRML97浏览器一般使用OpenGL或Direct3D渲染场景。举例来说,OpenWorlds在他们的VRML97浏览器中使用Fahrenheit,并且也打算在用Fahrenheit实现他们的X3D。 |
23. XGL和X3D的关系? XGL 是基于XML的文件格式,基于OpenGL渲染库描述3D信息。(参见http://www.xglspec.org/) X3D和XGL的类似之处就是两者都使用XML格式,都是用来编写3D信息的。然而XGL的目标是较低层次的运用,仅仅是为了描述一些几何体,表面,灯光之类的物体。X3D的目标是比几何特性更高层次的运用,X3D支持事件模型,脚本,感测器,动画和其他的扩展。实际上XML采用了XGL的结构,就确定了X3D的选择开发了一种XML格式。同时,X3D被XML采用以后,通过使用XSLT,X3D就潜在支持其他的XML语言,比如气候表,分子结构,2D图表信息。 |
开发进程 |
1. 谁在开发X3D? Web3D联盟正式的工作组 Browser Working Group 和 X3D Task Group 正在积极地开发X3D。如何参与开发X3D请参见 Working Group 的页面。 |
2. 为什么要支持X3D?
X3D的优势。
|
3. 现在已经制定了X3D规格么? 是的,但仍然在开发之中。以下网址可以得到X3D规格的草案:http://www.web3d.org/fs_specifications.htm 。一开始,包括Shout Interactive、Blaxxun Interactive、DRaW Computing、New Objectivity、Sony、Lucid Actual 等公司提出了不同的X3D的提议,。X3D Task Group 评估并发展了这些 提议,并在Browser Working Group 的联合之下,综合成一个完整的设计。 |
4. 有执行码范例或执行码参考么? X3D group 和 Source Code Task Group 将 展示一个执行码范例,而不是执行码参考。主要的,执行码范例仅是一个范例告诉你如何执行某个项目;但执行码参考更精确的定义了如何执行某个项目。执行码参考将是很长的文章,但范例执行码不是。 |
5. 我能帮助开发X3D么?
当然!如何注册为x3d-contributor或x3d-reviewer参见 http://www.web3d.org/TaskGroups/x3d/X3dTaskGroupCharter.html#Mail。如果你的公司是Web3D联盟的成员并且计划发布X3D软件,Browser Working Group 是你需要关注的! |
6. X3D提议有标准草案(RFC)么?
开始, 只是一个较小的设计队伍在管理开发X3D。这个团队进行了所有的开发,这时并没有标准草案(RFC - Request For Contributions)。后来成立了开放的X3D Task Group,任何想参与的人都可以提出建议。当通过 www-vrml 邮件列表讨论后,会发布一个标准草案(RFC)来处理并决定采纳哪些递交来的提议。 |
7. 有开放源码的X3D浏览器么?
是的。Java3D Working Group正在开发一个开放源码的X3D执行码,名为Xj3D。 在Linux, Solaris, Win32平台下都测试过这个工作原型,现在已经可以获得他。现在已经可以获得发展中的X3D原型范例的与VRML97兼容的文档类型定义 (DTD)。另外,Blaxxun已经发布了他们的Contact VRML97 浏览器的开放源码,并且打算使用这些作为他们的X3D执行码。 其他的开放源码的VRML97的成果潜在的就可被认做是X3D浏览器的基础,比如已经完成的工作可以作为OVAL项目的一部分。 如果将来可以得到 Cosmo Player 源码,就可以用做开发另一个开放源码的 X3D 浏览器。 |
8. X3D 需要CosmoPlayer 源码么? 不。背景资料是:CosmoPlayer VRML97 浏览器原来是 SGI 编写的。SGI 后来放弃了Cosmo Software,然后Platinum 购买了Cosmo Software。Platinum 提供了 Cosmo browser 的源码作为Web3D联盟的开放源码。后来 Platinum 被 Computer Associates (CA)收购。 CA现在继续寻找时机出售CosmoPlayer。X3D 不再需要获得 CosmoPlayer 源码。 |
参与者
|
注解和补充 Martin Reddy. 这份文档的原始URL: http://www.web3d.org/TaskGroups/x3d/faq/ |
m17保留此份翻译的版权, |