UE4使用屏幕后处理实现人物描边效果(可设置非全屏)

时间:2024-04-14 20:33:01

UE4使用屏幕后处理实现人物描边效果

思路参考B站OpSader大佬,具体的数学原理大佬在视频里讲的很清楚了,我这里就不献丑了,大家可以去看看视频。

实现原理视频

这边主要讲一下具体的操作方式和可修改的参数。我需要的是只对特定模型描边,而不是全屏后处理描边,具体修改方式下面会详细解释。

1、首先创建材质,修改材质属性Material Domain 为 post process,声明是后处理材质。

UE4使用屏幕后处理实现人物描边效果(可设置非全屏)

2、下拉修改 Post Process Material 中的 Blendable Location,改为Before Tonemapping。

UE4使用屏幕后处理实现人物描边效果(可设置非全屏)

3、材质蓝图(小图看不清的可以右键在新标签中打开)

UE4使用屏幕后处理实现人物描边效果(可设置非全屏)

这四个部分是一样的,区别在左下角的参数分别是(1,0),(-1,0),(0,1),(0,-1)

UE4使用屏幕后处理实现人物描边效果(可设置非全屏)
UE4使用屏幕后处理实现人物描边效果(可设置非全屏)

然后全部加起来

UE4使用屏幕后处理实现人物描边效果(可设置非全屏)

4、用一个mask(RGB)来作为遮罩,lerp是为了把描边和现实效果插值到一起。

- outlinecolor:可以设置描边的颜色和亮度。
- LiveDepth: 调整深度
- power:这个乘方是通过小于1的数越乘越小,大于1的数越乘越大来区分。

UE4使用屏幕后处理实现人物描边效果(可设置非全屏)

5、以上是视频中实现的效果,下面谈谈我的修改。

修改1:
用一个Outline_width参数来控制四个参数值(3,4与下图同理)方便修改描边粗细。UE4使用屏幕后处理实现人物描边效果(可设置非全屏)
修改2:
SceneTexture采样如果用SceneDepth的话就是全屏无差别描边(可以使用post process volume中的Infinite Extent(unbound)属性来控制是否全场景描边。)

UE4使用屏幕后处理实现人物描边效果(可设置非全屏)

这里改为CustomDepth进行采样,只有模型开启了CustomDepth属性才会应用描边效果。在模型的Rendering属性里有个选项叫 Render CustomDepth Pass(如下图)勾选上就可以了。

UE4使用屏幕后处理实现人物描边效果(可设置非全屏)