购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 X3D互动游戏设计

X3D互动游戏节点是X3D互动游戏文件中最高一级的XML节点,包含概貌(profile)、版本(version)、命名空间(xmlns:xsd)等信息。head头文件标签节点包括component(组件)、metadata(元数据)和作者自定的标签。head标签节点是X3D互动游戏标签的第一个子对象,放在场景的开头。如果用户想使用指定概貌profile的集合范围之外的节点,可以在头元素(head)中加入组件(component)语句,用于描述场景之外的其他信息。另外,可以在头元素(head)中加入meta子元素描述说明,表示文档的作者、说明、创作日期、著作权等相关信息。Scene(场景)节点是包含所有X3D互动游戏场景语法结构的根节点,根据此根节点增加需要的节点和子节点,以创建三维立体场景和造型,在每个文件里只允许有一个Scene根节点。

X3D互动游戏节点设计包括X3D互动游戏节点与场景(Scene)节点的语法和定义。任何X3D互动游戏场景或造型都是由X3D互动游戏节点与场景(Scene)根节点开始的,在此基础上开发设计软件项目所需要的各种场景和造型。X3D互动游戏与XML关联术语,X3D互动游戏节点(nodes)被表示为XML元素(element)。X3D互动游戏节点中的域(field)被表示为XML中的属性(attributes),例如name="value"(域名="值")字符串对。

X3D互动游戏(Extensible3D)场景图文件是最高一级的X3D互动游戏/XML节点。X3D互动游戏标签包含一个场景(Scene)节点,场景(Scene)节点是三维场景图的根节点,选择或添加一个Scene节点可以编辑各种三维立体场景和造型。X3D互动游戏节点语法包括域名、域值、域数据类型以及存储/访问类型等,X3D互动游戏节点的语法定义如下。

X3D互动游戏节点包含概貌(profile)、版本(version)、xmlns:xsd以及xsd:noNamespace SchemaLocation4个域。其中,概貌(profile)又包含几个域值,即Full、Immersive、Interactive、Interchange、Core、MPEG4Interactive,默认值为“Full”。

在X3D互动游戏场景中需要支持的概貌作用如下:Full概貌包括X3D互动游戏/2000x规格中的所有节点;在Immersive概貌中加入“GeoSpatial”地理信息支持;Interchange概貌负责相应的基本场景内核(core)并符合只输出的设计;Interactive概貌或MPEG4Interactive概貌负责相应的KeySensor类的交互;Extensibility扩展概貌负责交互、脚本、原型、组件等; VRML97概貌符合VRML97规格的向后兼容性。

X3D互动游戏版本号version表示相应版本X3D互动游戏,version3.2对应X3D互动游戏/VRML2000x,表示字符数据,总是使用固定值,是一个单值字符串类型SFString。

xmlns:xsd表示XML命名空间概要定义,其中,XMLnamespace缩写为xmlns,XML SchemaDefinition缩写为xsd。

xsd:noNamespaceSchemaLocation表示X3D互动游戏概要定义的X3D互动游戏文本的有效URL,即URL(UniformResourceLocator),称为统一资源定位码(器),是指标有通信协议的字符串(如HTTP、FTP、GOPHER),通过其基本访问机制的表述来标识资源。

2.3.1 X3D互动游戏格式

在每一个X3D互动游戏文件中,文档头必须位于X3D互动游戏文件的第一行。X3D互动游戏文件是以UTF-8编码字符集用XML技术编写的文件。每一个X3D互动游戏文件的第一行应该有XML的声明语法格式表示。

在X3D互动游戏文件中使用以下XML语法格式声明:

语法说明:

(1)声明从" xml"开始到" "结束。

(2)version属性指明编写文档的XML的版本号,该项是必选项,通常设置为“1.0”。

(3)encoding属性是可选项,表示使用编码字符集。当省略该属性时,使用默认编码字符集,即Unicode码,在X3D互动游戏中使用国际UTF-8编码字符集。

UTF-8的英文全称是UCSTransformFormat,UCS是UniversalCharacterSet的缩写。国际UTF-8字符集包含任何计算机键盘上能够找到的字符,而多数计算机使用的ASCII字符集是UTF-8字符集的子集,因此使用UTF-8书写和阅读X3D互动游戏文件很方便. UTF-8支持多种语言字符集,由国际标准化组织ISO10646-1:1993标准定义。

