Unity 5 - THE BLACKSMITH制作流程:场景搭建、着色和光照

2015年12月17日 11:53 0 点赞 0 评论 更新于 2025-11-21 19:35

在本系列之前的博文中,我们介绍了The Blacksmith的创作团队以及短片美感的制作流程。由于计划使用Unity 5开发这个项目,现在我们需要将更多注意力转移到技术问题上。在这篇博文中,我们将聚焦于场景搭建、着色和光照。

引擎版本和内部测试

The Blacksmith的制作在Unity早期的alpha和beta版本中开展,并在Unity 5.0.b22中最终稳定并发布。因此,整个项目也随之升级到发布时的Unity版本。使用处于研发阶段的引擎,不可避免地会存在许多不稳定因素,导致产品制作效率低下。我们每周都面临两难选择:是升级新版本补丁,还是跳过一个版本以避免打断团队现有的工作流程。

此外,The Blacksmith中的动画和摄像机序列基于Director系统,它是Unity叙事工具的一部分,而该叙事工具在当时仍处于发展早期(其发布日期至今未公布)。在项目进行到约一半时,为了添加叙事工具功能,每次Unity更新我们都要重新将系统集成到新版本,直至最终发布。作为Unity的内容制作团队,我们会提交bug或功能需求,但实际上,我们提出的反馈会和广大Unity用户的需求一同被权衡,通常不会得到优先处理。

场景搭建

在The Blacksmith制作初期,我们在Unity中使用白模搭建了一个场景。来自Asset Store的一些素材,如Quantum Theory的Better Rocks and Cliffs,对我们的原型设计很有帮助,同时确保我们能够尽早开展视觉相关的开发工作。我们很快就构建出了细节丰富的场景。

根据故事情节,在前期制作过程中,我们需要利用一组相机进行迭代,逐步接近所要拍摄的景象。在此基础上,我们要明确每个镜头所需的资源。

与此同时,角色的3D美术设计正式启动。对我们来说,尽可能保留对每个镜头的艺术把控能力非常重要。因此,我们基于Unity编辑器专门扩展了一个场景管理器,用于为每个镜头中的对象分组。通过它,我们可以启用或禁用某些物品,更改它们的属性(如位置、规模、材质等),以获得特定镜头的更好构图。同样,每个镜头都可以有自己特定的光照设置,借助实时全局光照系统,我们可以在镜头切换时即时改变光照。

着色

Unity基于物理的着色系统使用和配置都比较容易上手,我们在整个项目中都广泛运用了该系统。在这个项目中,我们不打算开发专门的皮肤着色器,因此直接采用了Standard Shader标准着色器。

Unity 5中标准着色器的一大优势是,我们可以根据项目需求对其进行扩展和修改,因为它就是为此设计的。标准着色器的源码可以从这里下载(在对应平台的“下载”下拉菜单中选择“内置着色器”)。有了源码后,开发针对项目的着色器就变得很容易,我们在The Blacksmith项目中进行了大量此类工作,下面分享一些例子。

我们修改了标准着色器,使其能够感知项目中添加的自定义着色器。这种修改有两个不同版本的应用:一个用于环境(例如让其感知大气散射);另一个更复杂,用于角色(感知独特的角色阴影和皱纹贴图),后者的界面通过滑块对镜面贴图选项进行了小幅度增强。

为了让维京挑战者的面部更生动、细节更丰富,我们决定开发一个感知形状融合的皱纹贴图解决方案。基于判断最突出的形状融合,我们在屏幕空间的预渲染通道内对法线和遮蔽纹理进行混合运算,然后将经过采样和解包的法线和遮蔽数据从屏幕空间直接输入到标准着色器变量中,取代常规材质。

标准着色器适用于大多数现实世界中的材质,但不包括头发。虽然头发渲染不是The Blacksmith的重点,但我们仍希望实现各向异性的头发高亮,并使其能正确整合其他材质所用的物理环境。为此,我们修改了一个标准着色器,使其采用不同的反射率分布模型,同时保留反射和光照探测的采样。

我们希望镜头中有一些柔软的植物,并探索在场景中绘制不同植被的简单方法。解决方案是分两个阶段扩展Unity内置的植被功能。一个名为PaintJob的小工具可以生成临时地形,自动打包场景中的静态几何物件。通过简单的打包规则控制,我们可以围绕地形和建筑在地面网格上绘制植被。渲染时,将绘制好的数据放入一个自定义组件中,该组件专门处理视野依赖的排序、动态全局光照的采样、管理遮挡关系和多层次细节。

光照

我们采用分层方式分离人物和环境的照明,并为每个光源分别配置剔除遮罩,这样能更好地控制人物和环境的光照。这种方法常用于电影拍摄,会根据角色的位置设置特定的光照条件。为了改善角色外观,我们使用额外的局部光照来柔化他们面部的阴影部分。

由于角色形象是全片的关键,在DEMO中有大量特写镜头,必须确保角色能以高分辨率接受阴影。为此,我们增加了一个独立的阴影纹理,专门处理角色的阴影。

铁匠铺中的光照设定为从墙壁和屋顶的镂洞中透射进来,通过将一张合适的图案当作光投射到场景来实现这种效果。

对于海洋和海滩的浅洼,我们希望表现物体穿入水面的尖锐感,以及随着深度增加的散射效果。最终,我们实现了类似水面反射的功能,采用深度感知的计算方式计算出一个变量给Surface Smoothness,将输出结果放入标准着色器,并用定制的反射纹理替换反射的Cubemap(方块贴图)。

在The Blacksmith创作系列的下一篇博文中,我们将发布该作品的相关资源,包括Demo的可执行版本、资源包、工具集和着色器。请持续关注!

作者信息

洞悉

洞悉

共发布了 3994 篇文章