基于BNF的3DS文件格式规范化描述

发布时间:2023-01-20 22:43:15   来源:文档文库   
字号:
2017年第26卷第5期 htp:Hwww.c—S-a.org.ca 算机系统应用 基于BNF的3DS文件格式规范化描述① 蕾,赵正旭 石家庄铁道大学信息科学与技术学院,石家庄050043) 要:3DStudio(3DS)是3dsMax用来保存模型信息的一种文件结构,是业界的通用标准格式之一.为了使不同 星系之间的模型可以被自由调用,解决可视化系统中模型格式不兼容的问题,减小3DS文件的存储空间,提出使 用巴克斯范式(BNF)规范化描述3DS文件.描述了BNF的特点和对3DS文件结构进行表述和分析的使用方法,并 以土卫三模型的3DS文件为例,使用BNF对其进行形式化定义,从而形成了统一的规范化管理格式,以利于搜索 引擎的检索和应用. 关键词:3DS;BNF;形式化语言:规范化 3DS Fie Format Specication Based on BNF CHEN Lei,ZHAO Zheng-Xu School of nformaton Science and Technology,Shizhuang Tiedao Universiy,Sh ̄iazhuang 050043,China) Abstract:3DStudio(3DS)i a e structure of 3dsMax used o store model nformaton,which  one of he ndusty’ standard format in 3D sofware.In order to ensure the models of diferent system can be called freely,to solve te problem that the diferent model forat is not compatible in visual system,and to reduce the storage space of 3DS fle,  paper proposes o use he Backus-Naur ForBNF)specicaton o describe te 3DS fe.This paper describes he characterstics of e BNF and the method of descrbing ad analyzing te 3DS fe structure,ad takes the 3DS fle of Tethys model as an example,using BNF to forally defite it,thus forms a unifed forat of standardization management,which facilitates retreval and application of search engine. Key words:3DS;BNF;Foral language;specifcation 随着虚拟现实技术的发展,基于三维模型的深空 探测实时三维可视化技术需求越来越大,对三维模型 的需求也随之增大.目前,常用的三维建模软件包括 AutoCAD[”、3DS Max[ 、Autodesk Maya[引、Zbrush[ 】 进行标准化和规范化处理,就会大大提高系统的效率. 文件标准化和规范化是实现三维模型资源共享与 重用的前提条件,在资源建设中占有极其重要的地位. 规范化管理三维模型的途径之一就是将模型的文件结 构“标准化”.首先统一三维模型的文件格式,本文选 等,不同的三维建模软件适用于不同的应用领域,生 成的模型格式也各种各样.在深空探测实时三维可视 3DS[格式的三维模型,它是一种比较通用的保存 三维模型信息的文件格式.其次需要对3DS文件进行 规范化描述 制定一个统一的描述规则.目前对于 化系统中,需要存储成千上万的三维模型,由于模型 的数据格式和文件结构不同,可能会导致各个星系互 不兼容,使得这些三维模型不能在同一实时系统中同 时被调用,导致在深空探测实时可视化系统中不能快 速精确地调用目标模型.如果对系统中三维模型的文 件格式和描述方式制定统一的规范,对三维模型文件 ①基金项目:河北省高层次人才科学研究项I ̄(GCC20140101 3DS的文件格式和块结构都是以树状图或自然语言描 述,必须用自然语言加以说明才能将3DS的文件结构 描述清楚.这些图表和自然语言计算机识别不了,现 有的文本描述方式和自然语言解释方式存在二义性等 收稿时间:2016—08—10;收到修改稿时间:2016-09—13doi:10.15888 ̄.cnkicsa.005721] Special ssue专论・综述23 
算机统应用 htp:Ⅵw c—S—a.o唱.Cn 2017年第26卷5期 弱点,因此必须寻找一种规范化的形式将其描述. 描述文件数据结构的常用语言有XML(eXtensible Markup Language)  JSON(JavaScrpt Object 文件格式方面具有更好的适用性.因此,本文使用 BNF描述3DS文件结构,统一描述文件格式,以一种计 厂 算机可识别的文法将其规范化描述,将3DS文件变为 Notaton)[ 、Z语言 们、BNF[ ”.XML具有文档结构 清晰、容易阅读等优点,但其文件尺寸一般都比较大, “标准”格式,建立一种专有的数据格式,使其更加通用. 块 块 块  因此在现有的网络条件下传输文件效率较低 .JSON 采用完全独立于语言的文本格式,易于人阅读和编写, 同时也易于机器解析和生成.z语言是一种用“数学文 字”或“数学符号”来描述计算机系统的规范化语言,是 软件工程中编码之前的规格说明语言.BNF是一种上 下文无关文法的符号集。由于其简洁、明了和科学而 被广泛接受[3,41 内  3DS文件解析 长 度 4 数 据 容 2 块,每个块都有各自的用途.所有块都是以树形结构 节 节  组织的,以一个主块开始,以嵌套的形式构成.  文件的主块ID是Ox4D4D,这可以判断一个文件 字 3DS文件是树状结构的二进制文件,基本单位是 字 是否是3DS文件.3DS文件的每个块都是一个层次结 构,每一部分都有各自特有的ID号,图1表示了3DS 经过比较,BNF具有简单易学、开放、易于扩展、 分析效率高等优点,相对于其它形式化语法,在描述 文件中块的存在结构及位置(文件太长,只画出文件前 几个块,其他不再赘述1. L[ 这些“块”描述了3DS文件的数据信息,由块头和  个“块”都是以2个字节的ID开始,紧接着是4个字 数据两部分组成.块头包括ID和长度两项,共占6位, 长度指得是整个块的长度,而不只是数据的长度.每 节的块长度信息,紧接着是块数据信息[61,如图2所 示. VERSIO ooo) EDITMATERIAL EDITCONFIG1 EDIT VIE 1 EDIBACKGR EDITAMBIENT EDITOBJECT _OxAFFF) Ox0100) Ox7012) Ox1200) Ox2100) Ox4000) 图2 3DS文件块的嵌套 24专论・综述Special Issue 
2017年第26卷第5期 htp:www.c—S-a.org.Cn 计算机统应用 从图1和图2可以看出,3DS文件是一层套一层的 树状结构,而且这个树状结构是一个无比庞大的家族, 用十六进制数表示的,所以其BNF表示文法如下: ID:=“Ox”<Digi l Capital><Digi I Capial> <Digi  Capital><Digi  Capial> 每一个块都包含着自己的子块,子块接着包含子块, 如此下去. 2 3DS文件的BNF文法表示 2. BNF范式 BNF就是使用一种类似的形式来描述一个问题, 让所有参与者都能明白他们对哪一方面能够达成一致 意见.也就是对于某个问题制定一个统一的标准,为 某个符号赋予一个特定的意义,在某个领域内它就只 能是这个意思,别人在了解这个标准和所制定的规则 之后,就能理解使用这种符号集的表达方式和内容. BNF被广泛应用于编程语句,也可以用来规范自 然语言[7,8].BNF非常精确,在语法上没有歧义;形式 简单易学,便于使用者和计算机处理;开放、易于扩 展、表达能力较强,能充分表达出描述者意图.而用普 通语言描述的语法不仅冗长,而且会造成理解上的歧 义:用BNF表示的语法是数学产物,可以被计算机理 解,因此选择BNF描述文件语法结构. 2-2块结构描述 文章上一节中,使用自然语言和图表的形式对 3DS的文件结构进行了描述,这种方式虽然通俗易懂, 但是由于结构比较繁杂,没有形成一个统一的形式. 如果使用BNF制定一种通用的文法,结果会更加一目 了然,计算机也更容易识别.对图1和图2中的3DS 文件结构制定BNF文法,则表示为: (1)首先对一些专业术语作以下定义: =chunk 子块=sub.chunk 块头=head 数据=data 长度=size (2)句子文法如下: 3DS e:=<chunk>{chunk} chunk::=<head><data> head::=<ID><size> data:=<dam>{sub—chunk) sub.chunk::=chunk 由于3DS文件的块ID是由十六进制数表示的,2 个字节,一共四位;size表示的是整个块的长度,也是 size::=“Ox’’<Digit l Capital><Digit l Capital> <Digi l Capial<Digi I Capial><Digi I Capial><Digi 1 Capial><Digi l Capial><Digi I Capital> Digit:=<01  213141516171819> Capial:=<A[BICID[E[F> BNF范式中有不定循环的规则[ 】,格式为:*Rule, 即在元素前加操作符 表示重复,完整形式为: <a>*<b>element,例如:3*3<element>表示该元素只允 许3次 所以块ID和size可以简化为: D:=“Ox”,4*4<Digi  Capial>(ID是两个字节,4 位表示,即重复4次) size:=“Ox”,8 8<Digi  Capital>(sze是四个字节, 8位表示,即重复8次) 每一个块的ID都不一样,都有自己的专属表示, 比如主块ID是Ox4D4D,编辑块是Ox3D3D,具体块 的ID只需要根据实际情况灵活替换即可. 通过上述几个文法表示,采用递归法可以简洁地 表示出3DS文件中块与块的包含关系和树状结构.这 种使用字母和符号表达的文法没有二义性,计算机更 容易识别,更通用. 2_3文件描述 在描述3DS文件的时候,如果单纯从实体外观上 描述,可能会因为一些语言共识或者描述方式的不同, 造成理解上的歧义.另一方面,每个3d模型都有自己 的特点,都描述出来就会出现很多语句,这些语句可 能只是换了一个形容词,或者只是换了一个名词而已, 这样就会做许多重复的工作.如果。现在用一种规范 定义出3DS文件的描述形式,那就会省很多工作量, 只需要套用形式就行. 通过上述3DS文件的描述,我们可以了解到3DS 文件数据格式是由“块”组成的,它是一个树形层级结 构,主块包含子块的关系. 首先,一个3DS文件的开始是主块MAIN3DS, 其ID是Ox4D4D,它是基本信息块,所以在一个3DS 文件中,主块是必选项,它总是以主块Ox4D4D开始 的.其次是一级子块,版本信息块VERSION,ID是 OxO002,编辑信息块EDIT3DS,ID是Ox3D3D,关键 Special ssue专论・综述25 

本文来源:https://www.2haoxitong.net/k/doc/701ce303b2717fd5360cba1aa8114431b80d8ed4.html

《基于BNF的3DS文件格式规范化描述.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式