请选择 进入手机版 | 继续访问电脑版

查看: 1342|回复: 0

[技术] 在Unity中制作逼真的建筑场景

[复制链接]

1167

主题

1867

帖子

2万

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
24460
QQ
发表于 2018-7-28 05:00:01 | 显示全部楼层 |阅读模式
在创作游戏中,场景的制作是必须要面对的问题,如何高效制作好感染力强、让人印象深刻的场景是每个开发者都会面临的难题,因为场景的细节和逼真度处理起来并不简单。

本篇文章中,游戏开发工程师Toivo Glumov 和 概念艺术家Natalie Kayurova将为我们讲解如何在Unity中打造细节丰富、十分逼真的建筑场景,他们将分享在制作过程中的心得,包括遇到的问题和解决方案,以此启发读者制作出自己的建筑场景。

00.png


项目介绍
Toivo和Natalie从事游戏开发多年,具有相当丰富的开发经验。Natalie是VR项目《Arktika》的概念艺术家,Toivo则为《Call of Duty: Infinite Warfare》创作了很多模型。本文中的使用的游戏场景便是二人合作创作。

01.png


在创作建筑时,使用一座外部桥连接二个建筑,会使得普通的房子更有趣,让人印象深刻。二位创作者去到了有很多这类建筑的圣彼得堡。他们找到了一个不错的庭院作为参考素材,从这个环境出发,构想了一个故事和游戏场景,以此为启发开始场景制作。

02.jpg


项目分工方面,Toivo负责技术部分,包括:建立渲染管道、创建模块、制作程序化纹理、制作关卡和渲染设置等。Natalie则负责艺术方面,如颜色、光照、内容、后期处理设置等,除此之外,她还负责角色建模和很多其它元素。

03.png


Toivo喜欢程序化的解决方案,这样能使工作流程更高效,Allegorithmic为他提供了这样的工具来进行测试,让他如虎添翼。由于Allegorithmic给Unity提供了强大的解决方案,所以Toivo选择了Unity完成这个项目。

04.png


他使用了Substance Painter中适用于Unity的Material Layering着色器,基于这个着色器文件做了些修改,原着色器文件和修改后的着色器文件将在文末提供下载地址,使用时将Toivo的着色器文件,直接替换Material Layering着色器文件即可。

这个着色器使用1个RGB遮罩混合4个循环贴图材质,同时使用了环境光遮蔽图和法线贴图。除此之外,它还有一大便利之处,那就是Unity可以直接从Substance Painter自动加载纹理、设置和材质。而唯一缺点是,每次游戏启动时都需要生成纹理,从而增加了初始化的时间,不过这个问题可以通过手动指定常规位图来解决。

建筑部分制作经验
Natalie首先绘制了一个由三部分组成的外观轮廓,绘制完成后又把轮廓细分为了更小的模块。Toivo在3ds Max中制作了基础的模型,然后在ZBrush中绘制了一些元素用于法线贴图烘培。

需要注意,在展开遮罩、AO、法线这三张纹理的UV时,所用的UV壳要展开到相同的UV坐标里。同时也需要考虑贴图材质的方向,以及与相邻模块之间的无缝衔接。

05.png


墙的模块要映射为方形布局,这样才能正确显示循环贴图块。Toivo为这个模块选择的大小尺寸为400X400 cm,循环贴图大小为2倍时,纹理像素的密度为512 像素/米,大小为4倍时密度为1024像素/米,依此类推。有些模型比其它模型大了2倍,因此为这些模型选用了更高的贴图循环值,来保证纹理密度。

06.png


场景的细节完善
大体部分做完之后,Toivo就已经完成了一些可以在环境中重复使用的小工具。因为使用了遮罩来混合材质,所以即使只用相同的遮罩来混合材质,同样的模块仍然可能看起来与混合前的不同。如果添加了第二层遮罩,同样的模型还可以产生更多的变体,从而快速制作出多个不一样的模型。

07.jpg


制作瑕疵
在绘制时,考虑到材质的纹理最后会放到Substance Painter 中进行处理,在ZBrush中只创建了一些常用体,并没对细节进行处理。

