国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

在游戲中通過法線映射模擬體積渲染效果

2020-02-01 08:57劉贇
電子技術(shù)與軟件工程 2020年10期
關(guān)鍵詞:法線多邊形頂點(diǎn)

劉贇

(北京極光互動(dòng)網(wǎng)絡(luò)技術(shù)有限公司 北京市 100028)

在游戲項(xiàng)目中,茂盛的植物一直是一個(gè)渲染難點(diǎn),因?yàn)橛螒蝽?xiàng)目需要盡量減少多邊形數(shù)量,而郁郁蔥蔥的植物很難用較少的多邊形表現(xiàn)出來。以往的方案大多是直接用交叉多邊形片加貼圖來表現(xiàn)光照效果,但是當(dāng)光線發(fā)生動(dòng)態(tài)變化時(shí),或者當(dāng)觀察視角旋轉(zhuǎn)時(shí),這種方法就會(huì)露出破綻。

另一種方法是用多邊形片包裹成實(shí)體形狀,這種方法的問題是難以表現(xiàn)不規(guī)則的形狀,通常用來創(chuàng)建修剪過的規(guī)則植物。

茂盛植物的視覺效果有一些特點(diǎn),很難直接用多邊形和貼圖來表現(xiàn)。首先是形狀十分復(fù)雜,而游戲需要盡量精簡(jiǎn)多邊形數(shù)量;其次植物的葉子是半透明的,密集的樹葉在光照下看上去很像實(shí)體,尤其是背光時(shí)能看到整個(gè)樹冠會(huì)有發(fā)亮的邊緣。這些特殊的視覺效果,用傳統(tǒng)的模型加貼圖的方法很難較好的表現(xiàn)。

通常3D 多邊形的點(diǎn)(Vertex)都有法線屬性(Normal),用來記錄點(diǎn)的方向,是渲染時(shí)實(shí)現(xiàn)光照的依據(jù)。Vertex Normal 原本是來源于Surface Normal,但我們可以通過反向改變Vertex Normal 來影響Surface Normal 的渲染,進(jìn)而實(shí)現(xiàn)用較少的多邊形數(shù)量達(dá)到復(fù)雜的體積渲染效果。

經(jīng)過實(shí)踐,將復(fù)雜模型(高模)的Vertex Normal 數(shù)據(jù),通過一定的算法完全可以映射到低模的頂點(diǎn)上,進(jìn)而使光照渲染時(shí)更接近高模的體積效果,再配合恰當(dāng)?shù)馁N圖,可以用少量頂點(diǎn)和多邊形渲染出更接近真實(shí)復(fù)雜植物的光照效果。

這種方法可以用低模實(shí)現(xiàn)不規(guī)則高模體積光照效果,因此主要適用于游戲項(xiàng)目中對(duì)植物的模擬,但同時(shí)也適合影視CG 中出現(xiàn)大量植物的場(chǎng)合,可以有效提高渲染效果與渲染效率。

1 傳統(tǒng)渲染植物的方法

在以往的游戲項(xiàng)目中,樹叢之類比較濃厚茂密的植物通常有兩種模型結(jié)構(gòu),一種是多邊形面片中心交叉結(jié)構(gòu);另一種是多邊形面片表面包裹結(jié)構(gòu)。

將這兩種模型導(dǎo)入游戲引擎中,可以看到渲染結(jié)果如圖1所示。

這兩種模型結(jié)構(gòu)各有優(yōu)缺點(diǎn),也各自有適用范圍,在實(shí)際游戲項(xiàng)目中經(jīng)常是根據(jù)需求來混用的。

第一種模型結(jié)構(gòu)通常用于自然生長(zhǎng)、外形不規(guī)則的茂盛植物,如樹冠、灌木叢等;第二種則多用于人工修剪過的植物,如方形的植物墻等等。但是無論哪種方式,都有一種機(jī)械和不自然的感覺,因?yàn)樵诠庹珍秩鞠?,模型的面片結(jié)構(gòu)都比較明顯。這種不自然的感覺,在光線角度變化、或者觀察角度變化時(shí)會(huì)尤其明顯。

圖1

圖2

