咨询电话:400-810-1418服务与监督电话:400-810-1418转接2

地编项目Shadow中如何创建3D环境?

发布时间:2021-10-29 10:01:27

Hello,大家好,今天给大家带来地编项目Shadow中如何创建3D环境?我是麦狗。

亚历山大·萨蒂格(Alexander Sartig)分享了Shadow项目巨大而详细的分解,一步一步地解释了整个过程,并讨论了此工作流中使用的工具。

0.gif

1、介绍

你好我叫亚历山大·萨蒂格。我是一个3D游戏艺术家。在Axel Springer SE做了多年的平面设计师后,我于2016年决定在柏林的HTW(应用科学大学)学习游戏设计,我今年毕业于该校。

在我的整个学习过程中,我继续作为一名自由平面设计师工作,后来又成为一名3D游戏艺术家。我曾参与过各种游戏项目,比如Hekate游戏工作室的《永无止境》。它仍在开发中,从2019年到今天,我一直以3D环境艺术家的身份参与该项目。

我对这个项目的目标是创造一个具有史诗和纪念意义的环境。它应该有一种黑暗而神秘的气氛。我的想法是,整个环境非常严酷,其特点是一个具有有趣形状的强光源。为了达到这种氛围感,我计划制作出一种强烈的对比。

另一个目标是,尽管场景需要具有很强的视觉效果,但整个场景都要进行了实时优化,并且可以像游戏一样流畅地运行。为了实现这一点,我将使用各种技术,使渲染3D场景所需的计算能力最小化,而不会降低可视性和丰富的细节。

2、调研

正如项目名称“Shadow”所示,阴影和灯光是我工作的重要组成部分。

我希望场景处于大型对象(如山)的阴影中。它应该是在一个黑暗的环境当中,有一个清晰的光源放置在前景当中,这是整个环境的特征。我希望通过这种结构来形成非常美观的明暗对比。

为了提前想象到这种想法的情绪和氛围,我查阅了互联网上的图像,制作了一个情绪板。

1.webp.jpg

3、概念

我创建概念艺术的方法是直接在Maya或Unreal当中搭建大概的场景氛围,然后截图,之后在Photoshop中进行概念的绘制。这种技术的优点是我能够很快地感受到环境的空间和大小。

在这个工作流程当中,白盒阶段也是整个思考构建过程的一部分,因此很难相互分离。因此,此处显示的概念图是在构建阶段结束时完成的。表达了在陡峭悬崖的阴影下建造一座千年古庙的概念,这座庙是由一种古老的文化建造的,但是曾经却被匆忙的废弃了。

2.webp.jpg

除了明暗对比,我还使用了色彩互补对比(蓝色/橙色),这也是一种冷暖对比。

4、地形

地形是我创造环境的基础。以下所有资产均建立于地形之上,因此一个完善的地形至关重要。

Unreal中的地形雕刻工具非常直观,您可以快速地探索形状和构建地形。

3.webp.jpg

5、材质

由于白盒也是概念阶段的一部分,因此我必须提前创建基本材质,以便在白盒阶段不仅探索形状和空间,还可以探索颜色。举个例子,白色的房间视觉上感觉就比黑色的房间大得多。因此,在早期尝试颜色是很重要的。

我制作的第一个材质就是主材质,并作为所有后续材质的基础(也就是实例材质球)。在这里,我创建了最重要的参数,以使此材质在制作子材质时能尽可能的灵活。

主材质(MM)作为最终用于资源的材质实例(MI)的父对象,我可以在其中操纵参数,而无需更改MM。

4.webp.jpg

我创建的第二个材质是非常简单的地形材质。在这里,我只是将材质功能分成了3种不同材质的分层,以便稍后使用“地形绘制”工具在地形中创建纹理和颜色变化。

然后我将3个材质函数MF_MySand_01、MF_MySand_02和MF_MySand_03同时输出到地形材质和实时虚拟纹理中,我稍后会使用该纹理将资源与地形进行混合。

