
本篇主題:如何在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

屬性面板中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;

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

注意:在選在要加載的OpenVDB文件時(shí),IPR要確保沒有運(yùn)行,否則在C4D視窗中不能準(zhǔn)確顯示邊界框大小。
4、剛開始看不到任何畫面,IPR中也沒有渲染出任何東西,因?yàn)檫€需要給Arnold Volume添加一個(gè)volume_collector材質(zhì),之后就可以看到效果:

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

此時(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:

最后效果大概這樣:

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

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

可以看出簡(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)造更多驚艷效果;

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ā)言