2.3.2 X3D互动游戏类型声明

X3D互动游戏文档类型声明用来在文档中详细地说明文档信息,必须出现在文档的第一个元素前,文档类型采用DTD格式。 !DOCTYPE... 描述用于指定X3D互动游戏文件所采用的DTD,文档类型声明对于确定一个文档的有效性、良好结构性是非常重要的。X3D互动游戏文档类型声明(内部DTD的书写格式)如下:

DTD可分为外部DTD和内部DTD两种类型,外部DTD存放在一个扩展名为.dtd的独立文件中,内部DTD和它描述的XML文档存放在一起,XML文档通过文档类型声明来引用外部DTD和定义内部DTD.X3D互动游戏使用内部DTD的书写格式为 !DOCTYPE 根元素名[内部DTD定义...] ,X3D互动游戏使用外部DTD的书写格式为 !DOCTYPE 根元素名SYSTEMDTD文件的URI

URI(UniformResourceIdentifier)称为统一资源标识符,泛指所有以字符串标识的资源,其范围涵盖了URL和URN。URL(UniformResourceLocator)称为统一资源定位码(器),是指标有通信协议的字符串(如HTTP、FTP、GOPHER),通过其基本访问机制的表述来标识资源。URN(UniformResourceName)称为统一资源名称,用来标识由专门机构负责的全球唯一的资源。

2.3.3 X3D互动游戏概貌

X3D互动游戏主程序概貌(profile)涵盖了组件、说明以及场景中的各个节点等信息。主程序概貌(profile)用来指定X3D互动游戏文档所采用的概貌属性。概貌(profile)中定义了一系列内建节点及其组件的集合,X3D互动游戏文档中所使用的节点必须在指定概貌(profile)的集合的范围之内。概貌(profile)的属性值可以是Core、Interchange、Interactive、MPEG4Interactive、Immersive以及Full。X3D互动游戏主程序概貌(profile)采用以下格式:

X3D互动游戏根文档标签包含概貌信息和概貌验证,在X3D互动游戏根标签中,XML概貌和X3D互动游戏命名空间也可以用来执行XML概貌验证。主程序概貌又包含头元素和场景主体,头元素又包含组件和说明信息,在场景中可以创建需要的各种节点。头元素(head)用于描述场景之外的其他信息,如果用户想使用指定概貌profile的集合范围之外的节点,可以在头元素(head)中加入组件(component)语句,表示额外使用某组件及支援等级中的节点。例如在Immersive概貌中加入“GeoSpatial”地理信息支持。另外,可以在头(head)元素中加入meta子元素描述说明,表示文档的作者、说明、创作日期、著作权等相关信息。

1.X3D互动游戏中的head节点

X3D互动游戏中的head标签节点也称为头文件(head),包括component(组件)、metadata和作者自定的标签。head标签节点是X3D互动游戏标签的第一个子对象,放在场景的开头,在网页HTML中与 head 标签匹配。head标签节点的语法定义如下。

X3D互动游戏中head标签节点的语法结构如图2-23所示。

图2-23 X3D互动游戏中head标签节点的语法结构

2.X3D互动游戏中的component节点

X3D互动游戏中的component标签节点指出场景中需要的超出给定X3D互动游戏概貌的功能。component标签是head头文件标签中首选的子标签,即先增加一个head头文件标签,然后根据设计需求增加组件。component标签节点的语法定义如下:

component标签节点包含两个域,一个是name(名字),另一个是level(支持层级)。component标签节点name(名字)在指定的组件中,即包含在概貌profile域Full中,涵盖了Core、CADGeometry、CubeMapTexturing、DIS、EnvironmentalEffects、EnvironmentalSensor、EventUtilities、Geometry2D、Geometry3D、Geospatial、Grouping、H-Anim、Interpolation、KeyDeviceSensor、Lighting、Navigation、Networking、NURBS、PointingDeviceSensor、Rendering、Scripting、Shaders、Shape、Sound、Text、Texturing、Texturing3D、Time等,level(支持层级)表示每一个组件所支持的层级,支持的层级一般分为4级,分别为1、2、3、4。

