本文介绍了一些3D渲染技术的组合思路,并用来对中国传统绘画中的宋代水墨山水画风格进行模仿实现。文章思路同样可以用于油画、水彩、素描以及漫画等其他美术风格方向的渲染。
作者Shadow,独立游戏开发者,作品《无极道人》。
目录
1|项目起因
2|山水画简介
3|宋代水墨山水画简介
4|在Unity引擎中进行实现
5|其他注意事项
本篇转载自《Unity实现水墨山水画风格》的第4.1节。
4|在Unity引擎中进行实现
4.1 渲染使用的相关技术说明
这里给出相关技术的中英文名称和简介方便查找。 有些技术会有多个不同的中文翻译名称。
Non-Photorealistic Rendering(NPR) 非真实感绘制
本项目的美术风格属于NPR的一种。
非真实感绘制(NPR)是计算及图形学的一类,主要模拟艺术式的绘制风格,也用于法阵新的绘制风格。和传统的追求真实感的计算机图形学不同,NPR受到油画、素描、技术图纸和动画卡通的影响。—— Wikipedia
Vertex Extrusion Outlines 顶点外扩描边
顶点外扩描边为游戏渲染中常用的几种实现描边(Outlines)的方法之一。这里主要是用沿法线方向对顶点进行外扩。想要得到比较好的效果,模型的顶点数量最好不要太低,同时整个模型需要全部软边(Maya里称为软边,3ds max里称为同一光滑组,在不同软件里可能有不同叫法)。 如果描边效果不好,可以尝试增加边缘的顶点数量并检查是否都是软边。如果遇到一定要硬边的情况,则可以使用沿顶点色方向扩张,即将顶点扩张的方向记录在顶点色里。这可能需要额外的制作流程关系和相关工具。
Rim Light 边缘光
边缘光是一个常见的游戏渲染效果,根据摄像机视角方向和物体法线的夹角来计算一个值以进行照亮、描边等后续操作。
MatCap (Material Capture)
MatCap是Material Capture的缩写,是一种用作图像纹理的图像,可以在3D应用程序中伪造包括照明和反射在内的整个材质。允许通过简单地预渲染一个3D球体对象的2D图片来创建表面材质和照明环境,然后在Shader中将原始3D球形法线映射到渲染表面的法线,从而将预渲染的球形图像的光影和材质应用于目标表面,并使其看起来像其原始渲染环境中希望表面出现的样子。
Lambert 兰伯特光照模型
兰伯特是渲染中常见的一个光照模型。在这个项目中主要是用来和其他技术一起组合出纹理的渲染区域。
Tri-planar projection 三方向纹理投影
Tri-planar projection是将多个平面纹理组合在一起并混合以覆盖整个3D网格的纹理投影,可以创建无缝的噪音和纹理贴图。通常使用模型的法线方向作为投影和混合依据。可以是世界坐标也可以是局部坐标。
Tilemap 四方连续贴图
四方连续贴图也称瓦片贴图,特点是相邻贴图上下边和左右边的纹理是连续的没有接缝。通常用来绘制大片相同区域。
Noise map 噪音纹理
Noise map一种用于在计算机生成的表面上产生有自然外观的纹理的技术,用于游戏电影等视觉效果。常用的有Perlin Noise等生成算法。Noise map用来让计算机图形渲染时能够更好地表现视觉效果中自然现象的复杂性。
3D Noise map 3D噪音纹理
3D Noise map为三维空间下的噪音纹理,通常使用模型的顶点作为3D uv使用,不受模型本身uv的影响。
以上就是《Unity实现水墨山水画风格》的第4.1节,此篇文章比较适合在非真实感绘制(NPR)方向的研究者。
读完全篇后你会了解3D渲染技术的组合思路和在Unity中如何实现水墨山水画风格。