Houdini配合Arnold制作大型復(fù)雜的植被流程研究
本節(jié)匯寶盆為大家?guī)淼氖?,Houdini配合Arnold制作大型復(fù)雜的植被流程研究
最近一直在研究一套高可控、高效率的制作大面積植被的流程來配合Arnold這款渲染器做渲染,目前商業(yè)化的插件比如 Speedtree,Max Multiscatter都可以實現(xiàn)此類功能,包括Vue,但其可控性來說還是有限制,能夠?qū)崿F(xiàn)的效果也有一定的局限性,因此筆者研究一套關(guān)于使用 Houdini配合Arnold來渲染制作植被的流程(上圖實際渲染分辨率為4k,由于限制問題,此圖為1k分辨率)。
眾所周知,使用代理分布是實現(xiàn)宏觀場景的有效辦法之一,Arnold也提供了相應(yīng)的功能,Archive,在Max平臺 下有類似于 Multiscatter功能的插件可以高效的分布代理,而市面上也提供了大量的Max場景的植被庫文件,因此想要在Arnold這個渲染器下使用,就得 將max文件轉(zhuǎn)換成通用數(shù)據(jù)格式,比如Obj、Fbx或者Abc,然后制作成Ass文件作為Arnold代理物體,這里筆者將跳過轉(zhuǎn)換的過程,轉(zhuǎn)換后導(dǎo)入 Maya的結(jié)果如下圖:
這是從Max庫文件里導(dǎo)入Maya后的顯示,下面我們來做一些渲染測試對比(筆者使用的8G內(nèi)存和I7 2670QM):
渲染出來的結(jié)果接近4個小時,使用的是默認(rèn)的標(biāo)準(zhǔn)材質(zhì),開啟了Backlight和SSS,渲染緩慢原因是由于大量的樹葉帶有透明貼圖,這不是 Arnold的優(yōu)勢,因此只要將透明貼圖的物體轉(zhuǎn)換成實體的模型就可以解決問題,但經(jīng)過筆者測試以后發(fā)現(xiàn),其轉(zhuǎn)換后的數(shù)據(jù)量大的驚人,可以達到2個多G的 數(shù)據(jù),即使轉(zhuǎn)換成Ass文件也非常大龐大,此時筆者想到了用粒子或者點來代理這些樹葉,經(jīng)過測試結(jié)果是理想和可行的,那么如果具體操作呢?其實轉(zhuǎn)換的過程 很簡單,就以一片樹葉為例,如下圖所示:
轉(zhuǎn)換所涉及的問題無非就3點,位置,大小和朝向,在Houdini下朝向可以用N(法線)來代替,這里我們簡化說明方 式,用0、1、2、3來替代說明 Point1、2、3的位置,用”-”替代說明減法,下面我們具體說下這個算法,用(0-1)/2獲得位置信息,用0-2叉乘0-1得到一個法線矢量,通 過Length(0-3)獲取樹葉大小信息,在Maya里也可以通過表達式去計算,粒子屬性里有Aim屬性(這是可以利用的),回到之前的話題,通過計算 后這樣就可以完美轉(zhuǎn)換成實體模型,其結(jié)果如下圖:
實體模型是通過Trace這個節(jié)點實現(xiàn)的,如果有Houdini使用經(jīng)驗的話,應(yīng)該熟悉這個節(jié)點,這里不是我們討論的重點,回到之前的話題,我們能轉(zhuǎn)換一片樹葉,那么剩下的事就是交給程序自己去跑,將所有樹葉都轉(zhuǎn)換成Point點信息,其結(jié)果如下圖所示:
有了這些點信息,我們就可以做代理使用了,這里筆者提供一個小的Maya測試場景說明這個方法的可行性,使用方法:
1.打開默認(rèn)提供的場景
2.執(zhí)行Mel后將彈出窗口
3.Leafs物體添加窗口演示1中
4.將Instance_leaf物體添加如窗口2中
5.點擊Creat Tree
下載地址:http://pan.baidu.com/share/link?shareid=2938422260&uk=3375094246
(ps:這個腳本是筆者早年寫的,后續(xù)沒有繼續(xù)優(yōu)化,只在這里作為透明貼圖物體轉(zhuǎn)粒子代理的一個思路說明,后續(xù)會用其他方式在一套解決方案里提供)
注意:對于腳本的使用,vfxinfo網(wǎng)站包括原作者ArthurChiu在內(nèi)不承擔(dān)任何后果,請按需自行使用,在使用前請備份好您的原始文件,以免給您造成不必要的損失.轉(zhuǎn)載請注明作者與出處!!!
下面我們在Maya里做渲染對比測試下,先導(dǎo)入代理好的場景,顯示結(jié)果如下圖:
下面進行渲染測試,結(jié)果如下:
渲染時間為8分鐘左右,無論質(zhì)量和速度,實體模型都高于透明貼圖,這個流程比較適合Arnold這個渲染器,下面我們來制作一片樹林的效果來分析和測試下,筆者已經(jīng)制作好了代理的物體,如下圖:
圖A和圖B是Houdini下顯示的分布代理圖,導(dǎo)入Maya后的顯示結(jié)果為:
下面進行渲染測試:
渲染時間為40分鐘左右,這里使用的是嵌套代理,筆者發(fā)現(xiàn)在使用嵌套代理的時候,Color屬性是無法像Xform一樣被繼承的,因此需要考慮其他的解決 辦法,以后再做這塊的討論,這里還是比較傳統(tǒng)的代理來制作靜態(tài)的場景(物體沒有動態(tài)效果,非攝像機運動),下一部分我們將來討論有關(guān)動態(tài)效果的代理制作流 程。
因為是要做動態(tài)的代理,因此需要動態(tài)的庫文件,Max自帶的庫文件很少帶有動態(tài)數(shù)據(jù)(沒有動畫數(shù)據(jù)),為此筆者選擇自己制作帶有動畫的植被文件,考慮到圣誕將至,就以松樹為選題,下面是一些實拍的參考圖片:
筆者通過觀察和研究,最終決定用實體代理方式來分布針葉,又考慮到機器配置限制問題,不能每一個針葉為一個實例,須用多 簇針葉為一個實例來進行分布處理, 然而這樣的做法會降低還原度,每一個針葉都應(yīng)當(dāng)有不同的屬性,比如顏色,如果用多簇針葉的做法顯然會降低生物多樣性的特點,筆者選擇通過 SpeedTree來生成動態(tài)的松樹模型,在制作時,為了達到比較好的動態(tài)效果,模型的還原度就必須較高,筆者在現(xiàn)有的16G內(nèi)存下所能達到的極限如下圖 展示:
樹干和枝干
用于替換的樹葉局部顯示
導(dǎo)入到houdini后,顯示如下:
在沒有替換針葉前,場景的模型數(shù)量為
下面,我們來為針葉做替換和代理處理,和此前方法一樣,通過前面提到的替換方法,將所有面片的針葉替換為實體的針葉模型
替換的實體針葉模型,模型的參考信息這里我們記下27個面數(shù),以作數(shù)據(jù)分析使用),替換后單一模型顯示如下:
全部針葉轉(zhuǎn)換后的參考點如下:
點數(shù)為45萬個點,然后和之前的27相乘,得到1218萬左右的針葉面數(shù),如下圖所示:
下面是樹干的參考顯示:
模型的數(shù)量在下面我們來對比下數(shù)據(jù),轉(zhuǎn)換前模型的總量在72萬左右,轉(zhuǎn)換后模型的總量在1246萬左右。
接下來,我們分別導(dǎo)出樹干和針葉的ass代理文件,因為是要做動態(tài)的,所以需要逐幀導(dǎo)出ass文件,而在制作帶有動畫的 代理時,最麻煩的問題在于其運動模 糊不能程序化的生成插值信息,因此這里筆者采用的辦法是導(dǎo)出帶有運動模糊信息的ass文件,當(dāng)然制作模糊的辦法可以放在后期來做,筆者這里只是一種極端測 試而已,這種方法最大的問題在于修改問題,不可能每做一次修改,就重新生成ass文件,這是非常耗時的,因此在實際項目中,如果需要導(dǎo)出帶有模糊信息的 ass序列文件時,最好在previs中就測試好鏡頭和模糊值(包括和后期的配合),當(dāng)然這種流程不一定是最正確和有效的(如果有更好的辦法,也希望大家 一起討論……)
接下來,就是渲染,渲染參數(shù)Sample AA 12 其余為1,尺寸4096*2160。場景設(shè)置如下:
下面是渲染的局部細節(jié)圖:
此渲染用了接近10G內(nèi)存,使用默認(rèn)標(biāo)準(zhǔn)Shader,燈光沒有做細節(jié)的調(diào)式,只做渲染參考,下面是渲染的動態(tài)預(yù)覽
此次渲染帶有運動模糊,針葉的采用的是Xform運動模糊,枝干采用的是Deform運動模糊,導(dǎo)出帶有模糊信息的Ass文件在Maya里有嚴(yán)重的Bug,因此筆者通過重新計算得出正確結(jié)果(在上一篇中有具體提過),下面是開啟和關(guān)閉運動模糊的對比圖:
No MotionBlur
With MotionBlur
小結(jié):通過測試,此方法適合大型項目的 特寫鏡頭,代理的數(shù)量不宜過高,上百萬級別的代理內(nèi)存上開銷也比較大,這個和代理模型的復(fù)雜程度關(guān)系不大,而是和程 序有關(guān)。因此在表現(xiàn)大場景的時候盡量減少代理的開銷,目前由于是Archive機制的方法導(dǎo)入Arnold進行渲染,在內(nèi)存管理上,一旦光線碰到 Boundingbox時,會將場景全部加載,內(nèi)存也會大量的增加,所以此類方法還有優(yōu)化的潛質(zhì)。
總結(jié)一下,既然是配合Arnold做渲染,那么需要注意的是:
1.Arnold在透明貼圖使用上目前內(nèi)置的Shader無法提高效率,因此在制作的時候切忌大量使用透明圖。
2.Arnold采用的是蒙特卡洛算法 的渲染器,也沒有光子圖,因此更適合做動態(tài)場景,這樣才能發(fā)揮其大場景渲染的優(yōu)勢,上面渲染的所有圖片只是測試而 已,沒有再對效果進行深入的調(diào)節(jié),因為這里討論的是制作流程,有人會問一個簡單的代理為什么要在Houdini下做呢?其實就是為了高度可控,在 Houdini下可以修改代理的任何屬性并傳遞到Arnold里,并且可以實現(xiàn)更加復(fù)雜的代理動態(tài)效果,比如樹葉的掉落、萬箭齊發(fā)、千軍萬馬等,這些技術(shù) 筆者會陸續(xù)更新出來,敬請期待…………。
最后附上一些實際案例:
Houdini下載推薦:Houdini12破解下載
其他Houdini教程推薦:Houdini 經(jīng)典FirstSteps系列教程 2
- Tags:Houdini
-
分享到:
全部評論:0條