unity-NPR-卡通渲染
title: unity-NPR-卡通渲染
categories: Unity3d
tags: [unity, shader, npr, ta]
date: 2019-03-07 11:44:18
comments: false
NPR : Non Photorealistic Rendering, 非真实的渲染, 卡通渲染 是里面的一个范畴
前篇
- NPR——卡通渲染(一) - https://blog.****.net/jvandc/article/details/81171250 (主要参考)
- 【NPR】卡通渲染 - https://blog.****.net/candycat1992/article/details/50167285
- 卡通渲染及其相关技术总结 ( good ) - https://blog.uwa4d.com/archives/usparkle_cartoonshading.html (主要参考)
名词解释
- Cel Shading - 卡通渲染
卡通渲染的特点通常有三个:一般物体轮廓处有黑色描边;漫反射呈现明显的色块,而不是渐变;高光区域通常是一块突变的白色亮块。
npr代表作品
- 美术风格 : 军团要塞2,
- 美式卡通色彩比较丰富,光影表现更真实自然
- 日式风格 : 崩坏3,
- 日式卡通风格凸出大范围的纯色色块,光影边界明显,“非真实感”明显
卡通着色
卡通风格一般可以大致分为日式和美式的 [2], 日式卡通风格凸出大范围的纯色色块,光影边界明显,“非真实感”明显;而美式卡通色彩比较丰富,光影表现更真实自然。下文将探讨实现这两种风格的着色技术。
Cel Shading和Tone Based Shading
先来描述两种经典的NPR着色方法,分别是Cel Shading和Tone Based Shading5。
Cel-Shading
Cel Shading的基本思想是把色彩从多色阶降到低色阶,减少色阶的丰富程度,从而实现类似手工着色的效果,具体来说,可以用如下计算方法:
其中,Kd表示模型自身的贴图颜色,celCoord表示法线和光照方向的点积,然后将其点积值 [−1,1][−1,1] 映射至 [0,1][0,1],用作一维色彩表的查找坐标,而paletteTex则是由美术绘制的一维色阶表,一般来说是由几个纯色色块组成的,如下图:
上述做法可以用于模拟卡通渲染的漫反射分量,却并没有考虑到视角相关的光照分量的模拟,因此很难实现类似菲涅尔效果的卡通渲染。实际上,也可以用类似的查找表的思路来视角相关光照分量的色阶离散化6,只需要将一维查找表扩展到二维即可:
相应地,查找坐标也扩展到了二维。
Tone Based Shading
不同于Cel Shading,Tone Based Shading的风格化是基于美术指定的色调插值,并且插值得到的色阶是连续的。首先需要由美术指定冷色调和暖色调,而最终模型的着色将根据法线和光照方向的夹角,在这两个色调的基础上进行插值,具体算法如下:
其中,Kd仍是模型自身色彩贴图,Kblue,Kyellow和alpha,beta则均是自定义的参数。
基于tone based shading绘制的球体
日式卡通中的着色
引文 [1] 中介绍了游戏《罪恶装备》使用的卡通着色算法(西川善司的两篇文章详述了《罪恶装备》制作流程),表示如下: