1.Hello World.
Hi,大家好,这里是Yur1Ka ------ 一个梦想成为Game Designer但目前还是菜鸟的追梦者。
游戏题材最喜欢异世界幻想故事,魔法与异兽。目前在学习Technical Artist技术美术的知识,希望有朝一日能将脑海中的游戏画面呈现出来,并允许玩家真正浸入其中。
研究了两个月左右,终于算是基于Unity Shader实现了一个还算能看的,《原神》角色“荧”的卡通渲染效果。
于是赶紧发个人生中第一篇CSDN,分享一下实现思路与心得。
2.Get Ready.
现在言归正传,先来看一下我都做了些什么。
- 整体实现了卡通渲染的风格
- 自行设计了头发高光跟随阳光照射方向移动的效果(个人觉得这样符合逻辑,看着舒服。)
- 自行设计了当角色背光时才会有的橘黄色边缘光(个人觉得这样比较好看,有一种黄昏的感觉。)
- 基于阈值图的高质量可控面部阴影实现(阈值图使用的是大佬搞到的资源,严重涉密就不在此再进行大范围传播了,还请见谅。。)
- Backface方法实现的人物外描边(这个方法实现的外描边效果非常基础,有很多缺陷,比如会出现轮廓线参差不齐的情况,我最后觉得不好看就删去了。网上有很多文献,我就不在此赘述了,将会几句话讲讲思路就代过了。)
- LightMap资源的使用(此项目使用的模型和贴图资源大部分是米厂官方放出来的。某些特殊资源是知乎大佬分享的,靠一些“特殊的方法”获得。大佬是谁会在后面的参考文献中详细写上。在此非常感谢大佬前辈们的无私分享。某些截帧获得的资源就不在这里宣传了,还请见谅。。)
下面先来看一下最终效果吧。
(上图:只当人物背光时才有的橙黄色外发光。个人最满意的效果。)
(上图:头发高光跟随阳光直射方向移动,没有直接光照就没有高光。)
(上图:基于阈值图的高度可控面部阴影。)
注意:鉴于点开本文章的,应该都是对渲染和UnityShader多多少少有一些了解的人,所以本文将不会讲解基础光照模型和那些非常非常基础的知识比如说UnityShader的基本写法等。我使用到的光照模型只有Lambert和Blinn-Phong,网上同样有非常多的讲解文献。
3.Let`s Go.
3.1卡通的风格是如何实现的?
首先,让我们先来分析一下,卡通感渲染的效果和真实感渲染分别有哪些特点。
先看看偏真实感渲染的特点:
(左图游戏:地平线黎明时分)
容易看出以下几点:
- 层次分明的阴影
- 明暗交界过度平缓
- 高光区域与亮部高度融合
- 光影质感强烈,画面较为油腻饱满(非贬义)
- 材质质感差异明显
下面再来看看卡通风格的渲染:
容易对比出以下几点:
- 几乎相同颜色的阴影
- 明暗交界过度生硬,几乎没有过度
- 高光区域“特立独行”
- 画面整体较为清新,颜色风格统一
- 材质质感差异较小
分析完特点,你应该可以理解,只要呈现了卡通风格的这些特点,就可以实现卡通渲染了。
剩下的就是具体实现思路。
但在此之前,我还要隆重抛出一个我理解的干货:无论如何,要实现特殊风格的渲染总体都分为两大步----
特殊风格的美术素材+特殊风格的光影=特殊风格的渲染。
美术素材,比如产出模型、贴图,是美术人员的工作;特殊风格的光影则靠的是技美写Shader和调光照参数。两者缺一不可。