5.webp.jpg

6、替换纹理

首先,我使用来自于Quixel Bridge的替换纹理,我将用我在项目过程中自己创建的纹理去替换它。这些岩石都是用Quixel照片扫描出来的。然后我可以根据我的视觉效果对它进行调整和改变。暗色的岩石和浅色的沙子已经在这里形成了有趣的对比,我将在接下来的步骤中进一步展开。

6.webp.jpg

7、白盒

下面的图片展示了在unreal中白盒的制作进度。对于雕像的头部,我使用了人物的头部作为比例参考。在这里,我对光线进行了第一次调整,以便将颜色和氛围感带向所需要的方向。

7-1.webp.jpg7-2.webp.jpg7-3.webp.jpg

对于入口区域,我需要进行几次尝试和迭代才能获得好的结果。首先,我计划让整个区域变得非常开放,然后制作出一座狭窄的桥去通向寺庙。然而在工作过程中,我改变了主意,决定用一个巨大的大门关闭这个区域,而不是用桥。

8-1.webp.jpg8-2.webp.jpg8-3.webp.jpg

在我制作好入口区域的白盒过后,我在Photoshop中再次对截图进行了修改,并最终确定了我对大门创作的概念。随着白盒阶段的结束,我的概念阶段也结束了,我清楚地知道了我需要哪些资产来创建我的场景。

9.webp.jpg

8、建模

建模阶段在概念/白盒阶段结束之后开始,并贯穿整个项目。即使到现在,我仍在探索不同的形式和想法,但这些形式和想法在本质上彼此相同,因为我现在有了一个具体的创作概念。

我制作出完全符合我对比例和形状想法的基础模型(中模),以便在以后的工作步骤中使用ZBrush对它们进一步处理为成高模。在创建复杂的中模(如头部雕像)时,我不会特别为之后的拓扑考虑,因为我将在重新拓扑阶段从根本上重新拓扑它们。我只注意简单资产的拓扑结构,我在ZBrush中只是稍微更改了一下它们,这样我就可以将中模当作低模来在引擎中使用。

10-1.webp.jpg10-2.webp.jpg10-3.webp.jpg

9、模块化资产

我决定给寺庙的墙壁和天花板制作模块化资产。我在Maya中的栅格中去制作它们,以便于我制作的每一块墙的零件都彼此正好相邻。为此,我始终将各个资产的轴心点放在最外层的上角。这允许我在游戏引擎中使用顶点捕捉工具将墙的各个部分排列成一行。

这个场景中的其他模块化资产我可以通过不同的砖块来组装unreal中的瓷砖地板和台阶。与庙宇墙壁相比,砖块是否完美地结合并不重要,因为我正在设计一座古代破旧的庙宇,小砖块的松散排列会使自然风化的效果看起来更真实。

11-1.webp.jpg11-2.webp.jpg

10、雕刻

我把中模导入到ZBrush中雕刻高模。在这一步中,我可以雕刻一些在Maya中很难实现的有机形状和生物细节。

我更改替换头部的形状,并添加与众不同的面部特征。我使鼻子变形,使它看起来有不一样的定型。我还尝试将寺庙的形状融入雕像中。圣殿里的光缝和圆形开口特征现在也可以在雕像上找到。我想,创造这座庙宇的古代文化,是将光源和由此产生的形式视为一种神圣的外观,并在一定程度上崇拜它,并将其建造用于仪式场合。

12.webp.jpg

小型资产的高模雕刻会具有更高的精度以用来作为后期的特写和渲染效果。、

13.webp.jpg

我稍后将用模块化砖块的高模造型来装饰神庙的内部。

14.webp.jpg

通过雕刻,我会在建筑的边和角上添加了磨损和撕裂效果,稍后我会在低模上烘焙这些效果。

15.webp.jpg

