Unreal-TrickTech_真彩虹島_更新糖果糖漿
前言:由於被刪兩次,這次把圖截清一點,並且把代碼發出來吧,就不放外部鏈接了。本文僅做心得分享,偏美術向審美向,不保證能適用於任何項目,不保證低性能消耗,不建議直接用在商業項目;本文也不是商業教程,也只能是盡量闡述製作過程和思路,不打包票能學會。
目標效果:
之前無意中在花瓣看到了這張圖,就想在虛幻4裡面以這個圖作為效果參考,實現一下類似效果。
- Part1前期製作
模型製作:
貼圖製作:
在SD裡面使用漸變和噪波混合一下映射一下漸變,顏色找不著準可以去吸色然後減點,挑幾個好看的顏色做漸變映射,可以再用tiling處理一下隨機性和連續性。
從Substance Painter導出來的暗花法線和別的地方找的法線
Part2:引擎部分
1、先做個世界位置投射的材質函數,做成材質函數為了方便後面通用,需要調整的一些參數都放在了材質參數集裏,確保在別的地方調用的時候tiling值是一致;
2、島基材質,島基不需要做特殊處理,就把上面做的材質函數連到材質球的pin口上,創建實例附到島上即可;
3、小沙丘材質製作
首先需要在項目設置裏先把距離場打開
材質全圖
①、先一通計算距離場的蒙版,如果需要打破蒙版的呆板可以用vertex color在模型上畫一下;
②、算出來的蒙版經過DiterTemporalAA讓一些像素往後偏移;
③、騷操作來了,我們小沙丘的模型是一個小突起,如果直接放到場景裏是這樣的,在與地面銜接的地方會有明顯的邊界,即使加了上面的像素深度偏移,
我們從世界法線方向的角度去考慮問題,就需要像接的地方的法嚮往上掰,然後和原本的世界法線方向進行插值,於是,我們把切線法線貼圖轉換到世界法線再和切線法線混合,切線法線如果直接用在世界法線上剛好就是一個朝上的方向,(alpha連接的是距離場蒙版)
原理同:
一通計算之後我發現陰影有點重又混合了0.5的(0,0,1)然後normalize一下直接輸出到法線上,因為計算時使用的是世界法線,所以我們要在材質的屬性裡面吧使用切線法線的勾去掉,當然你也可以先自己transfrom一下,
④、法線計算完了,我們開始做基礎顏色部分,我希望小沙丘是隨機顏色的,而這個顏色又是和底下的顏色不違和的,於是我就想
顏色貼圖上隨機隨機查找一點作為我們沙丘的顏色,然後我想了一下,好像沒有現成的random float的節點,於是我們就可以去UE的usf,ush裡面找一找,在
引擎版本EngineShadersPrivate裏有一個Random.ush
在vscode打開於是我找到這個
這函數可以直接在custom裡面調用,我觀察了一下貼圖u=v查找的顏色應該也夠用了(相當於是在對角線上查找顏色),所以就沒把uv拆開,如果你的圖顏色分佈不那麼均勻或者別的話可以U和V輸入分別調用這個函數一次並輸入不同的seed;
小沙丘基本計算完畢,創建實例調參
4、糖果材質製作
糖果這裡幾乎沒什麼特殊的計算技巧,主要還是分享一個思路吧
①、新建一個材質球,shading model改為 Two Sided Foilage
②、用菲尼爾同時控制次表面的不透明度和和自發光,這個菲涅算出來邊緣是黑的,也就是說邊緣越薄越透光,中間透光度低,但是同時會增加自發光的比重;
③、調參,我們通常畫畫的時候為了表現一個東西很透亮,會把亮部顏色壓下去,把暗部邊緣的顏色純度提高;在這種繪畫思想指導下所以我們把基礎顏色的明度調壓暗,在低明度的Diffuse下IBL效果也會弱化,自發光給一點,就想氣球果凍一類的膠體應該會受到四面八方的來的光再從體內散發出去因為乘了一下菲尼爾相當於是光線從一頭射向另一頭的時候已經衰減了,光的能量累加衰減balbala???(我瞎想的反正就是加個菲尼爾x自發光顏色好看,調這個色的時候注意搭配就行),把SubsfaceColor調純亮一點點,然後把整體不透明度在菲尼爾控制下整體壓低一點但是要保留一點菲尼爾的效果,粗糙度要給一點不然會太光滑,期初的目的是為了調類似橡皮糖一樣的效果有點粗糙,有點透光,亮部暗,暗部亮,有高光;
5、流流糖漿
主要分成兩個思路,一個是位置偏移,一個是法線縮放,
表面和次表面和糖果相同
①、先算出約束偏移的蒙版,因為有些地方你並不需要他動得太多,你可以通過各種方法計算,手繪貼圖或者頂點著色都可以只是個蒙版不用糾結;
②、算個縮放噪波和法線
③、世界位置偏移計算
④、把上面兩個結果lerp一下
然後調調參數
5、水波紋糖漿
最開始用了極坐標去算波紋但是效果不理想,最後是在max裏把圓柱兩頭的面刪掉,然後把一一頭所有點壓在一起,然後把整個柱子壓扁,然後在SubstanceDesinger裏算了兩張波紋圖,用UV動畫實現;
稍微地編一下,加點素材,房子樹木用的是LowpolyStyle,天空球用的UltraDynamicSky
推薦閱讀: