王 欣,薛亞娣
(蘭州文理學(xué)院 數(shù)字媒體學(xué)院,甘肅 蘭州 730000)
虛擬現(xiàn)實(virtual reality,VR)技術(shù)不斷成熟和更新,為數(shù)字化展館環(huán)境構(gòu)建以及展品建模提供了更直觀、更快速的實現(xiàn)方法。虛擬現(xiàn)實技術(shù)基于計算機模擬產(chǎn)生三維的虛擬空間[1],讓受眾在虛擬的展覽環(huán)境中產(chǎn)生身臨其境的沉浸感、交互感。陳小連基于VR/AR技術(shù)實現(xiàn)了室內(nèi)云設(shè)計[2],易用性強、渲染速度快,滿足了互聯(lián)網(wǎng)層面室內(nèi)云軟件的設(shè)計需求。為此,本次關(guān)于數(shù)字展館場景圖像表面重建的研究也通過虛擬現(xiàn)實技術(shù)來實現(xiàn)。從虛擬現(xiàn)實技術(shù)的應(yīng)用特性角度而言,本研究旨在解決以往展館虛擬環(huán)境構(gòu)建中表面格網(wǎng)狹長三角形過多、三角格網(wǎng)復(fù)雜度高、模型渲染計算量大、渲染不暢等問題,利用虛擬現(xiàn)實技術(shù)中的優(yōu)化算法實現(xiàn)數(shù)字展館場景表面三角格網(wǎng)的重建與渲染,在實驗分析環(huán)節(jié)驗證本文方法在數(shù)字展館場景圖像表面重建中的優(yōu)越性。
采用經(jīng)典的Delaunay三角形格網(wǎng)表達TIN,Delaunay三角形格網(wǎng)應(yīng)用二維平面內(nèi)的離散數(shù)據(jù)點實時連接得到,具有互不交叉的特點[3],生成狹長三角形的概率較低[4],在三維場景表面重建中應(yīng)用廣泛?;谥瘘c插入法的Delaunay三角形格構(gòu)建方法包含三個步驟。首先,將展館場景三維坐標(biāo)xoy平面投影,獲得二維平面點集中x與y軸正負4個方向極值點,分別采用xα、xβ、yα、yβ表示;增加λ表示正偏移值,取值在0之上,由此計算最小矩形包圍盒的橫坐標(biāo)與縱坐標(biāo)如式(1)-式(4)所示。
Xα=xα+λ
(1)
Xβ=xβ-λ
(2)
Yα=yα+λ
(3)
Yβ=yβ-λ
(4)
式(1)-式(4)中,(Xα,Yα)、(Xα,Yβ)、(Xβ,Yα)、(Xβ,Yβ)表示矩形包圍盒的4個頂點坐標(biāo),原始的三角格網(wǎng)通過連接隨機一條角線得到。其次,全部點依次插入此刻三角格網(wǎng)內(nèi),遍歷全部三角形獲得最優(yōu)的三角形插入點位。最后,確定其所在三角形附近全部有外接圓(該插入點涵蓋在內(nèi))的三角形并構(gòu)成影響域凸包,影響域內(nèi)全部三角形之間的公共邊需剔除,將插入點、影響域形成多邊形的頂點進行連接[5]。此過程中基于空外接圓準則局部優(yōu)化插入點的影響域,最大程度避免空間三角形和二維平面的夾角較大情況下還原到三維空間后出現(xiàn)狹長三角形。第二步和第三步循環(huán)操作,插入全部點生成最終的三角形格網(wǎng)。
復(fù)雜的場景模型往往生成巨大規(guī)模的三角形網(wǎng)格,為了構(gòu)建具有不同細節(jié)層次的展館場景模型,基于Hoppe等人提出的邊折疊算法對網(wǎng)格實施簡化[6]。就是刪除三維模型一條邊中的頂點,求取新頂點位置重新連接邊,模型表面三角面片規(guī)模大量削弱。圖1和圖2展現(xiàn)了邊折疊前后的細節(jié)原理,在邊折疊操作中定義(k1,k2)表示待折疊的邊,v0表示折疊后新頂點,刪除頂點k1、k2,k1k3、k1k4、k1k7、k1k8、k2k4、k2k5、k2k6、k2k7、k1k2是與原頂點相連的邊需全部刪除,連接待折疊邊相鄰頂點和新頂點得到新折疊后的邊,此為一次邊折疊的過程。
圖1 未折疊邊效果
圖2 折疊邊效果
1.2.1 改進循環(huán)結(jié)構(gòu)四叉樹算法
傳統(tǒng)遞歸遍歷四叉樹算法進行三維模型渲染過程中,遞歸函數(shù)在壓入、讀取操作中產(chǎn)生極大的堆棧負擔(dān),延長了計算用時[7]。不僅如此,一次調(diào)用往往需要后續(xù)調(diào)用的配合,增加了所需堆棧操作數(shù)規(guī)模,當(dāng)前堆??捎每臻g難以滿足應(yīng)用需求[8]。所以改進傳統(tǒng)遞歸遍歷四叉樹算法的渲染策略,使用循環(huán)結(jié)構(gòu),由上至下按順序地生成全部四叉樹節(jié)點。
首先,基于四叉樹算法分割待渲染的數(shù)字展館場景。數(shù)字展館場景三維渲染過程中,將全部待渲染畫面視為一個矩形網(wǎng)格,基于四叉樹思想實施區(qū)域劃分。場景數(shù)據(jù)發(fā)送至渲染處理模塊,定義三維元素頂點坐標(biāo)為(x,y,z),頂點的高度用y表示;將各個(x,y,z)拆分為(x,z)與y,單獨實施渲染操作。待渲染矩形網(wǎng)格中,該節(jié)點三維元素渲染精度值需求基于節(jié)點與觀察者位置的距離、平坦水平共同確定,距離越近,平坦水平越差的節(jié)點所在位置對應(yīng)的渲染精度要求更高,應(yīng)深度細分對應(yīng)的四叉樹節(jié)點。
其次,基于改進循環(huán)結(jié)構(gòu)四叉樹算法進行場景渲染。改進循環(huán)四叉樹算法的操作原理如圖3所示。算法實施前確定好模型渲染的需求、四叉樹的層數(shù)、四叉樹節(jié)點數(shù)量。循環(huán)四叉樹結(jié)構(gòu)采用“上→下”順序生成四叉樹節(jié)點[9]。第一步,打造一個立體空間場景,全部數(shù)字展館模型節(jié)點涵蓋在內(nèi);第二步,循環(huán)調(diào)用構(gòu)造函數(shù)創(chuàng)建空間內(nèi)全部節(jié)點新的子節(jié)點,全部節(jié)點均為葉子節(jié)點時終止;第三步,查看是否滿足終止迭代條件,迭代符合預(yù)設(shè)節(jié)點數(shù)量判斷是否繼續(xù)循環(huán),滿足預(yù)設(shè)值則終止迭代,否則繼續(xù)迭代操作。迭代構(gòu)造四叉樹子節(jié)點策略有效降低了數(shù)據(jù)運算規(guī)模,減少了堆棧操作負擔(dān)和壓力,數(shù)字場景渲染速度有效提升。
圖3 改進循環(huán)結(jié)構(gòu)四叉樹函數(shù)實施流程
1.2.2 雙層渲染裁剪策略
第一層“淡入淡出”裁剪。淡入淡出裁剪策略注重層次細節(jié),傳統(tǒng)層次細節(jié)算法切換各個LOD等級時導(dǎo)致頂點高度值突變,“突越”問題嚴重,改進后“淡入淡出”層次細節(jié)算法重點緩慢地處理頂點高度值[10],以高度補償?shù)哪J奖苊狻巴辉健眴栴}。數(shù)字展館建模屬于大場景建模,這種“淡入淡出”層次細節(jié)算法基于當(dāng)前模型在預(yù)設(shè)區(qū)間中的比例值,確定采用粗略裁剪還是精準裁剪,且裁剪掉預(yù)設(shè)視野外的模型精準有效。
第二層“緩慢剔除”裁剪。以往剔除裁剪算法通過求取三維向量實現(xiàn)剔除,同樣導(dǎo)致“突越”問題嚴重,為此采用二維向量計算代替以前的三維向量計算,預(yù)設(shè)2個剔除距離值作為不透明度約束,從而減少“突越”問題的存在。
為表明本文方法可行性與優(yōu)越性,將本文方法用于數(shù)字展館場景實施三維表面重建模擬實驗。引用基于FLOD單層裁剪的數(shù)字展館場景建模方法、基于Delaunay三角剖分的數(shù)字展館場景建模方法進行對比測試,以評估本文方法的優(yōu)勢與劣勢。
采用網(wǎng)格質(zhì)量系數(shù)評估場景圖像表面三角格網(wǎng)的構(gòu)建質(zhì)量,針對三角格網(wǎng)均勻程度的評估。網(wǎng)格質(zhì)量系數(shù)用U表示,計算方法如式(5)所示。
(5)
式(5)中,第i個三角形圓徑比用oi描述,當(dāng)U趨近于1時說明三角格網(wǎng)的質(zhì)量更佳,均勻程度較好。
同時展示了每插入一個點需要搜索的三角形數(shù)量,用p表示,需要搜索的三角形數(shù)量越少說明該方法的三角格網(wǎng)構(gòu)建越高;另外,采用三角格網(wǎng)簡化率h表示其精簡水平。本文方法的表面三角格網(wǎng)重建效果如表1所示。
表1 各方法在數(shù)字展館場景表面三角格網(wǎng)重建中的質(zhì)量評估結(jié)果
分析表1數(shù)據(jù)可知,和兩種對比方法相比,改進算法的網(wǎng)格質(zhì)量系數(shù)、每插入一個點需要搜索的三角形數(shù)量、三角格網(wǎng)簡化率均處于較高水平,網(wǎng)格質(zhì)量系數(shù)趨近于1,另外兩種方法的質(zhì)量系數(shù)均大于2.5,說明其網(wǎng)格構(gòu)建的均勻程度不夠理想,這是因為本文方法構(gòu)建Delaunay三角形格網(wǎng)過程中,找到其所在三角形附近全部有外接圓(該插入點涵蓋在內(nèi))的三角形并構(gòu)成影響域凸包,刪除了影響域內(nèi)全部三角形之間的公共邊,將插入點、影響域形成多邊形的頂點進行連接,將具有不規(guī)則特征、凸包特征三角形對網(wǎng)格均勻度的影響降到最低。本文方法每插入一個點約需要搜索48個三角形,基于Delaunay三角剖分的數(shù)字展館場景建模方法需要搜索的三角形數(shù)量達到486個,說明本文方法網(wǎng)格構(gòu)建定位較為精準,搜索三角形數(shù)量較少、格網(wǎng)生成的效率較高。此外,本文方法對三角格網(wǎng)的精簡水平達到了75.30%,且沒有損壞場景模型的細節(jié)幾何特征,不影響數(shù)字展館場景表面重建的效果,實現(xiàn)了模型輕量化特征、減少了建模對內(nèi)存的占用水平。
數(shù)字展館場景表面重建渲染效果如圖4所示,能夠看出圖中場景重建畫面清晰、場景燈光設(shè)置合理,場景層次分明、細節(jié)豐富,可以充分展現(xiàn)數(shù)字展館的場景信息。
圖4 數(shù)字展館表面重建渲染效果
為進一步了解本文方法的渲染流暢度情況,采用三種方法同步進行渲染幀數(shù)對比測試,幀是評估模型渲染效率的權(quán)威指標(biāo),較大的幀率值表示其渲染效率越高,較小的幀率值則表示其渲染效率越差。選取3個展館場景進行渲染測試,場景規(guī)模由小至大,場景1包含約35412個面、場景2包含約254784個面、場景3包含約451423個面,實驗結(jié)果如表2所示。
表2 渲染幀率實驗結(jié)果 Hz
表2數(shù)據(jù)顯示,本文方法處理相同規(guī)模場景的渲染能力突出,渲染場景1的幀率可達164Hz,是三種方法中最優(yōu),其他兩個場景渲染能力同樣突出。可見,本文方法對于復(fù)雜場景和簡單場景模型的渲染均具有良好的流暢度,能夠滿足受眾對于數(shù)字展館的沉浸式瀏覽需求。本文方法幀率高,一方面是因為采用了改進循環(huán)結(jié)構(gòu)四叉樹算法,由上至下按順序地生成全部四叉樹節(jié)點,減少了極大的堆棧負擔(dān);另一方面應(yīng)用了雙層裁剪策略,應(yīng)用“淡入淡出”裁剪+“緩慢剔除”裁剪的方式裁剪掉預(yù)設(shè)視野外的模型,減少渲染數(shù)據(jù)提升了渲染的效率,并且良好避免了模型格網(wǎng)“突越”問題的存在,保障了良好的渲染感觀。
為進一步增強數(shù)字展館虛擬建設(shè)場景的沉浸感以及交互感,本文利用虛擬現(xiàn)實技術(shù)進行了數(shù)字展館建模研究,具體采用基于四叉樹優(yōu)化算法實現(xiàn)數(shù)字展館場景表面重建。該方法存在兩個顯著優(yōu)勢:第一,利用Delaunay算法構(gòu)建場景表面格網(wǎng),降低生成狹長三角形的概率,結(jié)合邊折疊方法精簡三角形格網(wǎng)的數(shù)量,減少表面重建數(shù)據(jù)規(guī)模,大大減少了對內(nèi)存的開銷,運行效率更快;第二,改進傳統(tǒng)遞歸遍歷四叉樹算法的渲染策略,使用循環(huán)結(jié)構(gòu)的四叉樹算法,由上至下按順序地生成全部四叉樹節(jié)點,高質(zhì)量實現(xiàn)LOD技術(shù),呈現(xiàn)趨近現(xiàn)實的虛擬場景效果。最后,在測試中驗證了該方法生成網(wǎng)格效率高、質(zhì)量佳,模型渲染的流暢度較好、場景重建畫面趨于現(xiàn)實,提高數(shù)字展館場景的交互性、沉浸感、還原度。