简单的介绍

这是我跟着一套教程,用Unreal EngineBlenderSubstance 3D Painter
制作的建筑资产过程中记下的一些笔记,不作为教程,仅作为经验分享

内容由《随·言》系列第9篇扩充

教程原链接:UE5进阶美学实战课程《MetalCabin》全流程教学

注:如果要学习本教程,需要具备UE和Blender的基础知识

另外,由于该教程的作者使用的UE为5.3版本,而现在最新版本已经来到了5.6
即便是作者提供的源文件,也不一定能够直接使用了

Step 1-AI概念图

开头是AI文生图来制作概念图,教程作者用的是Midjourney
Stable Diffusion的话挑个和建筑相关的模型,应该也可以

如果自己不想跑的话,找一些网站上的图也是一样的,比如Pinterest

绝大多数的生成式AI,像ChatGPT也有生图功能。不过我就用教程里的了,
自己没去跑AI

AI吧,这几年也是越来越强大,在工作流中融入AI,这肯定是一个趋势。
当然,AI跑的东西,还是得靠我们人来调整,细节上的东西还是得靠我们,
毕竟这个是因为它算法的问题

不过在未来,也不知道能发展到怎么样一个程度。我并不反对使用AI,那么好一个工具
干嘛不用呢。我自己编程也在用,不过问题百出,受制于大模型本身的上下文长度限制
前面的东西它可能忘了,导致后面的对不上前面的,所以还是得我们自己去整合

有用AI小说的吧,短的还好,但如果写长篇的,写到后面的东西往往会和最初的设定偏离了,
这就是因为上下文长度限制,让AI把前面的东西忘记了

生成式AI,现阶段最主要的是它能给我们灵感,它就像须弥虚空(特指它庞大的知识库),
确实是现实意义上的统合人类的智慧,再由我们再创

当然,DeepSeekGPT对我这个比喻评价为一个需要警惕的完美比喻,是的,AI再强大,
也不能抛开我们自己的独立思考

Step 2-UE白模搭建

选取前面一个阶段AI跑出概念图,接下来进入UE
用它的建模模式Shift + 5)来搭建基础场景的白模

至于新建项目时选择的模板,可以选择第一人称或者第三人称游戏,这就随意了,
因为我们只是制作资产

为什么要搭建白模?因为我们的概念图AI跑的,很多时候它生成的东西在我们看来,
没有那么正确,我们要用白模看看建筑各个部分的关系协调情况,解决周围环境应该怎么布置,
摄像机的位置怎么放,怎么构图等等问题

这个其实并不只是AI跑的概念图要这么做,以后真正进入工作,加入团队,在建模之前肯定有概念设计这么一个阶段的,
可能有原画师绘制了场景的概念图,交给你去把它真正建出来,这大概是地编的工作吧

我们不可能一上来直接去建最终模型的,不然如果要改动某一个部分,
这个工作量可是很大的,等基本上都确定了

建筑学专业待了两年,做建筑设计也是一样的,一开始都是建盒子做方案
到方案确定之后,就开始深入,制作更细致的模型,在到最终渲染之前,也是会改好多版的

白模上的话,就用简单几何体来表示建筑、周围的山体或者其他内容

UE白模搭建

不过,这里的白模搭建和我们真正做建筑设计不一样,毕竟游戏的场景,并不一定能符合现实,
更多的应该是为美学考虑的,融入现实,也超越现实

噼里啪啦折腾一顿之后,也差不多可以了,白模搭好并不是就这样完了,后面还会进行微调的

UE白模搭建

Tips:想保存当前视角?很简单,按下Ctrl + 任意数字键,即可保存当前视角到书签,
后面移动了视角之后,只要再按下你前面设定的数字键,就可以回到之前的视角了

Step 3-Blender模型细化

白模基本确定之后,那就可以进入下一步细化了。细化的工作呢,就是进入DCC工具去完成了

DCC全称是Digital Content Creation,也就是数字内容创作,包括三维建模、
二维图像处理、视频剪辑、音频处理等等,统称DCC。那么对于我们模型细化,
就是选择三维上的DCC工具了,这里我们就使用Blender

3Ds Max呢,我也学了个皮毛,Maya更是没学过,SU你用来做细模那自然也不行,
所以还是用Blender吧。当然,当时在寻找教程的时候,其实特意选择了用Blender的教程,
毕竟除了SU,我也就只有Blender最熟悉了

UE 模型导出

这里我们直接将UE中建好的白模导出来,导出FBX格式的模型,因为你基本上已经调整好模型的大小之类的,
也省得我们再到Blender里面再建了

然后我们到Blender里面,将模型导入

额外的,可以顺便把UE的人模导过来,这样也方便检查建筑的细部是否符合现实,
比如层高(层高应该是在做白模时就要考虑的了)、窗台高、门高等等

Blender模型拆分

里面要做的工作呢,首先是,要把天花板地板等等构件拆开,
重新设置它们的原点,最终是在UE里面给它拼起来,就像搭积木一样

