X3D是一种专为万维网设计的三维图像标记语言,全称为可扩展三维语言,它是由Web3D联盟设计的,是VRML标准最新的升级版本。X3D基于XML格式开发,所以可以直接使用XMLDOM文档树、XMLSchema校验等技术和相关的XML编辑工具。目前X3D已经是通过ISO认证的国际标准。
X3D的规格为支持显卡硬件的功能,添加了从底层的渲染节点,例如支持三角形、三角形扇、三角形条带等基本渲染元素;支持设置显卡的混合模式和设置帧缓存、深度缓存、模板缓存标志的功能;还有节点支持多纹理和多遍绘制、支持Shader着色、支持多渲染目标(MRT)、支持几何实例(GeometryInstance)。2010年已经可以在X3D和VRML中使用延迟着色技术。现在的特效包括SSAO和CSM阴影、实时环境反射和折射、基于实时环境和天光的光照、HDR、运动模糊、景深。X3D支持对应3dsMax标准材质的多种贴图。X3D通过DIS组件或Networking组件支持多用户场景和事件共享。在现阶段有几个X3D引擎支持ODE物理引擎或PhysX物理引擎。
X3D是一款免费的、开放的文件格式和运行标准,X3D使用XML创建三维场景和对象。它是一个ISO批准的国际标准,它提供了应用的嵌入式实时图形内容的存储、检索和播放系统。
X3D的特点如下:XML集成,Web服务,分布式网络,跨平台、跨应用程序文件和数据传输;组件化,允许轻量级核心的3D运行时交付引擎;可扩展,允许组件被添加到延长垂直市场的应用和服务的功能;异形,标准化集的扩展,以满足特定的应用需求;进化,易于更新和维护的VRML97X3D内容;广播/嵌入式应用就绪,从手机到超级计算机。实时图形是高品质的实时、互动、音频和视频以及三维数据,可以更容易地构建符合性、一致和无缺陷的实现。
X3D支持多边形、参数的几何学、层次转换、光照、材料、纹理映射、像素和顶点着色引擎、硬件加速3D图形和可编程着色器,2D/3D合成、CAD数据组件和互动游戏设计,动画计时器和插值驱动的连续3D动画设计;支持多媒体空间化的音频和视频在三维场景映射和播放;支持用户交互、导航相机,支持NURBS的H-ANIM和地理信息组件的所有定义的节点;支持用户在三维场景的运动、碰撞、接近和能见度检测;支持用户定义的对象通过创建用户定义的数据类型扩展内置的浏览器功能的能力;脚本通过编程和脚本语言能够动态改变现场;网络组成一个X3D场景位于网络上的资源,超链接对象位于万维网上的其他场景或资源。目前HTML5里面的3D技术都要通过X3D来实现,WebGL(3D绘图标准)也要通过X3D来实现, X3D是互联网、互动技术的核心开发平台和技术。
X3D系统开发与运行环境主要涵盖X3D系统的开发环境和运行环境。X3D系统的开发环境包括记事本X3D编辑器、X3D-Edit专用编辑器开发环境、VizX3D集成开发环境、BS Studio集成开发环境以及Xj3D浏览器的安装与运行,利用它们可以开发X3D源代码和目标程序。X3D系统的运行环境主要指X3D浏览器的安装和运行,主要包含Xj3D浏览器的安装和使用以及BSContactX3D7.2浏览器的安装和使用。
X3D软件开发环境主要指X3D编辑器,它是用来编写X3D源代码的有效的开发工具,是开发设计X3D源代码的有力工具。X3D源文件使用UTF-8编码的描述语言,国际UTF-8字符集包含任何计算机键盘上能够找到的字符,而多数计算机使用的ASCII字符集是UTF-8字符集的子集,使用一般计算机中提供的文本编辑器编写X3D源代码,也可以使用X3D的专用编辑器编写源代码。
最简单的X3D编辑器可以使用Windows系统提供记事本工具编写X3D源代码,但软件开发效率较低。使用X3D-Edit专用编辑器编写源代码可以使软件项目开发的效率获得极大的提高,同时可以转换成其他形式的代码执行。
编写X3D源代码有多种方法,这里介绍一种最简单、快捷的方法,即使用Windows系统提供的记事本、写字板工具编写X3D源代码。
在Windows7/Windows8/Windows 10操作系统中,选择“开始”按钮,选择“程序”→“附件”→“记事本”命令,然后在记事本编辑状态下创建一个新文件,开始编写X3D源文件。注意,此时所编写的X3D源文件程序的文件名由文件名.扩展名组成,并且在X3D文件中要求文件的扩展名必须以∗.x3d或∗.x3dv结尾,否则X3D的浏览器是无法识别的。使用文本编辑器编辑X3D源代码文件,对软件项目进行简单、方便、快速的设计、调试和运行。
用户可以使用文本编辑器对X3D源代码进行创建、编写、修改和保存,还可以对X3D源文件进行查找、复制、粘贴以及打印等。使用文本编辑器可以完成X3D的中小型软件项目的开发、设计和编码工作,方便、灵活、快捷、有效,但对大型软件项目的开发编程效率较低。X3D文本编辑器如图2-15所示。
在使用X3D-Edit3.2编辑器编辑X3D文件时,可以提供简化的、无误的创作和编辑方式。X3D-Edit3.2通过XML文件定制了上下文相关的工具提示,提供了X3D的每个节点和属性的概要,以方便程序员对场景图的创作和编辑。
使用X3D-Edit3.2专用编辑器编写X3D源代码文件,对中大型软件项目的开发和编程具有高效、方便、快捷、灵活等特点,可根据需要输出不同格式的文件供浏览器浏览。利用XML和Java的优势,同样的XML、DTD文件将可以在其他不同的X3D应用中使用。如X3D-Edit 3.2中的工具提示为X3D-Edit提供了上下文敏感的支持,提供了每个X3D节点(元素)和域(属性)的描述、开发和设计,此工具提示也通过自动的XML转换工具转换为X3D开发设计的网页文档,而且此工具提示将整合到将来的X3DSchema中。
图2-15 X3D文本编辑器
X3D-Edit编辑器的特点如下:具有直观的用户界面;建立符合规范的节点文件,节点总是放置在合适的位置;验证X3D场景是否符合X3D概貌或核心(Core)概貌;自动转换X3D场景到∗.x3dv和∗.wrl文件,并启动浏览器自动查看结果;提供VRML97文件的导入与转换;大量的X3D场景范例;每个元素和属性的弹出式工具提示帮助用户了解X3D/VRML场景图如何建立和运作,包括中文在内的多国语言提示;使用Java保证的平台通用性;使用扩展样式表(XSL)自动转换,如X3dToVrml97.xsl(VRML97向后兼容性)、X3dToHtml.xsl(标签集打印样式)、X3dWrap.xsl/X3dUnwrap.xsl(包裹标签的附加/移除);支持DIS-Java-VRML工作组测试和评估、DIS-Java-VRML扩展节点程序设计测试和评估;支持GeoVRML节点和GeoVRML1.0概貌;支持起草中的H-Anim2001人性化动画标准和替身的HumanoidAnimation人性化动画节点的编辑,同时支持H-Anim1.1概貌;支持新提议的KeySensor节点和StringSensor节点;支持提议的Non-UniformRationalB-Spline(NURBS)X3D-Edit3.2Surface扩展节点的评估和测试;使用标签和图标的场景图打印。
X3D-Edit3.2可在多种操作系统中运行,包括Windows、Linux、MacOSXPPC、Solaris运行环境等。X3D的运行环境主要指Windows操作系统运行环境、MacOSXPPC操作系统运行环境、Linux操作系统运行环境、Solaris操作系统运行环境,用户可根据软件项目开发与设计需求选用相应的X3D系统的运行环境。
X3D系统的Windows运行环境的安装需求如下:安装Xj3D浏览器或BS_Contact_ VRML-X3D_72浏览器,Java虚拟机安装环境支持,还需要安装Xeena1.2EA扩展标记语言XML编辑工具环境,最后安装X3D-Edit专用编辑器开发X3D源代码文档。
X3D-Edit3.2专用编辑器的安装是自动完成Java虚拟机安装、Xeena1.2EAXML编辑工具安装以及X3D-Edit3.2中文版专用编辑器安装的工作。
首先在“http://www.x3d.com”网站下载X3D-Edit3.2专用编辑器。
X3D-Edit专用编辑器的安装过程如下:
(1)双击 图标,开始自动安装,首先安装程序正在做安装的准备工作。
(2)完成安装准备工作后,在显示的安装画面中选择“中文简体”,然后单击OK按钮,继续安装。
(3)显示X3D-Edit专用编辑器的安装过程信息,包括简介、选择安装文件夹、选择快捷键文件夹、预安装摘要、正在安装以及安装完毕等信息。在显示X3D-Edit专用编辑器简介对单击“下一步”按钮继续安装。
(4)显示X3D-Edit专用编辑器安装界面,提示“在安装和使用X3D-Edit专用编辑器之前,您必须接受下列许可协议”,选择“本人接受许可协议条款”,单击“下一步”按钮继续安装。
(5)显示安装文件夹,可以选择默认路径和文件夹(C:\),也可以选择指定路径和文件。这里选择“选择默认路径和文件夹”,单击“下一步”按钮继续安装。
(6)显示预安装摘要,包括产品名、安装文件夹、快捷文件夹、安装目标的磁盘空间信息等。如果想返回上一级菜单进行相应修改,单击“上一步”按钮,如果不需要改动,单击“安装”按钮开始安装X3D-Edit专用编辑器。
(7)显示正在安装X3D-Edit专用编辑器,安装Java运行环境、Xeena1.2EAXML编辑工具、X3D-Edit专用编辑器等,直到完成整个程序的安装。
(8)在完成全部X3D-Edit专用编辑器的安装工作之后显示安装完毕,单击“完成”按钮,结束全部的安装工作。
在完成X3D-Edit专用编辑器的安装工作后,需要启动X3D-Edit专用编辑器来编写X3D源代码,并进行相应软件项目的开发与设计。
(1)进入“C:\WINNT\Profiles\AllUsers\StartMenu\Programs\X3DExtensible3D Graphics\X3D-Edit”目录下,找到X3D-Edit-Chinese快捷文件,即 图标,也可以把它放在桌面上。
(2)启动X3D-Edit专用编辑器,双击 图标即可运行X3D-Edit专用编辑器进行编程和X3D虚拟现实项目的开发与设计,显示X3D-Edit3.2专用场景编辑器启动的主界面。
X3D-Edit3.2版本专用编辑器不需要安装便可运行,下载X3D-Edit3.2中文版专用编辑器后便可运行X3D-Edit3.2专用编辑器。在X3D-Edit3.2目录下双击runX3dEditWin.bat文件便可启动X3D-Edit3.2专用编辑器。
X3D-Edit3.2编辑器在正确安装X3D-Edit专用编辑器的情况下使用,双击runX3dEditWin.bat文件可以启动X3D-Edit3.2专用编辑器。X3D-Edit3.2专用编辑器主界面如图2-16所示。
X3D-Edit编辑器开发环境由标题栏、菜单栏、工具栏、节点功能窗口、浏览窗口、程序编辑窗口以及信息窗口等组成。
图2-16 X3D-Edit专用编辑器主界面
文件选项包含创建一个新文件、打开一个已存在文件、存储一个文件等;编辑选项包含复制、剪切、删除以及查询等功能;视图选项包含Toolbars、显示行号、显示编辑器工具栏等;窗口选项包含Xj3dViewer、Output、Favorites等;X3D选项包含Examples、QualityAssurance、Conversions;Versioning选项包含CVS、Mercurial、Subversion等;工具选项包含JavaPlatforms、Templates、Plugins等;帮助选项包含相关帮助信息等。
用户还可以根据需要增加必要的窗口进行各种编辑工作,以提高开发和工作效率。
开发设计X3D程序推荐使用X3D-Edit专用编辑器,X3D-Edit专用编辑器用来显示和编辑所开发和设计的X3D程序文件,它是多文档窗口形式。
启动X3D-Edit3.2专用编辑器后会调用默认的newScene.x3d文件,也可选择“文件”→“新建”命令重新创建。
在菜单栏中选择“文件”→“另存为”命令,将默认的newScene.x3d保存为另一个文件——px3d1.x3d,并指定到X3D的文件夹中,如“D:\X3d案例源代码\”目录下。注意,系统一开始使用默认的保存文件名Untitled-0.x3d。
使用Xj3D浏览器或BSContactX3D7.2浏览器观看用X3D-Edit3.2专用编辑器编写的各种格式文件,如X3D、X3DV以及WRL格式文件。
Vizx3D集成开发环境在Windows系统下采用图形化用户界面的虚拟/增强现实技术开发工具。Vizx3D使用OpenGL图形加速,并提供多文档界面和每个文档的多视图界面。就像AutoCAD一样,Vizx3D可以在三维环境中完成场景的建立,而不再需要手工编辑场景图代码,并且像其他的Web3D图形化用户界面程序一样,Vizx3D可以图形化地编辑交互行而不需要手工编写交互程序代码。Vizx3D提供了独特的Vizx3DTriggerSystem触发系统,用户可以通过选择节点并选择行为库来建立交互逻辑结构。新手不需要了解Web3D就可以快速地建立交互场景,对于高级用户而言,可以建立动画、动态替身等高级功能。
Vizx3D集成开发环境的前身是Spazz3d,Spazz3d是图形化的VRML97工具。在Spazz3d开发的基础上,Vizx3D新增支持H-Anim2001、NURBS、多纹理等X3D新特性,并支持X3DXML编码。
Vizx3D集成开发环境具有以下特性。
(1)输入与输出:输入VRML和X3D文件,输出VRML或X3D的交互三维场景,输出非交互的AVI或GIF格式的动画文件,输出JPG、GIF、BMP等格式的静态截图,使用场景内容的Windows屏幕保护。
(2)动画和交互:带有时间线滑块的动画编辑器,Vizx3DTriggerSystem触发系统控制的动画,剪切和粘贴动画关键帧TouchSensors、VisibilitySensors、ProximitySensors、KeyboardSensors,支持所有的传感器和动画,可以通过Vizx3DTriggerSystem系统触发其他的事件。
(3)模型编辑:提供快速建模工具、纹理坐标生成工具、变形球工具、镜像工具、整合表面细分功能的网格编辑器、布尔运算以及NURBS曲面支持和NURBS曲面编辑器功能。
(4)多纹理支持:提供多纹理制作向导、凹凸贴图生成向导、环境反射贴图生成向导以及简化的高级多纹理用户界面纹理绘制功能。
(5)H-Anim2001人性化动画支持:单网格模型替身支持、使用网格顶点包裹编辑器绑定网格到关节、提供预建骨架替身之间动作的剪切和粘贴、关节的强迫限制、H-Anim命名转换支持以及替身镜像工具支持。
(6)HUD(头盔显示器)向导:提供动画向导、动画视点向导,包括动画的TTF文字与符号向导等。
(7)几何体:提供基本几何造型:Box、Cone、Cylinder、Sphere,Extrusion节点Extrusion拉伸面的切削,扫出面SweptSurface;AsinglecrosssectiontransformedateachSpine Vertebra.造型面,沿单一放样线的可设置不同截面、回转面。Extrusion节点提供NURBS曲面选项,Extrusion节点变形动画、二维截面编辑器、IndexedFaceSet网格、NURBS曲面以及几何表面细分等。
(8)节点:提供组节点Anchor、Billboard、Collision、Switch、LOD,Vizx3dTrigger System触发系统控制的Switch节点和编辑器视窗相关的Viewpoint节点,Background节点并附带UniversalMedia通用媒体库中的全景背景图库支持,可由Vizx3DTriggerSystem触发系统控制的Viewpoints、Backgrounds节点,可由Vizx3DTriggerSystem触发系统控制的Sound节点,可由Vizx3DTriggerSystem触发系统控制的DirectionalLights、PointLights、SpotLights光照节点,以及NavigationInfo、Inline、Fog节点等。
(9)内部整合的浏览器:支持内部浏览器调试器,提供运行时的单步调试,可在内部浏览器上动态创建Viewpoint视点,在内部浏览器内截图。
(10)开发工具:提供UniversalMedia通用媒体支持和UniversalMedia通用媒体的文件选取系统;提供CybertownAvatar替身原型支持,包括替身动作和行走动画支持;提供CybertownAvatarArena替身测试,维持每个节点的注释,注释可以导入、编辑并导出整合的HTML帮助系统;提供FTP向导以自动上传场景到服务器;提供带有历史记录窗口的无限的Undo/Redo、场景图、层级树窗口等。
(11)可定制的视图和布局:提供存储和调用视图和布局、透视或正交视图、可设置格点视图简化操作工具,包括支持鼠标滚轮支持的缩放和平移等功能。
(12)Cut/Copy/Paste操作:提供节点的Cut/Copy/Paste操作,如Appearance外观节点(Material、Texture、MultiTexture和TextureTransform)的Copy/Paste,提供截面的Copy/ Paste,提供网格编辑器中网格的Cut/Copy/Paste,提供Translation/Rotation/Scale位移的Copy/Paste,提供H-Anim替身的Cut/Copy/Paste/Substitute,提供H-Anim动画的Copy/ Paste,提供动画关键帧的Copy/Paste等功能。Vizx3D专用编辑器如图2-17所示。
图2-17 Vizx3D-Edit专用编辑器
BSStudio集成开发环境包含标题栏、菜单栏、工具栏、路由事件窗口、主视窗编辑窗口、属性窗口、SceneHierarchyView(场景层次视图)、Node List View(节点列表视图)等,如图2-18所示。
图2-18 BSStudio集成开发环境
标题栏显示BSStudio集成开发环境图标和文件场景所在的路径。
菜单栏包含File(文件)、Edit(编辑)、View(视图)、Optimize(优化)、Convert(转换)、Help(帮助)。
BSStudio集成开发环境快速访问工具栏包含导航模式、加载/卸载纹理、渲染模式、坐标变换、旋转模式、缩放功能、本地/世界坐标系统、边界盒的中心枢轴、边界盒的手动枢轴、对齐功能、视点设定、开始/暂停、停止等功能。
RouteGraphView(路由事件图视图)即路线图视图,位于主视窗编辑窗口左侧。路线图视图是对场景中的所有连接的描述。通过设置路线图视图可以编辑、创建和删除路线图视图连接。一个连接(路径)是一个节点项的一个对象(域值),连接到另一个节点项中的某个对象(域值)。
在SceneHierarchyView(场景层次视图)中拖曳节点到RouteGraphView(路由事件图视图),即可添加新的节点项目到路线图视图中,如图2-19所示。
图2-19 RouteGraphView路线图视图
三维视图的场景即主视窗编辑窗口,用于创建3D场景、造型、人物、道具等。
SceneHierarchyView(场景层次视图)提供了整个3D场景的层次和结构。每个节点和子节点对应的结构设置为树形层次,节点和子节点可以重新排列拖放命令,节点可以被删除或插入,这主要取决于它们的类型,可以复制粘贴到所需的节点位置,如图2-20所示。
图2-20 SceneHierarchyView(场
Node List View(节点列表视图)代表所有节点、类型可以实例化为场景概述,为场景层次视图添加需要的所有节点项。节点列表视图主要有下面3种节点类型。
(1)PROTOS创造了由用户自定义protoytypes节点。
(2)BSGUI预定节点创建2D的用户界面。
(3)Standard构建标准节点,这类“标准节点”有许多子类别的主要特征,有助于节点搜索,可以快速搜索到所需要的各节点类型。
PropertyDock(View)属性窗口用于查看任何一个节点项的所有属性,如果需要对属性进行修改,可以调整节点项中的属性(域值),如图2-21所示。
图2-21 BSContactStudio集成开发环境
X3D系统运行环境主要指X3D浏览器的安装和运行,主要分为使用独立应用程序、插件式应用程序和Java技术3种类型的X3D浏览器来浏览X3D文件中的内容。
在X3D浏览器中,Xj3D是一种开放源代码与X3D-Edit编辑器匹配的、无版权纠纷的专业X3D浏览器。使用Xj3D可以浏览∗.x3d文件、∗.x3dv文件、∗.wrl文件等,它是X3D-Edit编辑器的首选开发工具。
Xj3D浏览器的下载网址为“http://www.x3dvr.com”,用户可使用各种下载软件进行下载,如迅雷下载、网络蚂蚁等。
获取Xj3D浏览器程序后,双击“Xj3D-2-M1-DEV-20090518-windows.jar”或“Xj3D-2-M1-DEV-20090518-windows-full.exe”程序开始自动安装,按提示要求正确安装Xj3D浏览器。
(1)双击Xj3D安装图标 ,显示界面显示用户要安装Xj3D2.0版运行程序,单击“是(Y)”按钮开始安装Xj3D浏览器。
(2)释放Xj3D程序并开始安装程序,显示“Java2 Runtime Environment,SEv1.6.0_8”安装Java2运行环境,如果用户的操作系统中没有安装过Java2运行环境,则直接安装。如果用户的操作系统中已经安装了Java2运行环境,则单击“下一步”按钮继续安装。
(3)如果用户的操作系统中已经安装了Java2运行环境,显示Java2运行环境维护,选择“修改”,单击“下一步”按钮继续安装。
(4)显示自定义安装,用户根据需要可以选择Java2运行环境、其他语言支持、其他字体和媒体支持,单击“下一步”按钮继续安装。
(5)开始安装Java2运行环境程序,注册产品、安装程序等。
(6)显示完成Java2运行环境程序的安装,单击“完成”按钮。
(7)完成Java2运行环境程序的安装后开始安装Xj3D浏览程序,单击Next按钮继续安装Xj3D浏览程序。
(8)显示Xj3D浏览器程序许可协议信息,选择“本人接受许可协议条款”,单击Next按钮继续安装。
(9)显示Xj3D的安装路径和文件夹,可以选择默认路径和文件夹(C:\ProgramFiles\ Xj3D),也可以选择指定的路径和文件夹。这里选择“选择默认路径和文件夹”,单击“下一步”按钮继续安装。
(10)单击Next按钮继续安装。
(11)选择一般用户或所有用户。这里选择一般用户,单击Next按钮继续安装,自动安装Xj3D程序包。
(12)完成Xj3D浏览器程序的全部安装工作,单击Done按钮结束安装工作。
(1)Xj3D浏览器的使用:在正确安装Xj3D浏览器之后,单击“开始”按钮,选择“程序”下的Xj3DBrowser双击;或直接双击Xj3DBrowser的桌面快捷方式。
(2)运行X3D程序:在桌面上双击 ,启动Xj3D浏览器,然后运行X3D程序,如图2-22所示。
图2-22 启动Xj3D浏览器并运行X3D程序