胡 博,陳 鋒,劉 敏
(1.廣東技術(shù)師范大學(xué)天河學(xué)院, 廣州 510540;2.福州市科學(xué)技術(shù)情報(bào)研究所, 福州 350014;3.西華師范大學(xué) 計(jì)算機(jī)學(xué)院, 四川 南充 637009)
作為20世紀(jì)90年代新興的全新技術(shù)方向,虛擬現(xiàn)實(shí)技術(shù)(VR)已經(jīng)發(fā)展成為仿真技術(shù)的一個(gè)重要研究領(lǐng)域,是仿真技術(shù)與計(jì)算機(jī)圖形學(xué)、人機(jī)交互技術(shù)、信息處理技術(shù)、傳感器技術(shù)等多種技術(shù)的集合,是多學(xué)科綜合發(fā)展的產(chǎn)物[1]。如今,隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,VR技術(shù)也隨之不斷成熟和普及。由于具有“身臨其境”的真實(shí)感,虛擬現(xiàn)實(shí)能以更加自然和逼真的人機(jī)交互方式,給用戶帶來(lái)全新的體驗(yàn)經(jīng)歷[1-3]。現(xiàn)階段,虛擬現(xiàn)實(shí)技術(shù)已經(jīng)在醫(yī)學(xué)、教育、軍事和文化等領(lǐng)域中得到廣泛應(yīng)用[4]。但是文化領(lǐng)域中的藝術(shù)場(chǎng)景建模與展示往往需要處理十分復(fù)雜的三維場(chǎng)景,現(xiàn)有的虛擬現(xiàn)實(shí)技術(shù)仍具有某些局限。由于計(jì)算機(jī)處理性能的限制,在虛擬仿真中對(duì)圖像進(jìn)行實(shí)時(shí)繪制時(shí)需要對(duì)逼真度和繪制速度兩者進(jìn)行有效平衡,從而在現(xiàn)有硬件條件下為用戶提供流暢的真實(shí)感體驗(yàn)[5]。VR環(huán)境下的復(fù)雜場(chǎng)景建模要求具有真實(shí)感的模型,而且虛擬場(chǎng)景還必須實(shí)時(shí)生成,即要求三維場(chǎng)景刷新速度需要和用戶視點(diǎn)變化的速度一致。這就要求復(fù)雜場(chǎng)景建模在不降低畫質(zhì)的條件下,減少三角形面片的數(shù)量,且一般要求刷新速度至少40 FPS以上,才能無(wú)延遲感覺(jué)。所以,復(fù)雜三維場(chǎng)景的模型優(yōu)化和快速繪制方法,在理論和實(shí)際應(yīng)用方面均存在巨大的研究?jī)r(jià)值。
現(xiàn)階段,三維虛擬建模的復(fù)雜場(chǎng)景優(yōu)化方法主要有3種:① 基于圖像的加速繪制;② 細(xì)節(jié)層次技術(shù);③ 可見(jiàn)性判斷。文獻(xiàn)[6]提出了一種基于SketchUp虛擬場(chǎng)景快速建模方法,能夠滿足大批量場(chǎng)景建模的需求。文獻(xiàn)[7]通過(guò)合理建模減小復(fù)雜度、通過(guò)真實(shí)感貼圖來(lái)增強(qiáng)逼真度、通過(guò)模型導(dǎo)入的對(duì)象化來(lái)實(shí)現(xiàn)對(duì)虛擬物體的控制,最終在虛擬現(xiàn)實(shí)場(chǎng)景建模的逼真性、實(shí)時(shí)性和可控性方面達(dá)到了較好的效果。文獻(xiàn)[8]提出了邊折疊網(wǎng)格簡(jiǎn)化的二次誤差度量計(jì)算方法,利用該方法對(duì)模型進(jìn)行了簡(jiǎn)化處理,結(jié)果表明:該算法可有效降低虛擬漫游三維模型的復(fù)雜度。文獻(xiàn)[9]提出了基于半邊折疊的多細(xì)節(jié)層次模型(levels of detail,LOD)簡(jiǎn)化算法,通過(guò)引入二次誤差量度、曲率特征、視覺(jué)特征度、折疊點(diǎn)的度以及折疊邊長(zhǎng)度排序,減少了模型誤差累積。
在上述研究理論的基礎(chǔ)上,針對(duì)復(fù)雜三維場(chǎng)景優(yōu)化問(wèn)題,本文采用三維模型簡(jiǎn)化和加速繪制技術(shù)相結(jié)合的方法對(duì)復(fù)雜藝術(shù)場(chǎng)景的實(shí)時(shí)繪制進(jìn)行了優(yōu)化研究。具體改進(jìn)方法為:① 采用半邊折疊算法對(duì)復(fù)雜三維幾何模型進(jìn)行簡(jiǎn)化處理,減少了計(jì)算開(kāi)銷,提高了模型渲染的效率;② 在復(fù)雜場(chǎng)景的細(xì)節(jié)層次繪制過(guò)程中,增加了一個(gè)選擇細(xì)節(jié)層次的預(yù)處理階段,通過(guò)投影值計(jì)算為每幀的場(chǎng)景區(qū)域選擇合適的細(xì)節(jié)層次視差度量系數(shù),加快了實(shí)時(shí)計(jì)算速度。實(shí)驗(yàn)結(jié)果顯示,在保證虛擬場(chǎng)景畫面質(zhì)量的條件下,本文優(yōu)化方法能夠以較快的渲染速度完成復(fù)雜藝術(shù)場(chǎng)景實(shí)現(xiàn)。
三維場(chǎng)景實(shí)時(shí)繪制技術(shù)的本質(zhì)是利用計(jì)算機(jī)技術(shù)讓用戶在所有視點(diǎn)和方向上對(duì)虛擬場(chǎng)景進(jìn)行觀察時(shí)均具有三維視覺(jué)感的技術(shù)[9]。為了給用戶提供最佳的真實(shí)感,該技術(shù)需要盡量統(tǒng)一圖像的刷新速度和用戶的視點(diǎn)變化速度,否則用戶最終看到的畫面會(huì)出現(xiàn)掉幀現(xiàn)象,從而影響用戶的體驗(yàn)感。
但是,在三維虛擬場(chǎng)景的繪制中,需要處理復(fù)雜的圖像數(shù)據(jù),尤其是信息量較多的復(fù)雜藝術(shù)場(chǎng)景時(shí),如果不能大幅提高內(nèi)存、CPU和圖像處理設(shè)備的性能,則會(huì)導(dǎo)致圖像的刷新率明顯降低。但是,必須保證足夠高的圖像刷新率才能確保場(chǎng)景顯示保持一定的實(shí)時(shí)性。如果VR系統(tǒng)必須在一定延遲后才能刷新出新的場(chǎng)景,那么將大幅降低系統(tǒng)中用戶的體驗(yàn)感,嚴(yán)重情況下還會(huì)導(dǎo)致用戶產(chǎn)生“眩暈”“惡心”等生理不適現(xiàn)象[10]?,F(xiàn)階段,復(fù)雜場(chǎng)景建模優(yōu)化的常用方法為L(zhǎng)OD技術(shù),該技術(shù)可以有效提高三維場(chǎng)景的刷新率,例如文獻(xiàn)[9]提出了一種基于半邊折疊的LOD簡(jiǎn)化算法,該算法能較好地保持模型的外形特征,實(shí)現(xiàn)起來(lái)快速有效。LOD的基本思想是在不影響畫面質(zhì)量的前提下,通過(guò)逐次簡(jiǎn)化景物的表面細(xì)節(jié)來(lái)減少場(chǎng)景的幾何復(fù)雜度,從而提高繪制算法的效率。圖1為人像模型的LOD顯示結(jié)果。
圖1 頭像模型的LOD顯示
目前,三維幾何模型的表示方法大致分為2種:面表示和體表示。兩者均有一定的優(yōu)勢(shì)和缺陷。體表示方法可以全面顯示物體的表面和內(nèi)部屬性,但是存儲(chǔ)空間較大,因此運(yùn)算成本較高。面表示方法僅顯示模型的表面屬性,占用空間相對(duì)體表示方法減少很多,因此成為現(xiàn)階段較為流行的三維幾何模型表示方法。
在面表示方法中,計(jì)算機(jī)圖形學(xué)中的三角網(wǎng)格表示方法是最常用的一種表示方法,能直接表示大多數(shù)的復(fù)雜網(wǎng)格模型。因此,本文選擇三角網(wǎng)格作為研究?jī)?nèi)容來(lái)實(shí)現(xiàn)模型表示及優(yōu)化。以三角網(wǎng)格模型為例,其網(wǎng)格模型表示示意圖如圖2所示。其中:v1,v2,…,v6表示每個(gè)拓?fù)漤旤c(diǎn),包含空間坐標(biāo)信息;f1,f2,…,f6表示三角形的編號(hào),由該三角形3個(gè)頂點(diǎn)組成。
圖2 網(wǎng)格模型表示示意圖
作為得到最廣泛支持的三維模型簡(jiǎn)化算法,邊折疊算法將邊視為要?jiǎng)h除的操作目標(biāo),對(duì)1條邊執(zhí)行1次折疊操作實(shí)現(xiàn)2個(gè)頂點(diǎn)的合并,從而消除2個(gè)三角形,如圖3所示。
圖3 邊折疊操作
如文獻(xiàn)[8]所示,基于二次誤差度量的邊折疊算法所需的內(nèi)存較小且計(jì)算速度較快。設(shè)三維模型中的任意2個(gè)頂點(diǎn)(p1,p2)滿足下列任一個(gè)條件: (p1,p2)為一條邊;||p1,p2|| (1) 其中:l(i,j)表示和有效邊(pi,pj)連接的三角形平面集合;l=[a,b,c,d];a2+b2+c2=1;a,b,c,d為一個(gè)平面方程ax+by+cz+d=0的系數(shù)。 Δ(q)的值越小,則頂點(diǎn)q到一個(gè)有效邊(pi,pj)附近平面的距離越近。式(1)可以簡(jiǎn)化為 (2) (3) 則M即為邊折疊的誤差矩陣。 根據(jù)最小二乘法對(duì)Δ(q)進(jìn)行偏導(dǎo)計(jì)算,即?Δ(q)/?x=?Δ(q)/?y=?Δ(q)/?z=0,獲得如下公式: (4) 通過(guò)求解式(4)的唯一解,得到新頂點(diǎn)q的坐標(biāo)。如果沒(méi)有唯一解,選擇有效邊(p1,p2)的中點(diǎn)、p1或者p2作為邊折疊算法產(chǎn)生的新頂點(diǎn)。 通過(guò)上述分析可以看出,采用傳統(tǒng)邊折疊算法執(zhí)行模型簡(jiǎn)化可能導(dǎo)致出現(xiàn)連續(xù)過(guò)渡的多個(gè)LOD模型,這會(huì)影響到模型簡(jiǎn)化的速度。因此,本文采用半邊折疊來(lái)減小簡(jiǎn)化模型的復(fù)雜運(yùn)算和存儲(chǔ)。邊折疊算法通過(guò)對(duì)原始頂點(diǎn)的加權(quán)平均操作得到新頂點(diǎn)坐標(biāo)。但是,半邊折疊算法無(wú)需該加權(quán)平均過(guò)程,僅需原始頂點(diǎn)的采樣,因此減少了計(jì)算開(kāi)銷和占據(jù)的內(nèi)存容量,可以較好地提高多分辨率模型的渲染速度。 本文半邊折疊算法的代價(jià)函數(shù)計(jì)算方式如下: (5) 其中:Tvi-Teij為包含vi但是不包含eij的三角形面集合,t為該集合中的任意一個(gè)三角形面。IMpvi表示頂點(diǎn)vi的視覺(jué)重要度,其計(jì)算方式為: IMpvi=1=||kvi|| (6) 式中:kvi為視覺(jué)特征因子。此外,本文為每條半邊的半邊折疊代價(jià)函數(shù)引入一個(gè)閾值因子,則: (7) 利用該閾值因子的調(diào)節(jié)功能能減少誤差累積,從而維持模型的重要視覺(jué)特征,避免降低用戶體驗(yàn)。 一般情況下,按照視點(diǎn)到場(chǎng)景區(qū)塊中心的距離d來(lái)為該場(chǎng)景區(qū)塊選擇合適的層次細(xì)節(jié)模型LOD。但是,僅僅按照距離d的數(shù)值這一個(gè)條件來(lái)實(shí)現(xiàn)一個(gè)層次細(xì)節(jié)轉(zhuǎn)換到另一個(gè)層次細(xì)節(jié),很容易會(huì)引起幾何場(chǎng)景的網(wǎng)格模型產(chǎn)生較大形變,造成十分劇烈的抖動(dòng)現(xiàn)象,那么將大幅降低系統(tǒng)中用戶的體驗(yàn)感,嚴(yán)重情況下還會(huì)導(dǎo)致用戶產(chǎn)生“眩暈”“惡心”等生理不適現(xiàn)象[10]。本文不采用最精簡(jiǎn)的層次細(xì)節(jié)模型,而是采用了近似選擇結(jié)果[11],從而充分發(fā)揮了核心圖形顯卡GPU的繪制能力,進(jìn)一步加快實(shí)時(shí)計(jì)算速度。高度差μi在屏幕上的投影值εi示意如圖4所示。 圖4 高度差μi在屏幕上的投影εi 距離d的計(jì)算方法為: (8) 式中:V表示視點(diǎn);D表示觀察方向。場(chǎng)景區(qū)域塊的中心點(diǎn)為C,在屏幕上的投影εi值為: (9) 式中:H為視點(diǎn)高度;μi為高度差。在復(fù)雜場(chǎng)景的細(xì)節(jié)層次選擇的預(yù)處理階段,通過(guò)投影值計(jì)算為每幀的場(chǎng)景區(qū)域選擇合適的細(xì)節(jié)層次視差度量系數(shù)δi,加快了實(shí)時(shí)計(jì)算速度。設(shè)λ為閾值(一般為4像素),如果εi超過(guò)了λ的數(shù)值會(huì)引起明顯的視覺(jué)誤差,即此時(shí)將場(chǎng)景塊的細(xì)節(jié)模型切換會(huì)導(dǎo)致人眼可察覺(jué)的抖動(dòng)現(xiàn)象,因此需要滿足εi<λ,故 (10) 針對(duì)藝術(shù)場(chǎng)景的虛擬仿真應(yīng)用,本文采用了非配帶型VR系統(tǒng)(非沉浸型 VR系統(tǒng))[12-13],無(wú)需用戶佩戴專門的頭盔顯示器設(shè)備。虛擬環(huán)境系統(tǒng)的原理如圖5所示。 圖5 虛擬環(huán)境系統(tǒng)原理 PC主機(jī)的CPU為AMD FX-8350,內(nèi)存為 8 G,硬盤為200 G, VR系統(tǒng)硬件的核心顯卡設(shè)備為NVIDIA GeForce GTX1060,DRAM為6 GB。虛擬現(xiàn)實(shí)環(huán)境的層次結(jié)構(gòu)如圖6所示[14]。虛擬環(huán)境采用的操作系統(tǒng)為Windows 10。軟件開(kāi)發(fā)語(yǔ)言采用了Visual C++ 6.0,三維物體繪制軟件為DirectX。 圖6 虛擬現(xiàn)實(shí)環(huán)境的層次結(jié)構(gòu) 以某戶外藝術(shù)漫游系統(tǒng)為例,對(duì)本文設(shè)計(jì)的場(chǎng)景優(yōu)化方法進(jìn)行了仿真驗(yàn)證,地形場(chǎng)景的模型簡(jiǎn)化效果如圖7所示。該戶外藝術(shù)漫游系統(tǒng)以展示傳統(tǒng)客家建筑文化為目的,在戶外真實(shí)自然地貌地形環(huán)境下讓用戶自主的游覽客家仿真戶外空間。從圖7可以看出:提出模型優(yōu)化方法的網(wǎng)格分布較為合理,能保持場(chǎng)景模型的重要視覺(jué)特征,避免降低用戶體驗(yàn)。此外,圖8給出了地形場(chǎng)景漫游時(shí)本文方法和SR-LOD方法[15]的幀速FPS率變化曲線。圖9給出了本文方法和SR-LOD方法的顯示三角形數(shù)。 圖7 場(chǎng)景地形效果顯示 圖8 幀速率變化曲線 圖9 三角形數(shù) 從圖8可以看出:本文方法能一直保持較高的幀率性能,保證了場(chǎng)景繪制和交互時(shí)的實(shí)時(shí)性和用戶體驗(yàn)。從圖9可以看出:由于采用半邊折疊,本文優(yōu)化方法的顯示三角形數(shù)有所增加,即時(shí)間復(fù)雜度有所提高。但是由于采用了改進(jìn)的細(xì)節(jié)層次模型選擇預(yù)處理機(jī)制,算法執(zhí)行的總時(shí)間仍比SR-LOD方法要少,即仍然能相對(duì)較快地實(shí)現(xiàn)復(fù)雜場(chǎng)景的繪制,執(zhí)行時(shí)間對(duì)比如表1所示。 表1 執(zhí)行時(shí)間對(duì)比 s 本文采用三維模型簡(jiǎn)化和加速繪制技術(shù)相結(jié)合的方法對(duì)復(fù)雜藝術(shù)場(chǎng)景的實(shí)時(shí)繪制進(jìn)行了優(yōu)化研究。具體改進(jìn)方法為:① 采用半邊折疊算法對(duì)復(fù)雜三維幾何模型進(jìn)行簡(jiǎn)化處理,減少了計(jì)算開(kāi)銷,提高了模型渲染的效率。② 在復(fù)雜場(chǎng)景的細(xì)節(jié)層次繪制過(guò)程中,增加了選擇細(xì)節(jié)層次的預(yù)處理階段,通過(guò)投影值計(jì)算為每幀的場(chǎng)景區(qū)域選擇合適的細(xì)節(jié)層次視差度量系數(shù),加快了實(shí)時(shí)計(jì)算速度。實(shí)驗(yàn)結(jié)果顯示,在保證虛擬場(chǎng)景畫面質(zhì)量的條件下,本文優(yōu)化方法能以較快的渲染速度完成復(fù)雜藝術(shù)場(chǎng)景實(shí)現(xiàn)。3 場(chǎng)景實(shí)時(shí)繪制的細(xì)節(jié)層次模型選擇
4 虛擬環(huán)境系統(tǒng)的軟硬件體系結(jié)構(gòu)
4.1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
4.2 系統(tǒng)的硬件和軟件配置
4.3 測(cè)試結(jié)果
5 結(jié)論
重慶理工大學(xué)學(xué)報(bào)(自然科學(xué))2019年10期