突兀的“面片”感,可以通過改變模型法線來改善,但一般要么是直接設(shè)置為簡(jiǎn)單的放射狀(球狀)法線,使光照效果過于簡(jiǎn)化,要么則需要手動(dòng)設(shè)置頂點(diǎn)法線,操作比較繁瑣。本文將提出一種更簡(jiǎn)單的自動(dòng)法線映射方法,既可以實(shí)現(xiàn)流程自動(dòng)化,只需要?jiǎng)?chuàng)建好低模,后續(xù)步驟就可以自動(dòng)完成,又可以使效果更符合低模結(jié)構(gòu),體現(xiàn)實(shí)體植物的層次感。

2 現(xiàn)實(shí)中的植物光照效果分析

如果仔細(xì)觀察真實(shí)世界里的光照下的茂盛植物,可以發(fā)現(xiàn)有幾個(gè)比較明顯的特點(diǎn):

首先,在光照下,茂盛的樹葉有明顯的體積感,盡管體積的形狀不規(guī)則,但是可以明確的劃分出亮面與暗面。其次,由于大部分植物的葉片本身呈半透明狀,因此在光照下,整體會(huì)呈現(xiàn)比較明顯的通透感。如果要在游戲中表現(xiàn)出以上茂盛樹葉的光照效果,往往需要更多的多邊形數(shù)量,而對(duì)游戲來說,性能十分重要,原則是使用盡量少的資源表現(xiàn)盡量好的效果,特別是在手機(jī)游戲項(xiàng)目中,對(duì)多邊形數(shù)量的要求更加苛刻,這就對(duì)游戲美術(shù)人員提出了更高的要求。

3 法線映射原理分析

3D 模型的頂點(diǎn)法線(Vertex Normal)是由三個(gè)數(shù)值組成的一個(gè)向量(Vector),是渲染模型時(shí)計(jì)算光照的基本依據(jù)。通常情況下,Vertex Normal 的數(shù)值是由Face Normal 的歸一化平均值(normalized average)計(jì)算而來,這樣就可以在渲染的時(shí)候正確計(jì)算多邊形平面的光照。但是,也可以通過其它方法改變Vertex Normal 的值,進(jìn)而影響多邊形表面的光照渲染。

法線映射的基本原理可以分為三部分:第一,創(chuàng)建在游戲中使用的片狀交叉多邊形(低模);第二,創(chuàng)建用于映射法線的實(shí)體多邊形(高模);第三,尋找每一個(gè)對(duì)應(yīng)低模vertex 的高模vertex 并進(jìn)行映射。下面分別對(duì)每個(gè)步驟的原理進(jìn)行解釋。

首先是創(chuàng)建在游戲中使用的片狀交叉多邊形,俗稱“低?!保词窃谟螒蛑袑?shí)際使用的3D 模型。由于最終需要重新設(shè)置頂點(diǎn)法線信息,因此模型的多邊形和表面法線(Surface Normal)信息并不是很重要,重要的是頂點(diǎn)數(shù)量和位置。這里以游戲中常見的低模植物交叉面方式為例。由于默認(rèn)的頂點(diǎn)法線信息直接由表面法線計(jì)算而來,因此看上去就是多邊形本身的光照效果,也就是很多方形片的效果。

4 使用SideFX Houdini實(shí)現(xiàn)法線映射

Houdini 是一款由加拿大Side Effects Software Inc.( 簡(jiǎn)稱SESI)公司開發(fā)的三維計(jì)算機(jī)圖形軟件,廣泛用于游戲和影視等3D 視覺效果領(lǐng)域。本節(jié)將使用Houdini 為例實(shí)現(xiàn)法線映射的過程,但使用其他大部分支持編程擴(kuò)展的3D 建模軟件(例如Blender、Autodesk 3DS Max 或Autodesk Maya 等)也都是可行的,只要使用特定軟件所支持的腳本語言即可。

首先創(chuàng)建低模模型。在Houdini 中,先創(chuàng)建一個(gè)最基本的四邊形(Grid),然后進(jìn)行簡(jiǎn)單的復(fù)制即可完成。創(chuàng)建低模的步驟在不同的建模軟件中有不同的流程,但最后得到的結(jié)果應(yīng)該是基本相同的,這里不詳細(xì)贅述Houdini 的建模過程。該模型共由168 個(gè)四邊面組成,頂點(diǎn)數(shù)為672。