另外因为庙宇从入口到灯槽处有一个斜面,柱子顶部应该齐平,因此我设计的雕像的底部需要有两种尺寸。

16.webp.jpg

我也会为一些巨大的物体做一些高模效果,比如有开口的岩石和楼梯。而烘焙出来的法线贴图稍后将作为附加的细节法线贴图添加到可平铺的纹理当中去。

17.webp.jpg

11、再拓扑

我将高模从ZBrush导入到Maya。在这里,我会使用四方绘图工具对高模进行重新拓扑。我会确保拓扑的非常干净,并提供良好的布线,这些会让我以后更容易展uv。

18-1.webp.jpg18-2.webp.jpg18-3.webp.jpg

12、展UV

我选择在Maya中进展uv。在此过程中,我展uv的方式都是为纹理贴图做铺垫。我专门在三维模型进行剪切,以便在UV坐标系上展开它们。稍后我可以直接将对这些UV壳进行纹理处理。制作过程中重要的是要将接缝放置在不重要的地方,最理想的情况是观众根本看不到接缝。

19.webp.jpg

我确保产生尽可能少的接缝,并将UV壳分布在UV贴图的最大范围(提高利用率),并合理地去排列它们。因为我要给花瓶上纹理材质,我选择用一个应该可以平铺的图案去制作花瓶的UV外壳,使其在V轴上占据0到1的位置。这样就可以确保花瓶瓷砖上的图案可以无缝连接。

20.webp.jpg

为了获得均匀的贴图密度,我使用UV棋盘格去查看模型。在这个视图中,我可以看到后期纹理的可能存在的扭曲。不太重要且不需要太多细节的地方,其分辨率可以低于模型资产中显而易见且更有趣的部分。

21.webp.jpg

13、贴图

我在Substance Painter中烘焙低模上的高模信息。烘焙法线贴图、AO贴图、曲率贴图和世界位置贴图等等。

在Substance Painter中,我会使用手绘板手动地将一些颜色和细节(如小划痕或污垢)添加到模型上去。材质制作对我来说很有趣,我在这个阶段花了很多时间。即使是小的模型资产,我也会注意色彩的选择搭配,并且保证了有有趣的对比和变化。

为了突出高光部分和边缘,我在模型上绘制了阴影和灯光效果。这些明暗对比会使形状更明显,更具表现力。

以下是SP的截图,左侧模型不包含烘焙贴图,右侧模型包含了烘焙贴图。

22.webp.jpg

为了获得统一的外观,我为最常见的材料(金属和石头)制作了自己的智能材料球。这些智能材质球包含所需的所有层。这种方法非常有用,因为它确保了统一的外观,节省了大量时间,然后我可以花费更多的时间在材质的细节。

23.webp.jpg

左图:直接添加我制作好的,“MyRock”智能材质球,我已经为进一步的材质制作打下了良好的基础。边缘的亮边效果有些强,因为这不是最终的效果。

右图:此图是我手动优化材质后的效果。

24.webp.jpg24-2.webp.jpg24-3.webp.jpg

14、纹理装饰板

我用一块纹理装饰板来为入口大门或寺庙墙壁等超大物体制作纹理。我首先在Maya中创建一个简单的平面,并将其划分为不同的分段。在ZBrush中,我在上面雕刻细节。然后我在一个平面上烘焙我制作好的高模效果。

然后我用我提前制作好的智能材质球对贴图进行纹理处理。在这里我用Adobe Illustrator设计出了一种象形文字字体,之后我把它放在装饰板的金属表面上,作为一种风格化的装饰。

25-1.webp.jpg25-2.webp.jpg

我将制作好的装饰板加载到Maya当中,然后就可以在Maya中对资产进行纹理处理。

26.webp.jpg

包括装饰板的材质制作,我已经为这个项目创建了5种不同的瓷砖材料。而其他四种材质,我都是利用Quixel Mixer来进行修改创建。

27.webp.jpg

这是我为我场景创建的所有资产的汇总展示。

