Arnold for C4D 26 【終章 Ⅲ】Arnold Volume

本篇主題:如何在C4DtoA中渲染體積對(duì)象(Volume)

之前在講著色器的時(shí)候,講過(guò)跟Volume(體積)相關(guān)的參數(shù),本篇跟之前會(huì)有交叉的地方,但是需要注意的是,這里用到的Volume跟Atmoshphere Volume有所不同,Atmoshphere Volume是一個(gè)全局效果,而現(xiàn)在講的是局部的單個(gè)或多個(gè)體積對(duì)象;

還記得體積是啥吧?說(shuō)白了就是一片片、一股股的煙霧啊、云層啊、海浪啊這樣的東西~

接下來(lái)將結(jié)合實(shí)例說(shuō)明如何利用體積對(duì)象做出各種炫酷效果;

Arnold Volume
  • Arnold Volume相當(dāng)于一個(gè)的“容器”;
  • 比較常用的體積文件是OpenVDB,夢(mèng)工廠出品,可以去官網(wǎng)按需下載 https://www.openvdb.org/,這個(gè)網(wǎng)站間接性無(wú)法連接、加載很慢,請(qǐng)耐心...如果感興趣也可以自己使用Houdini等軟件創(chuàng)建OpenVDB;
  • 主菜單中的各項(xiàng)參數(shù)之前都講過(guò),此處略;

OpenVDB

OpenVDB面板

  • 屬性面板中Start frame/End frame/Step frame/Offset/Loop這幾個(gè)參數(shù)上一篇文章中已經(jīng)講過(guò);

  • Available grids顯示的是加載的該VBD文件所攜帶的信息通道,比如現(xiàn)在所用的文件中包含了density(密度)和temperature(溫度)兩個(gè)可用通道;VDB可以攜帶多種信息通道,密度、溫度、速度等,都會(huì)在此處顯示;

  • Grids直譯過(guò)來(lái)是網(wǎng)格的意思,其實(shí)就是通道;Grids定義要讀取的通道,多個(gè)的話用空格隔開即可,上圖中只讀取了密度;

  • Velocity grids速度網(wǎng)格(通道),用于定義運(yùn)動(dòng)模糊,使用一個(gè)矢量(例如v或vel)或三個(gè)表示速度的浮點(diǎn)網(wǎng)格(例如vel.x, vel.y, vel.z)表示;如果網(wǎng)格無(wú)效或未定義,則不會(huì)出現(xiàn)運(yùn)動(dòng)模糊

  • Velocity scale按比例縮放速度,0值將無(wú)運(yùn)動(dòng)模糊;

  • Velocity threshold 速度閾值,控制運(yùn)動(dòng)噪點(diǎn)速度,從而更快的渲染物理模擬中的運(yùn)動(dòng)模糊;默認(rèn)0.001幾乎沒有視覺影響;0值將完全禁用速度;

  • Step Scale縮放體積步長(zhǎng),主要用于當(dāng)Volume Step設(shè)置為自動(dòng)時(shí)調(diào)節(jié)自動(dòng)值;對(duì)于低頻體積,如煙霧,設(shè)置為4最合適;

科普Volume Step

體積對(duì)象在采樣時(shí),直接光線會(huì)通過(guò)對(duì)體積對(duì)象發(fā)射多次光線進(jìn)行多次采樣,每一次發(fā)射的光線都是有“步長(zhǎng)”的,即Volume step size,間接光線行為類似(可以想象,光線穿過(guò)云層時(shí),光線會(huì)在云層內(nèi)部進(jìn)行各種折射散射行為,就像人穿過(guò)一片雜草,需要隨時(shí)調(diào)整腳步,有時(shí)可能會(huì)因?yàn)榍懊嬗兴舆€得繞路,即使同樣距離也要比走一條馬路慢得多);
因此,體積采樣通常需要比一般表面采樣更為耗時(shí);