這里需要進(jìn)行說明的是,Houdini 中有Point 和Vertex 兩種元素,這兩種元素目前沒有標(biāo)準(zhǔn)對(duì)應(yīng)的中文,經(jīng)常會(huì)被混稱為“頂點(diǎn)”,但這兩個(gè)元素還死活略有不同。由于不同的軟件對(duì)模型頂點(diǎn)的處理方式也不盡相同,這里不進(jìn)行詳細(xì)贅述。在本例中,將使用Point作為映射元素,而不是使用Vertex。

下一步是創(chuàng)建用來映射原始頂點(diǎn)法線信息的高模。在Houdini中可以利用Polygon 和VDB 狀態(tài)互相轉(zhuǎn)換而實(shí)現(xiàn)從低模直接創(chuàng)建形狀對(duì)應(yīng)的高模。

VDB 是Volumes with Dynamic Topology 的縮寫,是Houdini 中的一種通用體積數(shù)據(jù)類型,這種類型可以和polygon 實(shí)現(xiàn)相互轉(zhuǎn)換。

在Unity 引擎中渲染:

為模型增加UV 之后,就可以導(dǎo)入游戲引擎,加上材質(zhì),觀察最終效果了。本例以Unity 為例,來對(duì)比使用法線映射之前和之后的效果。

在Unity 中創(chuàng)建一個(gè)材質(zhì),該材質(zhì)需要使用的shader 至少要支持Alpha 透明和雙面顯示。本例中還在Shader 中增加了Fresnel 效果,用來模擬樹叢的反光和半透明邊緣,可以使渲染效果看起來更通透。

將該材質(zhì)球分別賦予法線映射前和法線映射后的兩個(gè)樹叢模型,渲染效果對(duì)比如圖2所示。

可以看出,法線映射后的效果非常明顯,樹叢有了體積感,亮面與暗面的渲染都呈現(xiàn)了實(shí)體效果,F(xiàn)resnel 也可以比較正確的模擬環(huán)境反光的顏色。

5 結(jié)論

本文介紹了一種在游戲中渲染不規(guī)則復(fù)雜物體的方法,只要面數(shù)極少的低模就可以比較好的渲染出有層次和體積感的復(fù)雜效果,適合用于茂盛的植物、灌木等物體的渲染,也可以用于類似復(fù)雜結(jié)構(gòu)的其它物體,如成捆的鐵絲、樹枝或毛線等。如果對(duì)體積光照渲染效果要求更高,可以在本文基礎(chǔ)上手動(dòng)調(diào)整法線,或者手動(dòng)創(chuàng)建用于映射頂點(diǎn)法線的模型。在實(shí)際項(xiàng)目中,還可以根據(jù)需要增加vertex color、normal map 等技術(shù),在不需要增加額外資源開銷或只需要很少資源的前提下,進(jìn)一步提高實(shí)際表現(xiàn)效果。這些技術(shù)都是游戲美術(shù)人員所熟知的,更多依賴審美和經(jīng)驗(yàn),所以沒有在本文中提及。此方法也可以用于影視離線渲染中大量植被渲染,可以有效提高渲染效果,并節(jié)省開發(fā)時(shí)間和渲染時(shí)間。

猜你喜歡
法線多邊形頂點(diǎn)
多邊形中的“一個(gè)角”問題
基于定位法線的工件自由度判定方法及應(yīng)用
過非等腰銳角三角形頂點(diǎn)和垂心的圓的性質(zhì)及應(yīng)用(下)
多邊形的藝術(shù)
解多邊形題的轉(zhuǎn)化思想
多邊形的鑲嵌
關(guān)于頂點(diǎn)染色的一個(gè)猜想
雙曲螺線的副法線曲面的相關(guān)性質(zhì)研究*
三談等軸雙曲線的典型性質(zhì)
靖江市| 喀喇沁旗| 渭南市| 永春县| 根河市| 应用必备| 伊宁市| 东城区| 六枝特区| 都江堰市| 五华县| 涟水县| 礼泉县| 商水县| 中阳县| 阿图什市| 芜湖市| 新野县| 聂拉木县| 柏乡县| 武陟县| 二手房| 杨浦区| 无为县| 寻乌县| 利辛县| 兴隆县| 察隅县| 四川省| 延津县| 晴隆县| 开远市| 武陟县| 凤山市| 寿宁县| 西和县| 晴隆县| 富裕县| 古田县| 沙洋县| 玉林市|