最近在youtube上看了GDC,学了很多东西,最让我震撼的就是ggxx的卡通渲染了。感慨一下,想要用3D做出二次元的效果,真的不容易。现记录一些要点:

1)不要使用normal map来做cel-shading,否则做出来的明暗分界线就像狗啃一样,只使用vertex normal。


GGXX的卡通渲染实现 真的好变态......-LMLPHP

2)使用顶点色存储threshold,计算明暗面交接线,效果更佳。


GGXX的卡通渲染实现 真的好变态......-LMLPHP

3)由于完全使用顶点法线计算,舍弃了normalmap,所以可以多用三角面,放宽对面数的限制。


GGXX的卡通渲染实现 真的好变态......-LMLPHP

4)顶点法线需要手动调整,不能用自动生成的法线向量(特别是面部法线),调整到效果正确为止。这里需要在3D建模工具中使用卡通渲染材质球来观看效果进行调整,所以你需要为模型师编写shader。


GGXX的卡通渲染实现 真的好变态......-LMLPHP

5)角色外描边用材质生成,而内描线则是用很变态的横平竖直方法,将所有有描线的地方UV线打直 。


GGXX的卡通渲染实现 真的好变态......-LMLPHP

GGXX的卡通渲染实现 真的好变态......-LMLPHP

这里三头肌上的描线粗细通过顶点的UV坐标来进行调整......可怕。

6)逐角色打光,一个角色一个平行光,甚至动画的每一帧都需要给不同的平行光角度,来获得最佳效果......后半句话当我没说。


GGXX的卡通渲染实现 真的好变态......-LMLPHP

7)阴影颜色贴图,控制暗面的色彩。


GGXX的卡通渲染实现 真的好变态......-LMLPHP

05-11 02:31