故障效果越来越多的被应用于游戏开发,将事物发生故障的现象进行加工,形成了一种新的风格。本文实现了一个手电筒的故障效果,效果图如下,模型用的是Asset Store资源商店里的免费资源SciFi HandLight Free:
创建一个新的PBR Graph,创建以下属性:
1. Main Texture(Texture 2D):主贴图
2. Normal Texture (Texture 2D) :法线贴图
3. Emission Texture(Texture2D):发光贴图
4. Metallic Texture(Texture2D):金属度贴图
5. Emission Color (HDR 类型Color):用于控制发光的颜色
6. Malfunction Rate(Vector1):用于控制故障发生的比率,用Slider类型将取值范围限制到[0, 1]
首先需要创建四个Sample Texture 2D节点,用于各个贴图
Main Texture、Normal Texture、Metallic Texture连接的Sample Texture 2D节点直接输出到PBR Master主节点中的Albedo、Normal、Metallic,效果的实现主要通过Emission节点。创建一个Rangdom Range随机值节点,我们通过随机的比率实现灯光的闪烁,Speed的属性用Time节点来输入,最小值取0,最大值取1:
将上面Random Range的输出值与Malfunction Rate故障率进行比较,如果大等于该值则取1,表示不发生故障,否则取0,表示发生故障,灯熄灭,值比较通过Comparison节点实现,判断通过Branch分支节点实现:
将Branch节点输出值与Emission Color属性值相乘,再与Emission Texture连接的Sample Texture 2D的节点输出值相乘输出到PBR Master中的Emission节点,最终实现:
在Inspector面板调整材质的属性,当Malfunction Rate为0时,灯常亮,不会发生故障,为1时灯常灭,完全故障: