用 Blender 浮片与 Locomotor 插件打造可爱机器人:从练习作品到游戏原型
介绍
Adiyar:嘿!我是 Adiyar,一名实时 VFX/技术美术,来自哈萨克斯坦,现居芬兰赫尔辛基。我的旅程始于 2018 年的 3D 建模,这意外地让我接触到 SideFX Houdini 以及模拟、火、沙和水。发现 Unreal Engine 后,我的重心完全转向实时 VFX,这与我玩家的背景完美契合。
2019 年,我在圣彼得堡的一家工作室开始担任手游初级 VFX 美术,之后一家接一家工作室地成长,最终搬到芬兰,并作为当地联合开发团队的一员参与了《守望先锋 2》。那段经历让我结识了许多才华横溢的专业人士,包括 Paul,我们至今仍保持联系。
Paul:嗨!我是 Paul,一名法国 3D 美术,从事游戏和动画,现居芬兰。我作为数字艺术家已经工作了 10 多年,但几年前才进入 3D 和游戏美术领域。在此之前,我经营一个小型制作团队,为重金属乐队制作音乐视频和视觉素材。
2020 年疫情来袭时,音乐行业几乎一夜之间停摆:我把它当作转行并学习 3D 的机会。从那以后,我一直在游戏和动画领域工作,同时担任概念美术和 3D 美术。亮点之一是与联合开发团队一起作为概念美术参与《守望先锋 2》(那也是我和 Adiyar 相遇的地方)。
灵感
Paul:它最初只是我的一个小型 3D 作品集项目,基于 Sasha Tudvaseva 那个很棒的、受高迪启发的机器人概念。

与 Adiyar 快速聊过之后,许多玩法可能性浮现出来,而机器人需要行走这一点也变得显而易见!一起推进这个项目的冲动不断累积,最终发展成了更大的事情:当然,在这里做一款完整游戏并不现实,所以我们决定把这个项目当作一次训练,学习如何开发一个垂直切片(vertical slice)。


我们俩都很喜欢以现代手法重新诠释2000年代那种轻松愉快的平台游戏(《超级马力欧阳光》《斯派罗》《捉猴啦》等)这一想法。机器人滑稽搞怪的移动方式,再加上充满活力的2000年代热带美学,似乎是个完美的组合!

机器人的建模与贴图
Paul:机器人完全在 Blender 中使用 Sub-D 建模,并大量使用了浮动几何体(floaters)。当年与《守望先锋》团队合作时,我接触到了他们的工作流程,其中包括大量使用浮动几何体。我个人非常喜欢这种方法,从此再也没有回头!

如果你以前从未听过这个术语,“Floaters(漂浮件)”其实就是悬浮在你主体网格上方的几何元素,它能让细节制作流程更具非破坏性。随后,所有细节都会被烘焙到法线(Normal)/空腔(Cavity)/曲率(Curvature)/AO 等贴图中。虽然这种做法对于需要更多几何体和更高保真度的写实动画模型来说并不理想,但对于游戏就绪资产而言,这无疑是明智之选。

这种方法非常适合用于面板、螺丝、科技感零件等的制作,但也可以用在许多其他方面!这个机器人身上就有好几百个这样的部件:
我倾向于优先采用非破坏性工作流程,而使用 Blender 进行硬表面建模确实能很好地支持这一点,尤其是在加入基于几何节点的工具之后。
例如,我非常依赖 normalMagic 的工具集来进行法线传递,也使用 Edge Adjust 来保持干净的边缘和倒角,另外还有我自己制作的一些工具,比如 Normal Welder。
一个例子,说明 normalMagic 的“Smooth Normals”如何让我的工作变得更简单:半球和穹顶总是会产生难看的挤压(是的,即使使用四边面/细分立方体也一样)。所以现在我就毫不避讳地直接用带极点盖的简单球体,然后用蛮力把它平滑掉。
重拓扑是使用 Blender 和 TopoGun 完成的。使用浮动部件(floaters)的最大优势之一是,主高模网格能保持干净且相对简单,这使它们成为构建低模的更好的基础。因此,这部分流程对我来说通常相当快。
纹理制作几乎完全是在 Substance 3D Painter 中完成的。
除了贴图制作本身之外,Substance 3D 在快速创建 RGB alpha 遮罩方面也非常方便,这些遮罩可用于驱动和控制 Unreal 着色器中的参数。例如,分别调整角色材质上的菲涅尔数值/颜色,或控制角色的不同状态(标准状态与过热状态等)。
移动与视觉特效
Adiyar:在移动方面,我们使用了 Unreal Engine 的 “Locomotor” 插件来实现机器人的移动。它有很多可调整的变量。这里有一个关于 Locomotor 插件的小示例,展示它的能力以及游戏内的设置:
得益于该插件,整个设置只需要两个主要节点:Locomotor 本身以及用于让它移动的 FullBodyIK:

由于我们有 4 条行为完全相同的腿,按类型将骨骼分组到数组中,并为每个数组设置 IK 约束,而不是每次都遍历所有骨骼,这样做是合理的:

关于 VFX,主要的 Niagara System 是 Smoke Puffs,它必须动态显示燃料状态。作为输入,它只接收来自角色的 Normalized Fuel 值。 此外,Niagara System 可以生成 MetaSounds,因此直接在内部生成声音并将其与烟雾团同步会很方便。示例:
Paul 为引擎 MetaSound 制作了可触发的状态,该 MetaSound 同样只接收 FuelValue 作为输入:
除此之外,还有玩法设置方面的挑战:让游戏正常运转、处理输入、角色/相机移动、椰子交互、与 UI 关联的燃料逻辑等等。项目中最为实用的功能似乎是 Gameplay Ability System(GAS)驱动的机制。
基本上,借助 GAS,一切都要通过标签来处理;如果标签/属性被赋予/移除或发生更改,actor 就能处理不同的逻辑。玩法驱动的生命值状态:


结语
Adiyar:不要把自己局限在专业范围内。尽可能多学一切。这能解锁那些只守着自己一亩三分地时永远找不到的创意解决方案。继续做自己的东西。讨厌自己的手艺?问题不在工具,而在日常流程。把脑海中积压已久的那个“蠢”点子挖出来,直接开始做。也别一个人做。分享出来的倦怠只有一半。组队合作,结束时你会比开始时更有动力、更有能力,至少你会分享经验,并从队友身上学到新东西。
技术建议:学习版本控制,如果在 Unreal Engine 中工作,最好用 Perforce。它需要一点设置,但一旦跑起来,你就无法想象以前没有它是怎么工作的。
Paul:从小处开始,保持好奇!加入 Discord 社区,在网上分享作品,并对更有经验的艺术家的反馈保持开放。反馈是好事:即使是老手也需要第二双眼睛。更重要的是,对自己友善一点,即使结果不如所愿也要继续前进:第二张煎饼总是比第一张更好。
项目拆解:
Adiyar Aidarbekov:
Paul Thureau:
Sasha Tudvaseva:
- 网站。
Paul Thureau 和 Adiyar Aidarbekov,3D 游戏美术师
采访由 Gloria Levine 进行
相关链接
原文链接:https://80.lv/articles/designing-and-animating-a-cute-robot-for-a-game-prototype
喜欢这篇内容吗?