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