Unreal Material 高級教程 - 使用World position 製作特效Dissolve






大家好 這是三篇材質教學中的最後一篇,主要重點是如何在Shader中取得物件本身的資訊,製作的效果是Dissolve,並且使用Worldposition 設置每一個頂點的世界座標位置去製作。




與使用透明度製作類似效果不同的是,轉換的切面不會像使用Opacity那樣出面缺面,而必須使用雙面材質或者是判斷切面填上頂點等。


原則上由於不使用不透明度在Shader的消耗上會比較低。


另一方面是介紹如何透過藍圖控制已經製作好的參數去進行類似的動畫效果。


以下是製作方式:



一材質設定


第一步先取得世界絕對位置以及Actor(Gameobject :) if u like unity style)
我希望製作的漸變方向是Z軸 也就是指向上方的軸向,所以透過Mask 獨立出Z的資訊,然後在取得本身位置與世界座標位置的距離也可以使用減法,但是要注意負數使用Distance則沒這問題。這一步驟的目的是計算出本身座標跟世界位置的差異,這樣子你的Actor 無論身在何地都可以計算區後面街上的Offset差值。

Add節點第二個參數就是Z Offset 的Scale類型參數。

這個數字會根據您的模型大小而決定,另外模型的PIVOT 必須在底部。

也就是您要在藍圖中控制的數字。


接著使用if 判斷計算的距離與絕對位置的大小,if 的B 是接到世界座標的Z。

接著就是取出切面的部份將計算的距離直接除以一個數字取得Offset切面的範圍,除以的數字越大責範圍越大。



最後乘上你希望的顏色以及Noise紋理增加細節。


這是全部的材質連結。

二.藍圖設定


設定好以後進入藍圖設定,創造一個藍圖並將您的模型加入進去。

藍圖Component


使用這種Worldposition 的方式有個缺點,就是當位置Z軸向都為0時只會有一片薄薄的模型在底部,不會完全消失,所以這部份的控制必須在藍圖做。

所以上圖先將Rendering關閉,您也可以在藍圖的Begin play關閉。


藍圖的建構式,為了在Realtime隨意改變材質參數,在物件創建時建立一個Material instance然後再把這個Material instance 賦予給模型本身。


接著在藍圖的Event 視圖,創造一個Time節點製作您需要的材質數值變化,這本身就是一個動畫,並會把動畫的值Update給您需要的Function。
因為我的Zoffset 是 Float 所以我使用一個Float 的動畫曲線。


藍圖的設定,在您希望觸發的時候觸發我這邊直接使用按下X時候觸發,在來使用一個Flip節點,也就是我希望製作在按下第二次時會重新回放的功能。


這是後面的設定,要注意的是我在預設時關閉模型顯示,並在按下X後開啟顯示,再撥放動畫,但是我需要在第二次按下時,必須播完動畫才將模型關閉。

所以直接使用Flip的Bool就可以做到這點。

接著簡單地設定一些亂數給Color讓他每次轉換有不一樣的顏色。


這是藍圖的設定。


最後按下X 會出現模型,再按下一次X 可以關閉, 並且轉換過程中可以隨時切換。















留言

這個網誌中的熱門文章

[Unreal 4]下載與安裝