光線在體積內(nèi)傳播的每一步都會(huì)評(píng)估著色器并累積體積密度,當(dāng)體積中密度變化時(shí),附近的光線會(huì)計(jì)算出不同密度值,因?yàn)楣饩€采樣值是統(tǒng)一的,因此有些地方就會(huì)產(chǎn)生噪點(diǎn);
在這種情況下,如果要消除噪點(diǎn),光線步長(zhǎng)就需要隨機(jī)應(yīng)變,即減少或增加Volume step size;當(dāng)然即使采樣值較低,渲染干凈的體積圖像也需要較長(zhǎng)時(shí)間,所以調(diào)整數(shù)值要謹(jǐn)慎;

渲染體積時(shí),需要考慮至少三件事:光線步進(jìn)(Ray marching)、直接光線(Direct light)、間接光線(Indirect light),即使面對(duì)同一個(gè)體積對(duì)象,以上三者采樣設(shè)置都不盡相同;

在光線行進(jìn)的過(guò)程中,太低的采樣會(huì)喪失體積中很多細(xì)節(jié)、產(chǎn)生噪點(diǎn),或者會(huì)使體積看起來(lái)比原本更輕薄,總之會(huì)導(dǎo)致計(jì)算錯(cuò)誤;一個(gè)糟糕的步長(zhǎng)具有滾雪球效應(yīng),會(huì)使其他采樣部分變得嘈雜;
為避免步長(zhǎng)導(dǎo)致采樣變得糟糕,可以通過(guò)查看Alpha通道,或者關(guān)閉對(duì)體積產(chǎn)生影響的光線來(lái)源并添加自發(fā)光,可以很輕松測(cè)試出錯(cuò)誤來(lái)源;如果自發(fā)光/Alpha通道在所需AA設(shè)置下仍有噪點(diǎn),則Step size可能太大了;

Step size實(shí)際上是在object-space而不是在world-space中,如此一來(lái),在體積縮放時(shí),能夠保持采樣質(zhì)量不變;但是,仍要避免使用不合理的大步長(zhǎng),否則體積將變薄或消失;

下圖中,體積已放大100個(gè)單位以夸大此效果(1/25/50是相對(duì)于放大后的體積的效果):

前面文章中說(shuō)過(guò),低步長(zhǎng)將增加渲染時(shí)間。 例如,當(dāng)步長(zhǎng)為0.1且世界空間中的體積為10個(gè)單位時(shí),大約有100個(gè)基本采樣,因此體積著色器將調(diào)用100次,在此同樣適用,務(wù)必注意!



接下來(lái)用演示一下如何使用:
1、首先準(zhǔn)備好一個(gè)有燈光的場(chǎng)景,以及一個(gè)OpenVDB文件(這里準(zhǔn)備了一個(gè)煙霧效果);
2、在場(chǎng)景中創(chuàng)建一個(gè)Arnold Volume,Type選擇OpenVDB;

其他參數(shù)保持默認(rèn)

3、打開OpenVDB面板,在File path中載入事先準(zhǔn)備好的OpenVDB文件:

仔細(xì)看圖中###部分,這是序列標(biāo)記,有時(shí)候阿諾德會(huì)將一個(gè)文件識(shí)別為序列,將###部分刪除即可

注意:在選在要加載的OpenVDB文件時(shí),IPR要確保沒有運(yùn)行,否則在C4D視窗中不能準(zhǔn)確顯示邊界框大小。

4、剛開始看不到任何畫面,IPR中也沒有渲染出任何東西,因?yàn)檫€需要給Arnold Volume添加一個(gè)volume_collector材質(zhì),之后就可以看到效果:

新建Arnold Shader Network>添加Volume_collector并賦予Arnold volume>調(diào)整參數(shù)(如上圖紅框內(nèi))>運(yùn)行IPR,調(diào)整好后IPR就可以看到體積對(duì)象了

5、爆炸的時(shí)候都是火星四射的,我們來(lái)簡(jiǎn)單模擬一下這種效果:添加自發(fā)光;
一般模擬火焰效果都會(huì)使用漸變,所以此處使用ramp_rgb節(jié)點(diǎn)來(lái)控制自發(fā)光效果,使用預(yù)設(shè)flame可以很好的模擬:

新建ramp_rgb節(jié)點(diǎn),使用預(yù)設(shè)漸變flame,連接到volume_collector的自發(fā)光顏色通道

