mastertravels77 发表于 2021-3-29 10:29

【翻译】NPR角色渲染总结!现在是迈向更高境界之时

·|前言
文章翻译,本文内容不同于标题相对基础一些不过很全面。
原文链接:https://www2.slideshare.net/EpicGamesJapan/unreal-festext2020winter-npr
·|作者简介

中村匡彦
Indie-us Games公司代表&制作人。
自称虚幻引擎的万事屋(何でも屋)。
Unreal Fest出场最多。
第一款自研的独立游戏 Trinity S正在开发中!

·|议题
NPR是什么?引擎改造向量遮罩(着色)光照轮廓后处理总结

1.NPR是什么?


Non-Photorealistic Rendering(非真实感渲染)
漫画,插画,素描,卡通动画,立体插图、水彩、油画、水墨画、日本画、点彩画等在现实中不可能发生的表现。
严格来说,赛璐璐着色、图案化等也是NPR的一种。

1.1.1赛璐璐着色(Cell Shading)与卡通渲染(Toon Rendering)


这些用语也通常用于相似的意思。
    赛璐璐着色——赛璐璐动画风格
    卡通渲染——包含赛璐璐着色
这篇文章会将这些全部统称为NPR。
话虽如此,由于没有严格的定义,这也不是绝对完善的解释。

1.2首先来波效果展示



模拟手绘风格的场景后处理
角色渲染

1.3本次展示制作的角色


名字是斋藤胡桃,原本是在商店用来出售的角色,为了这次展示进行了重新设计,可以说是全部翻新了一遍。

1.3.1角色原画设计图




1.4最初目标

不是单纯的展示卡通着色器,而是渲染出效果图合并我使用的各个技术点。
为了还原插画效果而进行了大量尝试。
在人造光源的黑暗的室外环境下,想要制作一个兼具鲜明对比和帅气表现的场景Demo。

2.1引擎改造

2.1.1引擎改造是指什么?

如果有效果需求或者效果问题,可以通过修改引擎来实现。
Q:引擎改造真的有必要吗?是否不用改造也能实现效果?
因此我们需要考虑改造引擎的优缺点。

2.1.2改造引擎的优点

可以自定义光照模型。
可以加入到UE4现有的照明中。
网上也有关于扩展方法的文章,比较容易实现。
《扩展UE4的Shading Model》—— UE4のShading Modelを拡張する - Qiita

2.1.3通过引擎改造实现了NPR效果的案例

https://forums.unrealengine.com/community/work-in-progress/41288-toon-shading-model
Toon Shading Models, Stylized Rendering Experiments - Unreal Engine Forums
Anime/Toon Stylized Shading Model - Unreal Engine Forums


2.1.4改造引擎的缺点

共享引擎很麻烦。(50G以上数据),需要维护c++代码和HLSL。
技术容易成为独自的东西,不适合公开的场合。
向内暂且不说,向外分享的话还是尽量避免修改引擎。

2.2在本项目中

没有改造过引擎代码!
全部使用实现UE4标准功能的方法。
虽然有些勉强,但基本上没有问题。
在力所能及的范围内以良好的表现为目标!
这次全部用ue4.25.4制作。

3.向量


3.1活用向量

为了实现各种各样的表现,活用节点材质。
首先从向量入手。
最基本的思路可以参考下面的文章:
《谁都能看懂的卡通shder入门》—— UE4 誰でもわかるセルシェーダー入門 - Let's Enjoy Unreal Engine (hatenablog.com)

3.1.1向量的内积

向量和内积是非常密切的关系。
如果你能理解这个思路,那么从任何角度添加效果表现都能够很好的实现。
内积在效果表现上是相当关键的“工具”

《谁都能看懂的卡通shder入门》配图——光线向量与法向量的内积

3.2.1光向量

使用方向光的Transform.Rotation
UE的材质中也有光向量节点,很容易获得,但是它只在前向渲染中起效
Material Parameter Collection中保存
(直接机翻了反正一般很好拿到)

3.2.2光向量

