[Houdini] VDB from Polygons
VDB from Polygons節(jié)點(diǎn)把多邊形表面或者表面上的屬性轉(zhuǎn)換成VDB。

VDB和Houdini的原生volume最大的不同是VDB只在特定的voxel里存儲數(shù)據(jù)。其他voxel里的值是backround value(背景值),基本不占內(nèi)存。
為了方便理解,把組成VDB的最小單元voxel看做包含屬性的方塊。Voxel Size是方塊的大小,單位是Houdini的一個標(biāo)準(zhǔn)單位,米。
Distance類型的VDB和Fog類型的VDB本質(zhì)上也都是由voxel組成,只不過voxel里的屬性值不同。軟件顯示他們的方式也不同,Distance類似多邊形的表面,F(xiàn)og類型是煙霧。
Distance類型:Distance類型方塊里存儲的屬性默認(rèn)叫surface。
首先在幾何體的內(nèi)表面填充一層方塊,這層的屬性值將會是?-voxel size(負(fù)的方塊大小值),如果繼續(xù)向內(nèi)填充一層,這層的屬性值會是 -2*voxel size(負(fù)的2層方塊大小值),填充x層,x層的屬性值是 -x*voxel size,也就是這層方塊到表面層的距離乘以負(fù)一。在外表面向外填充也是一樣的道理,但是值是正值。也就是說voxel的屬性值和方塊到表面的距離有關(guān),內(nèi)部是負(fù)數(shù),外部是正數(shù)。對于未激活的voxel,它們也有一個統(tǒng)一的值,外部的和最外層方塊的屬性值一樣,內(nèi)部的和最內(nèi)層方塊的屬性值一樣。(為了了解voxel包含的屬性值的大小,用VDB Visualize Tree把VDB轉(zhuǎn)換成包含屬性值的點(diǎn),用Clip從中間切開,再復(fù)制box上去,最后用屬性值染色(下圖1)。下圖2藍(lán)色是鋪滿內(nèi)表面的一層方塊,黃色是鋪滿外表面的一層方塊。下圖3是內(nèi)外各填充三層的效果,顏色稍微改了下,紅藍(lán)層交界的地方就是原幾何體的表面。)



這樣填充方塊的過程實(shí)際上就是激活更多的volex來存儲數(shù)據(jù)的過程,填充層數(shù)由Exterior Band Voxels和Interior Band Voxels控制(下圖)。

如果勾選Fill interior,方塊會一直向內(nèi)填充直到填滿。如果勾選Unsigned Distance? Field,方塊會同時向內(nèi)和向外填充,填充層數(shù)都由Exterior Band Voxel控制,值都是正值。
最后,Houdini會在屬性值是0的地方建立表面。
Fog類型:Fog類型方塊里存儲的屬性默認(rèn)叫density。
首先在幾何體的內(nèi)表面填充一層方塊,這層的屬性值會是1。如果填充第二層,第二層的屬性值是1,如果填充10層,第十層的屬性值是1,中間層的屬性值是過渡值。也就是說Fog類型的屬性值永遠(yuǎn)是從0到1的過渡,最外層是0,最內(nèi)層是1。向外填充在這里沒有太多意義,大概只能填一層,屬性值是0。勾選Fill interior的話,方塊會直接填滿內(nèi)部,最靠內(nèi)的方塊屬性值是1。Unsigned Distance Field參數(shù)在這個模式下沒有意義。
注意Fog類型向內(nèi)填充層數(shù)不同,煙霧的顯示效果也不同。層數(shù)少的話,煙霧最厚重最多,也就是density等于1的層比較靠外,煙霧會顯得更不透光(下圖,層數(shù)由少到多)。

Use World Space for Narrow Band:上面都是用填充了多少層來描述激活了多少voxel,填充的距離是voxel size乘以填充層數(shù)。當(dāng)勾選Use World Space for Narrow Band時,填充層數(shù)的選項變成了填充距離,用填充距離來描述激活多少voxel。
Surface Attributes:在激活voxel后,還可以復(fù)制一份voxel,添加幾何體包含的其他屬性,生成另一個VDB。
OpneVDB官網(wǎng)的Houdini Examples是一個很好的學(xué)習(xí)VDB的資料。本文參考了前兩個例子。

