張嘉鴻 冷 爍 胡振中
(1.清華大學 土木工程系,北京 100084; 2.清華大學 深圳國際研究生院,深圳 518055)
中國鄉(xiāng)村住宅通常以村落形式構成集合,且受所處地域的地理環(huán)境影響較大,因此在設計與建造過程中,不僅需要考慮單個建筑,還需要考慮村落布置與地理環(huán)境。
建筑信息模型(Building Information Modeling, BIM)和地理信息系統(tǒng)(Geographic Information System, GIS)被廣泛應用于鄉(xiāng)村住宅的建模與信息管理。二者雖然都包含了對建筑及其周圍環(huán)境的描述,但是他們描述信息的側重點與適用場景并不相同[1]。對于鄉(xiāng)村住宅而言,單個建筑的詳細信息通常由BIM描述,村落布置與地理環(huán)境則由GIS描述。因此在描述鄉(xiāng)村住宅時,需要整合BIM與GIS的數(shù)據(jù),實現(xiàn)對所需信息的完整表達。
課題組曾建立了一個面向鄉(xiāng)村住宅的基于Web的GIS與BIM輕量化集成平臺[2]。該平臺通過信息提取、信息集成與輕量化算法把GIS和BIM數(shù)據(jù)集成到多尺度建筑信息模型中。目前,已經成功搭建平臺框架,并實現(xiàn)了Shapefile、GeoJSON、OBJ以及IFC格式的信息提取與信息集成功能。在此基礎上,本文對該平臺進行完善與功能擴展工作。
受到網(wǎng)絡傳輸速度、瀏覽設備性能以及網(wǎng)頁瀏覽器加載限制等因素的影響,大型的三維信息模型數(shù)據(jù)在Web端上展示時會出現(xiàn)加載速度慢與瀏覽交互卡頓等問題。因此,需要對BIM與GIS的集成設計一套輕量化的方案。已經有許多學者對GIS與BIM的輕量化集成進行了研究,但是這些研究大多集中在城市建筑或大型公共建筑上,很少有研究關注到鄉(xiāng)村住宅的需求。與城市建筑相比,鄉(xiāng)村住宅中的單體建筑通常具有輪廓分明,建筑物表面較為平整,機電設備較少等特點?,F(xiàn)有的輕量化算法對于鄉(xiāng)村住宅模型而言效率較低,仍有優(yōu)化空間,因此需要設計一種針對鄉(xiāng)村住宅模型的輕量化方法。
FBX是Autodesk公司所有的一種面向三維模型的專有文件格式,常作為傾斜攝影的導出文件格式,可以為平臺提供建筑所在區(qū)域的地理信息,通常是各種信息集成平臺的重要數(shù)據(jù)來源。然而,該格式的信息是加密的,需要用Autodesk提供的FBX SDK來讀取和轉換其數(shù)據(jù)。
本文提出一種FBX文件的集成方法與一種適用于鄉(xiāng)村住宅模型的輕量化方法,解決了BIM與GIS輕量化集成的關鍵技術問題,提高了平臺的適用性與大模型可視化能力,完善了多尺度鄉(xiāng)村住宅信息模型平臺。
FBX的文件格式并不公開,在數(shù)據(jù)集成場景中無法直接實現(xiàn)信息提取功能。軟件或轉換器需要人工手動操作,且可能會出現(xiàn)數(shù)據(jù)丟失或兼容性問題。官方提供了FBX SDK,可用于對FBX進行解析、加載等操作。
目前,已經有部分研究基于FBX SDK實現(xiàn)了FBX的信息提取與轉換功能。聞平等人[3]實現(xiàn)了一種從FBX文件自動轉換為OBJ文件的方法。王才勇[4]分析了FBX文件的組織形式,并實現(xiàn)了FBX文件的信息提取與跨平臺展示功能。上述研究證明了利用FBX SDK提取FBX信息的可實現(xiàn)性,然而隨著FBX SDK的版本更新,SDK中提供的接口與功能都發(fā)生了改變。因此需要重新設計FBX的集成方法與具體實現(xiàn)。
建筑信息模型的輕量化技術是BIM領域的一項關鍵技術,按照輕量化方法可以分為三大類:模型信息簡化技術、多細節(jié)層次模型技術以及網(wǎng)格簡化技術。模型信息簡化技術通過剔除模型信息或重要性較低的細節(jié)特征實現(xiàn)輕量化,但并非鄉(xiāng)村住宅模型簡化的重點。多細節(jié)層次模型技術常用于大尺度復雜模型的可視化中,且常與網(wǎng)格簡化技術結合使用[5]。網(wǎng)格簡化技術是指使用較少的基元面片組成新的網(wǎng)格表達原始模型,且盡量不丟失模型整體特征與局部細節(jié)。網(wǎng)格簡化算法包括頂點聚類法、多邊形合并法、自適應細分法以及增量式簡化法等,都有各自的簡化效果與適用場景[6]。
考慮到鄉(xiāng)村住宅模型的特點以及結合多細節(jié)層次模型技術的需求,本文對網(wǎng)格簡化算法中的二次誤差測度算法(QEM)進行研究。QEM算法兼顧了簡化速度與效果,在連續(xù)的多細節(jié)層次模型之間過渡平滑[7],但簡化后模型網(wǎng)格分布較為均勻,不利于建筑模型細節(jié)特征的保持。董艷等人[8]與郭思怡等人[9]在QEM算法的基礎上引入了頂點重要度的概念,二者的頂點重要度計算與實現(xiàn)方式并不一致,均在原算法的基礎上更好地保留了模型的細節(jié)特征。本文將利用頂點重要度與模型特征因子在QEM算法的基礎上加以控制,使得模型表現(xiàn)出輪廓處網(wǎng)格密集、平坦處網(wǎng)格稀疏的特點。
Autodesk公司提供的FBX SDK是基于C++或Python實現(xiàn)的,而目標平臺是基于C#進行開發(fā)的,無法直接使用SDK。為解決此問題,本文提出先將FBX文件轉換為OBJ文件,再集成到平臺中。
由于前期已經完成了OBJ數(shù)據(jù)的集成工作,因此只需要實現(xiàn)由FBX文件向OBJ文件的自動轉換功能即可。Autodesk公司旗下的3D Studio Max軟件及官方提供的轉換器Autodesk FBX Converter都能實現(xiàn)FBX文件的人工轉換。然而這種轉換效率較低,無法實現(xiàn)自動化操作,且在實際轉換過程中容易出現(xiàn)數(shù)據(jù)丟失及版本兼容性等問題,可靠度較低。因此需要基于FBX SDK編寫一個可執(zhí)行文件以實現(xiàn)FBX向OBJ文件的自動轉換功能。
平臺首先調用轉換程序把FBX文件轉換為OBJ文件,隨后調用OBJ集成程序把轉換后的模型文件集成于平臺中。在平臺的實際應用中,傾斜攝影導出的FBX文件描述了區(qū)域的GIS環(huán)境,OBJ文件描述了建筑BIM模型。利用上述的集成方法可以實現(xiàn)對BIM與GIS數(shù)據(jù)的集成,具體實現(xiàn)流程如圖1所示。
圖1 集成流程圖
在文件導入前,需要初始化FbxManager與FbxIOSettings。其中,F(xiàn)bxManager是SDK的內存管理器類,負責創(chuàng)建、管理和銷毀FBX SDK對象; FbxIOSettings負責指定從文件導入或導出到文件的場景元素。FbxScene充當了場景中現(xiàn)有元素的容器,場景中可以包含網(wǎng)格、紋理、材質、燈光等多種元素。FbxImporter與FbxExporter分別用于FBX文件的導入與導出過程。
由于FBX SDK支持把場景直接導出至OBJ文件中,因此一般來說程序在實現(xiàn)文件導入后即可進行文件導出。然而,在一些特定的使用場景,需要對FBX文件儲存的信息進行一定的處理后再進行導出。因此本方法提供了一個信息處理模塊,使用者可以根據(jù)需求添加。
邊折疊算法最早由Hoppe等人[10]于1993年提出,該方法每次選擇一個折疊代價最小的邊,把此邊對應的兩個頂點Vi、Vj合并為一個位于邊上的新頂點V,所有與頂點Vi、Vj相連的邊都更新連接至新頂點V處,刪除所有退化的邊與三角形,通過迭代使網(wǎng)格滿足算法終止條件。折疊算法示意圖如圖2所示。
圖2 折疊算法示意圖
(1)
=vT(Q(vi)+Q(vj))v
(2)
QEM算法簡化的模型網(wǎng)格分布較為均勻,不利于建筑模型細節(jié)特征的保持,因此本算法在QEM算法的基礎上引入了頂點重要度與模型特征因子作為約束因子。
對于頂點V對應的每一個三角面片p,若三角面片的法向量與頂點法向量夾角越接近90°,則代表該三角面片越尖銳,在網(wǎng)格簡化算法中被簡化的次序應當越靠后; 與此相對的,若夾角越接近0°,則代表該三角面片越平緩,在網(wǎng)格簡化算法中被簡化的次序應當越靠前。為此,定義面片重要度:
(3)
式中,nv為頂點V的頂點法向量,np為三角面片p的面法向量,兩個向量的模均為1,α,β的含義如圖3所示。
圖3 QEM改進算法計算對象示意圖
頂點V與n個三角面片相接,把這些三角面片的面片重要度φ從大到小排序,令:
t=Ceiling(k·n)
(4)
對前t個面片重要度取均值,并定義此為頂點重要度λ:
(5)
式中,Ceiling為向上取整函數(shù),k為模型特征因子,取值范圍是k∈(0,1]。模型特征因子k由使用者根據(jù)模型的特征指定。當模型表面較為平坦,每個頂點只需較少的面片即可說明其尖銳程度,此時k可以取較小值; 當模型表面起伏較大,細節(jié)特征多,則每個頂點需要更多面片以說明其尖銳程度,此時k可以取較大值。
經過上述方法計算得到的頂點重要度λ∈[0,1)表征了某一頂點的尖銳程度,把頂點重要度λ作為權重因子引入二次誤差的度量:
Q′(vi)=λi·Q(vi)
(6)
Δ′(v)=vT(Q′(vi)+Q′(vj))v
(7)
引入頂點重要度λ作為權重因子并不會改變邊折疊代價的二次型基本性質,因此僅影響邊折疊順序的判定,并不會影響新頂點V的坐標計算。相較QEM算法,QEM改進算法在測度折疊誤差時,不僅考慮距離誤差,還同時考慮表面折疊起伏引起的變化偏差。通過擴大尖銳區(qū)域與平坦區(qū)域折疊代價的差距,盡量優(yōu)先折疊平坦區(qū)域,后折疊尖銳區(qū)域,在較高的簡化程度下能更好地保持模型特征。算法步驟如圖4所示。
圖4 QEM改進算法流程示意圖
本文以江蘇省徐州市某鄉(xiāng)村為實例研究對象,獲取了該鄉(xiāng)村及其周邊地理環(huán)境的傾斜攝影FBX文件與鄉(xiāng)村住宅的建筑模型OBJ文件。
應用本文提出的數(shù)據(jù)集成方法,對傾斜攝影FBX文件與建筑模型OBJ文件進行集成操作與可視化展示。如圖5所示,兩類文件成功實現(xiàn)了集成。
圖5 集成可視化
本文以鄉(xiāng)村住宅的獨棟建筑模型為輕量化方法應用對象,考察本文提出的輕量化方法的效率。模型初始面片數(shù)量為75 501個,初始頂點數(shù)量為34 637個。
首先控制模型特征因子為0.5??疾煸诓煌木W(wǎng)格簡化率下,模型在相同模型特征因子下的可視化效果。在本文中,網(wǎng)格簡化率指算法減少的面片數(shù)量占原始模型面片數(shù)量的比重。
如圖6~7所示,在網(wǎng)格簡化率低于75%的情況下,模型都能保持較好的外部輪廓與細節(jié)特征。當網(wǎng)格簡化率達到80%時,模型開始出現(xiàn)了一定的空洞。當網(wǎng)格簡化率達到90%時,模型已經出現(xiàn)了較大的畸變。算法生成網(wǎng)格簡化率為75%的模型所需時間少于8.7s,與QEM算法類似地,此時算法已經生成了一系列簡化率小于等于該值的簡化模型,且這些模型之間可以實現(xiàn)平緩過渡,算法效率較高。
圖6 網(wǎng)格簡化率分別為0%,75%時的模型簡化效果
圖7 網(wǎng)格簡化率分別為80%,90%時的模型簡化效果
隨后,控制模型的簡化率為75%??疾焱粋€模型在不同的模型特征因子下,模型在相同簡化率下的可視化效果。
圖8 模型特征因子分別取1,0.5,0.01時的模型簡化效果
如圖8所示,當模型特征因子取0.5時,簡化后的模型外墻較為平坦,與原模型相比并沒有發(fā)生較大的畸變。與之相比,當模型特征因子取1或0.01時,模型的外墻凹凸不平,出現(xiàn)了較大的畸變,且模型特征因子取0.01時,模型已經開始出現(xiàn)空洞。三個簡化模型的生成時間并沒有較大的區(qū)別,均在8.7s以內。
實例分析說明,本文提出的QEM改進算法在簡化率較高的情況下,簡化模型仍然能較好地能保持其外部輪廓與細節(jié)特征。通過合適地選擇模型特征因子,可以優(yōu)化模型的簡化效果。
本文提出了一種先轉換后集成的方法,基于FBX SDK實現(xiàn)了FBX的轉換與集成功能,提高了平臺的適用性。同時,本文基于頂點重要度與模型特征因子改進了QEM算法。經過實例分析,QEM改進算法在較高的簡化率下保護了模型的輪廓,且合理的模型特征因子取值有利于模型簡化效果的提升。