使用UE、Blender、SP制作建筑资产
简单的介绍
这是我跟着一套教程,用Unreal Engine、Blender和Substance 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,现阶段最主要的是它能给我们灵感,它就像须弥的虚空(特指它庞大的知识库),
确实是现实意义上的统合人类的智慧,再由我们再创
当然,DeepSeek和GPT对我这个比喻评价为一个需要警惕的完美比喻,是的,AI再强大,
也不能抛开我们自己的独立思考
Step 2-UE白模搭建
选取前面一个阶段AI跑出概念图,接下来进入UE,
用它的建模模式(Shift + 5)来搭建基础场景的白模
至于新建项目时选择的模板,可以选择第一人称或者第三人称游戏,这就随意了,
因为我们只是制作资产
为什么要搭建白模?因为我们的概念图是AI跑的,很多时候它生成的东西在我们人看来,
没有那么正确,我们要用白模看看建筑各个部分的关系协调情况,解决周围环境应该怎么布置,摄像机的位置怎么放,怎么构图等等问题
这个其实并不只是AI跑的概念图要这么做,以后真正进入工作,加入团队,在建模之前肯定有概念设计这么一个阶段的,
可能有原画师绘制了场景的概念图,交给你去把它真正建出来,这大概是地编的工作吧
我们不可能一上来直接去建最终模型的,不然如果要改动某一个部分,
这个工作量可是很大的,等基本上都确定了
在建筑学专业待了两年,做建筑设计也是一样的,一开始都是建盒子,做方案,
到方案确定之后,就开始深入,制作更细致的模型,在到最终渲染之前,也是会改好多版的
白模上的话,就用简单几何体来表示建筑、周围的山体或者其他内容

不过,这里的白模搭建和我们真正做建筑设计不一样,毕竟游戏的场景,并不一定能符合现实,
更多的应该是为美学考虑的,融入现实,也超越现实
噼里啪啦折腾一顿之后,也差不多可以了,白模搭好并不是就这样完了,后面还会进行微调的

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程序化建模,
当然我也只是听说过这东西,并没有实际接触过,所以我们就不展开讨论了
这里我们,在编辑模式下先给这些体块做倒角处理


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

后面的那些体块的拆分工作同样如此,这里就不再赘述
然后是关于命名上的一些事情,正常工作中,是要遵循一定的命名规范的,不仅仅是避免你自己的困扰,
也是为了保持团队协作的高效,让团队里的其他人知道你这个是什么东西,
这倒是和编程一样的,你写个abcd,谁知道你这个变量干嘛用的,得联系上下文才知道
UE里面的话,静态网格体标准的命名是SM前缀,即Static Mesh,M是Material,也就是材质,MI是Material Instance,材质实例等等
回到 UE 拼起来
上面拆完之后,先别急着进行下一步,我们得回到UE里面,看看这些拆开的构件能不能拼回去
在Blender中,我们可以安装一个Orient and Origin to Selected插件,用于快速指定物体原点的,
为了更好的拼接,利用UE自带的捕捉对齐功能,我们得设置物体的原点
我们就将所有构件的原点设定到做上角
而后,利用Batex插件将这些构件导出为FBX模型,Blender自带的FBX导出功能并不好,还是用插件
在UE的内容浏览器中导入这些构件的模型,当然材质可以不用导入,我们直接赋予之前做白模用的纯白材质即可
将构件拖到与之前白模差不多的位置上,删除白模,拼接各个建筑构件


UE的布置对齐功能是在你移动物品的同时,按下V键,就能将物体原点对齐到最近的物体顶点上,
当然,建议是靠近目标顶点时再使用,它捕捉范围比较小
可以看到整体效果还是不错的
面片实体化
接下来就是面片的实体化,因为UE中的渲染是只会渲染正面的,而背面是不会渲染的,
这个在拼接构件时,也应该注意到了
所以我们要为这些面片增加厚度,这里就用到Blender的实体化修改器了,给这些面片加上这个修改器,
给予一定的厚度,再选择应用
接下来就是开窗和开门了,就在编辑模式里面添加循环边,选择一些面删掉,作为开洞的地方

窗台的高度可以借助我们导出的人模辅助确定,开洞边缘可以再做倒角,
不过不做也可以,因为后面还有窗框、门框,它们会覆盖掉这个边缘
对其他的构件也做相同的处理,可能你会做一堆不同的墙,这都没关系,命名处理好就行
同样用Batex插件导出模型,原来模型的名字没变的话可以选择重新导入资产,
这样UE就自动更新已经导入的资产了,另外新的资产再导入即可,然后再拼上去

如果你觉得导入的模型光照上有问题,那么可以尝试进入建模模式,选择属性中的法线,
重新计算物体的法线即可
其他部分的构件也是这样处理


Step 4-材质制作
Blender材质初步
接下来就是制作材质了,这里我们先在Blender里面展开并打包UV
我们可以使用棋盘格纹理来检查各个部分的材质情况,是否有不正常的拉伸、缩放等,
然后根据实际情况去指定模型的缝合边
缝合边的话,简单拿纸盒子举例,打开纸盒时,盖子除了和纸盒相连的部分,
另外和纸盒分开的三边,就是缝合边

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