请参考材质中保存的参数,这样在之后就可以直接取内积与顶点法线等参数了。
最简单的光照的位置可以在材质中获得。

3.3.1视向量

相机世界坐标 - 片元世界坐标。 易于制作菲涅尔效果。
视向量假彩色输出


3.4反射向量

由视向量和法向量计算得到。常用于环境采样。

反射向量假彩色输出


4.1遮罩(着色分区)

一般也说PS的基础就是蒙版或者选区,这里叫遮罩也是差不多的意思。日译英应该是Mask就直接用了。

4.1制作遮罩

使用向量的内积产生着色分区。

在假彩色输出中观察效果


4.2遮罩的基本功能

几乎每一个遮罩都有其意义。
1.偏移(加运算)(Offset)
2.羽化(Smoothing)
3.ID图(Texture bias)

4.2.1Offset

遮罩位置偏移 调整功能(比如:BackFace描线中的ZOffset遮罩图;蓝协中3:7的NdL)
适用于简单的调整。
基本上只是加法。


4.2.2Smoothing

对于遮罩区域的边界 添加渐变,软化。
(比如:shadowStep = (halfLambert - step)/feather)
大多数情况下会用到的是除法计算。

这配图好像没看出Smoothing?


4.2.3IDmap (texture bias)

遮罩纹理图,一般使用单通道存储,一张图可以有四个通道的遮罩。(一般ID图不应该是一张RGB不同的色块吗)


4.2.3.1使每个通道都具有意义

不同的通道可以针对不同的效果。
比如,输入“ 1.0”时,总是添加。 “ 0.5-0.0”代表遮罩的强度。
保证必须的部分通过Mask过滤,无用的东西被遮挡住。

鼻子上一定要有高光


4.3遮罩种类

常用的遮罩(这里的Mask使日译英,意会即可)
1.Shadow mask阴影遮罩
2.Highlight mask高光遮罩
3.Rim light mask边缘光遮罩
4.Pattern mask图案遮罩

4.3.1Shadow Mask(内积产生的阴)

最基本的着色。
由方向光产生的阴,你也可以加入环境光的影响(颜色,强度)

Shadow mask节点构成
Shadow mask Only

4.3.2Highlight mask

具有光泽和光泽感的Mask。 使用反射向量计算。
把它放到Emission中,使得其可以参与Bloom的计算。

Highlight mask 节点
Highlight mask Only


4.3.3Rim light mask

基于视向量计算的边缘光。
把它放到Emission中,使得其可以参与Bloom的计算。
它可以给人强烈的三维印象。

Rim light mask节点
Rim light mask Only


4.3.4Pattern mask

和Shadow Mask不同,由视向量计算得到,一种不同的阴影效果

Pattern mask 节点
Pattern mask 使用阴影和点的图案
Pattern mask Only(崩三MMD里面的Brush Pattern应该不是这个吧?)

5.光照

5.1.1光照的问题

NPR角色渲染中,我会在某种程度上控制阴影。
太强的阴影会给人留下不好的印象。
但是也不能粗暴地设置成Unlit

默认的光照效果
Unlit的问题

5.1.2针对光照的对策

1.修改引擎并使用独特的阴影模型进行控制 →理想,但是维护成本太高
2.使用BP和材质独立进行所有照明计算 →可能,但非常复杂且有限
我也希望能找到一个普适的方法...


5.2.1弱化阴影——活用Subsurface

次表面散射模式使光线穿透物体渲染,会在一定程度上减少强烈的阴影效果
我也尝试过『Preintegrated Skin』『Subsurface Profile』,但是结果很微妙。

Subsurface照明


5.2.2Subsurface问题


背光的时候会出现不必要的通透效果
当光矢量指向上方时,没有透射光,因此无法很好地计算阴影。


5.3受光照影响的Mask

由于高光和边缘光使用自发光节点输出,不会受次表面散射灯的影响
调整光照
UE4内置灯如果直接使用,则蒙版所产生的阴影将与印象中的光照效果不同。


