使用Unity创作印第安纳·琼斯的教室环境
本文由来自荷兰的角色及环境艺术家Joey de Vries分享使用Unity高清晰渲染管线HDRP、Blender、ZBrush和Substance Painter创作印第安纳·琼斯教室环境的经验。
《Indy's Classroom》项目目标
在欣赏葡萄牙概念艺术家Andreas Rocha的作品《School Classroom》后,我决定以3D的形式对其进行重现,这就是我的项目《Indy's Classroom》。
我设立了几个项目目标:通过使用Unity高清晰渲染管线HDRP呈现概念艺术的画面、提升光照处理技能、学习规划和设置所有内容。
我想要实现一个生动而温暖的教室,通过使用少量物品和纹理,讲述关于这个教室的故事。与此同时,尽可能使项目保持简洁,所以我会使用较少的模型,并避免降低画面的质量。
下面是Andreas Rocha的概念艺术作品。
高清晰渲染管线HDRP的优势
高清晰渲染管线HDRP的优势在于:使用物理光学单位PLU。这些单位是基于现实中的光线属性来设定的,HDRP的物理光学单位PLU对应着现实中的相应单位。不透明材质、透明材质和体积材质之间没有本质的区别,因此提供了更加一致的结果。
Andreas Rocha作品的氛围和对光线的使用方式,可以让我尝试和使用Unity新的光照系统。我使用的其它功能包括:Unity的新HDRP着色器、体积光、Decal Projector贴花投影以及HDRP集成的后期处理系统。
本文,我将介绍如何使用高清晰渲染管线HDRP创作《Indy's Classroom》。
环境布局
开始制作项目时,我希望让环境完全符合Andreas Rocha的教室概念艺术。但我可以做一些调整,实现自己的故事创作。我想要创作印第安纳·琼斯风格的教室,环境依旧基于Andreas Rocha的概念艺术。
小提示:印第安纳·琼斯是《夺宝奇兵》系列电影的主角,神秘的宝物、惊心动魄的历险和浓郁的异国风情是该系列的特色,印第安纳·琼斯的历险在玄妙、或瑰丽、或阴毒、或神秘的场景中展开。本文中的印第安纳·琼斯风格特指拥有以上特色的场景。
我在Blender中布局环境,然后将Blender的项目文件导入Unity。每次在Blender保存改动时,场景都会在Unity中更新。
在实现概念艺术的布局效果后,我在Unity中调整摄像机,我会思考:在什么地方放置摄像机可以呈现概念艺术的效果,我应该使用怎样的视角?然后,我会快速调整光线位置,并查看它们的效果。
按照自己的想法把所有部分设置好后,我开始构造较大的物品,例如:桌子、椅子和书架。环境艺术的有趣之处在于:我们会有很多可以完成的任务,包括:布局场景、设置光照、后期处理、建模、制作UV以及给物品制作纹理等。
物品的世界
在完成布局过程和摄像机放置后,我开始观察Andreas Rocha的概念艺术,确定自己要制作的内容。
首先,构建所有主要物品,包括:橱柜、黑板、门口、书桌等。在这个阶段中,我给物品实现了上世纪40年代的外观风格。我自己制作了所有物品,并在Substance Painter中制作纹理。
在开始建模前,我在网上搜索了大量参考图片,了解物体的构造方式,从而给物体加入更多细节。
通过优先构造主要物品和最常用的物品,我快速地填充场景,获得不错的画面,从而了解自己是否得到正确的效果,以及所有内容是否有正确的大小。
我会把参考模型放在物品旁边,以便了解所有内容是否有正确大小。在给第一个物品建模时,我想要让场景和Andreas Rocha的概念艺术略有不同,因为我是一个电影迷,所以我想给场景加入印第安纳·琼斯的主题。
下一阶段是构造所有附属物品,这是帮助实现故事基础的物品。在这个阶段,我思考了要添加的彩蛋部分,从而使场景联系到印第安纳·琼斯的主题。
印第安纳·琼斯的物品研究
我希望让该环境对印第安纳·琼斯的致敬更微妙一些,但不希望让环境过分强调这是以印第安纳·琼斯为主题。
主要原因是我想营造这样的效果:在玩家观察场景时,玩家会突然有“这是印第安纳·琼斯的帽子”,或是“黑板上的涂鸦看起来似曾相识”之类的想法。
受到印第安纳·琼斯启发的物品包括:帽子、人偶雕像、黑板涂鸦、桌子上的书、安卡拉圣石、眼镜、使用了皮革材质的背包。其中的帽子、雕像和圣石都是在ZBrush中雕刻的。
制作雕像
收集好所有参考图片后,我开始在ZBrush中进行雕刻。物品不是动态的,因此我在雕像的重拓扑和UV制作过程使用了一些技巧。
我使用ZBrush的抽取功能,而不是手动进行重拓扑,所以我得到低多边形模型和高多边形模型。我为UV使用了UV Master插件。
首先,给雕像面部涂上红色,因为这是要保护的区域。这样雕像面部不会出现缝隙。然后检查缝隙,使用Unflatten功能来查看是否有满意的效果。
完成在ZBrush的过程后,我使用Substance Painter来烘焙低多边形模型,然后开始绘制纹理。我对阿特拉斯雕像进行了相同的操作,不同之处在于:我先在Blender制作大致形状,因此得到了简单的骨架作为构造的基础。
纹理制作
在Substance Painter中绘制和调整材质时,我会把Andreas Rocha的概念艺术和参考图片放在我的第二个显示屏上,尝试着让材质颜色符合Andreas Rocha的概念艺术。
关于纹理,对材质来说最重要的是粗糙度。通过利用粗糙度,我们可以制作出金属、玻璃、塑料和木头的效果,以及肮脏或干净的表面。
回顾为教室环境制作的物品时,因为我想制作许多物品,并在自己设定的时限内完成该环境,所以我没有从头制作所有材质。
由于制作时间有限,部分材质我购买了第三方材质,下面是材质的购买网站,以便你参考。
木质材质:
Igor Kulko:
https://gumroad.com/igorkulkov?recommended_by=library
Mario Dalla Bona
https://gumroad.com/macebo?recommended_by=library
纸板材质:
Luc_chamerlat:
https://gumroad.com/luc_chamerlat?recommended_by=library
Textures.com也是一个不错的纹理来源网站,我在此找到了为墙面和地板使用的纹理,以及大量贴花。Substance Painter也有很多智能材质,可以快速制作出物体的外观。
纹理也在很大程度上取决于模型,对于存物柜,我会确保它没有过多直线,因为直线容易使物体看起来不真实。所以,我为存物柜使用了名称为“Steel scratched”的智能材质,该材质给物体表面带来不错的划痕细节。
我们也可以编辑纹理。通过使用HSL模式,我可以改变光照和图像颜色。这样可以快速为脏黑板的表面制作出材质。
完成Substance Painter中的过程后,我们可以使用Unity HD Render Pipeline配置导出纹理。
材质的魔力
每次在Substance Painter完成一件物品后,我会回到Unity,查看物品在场景中的效果是否接近Andreas Rocha的概念艺术。回到Unity后,我们可以制作新的材质。
Unity新的HDRP着色器,我们可以使用它控制物品的许多视觉效果。HDRP着色器的基础纹理是:基本贴图、遮罩贴图和法线贴图。
除了这三种贴图外,我们还有弯曲法线贴图(Bent normal map)、涂层遮罩(Coat mask)、细节贴图(Detail map)和发射贴图(Emission map)。
遮罩贴图由以下通道组成:
红色通道 - 范围在0~1的金属度
绿色通道 - 环境遮蔽
蓝色通道 - 细节贴图遮罩
Alpha通道 - 光滑度
下图分别为存物柜纹理的基本贴图、遮罩贴图和法线贴图。
下图分别为黑板纹理的基本贴图、遮罩贴图和法线贴图。
下图是Unity 2018着色器和Unity 2019 HDRP着色器的对比。
和此前版本的着色器相比,Unity 2019 HDRP着色器提供了更多对纹理的控制。它允许我们在Unity中迭代纹理,从而获得更加合适的结果。如果对物品的颜色不满意,或是认为物品外观不符合概念艺术,都可以在Unity中轻松进行调整。
有时候,物品可能看起来太光滑,或者不够有光泽。我可以通过调整Metallic参数解决该问题,使用Smoothness Remapping功能减少物品的光泽。
虽然这些功能可以在Unity 2018中使用,但我认为通过使用HDRP,我们可以更快获得更加满意和逼真的外观。
了解关于HDRP Lit着色器的更多信息,请阅读:https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@6.5/manual/Lit-Shader.html
书籍的制作
对于这个环境,我需要制作大量书籍,但这项工作可能是项目中最棘手的部分。书籍在模型方面并不复杂,但需要避免让它有重复感,还要思考如何避免使用过多材质,让Draw Call在Unity中保持最低数值。
最后,我为书籍制作了32个不同的纹理,并使用Photoshop制作了4K分辨率的纹理图集。这样的设置可能有点夸张,但我不想丢失任何图像品质。我也思考了印第安纳·琼斯会阅读什么样的书籍,因此选用了历史题材的书。
虽然这种方法不是最高效的,但它能够完成任务。在制作好所有书籍后,我在Blender中制作体积,然后进行分组,这样我不必手工放置每个书本。我也希望书本有法线贴图,因此我使用Bitmap to Material功能处理图集,制作出一些法线贴图。这样书籍封面的字母会有深度感。
叙事
我不希望让场景过多偏离原始概念艺术,因此我有时会难以确定希望讲述的故事。我把所有物品放到场景中,思考我可以在制作好所有物品前能够讲述的故事。
最后是制作第三类物品。该过程类似制作角色的时候,角色会在第三层外形上展示所有细节,并呈现概念艺术的特点。通过结合第三类物品和贴花,我实现了部分叙事效果。
例如,歪向一边的椅子在地板上留下划痕,装着纸张的箱子朝侧面倒下,洗手池下的水桶表示洗手池漏水。此外,我也加入了傻瓜帽,如果小孩子太淘气的话,他们会被戴上傻瓜帽并坐到教室角落。
其它元素包括:因为学生的鞋子不干净,所以我在地板加入了鞋印贴花;地板上有角色不小心掉落的便利贴;急救箱的药膏是开着的,暗示它最近经常被使用;存物柜的门稍微开着,展示了里面的物品,这样比完全关闭更能引起玩家的兴趣。
这些是丰富环境的小细节,让环境更加逼真,并赋予了活力。
使用贴花丰富环境
除了使用物品来给教室增添活力,我也使用了许多贴花。在Unity使用贴花有使用Decal Projector贴花投影和使用平面贴花两种方法。
下图是使用Decal Projector贴花投影。
下图是使用平面贴花。
在使用贴花的过程中,贴花更容易和带有UV的平面一起使用,我们可以在平面上添加HDR/Decal着色器和贴花纹理。这样可以快速调整贴花大小,把它放到任意位置。
有时,我不得不使用Decal Projector贴花投影,准确点击白点位置来调整贴花的大小,但在相同位置使用多个贴花时,Decal Projector贴花投影确实非常实用。
例如,在黑板部分,我使用了两个贴花:一个是板书部分,另一个是污迹的贴花,以呈现额外的效果。
使用平面贴花时,操作必须非常准确,因为两个互相靠近的平面会出现瑕疵,因此我使用了Decal Projector贴花投影。
下图中所有的印章图标都表示贴花。此外,我还使用了许多平面贴花。
下图中展示了场景有无贴花的区别。
光照
我希望在场景实现Andreas Rocha作品的光照和氛围,但我不是一名光照方面的专家,所以使用HDRP设置来处理场景光照是一项艰巨的挑战。
在制作这个项目时,我完全不知道光照会对项目有如此大的影响。一开始,我只试着使用一个定向光,我认为只要设置正确,其它部分都会有相应的效果。
但场景不仅仅只需要一个定向光和多个点光源,场景的光照包括:
1个作为太阳光的定向光。
3个区域光,其中2个在窗户前,1个在门口玻璃外,用来模拟走廊的光线。
13个点光源,其中5个是烘焙光照得到的,2个是混合烘焙和实时光照实现的,另外6个使用了实时光照。这些点光源有助于呈现想要的氛围。
需要注意:如果你希望让场景适用于游戏,则应该减少点光源的数量,试着把所有光源都进行烘焙,从而获得一致的效果。由于这项作品并不用于制作游戏场景,所以我可以更自由地调整光照。
该项目中最复杂的处理过程是光照部分。我们必须思考很多东西,调整许多内容,而且调整一项内容后,其它所有内容也会发生相应变化。
Progressive GPU给我提供了很大帮助,通过利用显卡,帮助我快速生成光照效果。我们可以生成光照,在数分钟内看到光照效果,而不必等待数小时的时间来烘焙光照。
将概念艺术放在屏幕旁边进行对比也很有帮助,这样可以发现光是否太亮,以及是否应该加入更多阴影等。只要有足够的耐心,就可以实现自己想要的画面。
通过调整光照,最终获得了自己喜欢的效果。
点光源
Andreas Rocha的概念艺术给人温暖的感觉,色彩偏橙色,所以我尝试使用拥有不同饱和度橙色的点光源,在场景实现相应的暖色调。
我必须小心处理光照强度,如果光照强度太大,物品的颜色会被过度改变。
区域光
在窗户旁边放上区域光会对所有表面有不错的效果。这些光照会确保表面有合适的反射效果。
我们可以从下图中看到,没有区域光时,表面没有那么多光亮。
体积光照
HDRP新体积光照的使用效果很好,可以快速实现不错的结果。设置方法很简单,我们可以看到该功能提供了额外的光照和氛围效果。
后期处理
高清晰渲染管线HDRP还有一项新功能是后期处理。在最新版的HDRP中,后期处理功能已经完全集成到HDRP。我们可以调整许多参数,从而改变环境的外观、效果和氛围。
下面是我在实现合适的氛围和色调时,所使用到的重要功能。
结语
这个项目中最困难的部分是把Andreas Rocha作品的光照和氛围呈现到Unity中,好的光照和后期处理可以让环境充满活力,没有这两个部分作为基础,环境会看起来平淡无趣。
在以概念艺术为基础进行创作时,还需要认识规划的重要性。我们需要对概念艺术进行分析,从而了解需要的内容,思考如何调整创作过程,让工作更加简单。
通过这个项目的经验分享,希望更多的开发者和技术美术掌握使用Unity高清晰渲染管线HDRP的使用。
下载Unity Connect APP,请点击此处。 观看更多Unity官方精彩视频,请关注“Unity官方”B站账户。
你可以访问Unity答疑专区留下你的问题,Unity社区和官方团队帮你解答:
Connect.unity.com/g/discussion
推荐阅读
使用ProBuilder实现自定义Snaps Prototype资源
喜欢本文,请点“在看”