X3D 常见问题集
- 格式:wps
- 大小:35.00 KB
- 文档页数:7
X3D 常见问题集翻译meng yiqi 最后更新March 2004 一般概述什么是X3D? VRML97 和X3D 之间有什么不同?X3D 是什么样的?可以在X3D 浏览器中播放VRML97 文件么?如何把VRML97 文件转换到X3D? 为什么要支持X3D? 技术概述X3D 规格是如何组织的?VRML97 和X3D 之间有何功能上的改变?概貌(Profile)和组件(component)是什么?必须的组件是自动载入的,还是仍然需要先声明这些组件?VRML 也是可扩展的,为什么X3D 的扩展机制比VRML的外部原形(EXTERNPROTO)提供了更多的扩展性?如何建立新的组件和概貌?软件公司需要支持所有的组件(Profile)、概貌(Component)、级别(Level)么?如果各个公司都创建了一大堆组件,那会有麻烦么?组件化的优势是什么?Box, ElevationGrid 之类的节点去除了么?X3D 就象VRMLLite 么?工具和应用程序什么工具支持X3D? 必须需要使用Maya/3DSMax/AutoCAD/之类的软件来写X3D 么?有开放源码的X3D 浏览器么?如何使应用程序读/写X3D? 如何确定一个应用程序是否真正支持X3D 规格?何处可以找到工具来把VRML97 内容转换到X3D? XML 相关问题为什么要加入XML 语言(Extensible Markup Language)?已经有通过的X3D DTD(文档类型定义- Document Type Definition)么?已经有通过的X3D Schema 么?其它的XML 相关的技术是怎样的?XML 标记如何和网络浏览器结合?为了使用X3D,需要去了解多少缩写词?什么地方可以找到更多XML 的资源?开发进程谁在开发X3D? 有X3D 规格么?X3D 规格当前的状态如何?有执行码范例或执行码参考么?使用X3D 需要许可费么?我怎样才能帮助开发X3D? 一般概述什么是X3D?X3D 是一个用来发布三维内容的开放标准。
X3D 不仅仅是一种程序API,或仅仅是一种用来交换几何数据的文件格式。
X3D 能把几何数据和运行时行为的描述结合到单一的文件中,并且这个文件可以使用包括XML 语言(Extensible Markup Language)在内的不同的文件格式。
X3D 是对VRML97 ISO 规格进行的新的修订,修订工作结合了最新商业图形硬件特性的提升,并基于多年来VRML97 开发团体反馈而进行的结构化改进。
Top VRML97 和X3D 之间有什么不同?两种标准在整体和细节上都有不同之处。
X3D 继承了VRML97 的工作并正式加入了先前规格中使用了多年的非正式的功能区域。
X3D 要更有弹性,既能满足基本要求也要能够扩展。
X3D 主要的改变包括把规格完全改写到三个独立的规格以分别规定抽象概念、文件格式编码、编程语言存取。
其它的改变包括更精确的光照和事件模型,为保持一致性而对域名的改变。
以下是主要的改变摘要:扩展场景图的能力修订和统一应用程序模型用包括XML 在内的多个文件编码描述相同的抽象模型模块化的结构允许用不同范围级别来支持不同的市场类型可扩展的规格结构X3D 场景图- 即X3D 应用的核心- 几乎和VRML97 场景图相同。
VRML97 场景图结构和节点类型的原始设计基于已经建立的交互图形技术。
这个设计已经在VRML97 上使用和测试了很长时间。
通过引入新的节点和数据类型,而对X3D 场景图的改变,主要是为了融入商业图形硬件方面的发展。
另外将明确对某些部分的较小改动,例如事件模型和光照模型更加精确,也提供了存取colour 域的alpha 值的能力。
X3D 有一个统一的应用程序界面(application programmer interface - API)。
这和VRML97 是不一样的,VRML97 使用内部脚本API 加上外部API。
X3D 的统一的API 解释并解决了VRML97 中存在的问题,因此将可以建立更强健更可靠的执行方式。
为此定义了ECMAScript 和Java 绑定,其中ECMAScript 是建立应用程序所必需的。
X3D 支持多种文件编码,即VRML97 和新增的XML 语言(Extensible Markup Language)和压缩的二进制格式。
XML 编码允许平滑地用于网络服务整合、跨平台应用文件和数据的传递。
压缩的二进制编码现在正在开发,它将能支持更大的数据吞吐量。
每一种编码都有对应不同用户的优势。
所有的数据编码都支持完整的X3D 特性集。
X3D 使用模块化的结构来提供扩展性和弹性。
多数应用程序领域不需要全部的X3D 的特性,也不是所有的平台都支持规格中定义的所有功能范围。
X3D 的特性被分组到组件(component)中,组件执行可以用混合并匹配的方式支持,以使其符合特定市场和特定平台的需要。
X3D 也引入了概貌(profile)的概念,概貌是针对某种通用的应用程序领域、平台、使用情况来预定义一个组件的集合,例如在创作工具间的几何体交换针对性的设置了一个概貌。
不象VRML97 为了保证执行的一致性而需要全部特性的完整支持,X3D 允根据不同需要而进行不同程度的支持。
X3D 组件机制也允许厂商根据一个严格的规则集来执行其自定的扩展,这将帮助避免近年来VRML97 种厂商扩展的“混乱”。
X3D 规格自身也已经被重新构建了,这允许更具弹性的生命周期,适应了标准的更新。
X3D 标准被分割为三个独立的规格,即抽象概念和结构、文件格式编码、编程语言存取。
这种途径允许规格在不同时间线上改动,并能推动ISO 按所需原则采纳规格的特定部分。
Top X3D 是什么样的?新的规格已经完成,公众可以审阅预发布的草案。
由于ISO 程序上的规定,现在还不能向大众发布可供审阅的规格的最终草案。
然而Web3D 联盟的成员可以获取开发过程中所有阶段的规格。
公众化的规格草案可以在 站点上找到,但应注意X3D 规格在此版本发布后已经做了一些大的改变。
Top 可以在X3D 浏览器中播放VRML97 文件么?可能行也可能不行。
VRML97 文件不是X3D 文件。
纯粹的X3D 浏览器将不能读取VRML97 文件,因为一些语法的改变将导致两种文件间的不兼容。
然而,多数的浏览器将同时支持X3D 和VRML97 标准。
细节信息请参照所使用的浏览器的说明文档。
Top 如何把VRML97 文件转换到X3D? 有一些工具可以进行这样的转换。
如果场景是相对简单的不包含脚本或外部原型的,则可以直接手工编辑文本,改变文件头(header)并加入新的PROFILE 语句即可。
再复杂些的场景就需要使用工具加上X3D 规格的应用知识(一些范围中的功能在细节上已经改变,或格式上已经不同)。
可选方式的细节参见Tools section。
Top 为什么要支持X3D? 支持X3D 将可以获得很多优势:即使你的产品使用自有的格式,如果支持X3D,只需要很小的付出,你就可以使用更多的工具,共享更多的内容,保持和其他程序更好的兼容性。
你可以两全其美——你自有的格式加上工业标准的兼容!“X3D兼容!”的产品将会在市场竞争中受益,同时也将带动X3D 的工业化发展。
商业化和开放源代码的运作模式对X3D的发展是很重要的。
这样的话,每次业界有了什么新发展时,你的应用程序就不需要再重复开发。
X3D 兼容很容易实现,实现X3D 兼容不一定需要兼容全部的规格。
Interchange profile 概貌是最简化的概貌,对应了基本的3D 方面的图形编程(简单变换、几何体、纹理、光照),很容易执行。
通过支持X3D,你的公司帮助了整个3D 工业的发展!在X3D 的目标是统一平台和统一市场,促进整个工业的成长。
X3D 内容是模块化的和可重复使用的,节省了开发的时间和费用。
X3D 是VRML 内容、输出/输入、软件工具之间的杠杆。
象3DS MAX 那样包括VRML 输出插件的软件就很接近符合X3D 兼容性的要求。
现在正在对大量的输出插件进行更新以使其支持X3D。
X3D 支持可选的XML 编码,可以和其他的网络技术紧密结合,尤其是网络服务的领域。
因为X3D 使用可扩展和模块化的结构,浏览器可以只支持需要的概貌,所以公司可以根据自己的需要建立简洁有效的的浏览器。
这也使浏览器支持更高层次的市场规格的划分,而不需要打破现有的标准或改变其它播放器。
Top 技术概述X3D 规格是如何组织的?因为需要支持多种文件格式和多种编程语言,X3D 实际上将由3 个单独的ISO 规格构成:19775:200x 系统中所有功能性部分的抽象描述,这里将不涉及到任何具体的表示方法。
这里以抽象的形式描述了结构模型和运行时模型。
外部应用程序语言的功能也以抽象的形式描述为一系列在理想场景中可以请求或可以提供的服务。
19776:200x 一系列的文件格式描述,用来描述如何把抽象的结构化的规格编码到具体的文件中,这里编码包括文本和二进制的形式。
这里有两种纯文本的文件格式:Classic VRML(VRML97 中使用大括号的形式)和XML。
二进制格式的定义正在进行,但还没有完成。
19777:200x 一系列的编程语言对应抽象服务的功能映射。
由于不是所有的编程语言都是相同的,此规格将根据不同的程序语言结构对此规格中定义的抽象服务做不同的映射。
这里定义对应了Java 和ECMAScript。
Top VRML97 和X3D 之间有何功能上的改变?有很多的细节改变和非细节的改变。
不可能列出所有的改变,但这里有一些需要注意的较大的关键变化。
现在构建文件时要在文件头中定义所必需的功能。
这需要至少一个概貌定义及任何必要的额外的组件定义。
现在外部原型将只用于定义外部的X3D 文件内容。
外部原型将不能用来向浏览器提供扩展机制。
提供浏览器特定的扩展将通过自定义组件来实现。
域的存取名称从eventIn、eventOut、field、eXPosedField 相应的改变为inputOnly、outputOnly、initializeOnly、inputOutput。
脚本(Script)中可以定义inputOutput 域(exposedField)。
DEF 名称将不再允许进行多次定义。
所有内容的载入将为迟缓载入。
VRML97 需要脚本在运行时开始之前必须被载入,X3D 去除了这个要求,X3D 中首先开始运行时状态,然后其后再载入外部资源(脚本、纹理、声音、外部原型)。
脚本内容和场景图之间交互所使用的运行时模型被严格的定义和控制。
VRML97 允许多线程脚本在任意时间上对场景图的任意点进行改变,而X3D 定义只指定了一些可以进行这些改变的点。