这个呢就是模块化,因为很多构件我们是可以重复利用的,当然你能建一整块
但那样并不好调整,万一你又想开个窗、开个门对吧?相当于预制件嘛,
只是整个建筑都是预制件,怎么拼就看你了

另外还有一种建筑生成的办法,和UE结合的也较多的,就是Houdini程序化建模,
当然我也只是听说过这东西,并没有实际接触过,所以我们就不展开讨论了

这里我们,在编辑模式下先给这些体块做倒角处理

Blender模型拆分

Blender模型拆分

然后同样还是在编辑模式下,添加循环边,分离各个构件,可以为这些构件设置不同的材质,
用于区分

Blender模型拆分

后面的那些体块的拆分工作同样如此,这里就不再赘述

然后是关于命名上的一些事情,正常工作中,是要遵循一定的命名规范的,不仅仅是避免你自己的困扰,
也是为了保持团队协作的高效,让团队里的其他人知道你这个是什么东西,
这倒是和编程一样的,你写个abcd,谁知道你这个变量干嘛用的,得联系上下文才知道

UE里面的话,静态网格体标准的命名是SM前缀,即Static Mesh
MMaterial,也就是材质MIMaterial Instance材质实例等等

回到 UE 拼起来

上面拆完之后,先别急着进行下一步,我们得回到UE里面,看看这些拆开的构件能不能拼回去

Blender中,我们可以安装一个Orient and Origin to Selected插件,用于快速指定物体原点的,
为了更好的拼接,利用UE自带的捕捉对齐功能,我们得设置物体的原点

我们就将所有构件的原点设定到做上角

而后,利用Batex插件将这些构件导出为FBX模型,Blender自带的FBX导出功能并不好,还是用插件

在UE的内容浏览器中导入这些构件的模型,当然材质可以不用导入,我们直接赋予之前做白模用的纯白材质即可

将构件拖到与之前白模差不多的位置上,删除白模,拼接各个建筑构件

回到 UE 拼起来

回到 UE 拼起来

UE的布置对齐功能是在你移动物品的同时,按下V键,就能将物体原点对齐到最近的物体顶点上,
当然,建议是靠近目标顶点时再使用,它捕捉范围比较小

可以看到整体效果还是不错的

面片实体化

接下来就是面片的实体化,因为UE中的渲染是只会渲染正面的,而背面是不会渲染的,
这个在拼接构件时,也应该注意到了

所以我们要为这些面片增加厚度,这里就用到Blender的实体化修改器了,给这些面片加上这个修改器,
给予一定的厚度,再选择应用

接下来就是开窗和开门了,就在编辑模式里面添加循环边,选择一些面删掉,作为开洞的地方

面片实体化

窗台的高度可以借助我们导出的人模辅助确定,开洞边缘可以再做倒角
不过不做也可以,因为后面还有窗框、门框,它们会覆盖掉这个边缘

对其他的构件也做相同的处理,可能你会做一堆不同的墙,这都没关系,命名处理好就行

同样用Batex插件导出模型,原来模型的名字没变的话可以选择重新导入资产,
这样UE就自动更新已经导入的资产了,另外新的资产再导入即可,然后再拼上去

面片实体化

如果你觉得导入的模型光照上有问题,那么可以尝试进入建模模式,选择属性中的法线
重新计算物体的法线即可

其他部分的构件也是这样处理

面片实体化

面片实体化

Step 4-材质制作

Blender材质初步

接下来就是制作材质了,这里我们先在Blender里面展开并打包UV

我们可以使用棋盘格纹理来检查各个部分的材质情况,是否有不正常的拉伸、缩放等,
然后根据实际情况去指定模型的缝合边

缝合边的话,简单拿纸盒子举例,打开纸盒时,盖子除了和纸盒相连的部分,
另外和纸盒分开的三边,就是缝合边

Blender材质初步

其他构件的材质也是类似的

Blender材质初步

Substance Painter材质制作

为了确保建筑构件中的UV缩放一致,可以使用Zen UV插件,选取一个大小合适的密度,
并将这个值赋予给其他的物体

然后我们使用UV Packmaster 3这个插件将同一个体块的建筑构件打包到同一个UV中,
以方便后续的操作

当然,打包到同一个UV中,只适用于使用同一个材质的物体,不同材质的物体还是得导出不同的UV

不过注意,上述的两个插件并不是免费的,有能力请支持正版

Substance Painter材质制作

同一个构件可以将它们合并成同一个物体,再由Batex导出,当然这个模型只是用来做材质的

这里也注意一点,在合并这些物体之前,复制一份出来,而不是将原本的那些物体直接合并了,
另外确保它们的物体数据中UV贴图的名字是一样的,否则合并会出问题

然后就跑到Substance Painter里面制作材质了

Substance 3D Painter,简称SP,也是Adobe公司旗下的软件。参考别人的说法,
SPPS,上手更快。同一个家族的另外一个东西,Substance 3D Designer
简称SD(和那个绘画AI重名了诶),它更复杂,也是专业做材质的

暂且还是SP用用吧,基本上是和PS差不多,叠材质,叠蒙版
要改的话就是自己再画些东西上去

