UE4 tutorial : Materials 筆記
本章大綱:
因此才說要在material中創建一些參數可以給外部人員使用,增加可修改性與泛用性。
Create Material Instance
之後就可以修改assign給場景中的模型instance的material
- 使用Blueprint編輯Material,拖拉點選一些原本要在shader上時做的光照內容
- Material Instance概念
- 利用Material Instance來動態變更Material外觀
- [Bonus] 查詢追加Event的方法
一些基本的圖學概念就跳過不講了,反正就顏色要疊起來的話是用乘的類似這些最基本概念,還有0~255可以mapping成0~1這樣,unreal的material應該是直接啦shader的數值出來秀,記得OpenGL的shader也是mapping成0~1來秀顏色XD
UE4有Material Instance的概念,有點像class。
一般在製作遊戲材質時,會由程式人員製作一個粗略的原型Material,然後交付給美術人員。
緊接著美術人員產生該材質的Material Instance,並修改該材質已完成客製化 (也不會弄壞原本的material)
一般在製作遊戲材質時,會由程式人員製作一個粗略的原型Material,然後交付給美術人員。
緊接著美術人員產生該材質的Material Instance,並修改該材質已完成客製化 (也不會弄壞原本的material)
這邊開了兩個功能參數出來,可以讓後來接手的人在外部修改,或於Material Instance作客製化。
像這樣,外部修改參數客製化
此外,
因為你新作一個material就相當於是製作了幾個新的shader內容並且需要去重新compile它。
因此
- 當你想要快速修改部分內容 (因為已經編譯好了)
- 快速創造material變體,抽換一些顏色、texture、specular數值之類的話
可以使用Material Instance
因此才說要在material中創建一些參數可以給外部人員使用,增加可修改性與泛用性。
這裡範例用HueShift這個blueprint Node來示範,HueShift算是一個色相調整器。
如此一來就會有一個參數是在管理亮度(乘很大),一個在做色相調整。 然後輸出到Base Color中。
如此一來就會有一個參數是在管理亮度(乘很大),一個在做色相調整。 然後輸出到Base Color中。
Create Material Instance
在完成了Material後,在material上按右鍵就可以找到建立Material Instance的選項。
之後點開來大概是這樣
比較重要的大概是可以找到一些來自parent的資料以及可以修改
修改了Preview Mesh把模型放進去,打開客製參數開關就可以開始對instance做些不一樣的數值調整。
之後就可以修改assign給場景中的模型instance的material
動態修改Material Instance
這部分可以透過Blueprint或C++來實現。
直接在prefab修改而非material
Eveny BeginPlay =>相當於Unity的start( )
我們設定這個物件再生成的一開始,就動態生成一個material Instance,然後set到Cube Material
如此一來它就會在Unreal生成BP_Player這個物件之後,建立一個動態Material Instance並組件到StaticMesh之中,然後將Material的數據資料存在一個叫CubeMaterial的參數中。
更新動態Material
Here is the order of execution:
- On Component Begin Overlap (StaticMesh): Executes when the cube mesh overlaps with another actor
- Cast to BP_Banana: Checks if the overlapping actor is a banana
- DestroyActor: If the overlapping actor is a banana, destroy it so it disappears
- IncrementFloat: Increments the BananaCounter variable by one
- float / float: Divides the counter by a specified number to normalize it
- Clamp (float): Clamps the result of the division so that you don’t get a value higher than 1(限制數值大小範圍)
- Set Scalar Parameter Value: Sets the ColorAlpha parameter of the cube material to the supplied value. In this case, the value is the normalized and clamped version of BananaCounter
還不是很懂為什麼cast to可以做到像if的事就是了,明天再去問同事好了,累
留言
張貼留言