此時(shí)還是沒有效果滴,因?yàn)閿?shù)據(jù)類型不對(duì)頭啊,需要調(diào)整一下:拽出volume_sample_float節(jié)點(diǎn),因?yàn)橹白铋_始的時(shí)候散射通道Scattering channel選擇的是density,這是個(gè)float啊,所以要轉(zhuǎn)換ramp_rgb為float:

材質(zhì)編輯器示例

最后效果大概這樣:

噪點(diǎn)很多,效果也不咋地,這里就不再做調(diào)整了,渲染體積太耗時(shí),僅作演示用,大家根據(jù)步驟多試試



C4DtoA中會(huì)逐漸放棄volume_collector這個(gè)著色器,在使用的時(shí)候也會(huì)得到提示,替換后的著色器其實(shí)也叫volume_collector,是新版:

這種情況很常見,單擊Replace with standard_volume shader這個(gè)位置,即可替換成推薦的新版著色器

下面我們來(lái)看一下新舊對(duì)比:

standard_volume(左) & volume_collector(右)

可以看出簡(jiǎn)潔了很多,這些參數(shù)大家一定也不陌生,前面教程中基本都涉及過(guò),這里再快速串一下;

  • Density 控制體積密度,密度越大越“重”,很好理解,不多解釋了;

  • Scattering 散射,舊版中需要選擇散射源,新版中智能識(shí)別,方便快捷;
    控制在光照下體積的亮度。這是散射而不是吸收的光的比值,能量守恒值在0~1范圍內(nèi);

  • Anisotropy各向異性,之前教程重點(diǎn)講過(guò);

  • Transparency透明度,屬于額外控制密度的一個(gè)值,主要控制著色后顏色透過(guò)體積的強(qiáng)度:

  • Emission自發(fā)光;

  • Blackbody相當(dāng)于使用溫度控制體積自發(fā)光;

  • 舊版中Attenuation控制衰減,衰減強(qiáng)度越大,光線越快被吸收,體積“越黑”;

  • Advanced高級(jí)設(shè)置
    Displacement可在此處連接貼圖控制體積跟多細(xì)節(jié),創(chuàng)造更多驚艷效果;


注意,在使用Displacement時(shí)適當(dāng)增加Volume Padding的值,以確保能完全顯示其效果:

Interpolation當(dāng)對(duì)使體積數(shù)據(jù)命名的通道進(jìn)行采樣時(shí),使用的立體像素插值;各模式效果如下:



Tips:

  • 當(dāng)Volume Ray Depth大于0時(shí),體積只能接受來(lái)自其他自發(fā)光體積的間接照明;
  • 在使用XXX channel的時(shí)候,請(qǐng)確保該通道的貢獻(xiàn)來(lái)自VDB文件,也就是說(shuō)你實(shí)現(xiàn)準(zhǔn)備好了VDB文件;
  • 請(qǐng)盡量保持體積著色網(wǎng)絡(luò)的精簡(jiǎn);


該系列教程最后一篇,就醬了??
感謝大家的陪伴,我這么不靠譜的隨心情更新都沒有一個(gè)脫粉,感動(dòng)!
希望大家都有好運(yùn)~

各位路過(guò)的大朋友小朋友,如果有什么問(wèn)題可以留言一起討論,教程中有什么錯(cuò)誤的地方也熱烈歡迎大家指出??

C4DtoA的參數(shù)基本都涉及到了,講這些的意義是并不是讓大家挨個(gè)記住,是希望能夠知道有這么個(gè)功能,萬(wàn)一哪天要實(shí)現(xiàn)什么效果,會(huì)有一種——哎,用那個(gè)什么什么節(jié)點(diǎn)就行啊/調(diào)整一下那個(gè)參數(shù)就好了啊~ 的趕腳

重要的還是實(shí)踐

也不知道該說(shuō)點(diǎn)啥了。。??傊?,感謝觀看!多用多練!


Reference:
1.Solidangle Support & Documentation


禁止私自轉(zhuǎn)載,轉(zhuǎn)載需征得老夫同意。
否則,必追究。


接下來(lái)的教程應(yīng)該就是實(shí)戰(zhàn)教程了?或者講一下X-Particle??Houdini??
或許,想學(xué)Python嘛?圖形學(xué)了解一下?
開個(gè)玩笑







啊哈哈哈哈哈
歡迎大家踴躍發(fā)言

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容