[NPR + UE](1) 简单Cel Shading

8 篇文章 2 订阅
7 篇文章 1 订阅
本文介绍了CelShading技术在游戏和动画中的应用,包括其原理、在Unreal Engine 4中的实现步骤,如计算LightingBuffer、创建阈值和使用LUT。重点讲解了如何结合outlines和阴影效果,以及解决传统方法的局限。
摘要由CSDN通过智能技术生成

1. 概念介绍

实现风格化渲染的一种技术就是使用cel shading(或者说toon shading)。这种技术模仿了卡通和动画中通常使用的渲染。

Cel shading是当你渲染时,使用多个颜色波段,而不是一个连续的梯度。

在这里插入图片描述
在这里插入图片描述上图中有三个波段:一个给阴影,一个给基色,一个给高光。一个典型的误区是:outlines就是cel shading。《无主之地》就是一个例子,它并不是cel shading

在这里插入图片描述
但这两者结合是很常见的,这会让画面看起来像是画出来的,例如: 《龙珠战士Z》

在这里插入图片描述

2. Cel Shading方法

最常见的方法是:比较法线和光的方向,求其点积:
在这里插入图片描述

通过添加阈值,可以很轻松的获得多个波段band

在这里插入图片描述
这个方法的限制在于:其他光源无法影响这个渲染物体;其他物体也无法在它上面投射阴影。

解决方法:不用点积,而是计算表面的亮度。然后在阈值处理过程中使用这个值,而不是点积。

3. 创建Cel Shading

在UE4中,创建一个后处理材质:
在这里插入图片描述

3.1 计算Lighting Buffer

我们需要访问两个缓冲区,一个是后处理的输入(正常流水线的渲染结果)和diffuse color(原色):
在这里插入图片描述

Lighting Buffer应该只包含灰度值(描述某物有多亮)。这意味着不需要两个缓冲区的颜色信息。要放弃颜色,连接两个SceneTexture节点的颜色输出到去饱和度——这将使两个缓冲区完全去饱和。
在这里插入图片描述

然后两者相除,在进行clamp

在这里插入图片描述

4. 创建一个阈值

对于这个cel shader,任何数值大于0.5的像素都会使用正常的漫反射颜色。数值小于0.5的像素将使用一半亮度的漫反射颜色。

在这里插入图片描述

在这里插入图片描述
这个时候,不仅看起来好像不太对,而且场景还一直在闪烁,原因是现在的后处理默认是在tone mapping之后,所以把这个改了:

在这里插入图片描述

在这里插入图片描述

5. 隔离后处理

这个很简单:

在这里插入图片描述

6. 使用LUT

对于LUT文件,UE4默认其处于线性空间,所以我们需要:

在这里插入图片描述
另外,我们不需要tile的平铺方式:

在这里插入图片描述

使用它来代替阈值:

在这里插入图片描述

在这里插入图片描述

7. 预告

下一篇应该是我在腾讯的实习Demo中使用的技术——简单的、旋转的Kuwahara油画过滤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JMXIN422

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值