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

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

项目涉及卡通渲染风格,需要人物描边效果,这里分享一个不使用屏幕后处理(Post Process),仅基于角色模型进行人物外轮廓描边的效果:
直接描边大概思路是:
在一个模型上添加两个mesh.第一个mesh正常显示材质效果,第二个mesh用来实现描边效果。

1、这里就用一个cube来展示效果了,先创建cube,随便给了个颜色:

UE4不使用屏幕后处理实现人物外轮廓描边效果_第1张图片

2、为这个cube再添加一个static mesh组件,可以命名为outline_mesh,避免后面贴材质分不清。别忘了在mesh组件里赋上模型的同样的mesh文件:

UE4不使用屏幕后处理实现人物外轮廓描边效果_第2张图片

3、建好mesh,就可以来连描边的材质了,连线图如下:

UE4不使用屏幕后处理实现人物外轮廓描边效果_第3张图片

4、这种描边存在一个问题,就是描边效果是基于模型的,描边的粗细会随相机的远近存在一个近大远小的效果,这里我利用模型和相机的距离来对Shell width进行补充,离得越近,补充的值越小,离得越远,补充的值越大,修改后的材质如下:

UE4不使用屏幕后处理实现人物外轮廓描边效果_第4张图片UE4不使用屏幕后处理实现人物外轮廓描边效果_第5张图片

获取相机和模型在世界坐标系下的位置(Camera positionWS和Object position),通过distance计算距离,这里只取0-100,因为太远了描边效果几乎看不见了不需要考虑,然后映射到0-1的范围内,把这个距离作为底数,设置power值控制强度(直接乘以一个参数的线性效果不太好,我需要越远补充效果越强的效果),然后再乘上一个参数控制强度值,加到原来的宽度上。
当距离为0时,补充效果为0,宽度为原始宽度,当距离为100或更高时,补充效果最大。对于参数的调节暴露给美术小哥,他们根据效果来调就OK啦。

最后上个效果图(Cube效果确实不明显,换个sphere吧):
UE4不使用屏幕后处理实现人物外轮廓描边效果_第6张图片

你可能感兴趣的:(Unreal)