简单了解卡通渲染
卡通渲染(英语:Toon Shading)是一种非真实感绘制(NPR)
卡通渲染又称赛璐珞渲染(Cel-shading),Cel一词来自常用于传统动画的材料赛璐珞。
了解到还有一种NPR+BPR的渲染方式
旨在使电脑生成的图像呈现出手绘般的效果。为了使图像可以与漫画或者卡通达到形似的效果,专业人员通常使用卡通渲染着色器进行处理。卡通渲染是在大约21世纪初期,作为计算机图形学的副产物出现的新技术,并且主要应用于电子游戏中;然而,它可以呈现出如手绘动画一样简洁明了的效果。
NPR(Non-Photorealistic Rendering)非真实感渲染
NPR(what~)不需要过度的在乎渲染的真实性和物理特性,主要追求最终的渲染效果与风格。像是一些卡通渲染,我们经常听到的三渲二就是非真实渲染的内容,主要追求最终的美术效果而非真实感。
NPR实现理论
NPR最核心的处理在于使用色块表现体积感,因为要追求手绘感因此光影之间的过度不会非常圆滑,一般还会加上描边线增强效果
要实现基本的卡通效果一般要实现四部分:
简化阴影
由于引擎默认的光照是写实光照,要做到卡通效果首先要简化阴影的过渡(How?)。
卡通效果分为美式卡通风格(what?)和日式卡通风格(what?)。
美式卡通风格(what~):美式卡通风格一般会有较多色阶过度,色彩上会有比较多的渐变色,阴影的处理也会比较大胆和夸张。
日式卡通风格(what~):而日式卡通一般使用纯色色块进行着色,整体会更偏向现实一点,不会有过于夸张的表现,阴影通常表现为赛璐璐样式的二分阴影,带有很明显的分界线
通常情况下,使用基于兰伯特光照模型得到的 NDotL(法线方向点乘光入射方向)可以计算出一个物体的顶点光照结果。此时的结果为物理光照效果,我们只需要在此基础上使用step函数对计算结果进行二值化,就可以得到一个基础的二分阴影效果
除此之外还有第二种实现方式,使用 Ramp 贴图(what?)来定义光照情况下的颜色,从而控制阴影的外观:在顶点着色器中,计算NdotL(法线与光照方向的点乘),并将结果作为采样 Ramp 贴图的 U 轴坐标。这样,Ramp 贴图的纹理坐标根据光照角度进行采样,将采样到的Ramp图的颜色与模型基础贴图颜色进行混合,得到最终的颜色。这种方式的好处在于阴影颜色可以更加灵活的定义,尤其是对于一些皮肤或者丝袜材质可以实现很漂亮的阴影过渡色带(有点像次表面?)
法线修正
使用上述方法简化阴影后会发现有的地方会有明显的阴影异常,尤其是角色模型的面部,由于默认的光照模型计算,面部的模型较为复杂,简单对阴影进行二值化会出现很奇怪的阴影块。尤其是在面部,对于NRP来讲非常影响观感。那么我们就可以通过对面部的法线进行统一方向的操作来平滑面部的阴影。
目前有三种方式来实现(How?):
第一种就是借助法线修正工具来对面部的法线进行调整(How?),使其统一朝向,但这样会有很大的弊端,法线的变化会影响很多其他的效果,并且法线的调整就算有工具也比较麻烦。
第二种方式可以通过将另一个球形的法线信息转移到角色面部(How?)。这通常是通过在角色模型上创建一个球形投影,然后将球形的法线信息传递给角色模型的表面,使角色的面部使用球形的阴影效果实现平滑阴影
第三种方式可以使用SDF贴图(what?),在着色器中根据贴图中的距离信息来调整阴影计算。这样可以在面部产生更加可定义的平滑阴影,避免了法线对阴影的影响。
添加描边线
为了使3D模型更具有动画感,描边线是必不可少的,目前基本上有四种实现方式:
本村线(what?):本质就是为一些内描边画贴图线。优点是线条真实(毕竟是真手绘)。缺点也很明显:不能实现外描边,只能做衣服或肌肉骨骼的内描边线条
多通道渲染:本质就是将模型复制一份再放大,将大于原模型的位置调整为描边线。
具体实现:创建一个新的 Shader,包含两个 Pass(what?),一个用于正常渲染模型,另一个用于描边效果。在描边效果的 Pass 中,通过在顶点着色器中沿着法线方向进行位移来实现对模型进行一定程度的外扩,之后剔除模型正面。之后在描边效果的 Pass 中,对颜色进行一定的处理就完成简单的实现了。
基于屏幕后处理使用法线和深度信息进行边缘检测,最终实现描边线效果。但这种方式不好调整线条,并不推荐。
将菲涅尔效果调节为非常小的值,使其成为边缘轮廓的形状,然后在做颜色处理。优点是实现简单,缺点是形成的轮廓并不是很可控,并且粗细不均因有些不像线条,另外颜色处理也很麻烦。
高光边缘光处理
高光处理主要体现在头发上,日式赛璐璐经典的天使环状高光是肯定需要单独实现的,可以使用Kajiya-Kay(what?)或者Marschner(what?)实现,也有用各向异性来实现或者直接在画在贴图上的
边缘光较为简单的方法是使用菲涅尔效果获取到模型边缘的Mask,然后进行边缘光调色即可实现简单的效果。
Maya 卡通渲染(AiToon的使用)
官方文档:
卡通 - Arnold User Guide
【✪米库✪maya实时卡通渲染(经验分享)】
UE NPR渲染
【【虚幻引擎】还有比这更详细的材质卡通渲染???(非后期处理)】
【[虚幻5卡通渲染课程] 如何用虚幻5制作少前风格渲染】
(材质NPR篇)【第一节:UE5|基于延迟渲染管线的后处理卡通渲染】 - 知乎
【翻译】NPR角色渲染总结!现在是迈向更高境界之时 - 知乎
为什么在虚幻5中做卡通渲染一定要修改渲染管线_哔哩哔哩_bilibili
评论区