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