为了确保建筑构件中的UV缩放一致,可以使用Zen UV插件,选取一个大小合适的密度,
并将这个值赋予给其他的物体
然后我们使用UV Packmaster 3这个插件将同一个体块的建筑构件打包到同一个UV中,
以方便后续的操作
当然,打包到同一个UV中,只适用于使用同一个材质的物体,不同材质的物体还是得导出不同的UV
不过注意,上述的两个插件并不是免费的,有能力请支持正版
Substance Painter材质制作
同一个构件可以将它们合并成同一个物体,再由Batex导出,当然这个模型只是用来做材质的
这里也注意一点,在合并这些物体之前,复制一份出来,而不是将原本的那些物体直接合并了,
另外确保它们的物体数据中UV贴图的名字是一样的,否则合并会出问题
然后就跑到Substance Painter里面制作材质了
Substance 3D Painter,简称SP,也是Adobe公司旗下的软件。参考别人的说法,SP像PS,上手更快。同一个家族的另外一个东西,Substance 3D Designer,
简称SD(和那个绘画AI重名了诶),它更复杂,也是专业做材质的
暂且还是SP用用吧,基本上是和PS差不多,叠材质,叠蒙版,
要改的话就是自己再画些东西上去
这里将我们导出的模型导入这个软件中,然后先要进行烘焙贴图,才能进行后面的操作
教程中的话,在烘焙贴图之前,还自己创建了RGB另外的三个通道,这三个图层是为PBR材质服务的,
因为我用的是UE5.4,所以作者提供的那个PBR材质球没法用,我就省略了,后面的材质也按照一般的做法实现了

噼里啪啦折腾一顿之后,就可以自己调好的材质存为智能材质,这样后面的那些模型也就可以用了,
最后就是导出材质,导出预设上可以选择UE5的那个预设,随后得到三张图片
UE 制作材质球
得到贴图之后,我们就可以回到UE中制作材质球了,这里我们将得到的三张图片导入内容浏览器
其中的带了OcclusionRoughnessMetallic这张图,我们得关掉它的sRGB颜色空间,
因为这张图的RGB通道分别对应的是Occlusion、Roughness、Metallic,
它们分别存储了这些数据,并不是颜色数据
然后我们就可以创建一个材质球,将贴图赋予给材质球,BaseColor给基础颜色,Normal给法线,还有一张的R给环境光遮蔽,G给粗糙度,B给金属度,
就得到了一个最简单的PBR材质
然后把这个材质球给相应的建筑构件即可(之前设定UV之后的模型得再重载一遍)


次世代确实少不了PBR材质,没有PBR的话,看起来确实很假,UE的材质系统也是节点,
不过背后其实是HLSL语言,其实是能调出它的源代码的,不过没法在UE中编辑
嗯,找个机会,也得学学看。哎,你真是什么都想学啊~但没办法,既然选择走TA,
那么得学很多很多东西嘞
Step 5-场景与细节
到这里也差不多了,后面就是场景上和建筑细部上的东西了
地面
先用UE的地形模式建一片地面,然后给上材质,当然,其实没那么简单
这里我们得先对项目引擎的配置文件加上这两行
1 | r.Nanite.AllowTessellation=1 |
允许我们的项目开启Nanite,并且允许Nanite进行Tessellation,也就是曲面细分
这是为了置换材质的
关于置换材质,这个材质的教程在YouTube上也有,找Unreal Sensei的Easy Mapper教程
当然我用了现成的材质球,哎呀,也不是什么都要学啦,感兴趣的东西肯定会回去学的
让地形启用Nanite,让它运算完,然后我们就可以用现成的材质球调节凹凸高度

置换比法线贴图更真实,因为它真正改变了模型表面,而法线贴图只是用不同方向的光线模拟凹凸,
实际上还是一个平面,当然置换对性能要求更高
水
水环境的话,就用UE的插件Water和Water Extras来制作

水深会影响水的颜色和波浪的起伏(因为用的海洋预设),水的颜色通过材质调节,
水底的地面用的是上面我们创建的地面,可能要重新运算Nanite,贴图颜色可以压暗,
水体也会跟着压暗
岩石与山体
岩石和山的话,用的都是现成的资产,当然你可以选择自己制作(我猜不会)
大型山体可以用World Machine或者Gaea制作,它们是专业的地形制作软件,
至于怎么用以后再说
岩石么,Blender可以用噪波搓出来,也以后再说
岩石和山将原本的白模替换掉,再调整一下就差不多了

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

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

当然,树的话最好用低模,或者LOD以及代理模型,因为真的很吃性能
不过还没搞过UE的LOD和代理模型,所以就直接刷吧
建筑细节
我们在建一些窗框,给原本的窗加上,用一个面片给上玻璃材质,再堆点其他的资产上去,
就差不多了


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

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

嗯,外面的山都飘在上面,并不是实体的山,只做视觉上的远山,所以,
这也是为什么开放世界游戏会限制边界的原因之一,边界外可能是扔了什么资产,
或者就是只是起辅助视觉作用的一些东西
总结
以上就是AI概念图,UE白模、渲染,Blender细化、展UV,SP材质制作的全流程,
原教程我跳过的后面的部分,因为前面的基本内容学会了,其实也差不多了,
后面你要搓一些资产,大体的流程就是这样了
当然,其实在建模和UV上,能够展开的东西还有很多很多,怎么让模型更好看,细节更多?
材质怎么叠更加真实、更细致、更协调等等
上面也说了,地形可以用World Machine或者Gaea制作,岩石可以用Blender制作,
树木可以用SpeedTree制作,小植被可以用Blender或者其他的DCC工具制作等等
光是我们在场景中用到的其他资产,也可以尝试自己去制作
反正要学的东西很多嘞,慢慢学吧