这里将我们导出的模型导入这个软件中,然后先要进行烘焙贴图,才能进行后面的操作

教程中的话,在烘焙贴图之前,还自己创建了RGB另外的三个通道,这三个图层是为PBR材质服务的,
因为我用的是UE5.4,所以作者提供的那个PBR材质球没法用,我就省略了,后面的材质也按照一般的做法实现了

Substance Painter材质制作

噼里啪啦折腾一顿之后,就可以自己调好的材质存为智能材质,这样后面的那些模型也就可以用了,
最后就是导出材质,导出预设上可以选择UE5的那个预设,随后得到三张图片

UE 制作材质球

得到贴图之后,我们就可以回到UE中制作材质球了,这里我们将得到的三张图片导入内容浏览器

其中的带了OcclusionRoughnessMetallic这张图,我们得关掉它的sRGB颜色空间,
因为这张图的RGB通道分别对应的是OcclusionRoughnessMetallic
它们分别存储了这些数据,并不是颜色数据

然后我们就可以创建一个材质球,将贴图赋予给材质球,BaseColor给基础颜色,
Normal给法线,还有一张的R环境光遮蔽G粗糙度B金属度
就得到了一个最简单的PBR材质

然后把这个材质球给相应的建筑构件即可(之前设定UV之后的模型得再重载一遍)

UE 制作材质球

UE 制作材质球

次世代确实少不了PBR材质,没有PBR的话,看起来确实很假,UE的材质系统也是节点,
不过背后其实是HLSL语言,其实是能调出它的源代码的,不过没法在UE中编辑

嗯,找个机会,也得学学看。哎,你真是什么都想学啊~但没办法,既然选择走TA,
那么得学很多很多东西嘞

Step 5-场景与细节

到这里也差不多了,后面就是场景上和建筑细部上的东西了

地面

先用UE的地形模式建一片地面,然后给上材质,当然,其实没那么简单

这里我们得先对项目引擎的配置文件加上这两行

1
2
r.Nanite.AllowTessellation=1
r.Nanite.Tessellation=1

允许我们的项目开启Nanite,并且允许Nanite进行Tessellation,也就是曲面细分

这是为了置换材质的

关于置换材质,这个材质的教程在YouTube上也有,找Unreal SenseiEasy Mapper教程

当然我用了现成的材质球,哎呀,也不是什么都要学啦,感兴趣的东西肯定会回去学的

让地形启用Nanite,让它运算完,然后我们就可以用现成的材质球调节凹凸高度

地面

置换比法线贴图更真实,因为它真正改变了模型表面,而法线贴图只是用不同方向的光线模拟凹凸,
实际上还是一个平面,当然置换对性能要求更高

水环境的话,就用UE的插件WaterWater Extras来制作

水

水深会影响水的颜色和波浪的起伏(因为用的海洋预设),水的颜色通过材质调节,
水底的地面用的是上面我们创建的地面,可能要重新运算Nanite,贴图颜色可以压暗,
水体也会跟着压暗

岩石与山体

岩石和山的话,用的都是现成的资产,当然你可以选择自己制作(我猜不会)

大型山体可以用World Machine或者Gaea制作,它们是专业的地形制作软件,
至于怎么用以后再说

岩石么,Blender可以用噪波搓出来,也以后再说

岩石和山将原本的白模替换掉,再调整一下就差不多了

岩石与山体

要让岩石更有细节,可以从Nordic Coast Collections这个资产集中拿一个函数过来,
这个函数是模拟湿润材质的

岩石与山体

植被

小花小草,树木什么的,也都可以用现成的资产,再用植物模式刷出来

植被

当然,树的话最好用低模,或者LOD以及代理模型,因为真的很吃性能

不过还没搞过UELOD代理模型,所以就直接刷吧

建筑细节

我们在建一些窗框,给原本的窗加上,用一个面片给上玻璃材质,再堆点其他的资产上去,
就差不多了

建筑细节

建筑细节

Step 6-渲染出图

为建筑内部加上一点灯光,然后就可以用UE的插件Movie Render Queue渲染出图了

渲染出图

当然,其实整个场景是这样的

渲染出图

嗯,外面的山都飘在上面,并不是实体的山,只做视觉上的远山,所以,
这也是为什么开放世界游戏会限制边界的原因之一,边界外可能是扔了什么资产,
或者就是只是起辅助视觉作用的一些东西

总结

以上就是AI概念图,UE白模、渲染,Blender细化、展UV,SP材质制作的全流程,
原教程我跳过的后面的部分,因为前面的基本内容学会了,其实也差不多了,
后面你要搓一些资产,大体的流程就是这样了

当然,其实在建模UV上,能够展开的东西还有很多很多,怎么让模型更好看,细节更多?
材质怎么叠更加真实、更细致、更协调等等

上面也说了,地形可以用World Machine或者Gaea制作,岩石可以用Blender制作,
树木可以用SpeedTree制作,小植被可以用Blender或者其他的DCC工具制作等等

光是我们在场景中用到的其他资产,也可以尝试自己去制作

反正要学的东西很多嘞,慢慢学吧