15、灯光

我的灯光都是完全动态的,因此不用进行烘焙。因为我的这个项目想创建的是一个实时应用的环境,所以我想保留动态灯光选项,以便能够实时去更改灯光。使用这种照明方法,就可以实现光源(太阳、月亮)在游戏过程中移动,场景的阴影随之变化的效果。

人工打光对于一个看起来需要可信的夜景场景是一个巨大的挑战。因为一方面,这个场景当然应该是黑暗的而且要烘托出夜间的气氛,而另一方面,环境必须有一定的亮度,保证场景中的资产是清晰可见的。

为此,我使用了几个平行光。我在这个场景中没有任何烘焙全局照明(GI),也没有使用光线追踪。因为全局照明主要是间接光,由光的反射表达出来。为了更好地控制这种间接光,我用从下到上的平行光来代替它。我现在可以根据环境定制颜色和强度来修改这种假的间接光。

28.webp.jpg

我还用点光源或矩形光源来照亮一些过暗的区域,作为一种补光的存在。我还会使用点光源来突出一些我想在场景中强调的资产,例如雕像头部的痕迹等等。

除了光线本身,指数高度雾的体积也非常重要,因为大量光线通过雾进行表达更好的效果。此外,我还用雾卡(Fog Cards)和圣光辉光(God Rays)来营造出一种特别的雾和云的效果。我从Unreal的Megascans的一个女神神庙项目中获得了雾卡和圣光的效果,这些都可以从Epic商店中免费下载下来。

29.webp.jpg29-2.webp.jpg

另一个挑战是谷内灯光和谷外灯光的设置不能相同。每次我为场景的两个部分中的一部分更改灯光时,另一部分的灯光就不再好看了。因此,我使用相同的方法编辑环境的两部分,但会使用不同的设置和单独的灯光。

为了游戏中山谷可以在两个灯光设置之间进行转换,我在入口区域的狭窄区域放置了一个触发框。玩家角色一进入神庙内部,就会与该触发器碰撞,从而关闭外部灯光,打开内部灯光。

下图是虚拟世界大纲视图的屏幕截图,里面展示的是我制作的带有项目的文件夹结构。其中灯光文件夹已展开,在这里您可以看到内部和外部部分的各种灯光设置。

30.webp.jpg

16、顶点绘制

为了使整个环境更加古老原始,我非常重视视觉上的处理,而顶点绘制就非常适合这种情况。

31.webp.jpg31-2.webp.jpg

第一个屏幕截图显示了石墙和岩石间相交的区域,您可以清楚地看到资产之间的边界在哪里。

由于第二个屏幕截图使用了顶点绘制,使同一区域看起来更加自然更加古老,使岩石和石墙之间的过渡没有那么清晰明确。

17、RVT(虚拟纹理)混合

运行时虚拟纹理(RVT)非常适合将资源和地形进行混合。这种方法制作节省资源,外观良好,并且与顶点绘制不同,它可以实时进行工作。使用顶点绘制,我必须手动地在材质之间切换。移动资产过后,我可能必须手动去更正顶点绘制参数。而移动资产时,RVT混合会自动更新。这使得变换资产更容易。

我在Quixel的RVT混合指南的帮助下创建了RVT景观混合的主材料。而噪波纹理来自于Megascans中的神庙项目。

32.webp.jpg

左:无RVT混合。右:使用RVT混合。


18、贴花

贴花可以增添更高层次的细节和后续的颜色变化。特别是对于带有装饰纹理的入口等对象,添加贴花具有更好的效果。

我对于这个项目,我制作了六种不同的贴花。除了粗糙度和颜色信息外,其中三个还具有一些法线信息。这些带有法线贴图的贴花在ZBrush中创建为高模进行雕刻。我在立方体六个面中的三个面上雕刻裂缝。我在一个平面上烘烤雕塑,使其具有纹理。对于贴花,我在Substance Painter中创建一个不透明通道,并遮罩了裂缝周围的所有内容。