3.X3D互动游戏中的meta节点

X3D互动游戏中的meta(metadata)子节点是在头文件(head)节点中加入meta子节点描述说明,表示文档的作者、说明、创作日期、著作权等相关信息。meta节点数据为场景提供信息,使用与网页HTML的meta标签一样的方式,以attribute=value进行字符匹配,提供名称和内容属性。X3D互动游戏中所有节点语法均包括域名、域值、域数据类型以及存储/访问类型等,以后不再赘述。meta(metadata)子节点的语法定义如下:

meta子节点包含name(名字)、content(内容)、xml:lang(语言)、dir、http-equiv、scheme等域。

1)MetadataDouble节点

MetadataDouble双精度浮点数节点为其父节点提供信息,此Metadata节点的更进一步信息可以由附带containerField="metadata"的子Metadata节点提供。IS标签先于任何Metadata标签,Metadata标签先于其他子标签。MetadataDouble双精度浮点数节点的语法定义如下:

MetadataDouble双精度浮点数节点包含name(名字)、value(值)、reference(参考)、containerField(容器域)、DEF(定义节点)以及USE(使用节点)等域。

2)MetadataFloat节点

MetadataFloat单精度浮点数节点为其父节点提供信息,此Metadata节点的更进一步信息可以由附带containerField="metadata"的子Metadata节点提供。IS标签先于任何Metadata标签,Metadata标签先于其他子标签。MetadataFloat单精度浮点数节点的语法定义如下:

MetadataFloat单精度浮点数节点包含name(名字)、value(值)、reference(参考)、containerField(容器域)、DEF(定义节点)以及USE(使用节点)等域。

value(值)域是一个多值单精度浮点类型,表示该属性是可选的,访问类型是输入/输出类型。此处输入metadata元数据的属性值。

MetadataFloat单精度浮点数节点的其他“域”的说明与MetadataDouble双精度浮点数节点的相同,在此不再重复。

3)MetadataInteger节点

MetadataInteger整数节点为其父节点提供信息,此Metadata节点的更进一步的信息可以由附带containerField="metadata"的子Metadata节点提供。IS标签先于任何Metadata标签,Metadata标签先于其他子标签。MetadataInteger整数节点的语法定义如下:

MetadataInteger整数节点包含name(名字)、value(值)、reference(参考)、containerField(容器域)、DEF以及USE等域。

value(值)域是一个多值整数类型,表示该属性是可选的,访问类型是输入/输出类型。此处输入metadata元数据的属性值。

MetadataInteger整数节点的其他“域”的说明与MetadataDouble双精度浮点数节点的相同,在此不再重复。

4)MetadataString节点

MetadataString节点为其父节点提供信息,此Metadata节点的更进一步信息可以由附带containerField="metadata"的子Metadata节点提供。IS标签先于任何Metadata标签, Metadata标签先于其他子标签。MetadataString节点的语法定义如下:

MetadataString节点包含name(名字)、value(值)、reference(参考)、containerField(容器域)、DEF(定义节点)以及USE(使用节点)等域。

value(值)域是一个多值字符串类型,表示该属性是可选的,访问类型是输入/输出类型。此处输入metadata元数据的属性值。

MetadataString节点的其他“域”的说明与MetadataDouble双精度浮点数节点的相同,此处不再重复。

5)MetadataSet节点

MetadataSet集中了一系列的附带containerField="value"的Metadata节点,这些子Metadata节点共同为其父节点提供信息。此MetadataSet节点的更进一步信息可以由附带containerField="metadata"的子Metadata节点提供。IS标签先于任何Metadata标签, Metadata标签先于其他子标签。MetadataSet节点的语法定义如下:

MetadataSet节点包含DEF(定义节点)、USE(使用节点)、name(名字)、reference(参考)、containerField(容器域)等域。 0gscspf4+/vserZOH6nOa12F1AqUCLG4cQNSdjqKE7KW3MEF2g8AXL2UQxoFXSpf

点击中间区域
呼出菜单
上一章
目录
下一章
×