周 佶,尤 翔
ZHOU Ji,YOU Xiang
(南京工業(yè)大學(xué) 土木工程學(xué)院 工程圖學(xué)中心,南京 210009)
本文解決了城市數(shù)字化模型搭建中,超大規(guī)模數(shù)字模型的渲染與軟硬件設(shè)備和工作效率之間的矛盾。重點(diǎn)在于在現(xiàn)有軟硬件設(shè)備的情況下,找出更加合理的技術(shù)解決方案,實(shí)現(xiàn)快速三維渲染成像。
現(xiàn)在渲染引擎很多,各有特點(diǎn),有些渲染效果好,但速度慢,有些速度快但則渲染效果較差。其中渲染參數(shù)的設(shè)定是很重要的,本文的“UF參數(shù)組群”法可以較好地解決這個問題。
渲染是生成虛擬場景圖像的重要技術(shù)環(huán)節(jié)。針對此環(huán)節(jié),各種軟件都提出了自己的解決方案。但是大多數(shù)的軟件中的渲染算法未能解決海量數(shù)據(jù)模型中對渲染的多種要求。針對本文的要求,我們重點(diǎn)對各種渲染算法進(jìn)行了研究,并從大量的實(shí)驗(yàn)數(shù)據(jù)中總結(jié)出一套行之有效的參數(shù)組群。
1)每一個渲染器都基于一套基本的求解算法,這些算法的名稱大家都已耳熟能詳了?;句秩舅惴ㄓ腥N:Scanliner(掃描線)、Raytrace(光線跟蹤)、Radiosity(輻射度)。Scanliner與Raytrace都為大多數(shù)軟件所采用,而Radiosity就只有BMRT與Lightscape采用。Scanliner最早被開發(fā),應(yīng)用亦最廣泛。其中Renderman的REYES(Render Everything You'd Ever Seen)算法是Scanliner的最極致的發(fā)揮,但也表示Scanliner已經(jīng)走到了盡頭了。
Raytrace的應(yīng)用越來越廣泛,它最初用來求解非漫反射面之間的光能傳遞,即反射與折射的模擬。后來分布式光線跟蹤與雙向光線跟蹤得到長足發(fā)展,特別是先進(jìn)的有限元采樣算法得到發(fā)展后,光線跟蹤也被應(yīng)用于漫反射面的光能傳遞求解。MentalRay的Global Illumination、Vray、Brazil、FinalRender就是很好的例子。其中,分布式光線跟蹤的算法決定了軟件輸出的質(zhì)量。MentalRay假定每個元面都有一張PhotonMap(在雙向光線跟蹤算法的創(chuàng)始人Arvo(ARVO1986)的論文中叫Illumination Map),在PhotonMap上投射光線采樣,然后把PhotonMap像Texture一樣貼在元面上。所以MentalRay必須設(shè)定光線的大?。≧adius)以方便在PhotonMap上采樣。這樣保證了速度,但要在有豐富經(jīng)驗(yàn)的人調(diào)較下才能渲染出高質(zhì)量的圖片。Brazil直接用半球體采樣,用立體方位角投射到元面表面,類似于Radiosity算法的立方體采樣,但Brazil通過控制輻射殘差來加快速度,也犧牲了質(zhì)量,所以在采樣不足的情況下,Brazil渲染的質(zhì)量是最差的。Vray用有限元采樣,同時保證了速度和質(zhì)量。有限元是一種結(jié)合Radiosity的采樣方法。Radiosity是在80年代末發(fā)展起來的渲染算法,它采用熱力學(xué)的輻射積分式:
B(x)=E(x)+p(x)$B(x')[cos(x)cos(x')/pi*r^2]*HID(dS(x),dS(x'))dA(x')
其中x'為源元面,x為目標(biāo)元面,B(x)是x的輻射度分量,E(x)是x的源能量,p(x)是x的漫反射系數(shù),$是對元面x積分,HID是遮擋函數(shù)(x與x'之間有遮擋為0,沒有則為1),dA(x)是x的面積??梢钥吹?,Radiosity是通過對整個場景的表面都求解輻射度來達(dá)到模擬光能傳遞效果。Lightscape的求解過程就是Radiosity的Shooting過程,它采用空間四叉樹算法來加速求解,所以速度比較快。Radiosity渲染基于物理學(xué)理論,其渲染效果真實(shí),是Raytrace所不能比擬的,但從視覺效果上考慮,現(xiàn)在Raytrace和Radiosity不相上下,在速度上,Raytrace更占絕對優(yōu)勢。而且,Refract(折射)、caustic(焦散效果)是Radiosity無法模擬的(所以Lightscape也帶了Raytrace渲染器)。
2)每個渲染器都有貼圖的優(yōu)化算法,這也是渲染的關(guān)鍵。因?yàn)楦呒壍匿秩就鶚O依賴貼圖,所以貼圖的質(zhì)量是十分重要的!Renderman的優(yōu)化算法堪稱第一!它用了先進(jìn)的改良式B-spline(B樣條)算法,克服了許多貼圖變形的問題,尤其是在同等元面由于鏡頭焦距不一引起的走樣。
3)光能傳遞。Lightscape中的完成百分比實(shí)際是它估算的環(huán)境內(nèi)輻射平衡殘差,但也可以看作是封閉環(huán)境中剩余的未平衡能量。
Raytrace極其成功地解決了兩種傳遞:非漫反射面~非漫反射面和漫反射面~非漫反射面。
Radiosity把元面上的光能看作整體,采用全局求解的方法,先把整個場景的光能分布求出,再在屏幕上顯現(xiàn)。它不在受一條條的光線所限制,而把能量一分分地送出去。
PhotonMap用在Caustic上是一種十分精確的方法,但在全局光照里就屬于基于視覺上的算法,并不精確真實(shí)。
根據(jù)對上述渲染算法的研究,我們發(fā)現(xiàn),速度與質(zhì)量始終是一對矛盾。解決這一矛盾的最好辦法就是針對不同的模型對象采用不同的渲染計(jì)算方式,并且將這些計(jì)算方式的參數(shù)組群化。
在本文的渲染中我們重點(diǎn)選擇了Scanliner(掃描線)、Retrace(光線跟蹤)兩種渲染計(jì)算法;PhotonMap和ShadowMap兩種渲染貼圖計(jì)算方式;選擇Radiosity、Raytrace 以及Raytrace 中PhotonMap光照圖和BSP模式作為渲染光能傳遞方式。
不同場景下根據(jù)成像要求的不同,應(yīng)該選擇不同的渲染計(jì)算方式,具體選擇方法,如表1所示。
根據(jù)以上選擇的渲染計(jì)算方法,我們主要采用了Scanliner和Vray的分布式等兩種渲染引擎,并針對輸出圖像的細(xì)致要求程度進(jìn)行了參數(shù)組群化。不同的對象選用不同的渲染引擎參數(shù)。Scanliner渲染引擎參數(shù)組群如表2所示。
表1 不同場景對象渲染技術(shù)選擇
表2 Scanliner渲染引擎參數(shù)組群
圖1 Scanliner渲染引擎粗參數(shù)渲染
使用上述參數(shù)組群的各種渲染效果:Scanliner渲染引擎粗參數(shù)渲染的效果如圖1所示 ,Vray的分布式等兩種渲染引擎粗參數(shù)渲染的效果如圖2所示。
圖2 Vray的分布式等兩種渲染引擎粗參數(shù)渲染
本文所舉應(yīng)用實(shí)例,因?yàn)樾枰从炒竺娣e區(qū)域的整體規(guī)劃,因而無論從規(guī)模上還是數(shù)據(jù)量上都屬于大場景城市虛擬模型??偨Y(jié)本文的研究結(jié)果,我們認(rèn)為,對于要求逼真效果的虛擬場景渲染,本文的研究成果可以使普通渲染人員在渲染參數(shù)組群的指導(dǎo)下順利完成,且能夠保證品質(zhì)的統(tǒng)一性。