在Unity中制作逼真的建筑场景

原创 Unity Unity官方平台 2018-07-28

在创作游戏中,场景的制作是必须要面对的问题,如何高效制作好感染力强、让人印象深刻的场景是每个开发者都会面临的难题,因为场景的细节和逼真度处理起来并不简单。

 

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

 

图片

项目介绍

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

 

图片

 

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

 

图片

 

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

 

图片

 

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

 

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

 

图片

 

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

 

建筑部分制作经验

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

 

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

 

图片

 

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

 

图片

场景的细节完善

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

 

图片

制作瑕疵

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

 

图片

 

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

 

图片

材质

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

 

墙的材质结构图如下:

 

图片

 

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

 

图片

图片

 

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

 

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

 

图片

 

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

 

图片

图片

 

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

 

图片

窗户制作

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

 

图片

光照效果

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

 

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

 

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

 

图片

图片

后期处理

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

 

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

 

图片

图片

资源参考

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

  • 着色器文件https://www.dropbox.com/s/uhb4p2locnyknlu/unity%2520material%2520layering%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)!

### 回答1: Unity 是一款强大的游戏开发引擎,它具有丰富的功能和工具,可以用于制作各种类型的游戏和虚拟现实(VR)应用。其中一个令人兴奋的功能是它可以根据全景图片制作场景。 全景图片是一种特殊的图像,可以为用户提供一种身临其境的体验。全景图片可以捕捉到整个场景的可视范围,使用户看到360度的视角。这种图像通常由特殊的相机设备采集,也可以通过软件将多个图像拼接在一起制作而成。 Unity 可以利用全景图片创建一个虚拟环境。首先,我们需要导入全景图片至 Unity 中。在导入后,Unity 将自动将其转化为一张强大的360度贴图。这张贴图将覆盖整个场景,包含墙壁、地板和天花板。在制作过程中,我们可以调整贴图的大小和位置来适应不同的场景需求。 一旦贴图被应用到场景中,我们可以添加其他元素来丰富用户的体验。通过在场景中添加物体、灯光和音效等资源,我们可以创建一个真实且与全景图片相呼应的虚拟环境。用户可以通过虚拟现实设备或者移动设备来体验这个场景。 同时,Unity 还提供了用户交互的功能,使用户能够在虚拟环境中与元素进行互动。我们可以添加交互式按钮、触发事件和动画等功能,让用户能够与场景进行互动。 总的来说,Unity 可以根据全景图片制作逼真且交互性强的虚拟场景。这为游戏和 VR 开发者提供了一个强大的工具,使他们能够创造出令人惊叹的虚拟世界。 ### 回答2: Unity 是一款多功能的游戏开发引擎,可以根据全景图片制作虚拟现实(VR)场景。全景图片通常是由特殊相机拍摄的,在相机的覆盖范围内捕捉到所有方向的图像,并将它们拼接在一起形成一个全景图像。 使用Unity制作全景场景的步骤如下: 首先,导入全景图片到Unity项目中。全景图片应该是一个等角圆柱形投影或等角球形投影的图像,以确保图像的完整性。 接下来,创建一个新的空场景,并向其中添加一个全景球体或圆柱体网格。这个网格将充当全景图像的容器。 然后,将全景图片应用到球体或圆柱体的材质上。Unity中的材质是用于给游戏对象添加颜色、纹理和其他视觉效果的组件。 在材质上设置全景纹理的映射模式为360度,以确保全景图像完全覆盖球体或圆柱体。 接下来,将全景球体或圆柱体调整到合适的大小和位置,以适应场景中的其他游戏对象。 最后,您可以为场景中添加其他游戏对象,如角色、物体、灯光等,以创建一个完整的虚拟现实场景Unity提供了丰富的工具和功能,使得制作全景场景变得简单而直观。通过使用Unity的自动化工具和预设物体,您可以轻松地导航和交互全景场景,使用户获得真实的虚拟现实体验。 总的来说,Unity是一款功能强大的引擎,通过其灵活的工具和功能,我们可以用全景图片制作出令人惊叹的虚拟现实场景。 ### 回答3: Unity是一款功能强大的游戏开发引擎,它具有丰富的功能和工具,其中包括制作全景图片并将其转化为虚拟场景的能力。 全景图片是一种通过摄影技术捕捉到的可以将观众完全包围的图片。首先,在Unity制作全景图片需要使用全景相机来拍摄相应的图片。这个相机模拟了人眼对周围环境的感知方式,将周围的环境视为一个整体。 在拍摄全景图片之后,需要将图片导入Unity中并创建一个全景相机对象。然后,将全景图片赋给这个相机对象的Skybox属性。Skybox是Unity中的一种用于呈现周围环境的材质,它将全景图片投射到场景的上方、下方、前方、后方、左方和右方,从而营造出身临其境的效果。 接下来,可以为全景场景添加各种元素,比如建筑、道路、树木等。这可以通过在Unity中创建3D模型并放置在全景场景中来实现。此外,还可以添加灯光、雾效等来增强全景场景的真实感。 Unity还提供了一系列的开发工具,例如可视化编辑器界面和脚本系统,使开发者能够更加方便地编辑和场景中的物体进行脚本编写。这些工具可以帮助开发者提高效率,并且可以通过各种设置来调整全景场景的细节。 总的来说,Unity是一款非常适合制作全景场景的工具。它提供了全景相机、Skybox材质、3D模型编辑和脚本编写等功能,使开发者能够创建出逼真而又令人沉浸的全景场景。无论是制作虚拟现实游戏、全景漫游还是其他类型的项目,Unity都是一个非常好的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值