然后将不透明信息导入到ORM贴图的alpha通道当中。导出纹理后,我在虚幻引擎中创建了一个贴花材质,并像往常一样设置正常的参数,如颜色、粗糙度、法线强度等,以便能够在材质实例中灵活地改变它们。

34.webp.jpg

没有贴花和有贴花:

35-1.webp.jpg35-2.webp.jpg

19、布景

在这个阶段,我巧妙地安排了我在场景中创建的所有资源和贴花。我一定要结合叙事元素,用实物来讲述故事。

36.webp.jpg

我想让观众们感觉到这是一个圣地,曾经对建造它的人们意义重大。通过一些小的道具的布置,玩家应该能注意到这个地方在当时是多么繁忙。

在布景装饰阶段,我还用植被和小石头填充环境,并使用地形植被绘制工具将其放置在场景中。这些植物和石头资源都是来自Quixel中华的照片扫描。

37.webp.jpg

通过这个布景,我还创建了一些好的镜头点(POI)。稍后我将使用这些POI作为图像渲染的特写镜头。POI获得额外的照明,使其更加好看。为此,我使用三点照明,这也通常适用于摄影。

38.webp.jpg

20、展示

我想要一个电影般的场景展示。为此,我用虚幻音序器录制了这部电影。我以每秒30帧的速度渲染快照,以获得电影的感觉。然后我在AdobeAfterEffects中稍微编辑了一些镜头,并添加了微妙而大气的背景音乐(标题:垂死的灵魂)。声音来自YouTube,可以免费获得。

在那之后,我用引擎中的电影渲染队列进行图像渲染。为了给场景一种更史诗、更电影化的感觉和一点叙事性,我在环境中放置了一个角色,这是我从epic Marketplace购买的。

21、运行

在整个开发过程中,我一直关注性能。为了给玩家创造一个良好的体验,重要的是应用程序运行平稳,并且在播放时至少达到60 FPS。

为了获得良好的性能,我使用了前面描述的各种技术。其中包括高模转低模的工作流,我使用该工作流在场景中保留多边形面数,并我将不移动的对象设置为静态。因此,通过灯光烘焙,使灯光信息存储在缓存中,只要灯光的位置不变,动态灯光就不会不断重新计算。

对于动态环境光遮挡和着色,我还使用了UE4中的DF(Distance Fields)。为此,静态对象在环境中的位置以及彼此之间的关系会保存在体积纹理中。这是在应用程序启动之前加载的,因此不会影响实时性能。运行时虚拟纹理,如地形混合效果,也在游戏开始前加载,因此在使用过程中会非常轻松。

引擎提供导入网格体的自动计算细节级别(LOD)。我分别确定了每个资产的LOD数量,以获得最佳结果。

我还确保通过由许多较小对象组成的对象组合到一个较大的对象中来保持较低的绘制调用(Draw Call)。例如,入口区域或楼梯资源,其中整个楼梯呈现为一个整体,而不是每个步骤都形成自己的绘制调用。

当然,灯光也有绘制调用。我通过为场景中的每个点光源指定其自己的绘制调用距离来保持同时渲染灯光的数量较低。通过这种方式,我可以确保精细的点光源仅在观察者到足够近的位置,能看到其效果时才渲染。

22、总结

我想创造一个黑暗和史诗般的环境,在视觉中心创造一个强烈的光源,甚至在我脑海中有一个场景之前就开始工作了。从计划的角度来看,这个分解看起来相当简单,但我花了好几次尝试才想出一个符合我期望心情的概念。回想起来,我想说的是,尽早考虑环境的设置更明智。然而,这是我迄今为止最大的环境项目,我对结果非常满意。在这个过程中,我学到了很多东西,也从创作这个场景中得到了很多乐趣。

Alexander Sartig, 3D游戏艺术家

- End -

来源:Thepoly公众号