羅國(guó)夫 孫永 蔣榮龍 范亞軍
摘? 要:傾斜攝影測(cè)量突破了常規(guī)攝影測(cè)量只從垂直角度對(duì)同一物體或地區(qū)拍攝影像的局限,通過同一臺(tái)傳感器在很短時(shí)間內(nèi)(如1天或幾天內(nèi))多次從不同的角度,或是在同一數(shù)據(jù)采集平臺(tái)上同時(shí)搭載多臺(tái)傳感器,從豎直、前后左右等不同傾斜方向采集影像,將觀察者引入符合人眼視覺的,與真實(shí)場(chǎng)景相似的虛擬場(chǎng)景。傾斜攝影測(cè)量最主要的成果是實(shí)景三維模型數(shù)據(jù),三維模型數(shù)據(jù)有很多種數(shù)據(jù)格式,當(dāng)前傾斜攝影測(cè)量成果常用的三維模型數(shù)據(jù)格式有OSGB、OBJ、FBX三種數(shù)據(jù)格式。文章對(duì)這三種數(shù)據(jù)格式進(jìn)行簡(jiǎn)要的分析。
關(guān)鍵詞:傾斜攝影測(cè)量;三維模型;數(shù)據(jù)格式;OSGB;OBJ;FBX
中圖分類號(hào):TP39;P231;P208 文獻(xiàn)標(biāo)識(shí)碼:A? 文章編號(hào):2096-4706(2023)09-0103-04
Abstract: The tilt photogrammetry breaks through the limitation that conventional photogrammetry only takes pictures of the same object or area from the vertical angle, by using the same sensor in a very short period of time (such as a day or a few days) many times from different angles, or in the same data acquisition platform which is equipped with multiple sensors at the same time, and collects images from different oblique directions such as vertical, front, rear, left, and right, and introduces the observer into a virtual scene that conforms to human vision and is similar to the real scene. The most important result of tilt photogrammetry is real 3D model data. There are many data formats for 3D model data. At present, the 3D model data formats commonly used in tilt photogrammetry are OSGB, OBJ, FBX. This paper gives a brief description of these three data formats.
Keywords: tilt photogrammetry; 3D model; data format; OSGB; OBJ; FBX
0? 引? 言
傾斜攝影測(cè)量最主要的成果是實(shí)景三維模型數(shù)據(jù)。三維模型數(shù)據(jù)有許許多多種數(shù)據(jù)格式:3DS、OSGB、OBJ、FBX、3MX、STL、DAE等格式,當(dāng)前測(cè)繪行業(yè)常用的傾斜攝影測(cè)量成果三維模型數(shù)據(jù)格式主要是OSGB、OBJ、FBX三種數(shù)據(jù)格式,下面就這三種數(shù)據(jù)格式進(jìn)行簡(jiǎn)要的闡述。
1? OSGB格式數(shù)據(jù)
OSGB全稱是Open Scene Gragh Binary,是OSG(Open Scene Graph)三維圖形引擎數(shù)據(jù)Open Scene Graph Scene Data (OSG)格式的二進(jìn)制版本。要了解OSG數(shù)據(jù)格式,我們先了解OSG引擎。
OSG(Open Scene Graph)是三維圖形引擎,是一個(gè)開源圖形引擎,以O(shè)SGPL協(xié)議(基于LGP協(xié)議修改)免費(fèi)發(fā)布,在可視化仿真、三維重建、地理信息、虛擬現(xiàn)實(shí)、游戲、太空探索、石油礦產(chǎn)、科學(xué)計(jì)算等領(lǐng)域廣泛應(yīng)用。OSG引擎包括諸多與圖形學(xué)相關(guān)的功能模塊,OSG引擎的主要功能是提供圖形圖像應(yīng)用程序場(chǎng)景管理以及優(yōu)化圖形渲染。OSG引擎以O(shè)penGL為底層平臺(tái),使用C++編寫而成,并使用OpenGL底層渲染API。
OSG引擎最重要的特性是分頁(yè)數(shù)據(jù)管理,從最早期的OSG 0.9.5版本開始OSG引擎就具有分頁(yè)數(shù)據(jù)管理特性,并且一直在不斷地完善。傾斜攝影測(cè)量最主要的數(shù)據(jù)特征是數(shù)據(jù)瓦片化特征,即分頁(yè)數(shù)據(jù)特征,而OSG引擎的分頁(yè)數(shù)據(jù)管理特性幾乎完美的契合了傾斜攝影的瓦片數(shù)據(jù)特征,而且瓦片的動(dòng)態(tài)調(diào)度控制極為靈活。
OSG數(shù)據(jù)文件內(nèi)部結(jié)構(gòu)為樹狀結(jié)構(gòu),是一個(gè)多層級(jí)金字塔的模型數(shù)據(jù)集,是 Open Scene Graph三維引擎支持的三維模型格式,OSG數(shù)據(jù)的文件格式是公開的,OSG數(shù)據(jù)文件內(nèi)容包括三維模型結(jié)構(gòu)和紋理,三維模型紋理以圖片形式保存為外部文件。
二進(jìn)制版本的OSG數(shù)據(jù)文件OSGB,則將保存在外部的紋理圖片打包進(jìn)OSGB文件內(nèi),同時(shí)對(duì)OSG文件的數(shù)據(jù)進(jìn)行壓縮,一個(gè)OSGB數(shù)據(jù)文件里同時(shí)包含三維模型的幾何結(jié)構(gòu)和模型表面紋理,減小了文件的數(shù)據(jù)結(jié)構(gòu),應(yīng)用軟件在讀取OSGB文件時(shí),效率更高,傳播、發(fā)布更加方便,非常適合網(wǎng)絡(luò)發(fā)布。因此OSGB格式數(shù)據(jù)文件成為傾斜攝影測(cè)量實(shí)景三維模型數(shù)據(jù)文件的主要格式之一,如圖1所示。一個(gè)完整的傾斜攝影測(cè)量實(shí)景三維模型OSGB數(shù)據(jù)包括Data根目錄和metadata.xml文件。
1.1? Data文件夾
Data文件夾是傾斜攝影三維模型數(shù)據(jù)的文件夾,是模型數(shù)據(jù)的根目錄。在Data目錄下包含了一個(gè)一個(gè)分塊的瓦片數(shù)據(jù),由一個(gè)一個(gè)Tile分級(jí)文件夾構(gòu)成,每個(gè)Tile文件夾下的數(shù)據(jù)是一個(gè)個(gè)細(xì)節(jié)層次LOD文件。LOD稱為層次細(xì)節(jié)模型,是實(shí)時(shí)三維計(jì)算機(jī)圖形的一種技術(shù),1976年由Clark最先提出,它的工作原理是:當(dāng)觀察視點(diǎn)靠近被觀察目標(biāo)時(shí),觀察到的觀察目標(biāo)細(xì)節(jié)豐富,當(dāng)觀察視點(diǎn)遠(yuǎn)離被觀察目標(biāo)時(shí),觀察到的目標(biāo)逐漸模糊。計(jì)算機(jī)的圖形應(yīng)用程序根據(jù)用戶的觀察視點(diǎn)、觀察方向等條件判斷,只選擇相應(yīng)的模型細(xì)節(jié)進(jìn)行顯示,與觀察視點(diǎn)和觀察方向不相關(guān)的模型細(xì)節(jié)不加載,不顯示,提高了應(yīng)用程序的運(yùn)行效率。LOD層次細(xì)節(jié)模型還同時(shí)有效的協(xié)調(diào)了模型畫面的連續(xù)性和模型分辨率的關(guān)系。
如圖2所示,每個(gè)瓦片Tile分級(jí)文件夾下,規(guī)定必須有一個(gè)和目錄名同名的OSGB文件,作為L(zhǎng)OD細(xì)節(jié)模型的主瓦片,也是每個(gè)LOD細(xì)節(jié)模型金字塔層級(jí)最頂端的OSGB,否則無法識(shí)別根節(jié)點(diǎn)。這個(gè)主瓦片也可以看作是一個(gè)主節(jié)點(diǎn),主節(jié)點(diǎn)下以樹結(jié)構(gòu)組織整個(gè)LOD細(xì)節(jié)模型數(shù)據(jù)。
傾斜攝影測(cè)量實(shí)景三維模型OSGB格式的瓦片數(shù)據(jù)存儲(chǔ)在一個(gè)個(gè)由Tile和分塊編號(hào)、層級(jí)編號(hào)等構(gòu)成的目錄。Tile目錄是傾斜攝影測(cè)量實(shí)景三維模型OSGB格式瓦片數(shù)據(jù)的基本單元。一個(gè)Tile文件夾存儲(chǔ)一個(gè)分塊瓦片完整的OSGB格式數(shù)據(jù),一個(gè)Tile文件夾就是一個(gè)完整的層級(jí)金字塔。每一個(gè)OSGB數(shù)據(jù)文件就是一個(gè)完整獨(dú)立的三維模型數(shù)據(jù),包括模型表面結(jié)構(gòu)信息和貼圖,模型表面結(jié)構(gòu)信息以三角網(wǎng)形式存儲(chǔ)。
1.2? metadata.xml文件
metadata.xml文件是元數(shù)據(jù)文件,是描述數(shù)據(jù)的數(shù)據(jù)(data about data),元數(shù)據(jù)文件主要是描述數(shù)據(jù)屬性(property)的信息,如圖3所示。傾斜攝影測(cè)量實(shí)景三維模型數(shù)據(jù)的元數(shù)據(jù)文件描述的是傾斜攝影實(shí)景三維模型數(shù)據(jù)的坐標(biāo)系和中心點(diǎn)坐標(biāo)值的信息。
很多免費(fèi)的傾斜攝影OSGB三維瀏覽器,比如OSGBLab Viewer,DasViewer以及瞰景Smart3D Viewer,都可以不創(chuàng)建索引文件,直接把數(shù)據(jù)目錄拖進(jìn)去即可進(jìn)行三維瀏覽,但是像ContextCapture Viewer等一些瀏覽工具瀏覽多個(gè)瓦片(分塊)的大型傾斜攝影測(cè)量實(shí)景OSGB格式三維模型時(shí),需要?jiǎng)?chuàng)建一個(gè)索引文件才能對(duì)整個(gè)三維場(chǎng)景數(shù)據(jù)進(jìn)行瀏覽。這需要構(gòu)建一個(gè)S3C索引文件,通過S3C索引文件將模型整體加載。
2? OBJ格式數(shù)據(jù)
OBJ格式數(shù)據(jù)文件是一種標(biāo)準(zhǔn)3D模型文件格式,由Alias|Wavefront公司開發(fā),是Alias|Wavefront公司旗下3D建模和動(dòng)畫軟件AdvancedVisualizer的標(biāo)準(zhǔn)3D模型文件格式。OBJ格式數(shù)據(jù)文件非常適合用于3D軟件模型之間的互導(dǎo),Autodesk公司的三維動(dòng)畫和視覺特效軟件Maya也非常方便的讀寫。
傾斜攝影測(cè)量實(shí)景三維模型需要進(jìn)行模型修飾時(shí),很多傾斜攝影測(cè)量實(shí)景三維建模軟件,如美國(guó)bentley公司的ContextCapture可以輸出OBJ格式。如需要導(dǎo)入到Autodesk公司的三維建模和渲染軟件3dsMax中進(jìn)行處理或者建一個(gè)模型,然后調(diào)到Maya里面進(jìn)行渲染或?qū)A斜攝影測(cè)量實(shí)景三維模型作為動(dòng)畫場(chǎng)景等,輸出OBJ文件是一個(gè)非常好的選擇。
OBJ文件結(jié)構(gòu)與OSGB文件的樹狀結(jié)構(gòu)(塊結(jié)構(gòu))不同,OBJ文件只是很單純的使用了字典狀結(jié)構(gòu)。只用簡(jiǎn)單易懂的表意字符來表示而沒有使用塊ID來表征名字,OBJ這樣的文件結(jié)構(gòu)優(yōu)化了存儲(chǔ)但劣化了讀寫。
OBJ3.0格式數(shù)據(jù)文件支持直線(Line)、自由形態(tài)曲線(Free-form Curve)、多邊形(Polygon)和表面(Surface)。直線和多邊形使用它們的通過點(diǎn)位置來描述,OBJ數(shù)據(jù)的曲線和表面的定義是通過它們的控制點(diǎn)和依附于曲線類型的額外信息來定義的,這些信息支持規(guī)則和不規(guī)則的包括那些基于B樣條(B-spline)、貝塞爾曲線(Bezier)、基數(shù)(Cardinal/Catmull-Rom)和泰勒方程(Taylor equations)的曲線。OBJ數(shù)據(jù)的曲線和表面支持法線和貼圖坐標(biāo)。
如圖4所示,一個(gè)完整的傾斜攝影測(cè)量實(shí)景三維模型OBJ數(shù)據(jù)包括Data目錄和metadata.xml文件。Data目錄下存放分塊三維模型OBJ數(shù)據(jù),每一分塊模型數(shù)據(jù)存放在一個(gè)分塊目錄,分塊目錄內(nèi)存放OBJ數(shù)據(jù)的obj、mtl、jpg三個(gè)文件。元數(shù)據(jù)文件metadata.xml文件與OSGB格式類似。
OBJ格式數(shù)據(jù)一般包括三個(gè)子文件,分別是obj、mtl、jpg文件,如圖5所示。
2.1? OBJ文件
如圖6所示,OBJ文件由一行行文本組成,以符號(hào)“#”開頭的是注釋行,為了增加文件的可讀性,文件中可以隨意添加空格和空行,可以直接用寫字板打開進(jìn)行查看和編輯修改。數(shù)據(jù)行以一兩個(gè)標(biāo)記字母作為關(guān)鍵字(Keyword)開頭,約定關(guān)鍵字作為說明這一行是什么樣的數(shù)據(jù)。關(guān)鍵字根據(jù)數(shù)據(jù)類型排列,每個(gè)關(guān)鍵字有一段簡(jiǎn)短描述。多行可以連接在一起表示為一個(gè)邏輯行,要將一行連接下一行為一個(gè)邏輯行,只需在行尾添加一個(gè)連接符號(hào)“\”,連接符“\”后面不能出現(xiàn)空格或Tab格等其他字符,否則將導(dǎo)致文件出錯(cuò)。
2.2? Mtl文件
如圖7所示,Mtl文件是OBJ數(shù)據(jù)文件的材質(zhì)庫(kù)信息文件,也是一行行的文本文件,用于描述多邊形的可見屬性存儲(chǔ)文件。材質(zhì)庫(kù)中包含材質(zhì)的光澤(specular)、環(huán)境(ambient)、漫射(diffuse)的RGB(紅綠藍(lán)顏色)的定義值,以及折射(refraction)、反射(specularity),透明度(transparency)等其他特征。一個(gè)OBJ文件可能會(huì)引用超過一個(gè)的mtl文件。mtl文件可能包含一個(gè)或者多個(gè)不同命名的材質(zhì)定義。
2.3? Jpg文件
如圖8所示,jpg文件是模型貼圖的紋理圖片。當(dāng)前,絕大多數(shù)知名的3D軟件都支持OBJ文件的讀寫,但是相當(dāng)一部分軟件不支持直接讀寫,需要通過插件才能實(shí)現(xiàn)。
3? FBX格式數(shù)據(jù)
FBX文件格式是一種流行于3D模型編輯器和游戲引擎之間進(jìn)行3D數(shù)據(jù)交換的數(shù)據(jù)格式。最初由著名的加拿大實(shí)時(shí)三維動(dòng)畫軟件Kaydara公司創(chuàng)建,是實(shí)時(shí)動(dòng)畫軟件Filmbox保存的三維模型數(shù)據(jù)格式,F(xiàn)BX數(shù)據(jù)格式的名稱和擴(kuò)展名源自該應(yīng)用程序名稱FilmBox。Filmbox最終更名為 MotionBuilder。2006年,美國(guó)Autodesk公司收購(gòu)了加拿大Kaydara公司。
FBX文件數(shù)據(jù)格式原本是封閉和專有的,2005年,Kaydara公司為了鼓勵(lì)FBX 文件數(shù)據(jù)格式作為不同3D工具之間進(jìn)行高質(zhì)量的3D數(shù)據(jù)交換格式,Kaydara公司為 FBX 文件數(shù)據(jù)格式發(fā)布了一個(gè)公共 SDK,并參與了一項(xiàng)協(xié)調(diào)一致的公關(guān)活動(dòng),使 FBX 文件數(shù)據(jù)格式成為各種3D數(shù)據(jù)格式的黃金標(biāo)準(zhǔn)。
FBX文件數(shù)據(jù)支持3D模型、材質(zhì)特性、貼圖、骨骼動(dòng)畫、動(dòng)畫、蒙皮、場(chǎng)景層次、混合形狀、燈光、材質(zhì)照明、攝像機(jī)等信息;支持多邊形(Polygons)游戲模型、表面(Surfaces)、曲線(Curves)、點(diǎn)組材質(zhì)(Point Group Materials);支持法線和貼圖坐標(biāo)。貼圖、貼圖坐標(biāo)信息都存在FBX文件中,文件導(dǎo)入后,貼圖不再需要手動(dòng)指認(rèn),貼圖坐標(biāo)不需要調(diào)整。
FBX有兩種文件模型,一種是ASCII文本文件,另外一種是二進(jìn)制文件。二進(jìn)制文件的文件大小和加載速度上具有天然的優(yōu)勢(shì),但是不如ASCII文本文件具有可讀性和易于集成。
傾斜攝影測(cè)量實(shí)景三維模型FBX數(shù)據(jù)包括Data目錄和metadata.xml文件,如圖9所示。Data目錄下存放分塊三維模型FBX數(shù)據(jù),每一分塊模型數(shù)據(jù)存放在一個(gè)分塊目錄,分塊目錄內(nèi)存放FBX數(shù)據(jù)的fbx、jpg兩個(gè)文件,jpg文件是貼圖文件。元數(shù)據(jù)文件metadata.xml文件與OSGB格式類似。
FBX文件格式有強(qiáng)大的SDK,開發(fā)人員使用SDK支持的語言,可以非常方便的將FBX文件格式集成到應(yīng)用程序中。在應(yīng)用程序中,F(xiàn)BX文件格式導(dǎo)入和導(dǎo)出過程的添加是一件非常簡(jiǎn)單而直接的過程,只需要鏈接 SDK,然后使用FBX SDK 的API將數(shù)據(jù)流進(jìn)出即可。對(duì)于集成SDK的軟件開發(fā)人員,F(xiàn)BX隱藏了FBX數(shù)據(jù)文件格式的復(fù)雜性。
FBX具有良好的兼容性。如果SDK支持一個(gè)FBX 功能,它會(huì)支持FBX的所有功能,因?yàn)樗枪俜降那椅ㄒ坏腇BX SDK。所有以前版本的FBX文件數(shù)據(jù)格式FBX SDK都確??梢宰x取,其他軟件FBX數(shù)據(jù)生成工具生成的FBX數(shù)據(jù)文件,現(xiàn)行版本的大多數(shù)FBX SDK工具都可以正確讀取。FBX SDK通過SDK用戶透明的不同代碼路徑來讀取FBX 格式數(shù)據(jù)文件,即使FBX舊格式和新格式的數(shù)據(jù)文件格式發(fā)生變化,F(xiàn)BX SDK也能確??梢哉Wx取。因此,困擾程序員類似于復(fù)雜格式(如COLLADA(.dae))的兼容性問題在FBX上不存在。如果FBX正確支持某個(gè)功能,它能在應(yīng)用程序之間傳輸該數(shù)據(jù)而無須擔(dān)心。
FBX文件數(shù)據(jù)格式是一種封閉的文件數(shù)據(jù)格式,除了它的所有者Autodesk之外,其他人都不能夠發(fā)展這種格式。
4? 結(jié)? 論
以上分析了常見的三種實(shí)景三維模型數(shù)據(jù)格式,旨在拋磚引玉,在進(jìn)行傾斜攝影測(cè)量時(shí),可根據(jù)實(shí)景三維模型數(shù)據(jù)的具體應(yīng)用場(chǎng)景選擇合適的成果數(shù)據(jù)格。
參考文獻(xiàn):
[1] 李安福,曾政祥,吳曉明.淺析國(guó)內(nèi)傾斜攝影技術(shù)的發(fā)展 [J].測(cè)繪與空間地理信息,2014,37(9):57-59+62.
[2] 楊國(guó)東,王民水.傾斜攝影測(cè)量技術(shù)應(yīng)用及展望 [J].測(cè)繪與空間地理信息,2016,39(1):13-15+18.
[3] 王凱松,劉增良,邢晨.OSGB三維模型數(shù)據(jù)切割與修平編輯工具的設(shè)計(jì)與實(shí)現(xiàn) [J].北京測(cè)繪,2019,33(6):679-682.
[4] 侯慶明,呂揚(yáng),李兵,等.生產(chǎn)級(jí)傾斜實(shí)景三維建模方法比較分析 [J].北京測(cè)繪,2018,32(4):390-393.
[5] 耿中元,王鳳,劉飛,等.傾斜航空攝影實(shí)景三維模型技術(shù)研究及應(yīng)用 [J].北京測(cè)繪,2017(6):28-32.
作者簡(jiǎn)介:羅國(guó)夫(1977—),男,壯族,廣西天峨人,高級(jí)工程師,本科,研究方向:測(cè)繪應(yīng)用研究。