本文是「Unreal Engine (UE)的日历 | Advent Calendar 2024 – Qiita」
系列 3 的第 22 天文章。尝试随便实现了一下偏移轮廓光。
※2024/12/24 – 已修正为可通过点击图片放大
已经到第 22 天了吗……糟了……今年也完全没有准备 Advent Calendar 用的素材……
一直都是这样呢……
我去海外的 Unreal Fest 讲座视频里找找有没有合适的素材……
哦!

就是这个!就来试着做一下!
也太随便了吧……
本文的主要对象
- 正在接触 Unreal Engine 材质编辑器的人
- 正在为现有材质表现寻找一些追加要素的人
- 对 Stylized 表现感兴趣的人
和上次一样嘛
是啊……
Spice Frontier 的轮廓光

- 将 Depth(深度)通道偏移
- 差异产生的地方就是轮廓光
- 其他:通过垂直方向遮罩压低下半部分等
没有详细的节点说明。
总之先试试看吧。
尝试偏移深度并提取差分

- 在 Overlay Material 中实现
- 准备两个 Scene Depth,其中一个的 UV 做偏移
- 分别除以过大的值后再做 Subtract
- 通过 Step 变为 0、1

那么,大致就算复现出来了吧?
几乎没有解说!
嗯嗯……
现在的状态是手动移动偏移量,所以再把它做得更实用一些吧
使用场景的光照信息来做偏移

- 将 SkyAtmosphereLightDirection 节点转换到 Camera Space 后使用 R,G 通道
- 乘以强度调整参数
- 为了修正方向,乘以(1.0,-1.0)

这样基本就算实现完成了吧
最后再加入垂直方向的遮罩,压低物体下半部分的强度。
垂直遮罩


这次因为没时间,就用从 World Z0 位置开始的简单渐变。
垂直遮罩还有很多其他做法,这里省略。
颜色设定

- 将 Atmosphere 颜色和灯光颜色相乘的颜色设定

这并不是最佳方案。只是随便从灯光和环境里拾取颜色即可,仅此而已的实现。
完成!

基础实现到这里就完成了。

接下来可以根据各种情况和用途进行自定义。
现在是对整个画面统一处理,因此最好加入根据摄像机与目标距离来调整粗细的机制(因为没时间没赶上)
顺带一提,这个实现也计划加入到我目前制作中的「Stylized Postprocess for Unreal Engine v2.0」里。
那个叫 Stylized 什么什么的不是说年内发布吗?
…………
……嗯?
顺便一提,我在 2023 年的 Advent Calendar 里也投稿过 NPR 相关内容,感兴趣的话请确认一下!
Mesh Distance Fieldsで表現模索&Stylized系マテリアルで使えるかもしれない副産物 – UE Advent Calendar 2023
…………晚安!
……
链接
Unreal Engine (UE) – Qiita Advent Calendar 2024 – Qiita