原创 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)!

在Unity中制作逼真的建筑场景相关推荐

  1. 在Unity中制作高质量的光照效果(上)

    原创: Unity Unity官方平台 本篇专家指南将介绍在Unity中制作高质量光照效果的多种高级方法,其中使用了2D和立方体贴图的光线遮罩,并且利用了Unity高清渲染管线HDRP中的高级着色器. ...

  2. Unity中制作游戏的快照游戏支持玩家拍快照

    Unity中制作游戏的快照游戏支持玩家拍快照 有些游戏支持玩家"拍快照",也就是将游戏的精彩瞬间以图片的形式记录下来的功能.这个功能比较有趣,而且以后的用途也会很广,为此本节打算介 ...

  3. [教程] 在Unity中制作物体破碎效果

    这篇教程将教大家如何在Unity中制作一个简单的碎片效果.当物体撞击或销毁时,我们将物体分裂为更小的碎片来取代之前的仅仅直接"删除"物体. 需求 这篇教程需要最新版本的Unity, ...

  4. 如何在unity中制作塔防游戏

       塔防游戏非常流行,毫无疑问--没有什么比看着自己的防御消灭讨厌的侵略者更让人满足!在这两部分教程中,用unity来制作一个塔防游戏! 将会学习怎样...... 创建一波敌人 让它们跟随线路点 ...

  5. 【贪玩巴斯】Unity3D初学圣经(三)—— unity中的基础概念——scene场景,component组件,assets文件夹和Material材质,Mesh Renderer与shader

    [贪玩巴斯]Unity3D初学圣经 三-- unity中的基础概念--scene场景,component组件与assets文件夹和Material材质以及Mesh Renderer 和 shader ...

  6. 在Unity中制作4种不同的游戏

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,48.0 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:8.6 GB 含课程素材 |时长:15h ...

  7. Unity中如何给你的场景模型mesh减面——【一】

    一.前言 甲方给你一大场景,光fbx文件就4个G,导入Unity后,发现全部卡帧,变成动画片,发布成webGL足足有500多M.要使帧率至少达到60以上吧,发布成webGL不能超过500M,如何拯救呢 ...

  8. 在Unity中制作完整的技能系统(介绍篇)

    在Unity中制作完整的技能系统(介绍篇) 大噶吼呀,还是我暴躁老哥酒九.最近的我遇到了游戏荒,于是我就重新去玩了玩<英雄联盟>,结果发现还是一如既往的强了(不是).对于这款游戏我就不用多 ...

  9. 如何在Unity中制作VR全景动画

    超简单的引言 本教程介绍的是如何一个人制作出像模像样的VR全景动画.笔者没有去详细的研究过动画的制作方式,或者说根本就不了解啊,所以本文章只是门外汉的一次自嗨,请勿认真,作为一种参考即可. 一 总览 ...

最新文章

  1. 自定义InputFormat案例
  2. No module named 'tf_extended'
  3. sizeof()浅解
  4. java写 IP十进制转变_java实现ip地址与十进制数相互转换
  5. Kotlin入门简介
  6. ElementUI:文本框实现远程搜索的用法
  7. from py4j.protocol import Py4JError ModuleNotFoundError 错误
  8. 一种基于语音识别的机器人语义识别系统的制作方法
  9. CocosBuilder 完全攻略
  10. 基于STM32的人体红外测温
  11. 「CodePlus 2017 11 月赛」大吉大利,晚上吃鸡!(dij+bitset)
  12. [GUI] 图片背景是黑色的,在unity中怎么变成透明
  13. wordpress 背景_如何为您的WordPress网站找到美丽的背景图像
  14. 用自己拍的一张照片做海报
  15. 请让我像亲人一样爱你
  16. 阿里云的重大战略调整,“被集成”成核心,发布SaaS加速器助力企业成长...
  17. 用Python做了个私活,小赚3W,说下接单心得
  18. 织梦新建php支持标签,织梦教程:新建php页面且模板支持读取标签
  19. P3386二分图最大匹配模版
  20. 移动Ad Hoc下按需距离矢量路由协议AODV实验报告

热门文章

  1. 学计算机的男生生好不好找女朋友,我是计算机的大2学生,我们班上女生极少,我很想找女朋友,请问怎么? 爱问知识人...
  2. 2021-5-11【头歌】【歌手评分系统】
  3. android 换 苹果,第一次从安卓手机换到苹果,会有哪些特别不适应的地方?
  4. 机器学习-周志华-课后习题-模型选择与评估
  5. FANUC机器人的机架号和插槽号配置
  6. 一个单身程序员的新年寄语
  7. 区块链可以当仁不让地成为元宇宙的「母体」,并不断为元宇宙的发展提供能量
  8. Android开发者选项 介绍
  9. 戴森空气净化器php00使用,戴森空气净化器好用吗?有什么使用技巧?
  10. PDF文档的电子印章功能探究(三)