灯光属性设置 “阴影偏差”到1,“阴影倾斜偏差”为0.0, “阴影滤镜锐化”为1.0。对于锐利的阴影很有帮助!

5.4模型法线

脸部的阴影尤为重要。使用工具将面部的法线方向统一。

效果对比

相关参考资料
ARC SYSTEM WORKS的制作分享很有帮助。不只是法线编辑。
罪恶装备的分享 https://www.slideshare.net/ASW_Yokohama/guilty-gear-xrdtips-124324946


5.5眼睛光照

高光使用Unlit材质。
各向异性的反射和少量高光添加到眼球上。
高光根据光照方向移动。



6.1轮廓线

轮廓线时翻转法线的网格,是比较常用的方法。
这次我用Blender创建了一个倒置的网格,并使其成为骨骼网格,包含普通反演网格的状态。

相关节点


6.2轮廓线的基本效果需求

1.基于顶点色的厚度遮罩
输入一个灰度,指示轮廓线的厚度。下图中使发梢的描边变细了。


2.边线颜色遮罩
不同材质的轮廓线颜色不一样。颜色饱和度较低时,更易于识别。


3.相机深度校正
您离相机越远,轮廓越小。 即使将相机分开也可以自动调整轮廓,以使轮廓清晰可见。
在材质蓝图上使用“绝对世界位置”, 将局部空间转换为相机空间并计算偏移量。 从摄影机空间再次转换为世界空间后应该传递给“世界位置偏移”。

本地→相机→不包括世界转换


4.使用摄像机的FOV自动计算缩放
修改相机的FOV时,轮廓线的宽度也会变化。
基本思路与相机距离调整相同。 只需考虑FOV作为调整因子。




5.边线颜色混合纹理
通过蒙版额外的绘制一些描边模型。颜色和强度可以调节。 可以为每个RGBA通道指定。



·|后处理

产生NPR效果相关的后处理效果。
Paraffin
Diffusion过滤
Kuwahara过滤
其他

Paraffin效果

赛璐璐动画的摄影用语。
彩色石蜡纸通过叠加在赛璐璐胶片上,光与暗的反射产生的特殊效果。


UE4上模拟Paraffin效果
在Dirt Mask中通过指定遮挡画面的纹理,可以模拟地再现。



Diffusion效果

表示漫射光源和反射光给人模糊的印象。 对于高对比度图片非常有效。
请参考Monsho的推文。
但是,从UE4.25开始,一些自定义节点需要重写。
https://twitter.com/monsho1977/status/670634806124920832
如果可以修改引擎,则可以进行更高质量的实现。
《扩展引擎并执行后期处理的PS版本》
http://monsho.blog63.fc2.com/blog-entry-209.html



Kuwahara过滤

日本桑田道吉发明的平滑滤波器。 您可以获得油画般的效果。 动漫背景艺术般的图片很适合。
https://www.raywenderlich.com/100-unreal-engine-4-paint-filter-tutorial#toc-anchor-004
《我遇到了一个图像过滤器,它的日语名称明显叫Kuwahara过滤器,当我尝试它时,它很棒,因此我将对其进行介绍》
https://qiita.com/Cartelet/items/5c1c012c132be3aa9608 在下面的文章中对UE4的实现进行了详细说明。
《虚幻引擎4绘画滤镜教程》
https://www.raywenderlich.com/100-unreal-engine-4-paint-filtertutorial#toc-anchor-004


其他后期效果

Cinematic DoF(影视级景深)
Lens Flares(圆形镜头光晕)
BloomExposure
Chromatic Aberration(色差)
Vignette Intensity
Color Grading LUT
Motion Blur
etc …

总结

1.并不需要改造引擎
UE功能很齐全了,后处理也可以直接用,同时和自定义的东西结合起来也不错。

2.首先你需要一个漂亮的模型
好的材质往往只是好效果的加分项。引擎材质和模型美术的合很重要。

感谢您的观看!
页: [1]
查看完整版本: 【翻译】NPR角色渲染总结!现在是迈向更高境界之时