08.png


例如:在地面上添加一些几何体来制造凹凸不平的效果。为了避免烘培时产生不必要的视觉误差,除了用作门口的切口,Toivo将所有法线都调整为向上方向。

09.png


材质
除了少数几个小道具外,场景中的大部分对象都共享相同的材质。Toivo使用Substance Designer为项目制作了大约40个程序化材质,这样在Unity中调整纹理会非常方便。

墙的材质结构图如下:

10.jpg


墙壁上的裂缝制作方式如下:

11.jpg
12.jpg


制作屋顶时,主要使用了这些材质的不同设置和组合方式来生成。简单来说,屋顶包含了金属、粗糙涂层以及混有泥土的锈迹等这些材质的不同组合,来营造细节丰富的逼真效果。

重复的元素使用不同的材质来制作效果会更好一些。例如:墙的一部分材质是光滑石膏,其它部分由纹理线条或者有装饰性石块组成。这种方法通常对于任何对象都适用,例如:在场景中的金属管道是由不同的材质组成的。在这种情况下,要格外注意材质的遮罩和纹理,它们的精细程度最好有所区别。

13.jpg


场景中的一些材质的图片:

14.jpg
15.jpg


Substance Painter主要用于创建混合遮罩,Toivo使用了它的标准Material Layering着色器来自定义材质。在此也可以使用标准金属-粗糙度着色器,这样会稍微方便些。

16.jpg


窗户制作
窗户除了窗框部分也都是程序化的材质,便于建模并烘培到位图中。窗户的设计与现实中的相同。通常在那些旧房子中都是双层窗户,窗户后是窗帘。在使用Substance Designer制作时,Toivo添加了伪折射效果,模拟出窗帘的形状以及在窗后添加的光亮,如灯、电视等,同时他也添加了污垢和灰尘,在木质窗框加上小磨损等细节,这样一来窗户会看起来更为真实。

17.jpg


光照效果
在这个项目中,光照是为了增加物体的对比度,以此来使得相似的元素看起来有所不同。这也就是为什么有些部分场景是亮的,有些则处在阴影中。

对于光照而言,Toivo和Natalie在Unity中使用了渐进式光照贴图,对于GI来说这是一个方便且强大的工具。它可以用来制作逼真的阴影,并且可以很好处理贴图。

为了得到更高质量的光照贴图,Toivo为对象制作了第二套UV贴图,保证最少数量的UV接缝以及高填充值。有些光源为点光源,其中有些是用了IES纹理。场景中还有用于小对象和贴花的光照探针。同时还使用了反射探针来保证正确的反射效果。

18.jpg

19.png


后期处理
后期处理也是个很重要的部分。本项目中大部分场景都是灰黄色调,使得场景各个部分在色调上看起来非常相似。为了使呈现的画面有所区别,Natalie在阴影中添加了蓝色,并调淡了黄色。这样,颜色渐变看起来更明显,呈现出更多色彩。

这里主要使用了Unity的后期处理特效包Post-processing stack进行处理,其中的Eye Adaptation功能很大程度上改善了视觉效果,Bloom功能则创造出了“体积”光的效果。

20.jpg
21.png


资源参考
项目中使用到的工具下载地址和参考网站:

着色器文件:https://www.dropbox.com/s/uhb4p2 ... %2520patch.zip?dl=0

Material Layering默认着色器文件:https://share.allegorithmic.com/libraries/2126

Allegorithmic官网:http://www.allegorithmic.com/

此项目中的资源和场景不久后将在Asset Store资源商店中出售,这样大家就能体验这个环境场景,并将其应用到自己的游戏中。

小结
以上便是Toivo和Natalie用Unity开发建筑场景的经验介绍,想必读完文章后读者们也得到不少启发,了解到专业开发者是如何制作逼真的场景,是不是有点跃跃欲试了呢,那么就来动手创作出自己喜欢的建筑场景吧。更多Unity项目创作经验分享尽在Unity官方中文论坛(UnityChina.cn)!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表