亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于BNF的3DS文件格式規(guī)范化描述①

        2017-06-07 08:24:05趙正旭
        計算機系統(tǒng)應(yīng)用 2017年5期
        關(guān)鍵詞:子塊文法字節(jié)

        陳 蕾,趙正旭

        (石家莊鐵道大學(xué) 信息科學(xué)與技術(shù)學(xué)院,石家莊 050043)

        基于BNF的3DS文件格式規(guī)范化描述①

        陳 蕾,趙正旭

        (石家莊鐵道大學(xué) 信息科學(xué)與技術(shù)學(xué)院,石家莊 050043)

        3DStudio(3DS)是3dsMax用來保存模型信息的一種文件結(jié)構(gòu),是業(yè)界的通用標(biāo)準(zhǔn)格式之一.為了使不同星系之間的模型可以被自由調(diào)用,解決可視化系統(tǒng)中模型格式不兼容的問題,減小3DS文件的存儲空間,提出使用巴克斯范式(BNF)規(guī)范化描述3DS文件.描述了BNF的特點和對3DS文件結(jié)構(gòu)進行表述和分析的使用方法,并以土衛(wèi)三模型的3DS文件為例,使用BNF對其進行形式化定義,從而形成了統(tǒng)一的規(guī)范化管理格式,以利于搜索引擎的檢索和應(yīng)用.

        3DS;BNF;形式化語言;規(guī)范化

        隨著虛擬現(xiàn)實技術(shù)的發(fā)展,基于三維模型的深空探測實時三維可視化技術(shù)需求越來越大,對三維模型的需求也隨之增大.目前,常用的三維建模軟件包括AutoCAD[1]、3DS Max[2]、Autodesk Maya[3]、Zbrush[4]等,不同的三維建模軟件適用于不同的應(yīng)用領(lǐng)域,生成的模型格式也各種各樣.在深空探測實時三維可視化系統(tǒng)中,需要存儲成千上萬的三維模型,由于模型的數(shù)據(jù)格式和文件結(jié)構(gòu)不同,可能會導(dǎo)致各個星系互不兼容,使得這些三維模型不能在同一實時系統(tǒng)中同時被調(diào)用,導(dǎo)致在深空探測實時可視化系統(tǒng)中不能快速精確地調(diào)用目標(biāo)模型.如果對系統(tǒng)中三維模型的文件格式和描述方式制定統(tǒng)一的規(guī)范,對三維模型文件進行標(biāo)準(zhǔn)化和規(guī)范化處理,就會大大提高系統(tǒng)的效率.

        文件標(biāo)準(zhǔn)化和規(guī)范化是實現(xiàn)三維模型資源共享與重用的前提條件,在資源建設(shè)中占有極其重要的地位.規(guī)范化管理三維模型的途徑之一就是將模型的文件結(jié)構(gòu)“標(biāo)準(zhǔn)化”.首先統(tǒng)一三維模型的文件格式,本文選擇3DS[5]格式的三維模型,它是一種比較通用的保存三維模型信息的文件格式.其次需要對3DS文件進行規(guī)范化描述,制定一個統(tǒng)一的描述規(guī)則.目前對于3DS的文件格式和塊結(jié)構(gòu)都是以樹狀圖或自然語言描述,必須用自然語言加以說明才能將3DS的文件結(jié)構(gòu)描述清楚.這些圖表和自然語言計算機識別不了,現(xiàn)有的文本描述方式和自然語言解釋方式存在二義性等弱點,因此必須尋找一種規(guī)范化的形式將其描述.

        描述文件數(shù)據(jù)結(jié)構(gòu)的常用語言有XML(eXtensible Markup Language)[6]、 JSON(JavaScript Object Notation)[7]、Z語言[8,10]、BNF[11].XML具有文檔結(jié)構(gòu)清晰、容易閱讀等優(yōu)點,但其文件尺寸一般都比較大,因此在現(xiàn)有的網(wǎng)絡(luò)條件下傳輸文件效率較低[12].JSON采用完全獨立于語言的文本格式,易于人閱讀和編寫,同時也易于機器解析和生成.Z語言是一種用“數(shù)學(xué)文字”或“數(shù)學(xué)符號”來描述計算機系統(tǒng)的規(guī)范化語言,是軟件工程中編碼之前的規(guī)格說明語言.BNF是一種上下文無關(guān)文法的符號集,由于其簡潔、明了和科學(xué)而被廣泛接受[13,14].

        經(jīng)過比較,BNF具有簡單易學(xué)、開放、易于擴展、分析效率高等優(yōu)點,相對于其它形式化語法,在描述文件格式方面具有更好的適用性.因此,本文使用BNF描述3DS文件結(jié)構(gòu),統(tǒng)一描述文件格式,以一種計算機可識別的文法將其規(guī)范化描述,將3DS文件變?yōu)椤皹?biāo)準(zhǔn)”格式,建立一種專有的數(shù)據(jù)格式,使其更加通用.

        1 3 DS文件解析

        3DS文件是樹狀結(jié)構(gòu)的二進制文件,基本單位是塊,每個塊都有各自的用途.所有塊都是以樹形結(jié)構(gòu)組織的,以一個主塊開始,以嵌套的形式構(gòu)成.

        文件的主塊ID是Ox4D4D,這可以判斷一個文件是否是3DS文件.3DS文件的每個塊都是一個層次結(jié)構(gòu),每一部分都有各自特有的ID號,圖1表示了3DS文件中塊的存在結(jié)構(gòu)及位置(文件太長,只畫出文件前幾個塊,其他不再贅述).

        圖1 3DS文件結(jié)構(gòu)和塊

        這些“塊”描述了3DS文件的數(shù)據(jù)信息,由塊頭和數(shù)據(jù)兩部分組成.塊頭包括ID和長度兩項,共占6位,長度指得是整個塊的長度,而不只是數(shù)據(jù)的長度.每一個“塊”都是以2個字節(jié)的ID開始,緊接著是4個字節(jié)的塊長度信息,緊接著是塊數(shù)據(jù)信息[15,16],如圖2所示.

        圖2 3DS文件塊的嵌套

        從圖1和圖2可以看出,3DS文件是一層套一層的 樹狀結(jié)構(gòu),而且這個樹狀結(jié)構(gòu)是一個無比龐大的家族,每一個塊都包含著自己的子塊,子塊接著包含子塊,如此下去.

        2 3 DS文件的BNF文法表示

        2.1 BNF范式

        BNF就是使用一種類似的形式來描述一個問題,讓所有參與者都能明白他們對哪一方面能夠達成一致意見.也就是對于某個問題制定一個統(tǒng)一的標(biāo)準(zhǔn),為某個符號賦予一個特定的意義,在某個領(lǐng)域內(nèi)它就只能是這個意思,別人在了解這個標(biāo)準(zhǔn)和所制定的規(guī)則之后,就能理解使用這種符號集的表達方式和內(nèi)容.

        BNF被廣泛應(yīng)用于編程語句,也可以用來規(guī)范自然語言[17,18].BNF非常精確,在語法上沒有歧義;形式簡單易學(xué),便于使用者和計算機處理;開放、易于擴展、表達能力較強,能充分表達出描述者意圖.而用普通語言描述的語法不僅冗長,而且會造成理解上的歧義;用BNF表示的語法是數(shù)學(xué)產(chǎn)物,可以被計算機理解,因此選擇BNF描述文件語法結(jié)構(gòu).

        2.2 塊結(jié)構(gòu)描述

        文章上一節(jié)中,使用自然語言和圖表的形式對3DS的文件結(jié)構(gòu)進行了描述,這種方式雖然通俗易懂,但是由于結(jié)構(gòu)比較繁雜,沒有形成一個統(tǒng)一的形式.如果使用BNF制定一種通用的文法,結(jié)果會更加一目了然,計算機也更容易識別.對圖1和圖2中的3DS文件結(jié)構(gòu)制定BNF文法,則表示為:

        (1)首先對一些專業(yè)術(shù)語作以下定義:

        塊 ::=chunk

        子塊 ::=sub-chunk

        塊頭 ::=head

        數(shù)據(jù) ::=data

        長度 ::=size

        (2)句子文法如下:

        由于3DS文件的塊ID是由十六進制數(shù)表示的,2個字節(jié),一共四位;size表示的是整個塊的長度,也是用十六進制數(shù)表示的,所以其BNF表示文法如下:

        BNF范式中有不定循環(huán)的規(guī)則[19],格式為:*Rule,即在元素前加操作符*表示重復(fù),完整形式為: *element,例如:3*3表示該元素只允許3次,所以塊ID和size可以簡化為:

        ID::=“Ox”,4*4(ID是兩個字節(jié),4位表示,即重復(fù)4次)

        size::=“Ox”,8*8(size是四個字節(jié), 8位表示,即重復(fù)8次)

        每一個塊的ID都不一樣,都有自己的專屬表示,比如主塊ID是Ox4D4D,編輯塊是Ox3D3D,具體塊的ID只需要根據(jù)實際情況靈活替換即可.

        通過上述幾個文法表示,采用遞歸法可以簡潔地表示出3DS文件中塊與塊的包含關(guān)系和樹狀結(jié)構(gòu).這種使用字母和符號表達的文法沒有二義性,計算機更容易識別,更通用.

        2.3 文件描述

        在描述3DS文件的時候,如果單純從實體外觀上描述,可能會因為一些語言共識或者描述方式的不同,造成理解上的歧義.另一方面,每個3d模型都有自己的特點,都描述出來就會出現(xiàn)很多語句,這些語句可能只是換了一個形容詞,或者只是換了一個名詞而已,這樣就會做許多重復(fù)的工作.如果,現(xiàn)在用一種規(guī)范定義出3DS文件的描述形式,那就會省很多工作量,只需要套用形式就行.

        通過上述3DS文件的描述,我們可以了解到3DS文件數(shù)據(jù)格式是由“塊”組成的,它是一個樹形層級結(jié)構(gòu),主塊包含子塊的關(guān)系.

        首先,一個 3DS文件的開始是主塊MAIN3DS,其ID是Ox4D4D,它是基本信息塊,所以在一個3DS文件中,主塊是必選項,它總是以主塊Ox4D4D開始的.其次是一級子塊,版本信息塊VERSION,ID是Ox0002,編輯信息塊EDIT3DS,ID是Ox3D3D,關(guān)鍵幀信息塊KEY3DS,ID是OxB000.

        最基本的語句規(guī)范描述如下:

        因為一個3DS文件總是以主塊開始的,所以是必選項,用尖括號括住以表示必選.緊接著是版本信息塊、編輯信息塊和關(guān)鍵幀塊.關(guān)鍵幀信息塊是關(guān)于幀動畫信息的數(shù)據(jù),所以這一部分內(nèi)容不是必須存在的,所以用[]括起來表述可選項內(nèi)容.

        編輯塊的父塊是 Ox4D4D,其主要子塊是EDIT_MATERIAL 材 質(zhì) 塊 ,ID 是 OxAFFF; EDIT_OBJECT對象塊,ID是Ox4000.

        EDIT_UNKNWN、OBJ_UNKNWN等指的是一些未知信息塊,它可以有多個,也可以沒有,所以用花括號括起來,表示重復(fù)0到無數(shù)次.

        主編輯塊的子塊雖然是按照一定的次序存放,但其中有些塊并不是一定存在的,比如:如果你沒有定義材質(zhì),使用缺省材質(zhì),這里將不存在材質(zhì)塊.

        2.4 文件數(shù)據(jù)結(jié)構(gòu)描述

        2.4.1 宏定義

        在一個3DS文件中,使用宏定義來定義文件中的塊:

        #define MAIN3DS 0x4D4D //定義主塊

        使用BNF統(tǒng)一描述為:

        Macro definition::=“#define”, //具體塊的Name根據(jù)實際情況替換即可

        2.4.2 定義數(shù)據(jù)結(jié)構(gòu)

        在3DS文件中,保存塊信息的結(jié)構(gòu)如下:

        3 實例分析

        3.1 土衛(wèi)三.3DS文件數(shù)據(jù)格式解析

        許多文獻已經(jīng)介紹過,3DS文件的二進制位存儲順序是Intel式的[20],低字節(jié)在前,高字節(jié)在后,所以在讀取3DS數(shù)據(jù)文件的時候必須考慮這個規(guī)則.下面通過一個具體實例對3DS文件的數(shù)據(jù)格式進行詳細解析:首先,通過3DSMax2010創(chuàng)建土衛(wèi)三的三維模型,以.3DS的格式導(dǎo)出并保存,如圖3所示.

        圖3 3dsMax打開土衛(wèi)三.3DS的三維模型

        通過工具C32asm讀取圖3中.3DS的土衛(wèi)三文件,得到其十六進制數(shù)據(jù)列表,如圖4所示.圖中所顯示的數(shù)據(jù)以兩個字節(jié)的塊ID開始,之后是四個字節(jié)的塊的長度信息.從數(shù)據(jù)中提取到標(biāo)志性的塊ID,比如Ox4D4D(主塊)、Ox3D3D(編輯塊)及OxAFFF(材質(zhì)塊)等,它們是兩個字節(jié)的塊ID,后面緊跟4個字節(jié)該塊的長度信息.

        圖4 3DS格式的土衛(wèi)三十六進制數(shù)據(jù)

        從土衛(wèi)三3DS文件中截取一組數(shù)據(jù)如下:

        4D 4D CA C9 09 00 02 00 0A 00 00 00 03 00 00 00 3D 3D DE C8 09 00......

        (1)首先,4D4D是該文件的主塊ID,占兩個字節(jié).

        (2)之后的4個字節(jié)保存的是主塊的長度信息,也就是整個文件的長度.由于3DS二進制數(shù)據(jù)是按低位在前、高位在后存儲的,所以主塊的長度為Ox0009C9CA.

        (3)接著是該 3DS文件的第一個子塊的ID, Ox0002.子塊的長度是Ox0000000A. (4)之后的塊ID未知,歸為未知信息,可以跳過(5)Ox3D3D是主編輯塊的ID.該塊的長度為Ox0009C8DE.

        (6)之后的字節(jié)的讀取規(guī)則按如上步驟.

        3.2 土衛(wèi)三3DS文件的BNF描述

        根據(jù)以上的研究內(nèi)容,運用BNF描述土衛(wèi)三.3DS文件結(jié)構(gòu),具體內(nèi)容如下:

        根據(jù)式①和圖4中土衛(wèi)三3DS文件的十六進制序列,其BNF描述規(guī)范如下:

        根據(jù)式②和③擴展如下:

        (1)基本塊的表示:

        (2)版本塊的表示:

        (3)編輯塊的表示:

        (4)材質(zhì)塊的表示:

        (5)綜合以上所有式子,總式表示為:

        由于3DS文件是嵌套結(jié)構(gòu),因此以上是通過遞歸的方式表示3DS的BNF描述方法,先用非終結(jié)符一層一層表示,直到結(jié)構(gòu)最中心再用終結(jié)符一層一層替換.由于土衛(wèi)三.3DS文件塊結(jié)構(gòu)特別龐大,其中有許多未知塊和不重要的塊,文章不再贅述,只選取了其中比較重要的塊.上述所用數(shù)據(jù)是從土衛(wèi)三.3DS文件的十六進制數(shù)據(jù)序列中摘取,數(shù)據(jù)屬實.

        從上述式子可以看出,這種描述方法與圖4中文件的十六進制數(shù)據(jù)相比,更清晰、更簡潔.省去了沒有用的信息之后,所有表述的都是模型文件必要的特征信息,減小了文件存儲空間.

        4 結(jié)論與展望

        如何將知識提煉成規(guī)則,需要用到統(tǒng)一的文法.文法最吸引人的特性,是它們自然地描述了所定義語言句子的分層語法結(jié)構(gòu).基于BNF的3DS文件文法表示,可以更科學(xué)地描述文件的結(jié)構(gòu),更加簡潔、通用.

        在深空探測三維可視化系統(tǒng)中,將模型文件格式統(tǒng)一,保證在各個星系之間模型可以被自由調(diào)用,解決了不同星系系統(tǒng)中模型格式不兼容的問題.使用巴克斯范式描述3DS文件,可以縮小文件長度,同時在描述過程中,把文件中不重要的部分省略,描述文件的必要信息,在不影響模型正常顯示的情況下,將文件描述到最簡,這不僅有助于計算機快速讀取,也方便使用者識別.

        文章為更好地管理和使用3DS文件提出一種新思路,希望能對改進3DS文件的存儲空間和傳送速率起到一定的借鑒作用.接下來,需要對深空探測系統(tǒng)中大量天體模型的具體描述,在應(yīng)用中完善該描述方法,能夠進一步促進航天事業(yè)的發(fā)展.另外,計劃在3DS文件分類過程中使用BNF描述代碼,制定統(tǒng)一的描述規(guī)范,如何利用BNF對3DS文件制定分類規(guī)范也是下一步要進行的研究工作.

        1百度百科.AutoCAD.http://baike.baidu.com/view/25199.htm. [2016-07-27].

        2百度百科.3dsmax.http://baike.baidu.com/view/11137.htm# reference-[1]-11137-wrap.[2016-08-01].

        3 百 度 百 科 .Autodesk Maya.http://baike.baidu.com/view/ 6463073.htm?fromtitle=maya&fromid=38497&type=syn. [2016-07-15].

        4百度百科.ZBrush.http://baike.baidu.com/view/165599.htm. [2016-08-05].

        5杜琳,蔣輝.VC++中利用DirectX實現(xiàn)3DS文件的讀取和控制.計算機時代,2010,01:41–43.

        6搜狗百科.XML.http://baike.sogou.com/v34402.htm?fromTitle= XML.[2016-07-26].

        7 百度百 科 .JSON.http://baike.baidu.com/view/136475.htm. [2016-07-27].

        8趙正旭,溫晉杰,趙衛(wèi)華.Z規(guī)范及其使用方法.北京:科學(xué)出版社,2015.

        9 Wen JJ,Guo Y,Zhao ZX.Representation of raspberry PI practice in Z notation.British Journal of Applied Science& Technology,2016,(4):2231–0843.

        10趙正旭,溫晉杰.Z規(guī)格說明自動生成器.計算機系統(tǒng)應(yīng)用,2016,25(4):148–155.

        11百度百科.BNF.http://baike.baidu.com/view/1137652.htm. [2016-07-24].

        12程小東,張宇.X3D文件轉(zhuǎn)換為JSON的方法.池州學(xué)院學(xué)報,2009,23(3):29–30.

        13 Zhao W,Xia CH,Luo Y,Liu XC,Wu WK.An approach for description of computer network defense scheme and its simulation verification.Journal of Computers,2014,(2): 388–398.

        14羅晨,鮑廣宇,劉曉明,袁黎苗.基于改進BNF的作戰(zhàn)管理語言語法形式化方法.計算機科學(xué),2012,39(4):189–192.

        15劉芳,劉賢梅.3DS文件讀取、繪制與控制方法的研究與應(yīng)用.計算機工程與設(shè)計,2009,30(19):4575–4578.

        16百度文庫.Autodesk公司官方 3ds文件格式介紹. http://download.csdn.net/detail/whucv/4851225.[2015-11-15].

        17 Xiong W,Jin YH,Liu ZY.Recognizing Chinese number and quantifier prefix to enhance statistical parser in machine translation.Journal of Computers,2014,(4):867–874.

        18 Laros JFJ,Blavier A,den Dunnen JT,Taschner PEM.A formalized description of the standard human variant nomenclaturein Extended Backus-NaurForm.BMC Bioinformatics,2011,(12):S5.

        19綠色背影.巴科斯范式.http://xl-feng1314.blog.163.com/ blog/static/4450715220080196551349/.[2016-05-15].

        20劉爽,張恒博.三維建模軟件3dsMax數(shù)據(jù)文件3ds的解析.大連民族學(xué)院學(xué)報,2012,14(3):260–264.

        3DS File Format Specification Based on BNF

        CHEN Lei,ZHAO Zheng-Xu

        (School of Information Science and Technology,Shijiazhuang Tiedao University,Shijiazhuang 050043,China)

        3DStudio(3DS)is a file structure of 3dsMax used to store model information,which is one of the industry’s standard format in 3D software.In order to ensure the models of different system can be called freely,to solve the problem that the different model format is not compatible in visual system,and to reduce the storage space of 3DS file, this paper proposes to use the Backus-Naur Form(BNF)specification to describe the 3DS file.This paper describes the characteristics of the BNF and the method of describing and analyzing the 3DS file structure,and takes the 3DS file of Tethys model as an example,using BNF to formally definite it,thus forms a unified format of standardization management,which facilitates retrieval and application of search engine.

        3DS;BNF;Formal language;specification

        河北省高層次人才科學(xué)研究項目(GCC2014010)

        2016-08-10;收到修改稿時間:2016-09-13

        10.15888/j.cnki.csa.005721

        猜你喜歡
        子塊文法字節(jié)
        基于八叉樹的地震數(shù)據(jù)多級緩存方法
        基于八叉樹的地震數(shù)據(jù)分布式存儲方法研究
        No.8 字節(jié)跳動將推出獨立出口電商APP
        基于特征值算法的圖像Copy-Move篡改的被動取證方案
        關(guān)于1940 年尼瑪抄寫的《托忒文文法》手抄本
        No.10 “字節(jié)跳動手機”要來了?
        基于波浪式矩陣置換的稀疏度均衡分塊壓縮感知算法
        簡談MC7字節(jié)碼
        Similarity measurement method of high-dimensional data based on normalized net lattice subspace①
        A nearest neighbor search algorithm of high-dimensional data based on sequential NPsim matrix①
        无人高清电视剧在线观看| 日本一区二区午夜视频| 亚洲成人激情深爱影院在线| 精品国产天堂综合一区在线| 大肉大捧一进一出视频出来呀| 欧美第五页| av在线网站手机播放| 97超碰国产成人在线| 99精品国产一区二区三区不卡 | 久久久窝窝午夜精品| 亚洲国产高清在线视频| 亚洲中文字幕精品视频| 亚洲国产精品无码专区| 在线观看国产白浆一区三区| 亚洲成熟丰满熟妇高潮xxxxx| 亚洲av一宅男色影视| 久久91精品国产91久久麻豆| 杨幂一区二区系列在线| av狠狠色丁香婷婷综合久久| 亚洲男同志gay 片可播放| 亚洲精品一品二品av| 日韩人妻中文字幕高清在线| 最近在线更新8中文字幕免费| 揄拍成人国产精品视频| 一区二区三区在线观看视频| 欧美性生交大片免费看app麻豆| 成全高清在线播放电视剧| 亚洲精品国产老熟女久久| 人妻少妇偷人精品一区二区三区| 亚州性无码不卡免费视频| 久久精品一区二区免费播放| 二区三区亚洲精品国产| 一本一道久久精品综合| 亚洲av成人片色在线观看高潮| 欧美情侣性视频| 国产偷闻隔壁人妻内裤av| 国产精品女同一区二区免费站| 精品国产乱码久久久久久1区2区 | 熟女人妻在线中文字幕| 成人网站免费看黄a站视频| 日韩欧美在线播放视频|