我叫 Sia,学习 3D 角色美术已经有 3 年时间了。从小我就是那个一直在画画的孩子,但始终没能坚持下来——经常画着画着就觉得无聊,然后放弃,次数多到数不清。现在回头看,我其实一直都知道自己想做游戏:小时候我最爱的游戏是《模拟人生 2》(The Sims 2),我总是花好几个小时在那里面捏角色。后来某个时候,我还发现了《模拟人生 2》的 Body Shop 工具,于是开始在画图板里重绘贴图,制作自定义的服装部件。
我的家人并不支持我走艺术这条路,所以我后来读了一个公费资助的语言学本科。期间我也曾多次想扎进 3D 领域,但那台老旧的笔记本根本跑不动软件,所以一直没搞出什么名堂。2022 年底,我从一份技术招聘的工作中失业,当时我就下定决心:再也不做自己讨厌的工作了。2023 年 1 月,我开始学 Blender 做建筑可视化(ArchViz),但到了夏天就觉得无聊,于是决定专注做角色。那段时间《博德之门 3》(Baldur’s Gate 3)终于发售,它给了我巨大的启发,也成了我的榜样。
2024 年初,我参加了一个游戏开发 Game Jam,我们四人小队需要在三个月内交付一个游戏 MVP(最小可行产品)。我是这个项目里唯一的 3D 美术,而这段经历后来也帮我很快在一家手游公司拿到了实习机会。那是一段很有意思的经历,因为我们做的游戏在挑战手游的极限——一款第三人称、带卡牌战斗的 RPG,有角色自定义系统,画面也相当进阶。
但我的内心始终向往 3A/主机游戏,所以我一边全职工作,一边加入了 Think Tank Training Centre(思坦克培训中心),目的是打磨一份能帮我拿到下一个机会的扎实作品集。就在我最后一个学期开始前,我所在的那家公司资金耗尽、项目被迫关停,所以”导师指导学期”反而成了我唯一一段全日制学生时光。




邪恶小丑
Evil Jester(小丑,以下简称 Jester)原本是我 Think Tank 时期的”皇冠之珠”。我对这个项目寄予厚望:我想做出复杂的布料结构、加一些盔甲,再塑造一个配饰丰富、视觉上很有趣的角色。直到最后一刻我才最终敲定概念图,因为此前没有任何一张能同时满足我所有的”硬性条件”。
在挑选概念图这件事上,我有个铁律——必须是我真心喜欢的。我在 Pinterest 上偶然看到了 Dariya R. 的 Jester 作品,结果发现这是一张实打实的手绘作品,而不是 AI 生成的”糊弄货”(AI slop),而且我一眼就爱上了它。我甚至都没先拿给导师过目,因为我对这个概念就是如此笃定。那天我直接就开始做块面(blockout)了,让他想拒绝都来不及。

我真的是越来越喜欢用 MetaHuman 管线(MetaHuman Pipeline)来制作我的角色了。它能把一切都整合在一起,在呈现方式上给了我更多自由,而且它本就是一款真正的游戏引擎,所以整个过程就像在做一个真正”可上线”的游戏资产。我先在 UE5.7 里做了一个 MetaHuman 角色——当时我并没太纠结它最终长什么样,只要它能大致交代我想要的造型、给我一个整体方向就够了。
我用 MetaHuman to Maya 插件把底模(basemesh)导出来,作为雕刻的基础。在这个阶段,我通常会把身体和头部合并到一起,因为分开的话在 Zbrush 里反而会出更多问题。同时,我也积极地尽可能多地为各个部件搜集参考图——当某个元素在逻辑上说不通时,有现实中的对应物作为参照总是很有帮助。我还很幸运地收到了原概念艺术家本人的回复,她针对几个我卡住的部件给了我一些很有价值的见解。

PureRef
之后我在 ZBrush 里做块面(blockout)。在这个阶段,我非常喜欢把 ZModeler(建模)、DynaMesh 和 ZRemesher(重拓扑)结合起来用——我倾向于尽早建立良好的拓扑(topology),尤其是针对硬表面(hard surface)部件。我的另一套常用方案是 ZBrush/Maya 之间的衔接流程(GN 工作流),因为我经常用它在 ZRemesher 之后进一步优化拓扑,这既能在后续的重新拓扑时省时间,也能保证高模(high-poly)有良好的细分表现。

随后,所有布料部件都在 Marvelous Designer(MD,布料模拟软件)里重新制作。做服装时,我通常会尽量去找现实中的版型(pattern)作为参考,但大多时候最终都会大幅修改它们。这个项目也不例外,我花了整整一周才把版型研究清楚。最难啃的部分是丑角袖(jester sleeves)、腰带(sash)和马甲裙(vest skirt),因为我特别想还原原概念图里的褶皱感。后来我还把手套和靴子也做了模拟,因为我想给它们再叠加一层真实感。
关于袖子,我始终无法还原概念图里那种效果,因为布条之间会不断互相冲突——既立不住形状,又会散架。于是我决定耍个小花招:在布条之间插入透明的织物贴片,把它们连在一起。我进行了大量的布料操控与模拟参数调试,虽然后续还在 ZBrush 里进一步优化了造型,但仅在 Marvelous Designer 里我就已经挺满意这个效果了。


对于腰带和披肩(shawl),我从一开始就打定主意要用蕾丝(lace),只是一直不确定是否要在高模阶段就把它做进去。最后我在网上找到了非常棒的复古蕾丝和披肩参考图,并用它们在 Photoshop 里制作了 alpha 贴图。对于披肩,我先把 UV 变形以贴合 alpha,然后进入 Substance 3D Painter,用自定义 alpha 作为笔刷,最终完成了披肩和腰带的装饰性边缘。
之后我把 alpha 贴图导出,再拿到 ZBrush 里使用。匕首(dagger)和颈饰(neck brace)的花纹也用了类似的流程——我根据从概念图里理解到的内容,在 Photoshop 里做了一批小 alpha,然后重新拓扑、展 UV,再把资产推进 Substance 3D Painter,在那里为 ZBrush 生成置换贴图(displacement maps)。




高模(high-poly)阶段花了 10 周才收尾,这一次我决定把磨损(wear and tear)、缝线(stitches)等细节推到极致。这无疑是整个阶段里最”艺术”的部分。最终我借助 Photoshop 和 Substance 3D Painter 制作了自定义 alpha,布料的褶皱是 alpha 与手工雕刻的混合产物,而皮革则完全靠手工雕刻完成。


面部
从一开始我就决定,Jester 的脸不会是这个项目的焦点,但我还是尽量让它有意思。我看到有人把 Jester 叫”他”,也有人叫”她”,这让我挺满足的,因为我刻意要的就是一种偏中性(androgynous)的气质。我选比尔·斯卡斯加德(Bill Skarsgård)作为面部结构的主要参考,主要因为他在电影《小丑回魂》(IT)里饰演的 Pennywise 小丑形象。雕刻时我相当”自由发挥”,毕竟面部相似度并不是我的首要目标。

Jester 的发型是个很有意思的塑造元素。从概念图里其实看不出头发该长什么样,所以我决定走”湿发、大背头”的路线。我希望每一根发丝都像抹了厚厚一层发蜡,而且由于找不到好的参考,我基本是靠想象完成的。我采用了基于发丝(strands-based)的毛发梳理(groom)方案,因为它在 MetaHuman 体系里效果最好,而且我已经在之前的项目里摸索出了最合适的工作流。
头顶有一大块”秃瓢”区域,因为它本就只打算从帽子下方露出,不过这块倒挺有”梗”的潜力!在 Unreal Engine 的搭建上,我大量依赖官方文档和 Andrew Giovannini 的教程,它们帮了大忙——他提供了为 Maya 改写的脚本,能自动完成最终 Alembic 导出前的一切准备工作。

重新拓扑
在重新拓扑(retopology)这件事上,我一直尽量简化流程。就像前面提到的,我非常喜欢尽早建立良好的拓扑,这能省下很多时间。说到好的拓扑,我有个很喜欢用的小”捷径”,它同时也能保证我的网格(mesh)是动画就绪的。对任何哪怕只是略微贴身的部件,我都会使用身体拓扑来获得最佳的蒙皮(skinning)效果。
我始终心里装着优化,尽量把每一个三角面都用到位。我会删掉所有被遮挡的面、收拢边来封闭网格、在质量不掉线的情况下对资产做镜像(mirror)等等。我的角色部件非常多,所以必须理性地分配面数预算(polycount budget)。最终我把总面数控制在了 15 万以下。

展 UV(UV-unwrapping)对我来说幸运地从来不是什么大问题,我真的很享受这个过程,能让我放松一下。我的习惯做法是尽量按材质(material)把部件拆开,并把某些部分单独分离出来以图方便(我总会问自己:”这件能不能被隐藏?”或者”为了后续优化、替换等需求,单独给它一张贴图是否合理?”)。

不过在制作低模(low-poly)时,我还是遇到了一些麻烦。我把这套服装里最具挑战性的几个部分做了可视化拆解(breakdown),万一我的流程和思路能帮到别人呢。

贴图
Jester 的脸基于一张 TexturingXYZ 扫描数据(而且我相当确定那是一张女性扫描),之后我再在 Substance 3D Painter 里进行精修。我本来就没打算把 Jester 以不戴帽子或面具的样子渲染出来,所以并没有太操心妆容。我想要的是一种做旧(distressed)的质感,以贴合角色的气质。这个造型的主要灵感来自比尔·斯卡斯加德的”乌鸦”(Crow)妆容,这其实是误打误撞——因为我直到贴图阶段才开始找妆容参考。
妆容贴图大概是整项目里最简单的一部分了,因为我可以随心所欲地画。我尽力让这个造型显得可信,它是绘画图层(paint layers)、曲率(curvature)、空腔(cavity)和色阶(levels)共同作用的结果。

服装贴图到最后总会变成一场”试错”——我就是不断尝试各种材质,慢慢做出色彩变化(Color Variation)、粗糙度(Roughness)、高光(Specular)等等。贴图最关键的部分就是要有足够的参考,然后一层层堆叠做旧(grunge)质感,直到看起来可信为止。我选了天鹅绒(velvet)作为红色主面料,丝绸(silk)做白色面料,用了两种金属来丰富变化,并搭配多种皮革选项,让整体显得真实。


动画
前面说过,Jester 是基于 MetaHuman 的,所以身体绑定(rigging)能省下大量时间——这几乎是”白送”的。但我仍需要给服装做绑定。说实话,最新版本的 Unreal Engine 提供了种类相当丰富的蒙皮工具,效果都挺好,很多时候已经不需要手动蒙皮(比如在 Maya 里做)了。
我发现最适合我这个角色的管线是:从 MetaHuman Creator 窗口导出身体的”合并骨骼网格体”(Combined Skeletal Mesh),把所有需要绑定的资产作为静态网格体(Static Mesh)导入,再转换成骨骼网格体(Skeletal Mesh),然后挂到身体的骨骼网格体上。接着我通常会做权重传递(weight transfer),再用手动工具进去修掉所有蒙皮问题。

我其实不需要给任何模拟(simulated)部件做蒙皮。马甲、腰带、披肩和斗篷都被做成了 Chaos Cloth(虚幻的布料系统)资产,而锁链、绳索和皮带则完全没有蒙皮,因为我决定改用刚体物理(Rigid Body Physics)。我不是开发者,也不是技术美术(Technical Artist),但我心里有画面,所以必须想办法让模拟出来的衣服好看。我遇到过不少麻烦:我的网格没有合并,一旦模拟就会散架(马甲有系带、斗篷有镶边和毛皮),于是我决定使用代理网格体(proxy mesh)。
UE5.7 里全新的 DataFlow 系统并不是专门为这个场景设计的,我得自己琢磨怎么做。我能找到的最好参考,就是虚幻官方文档里提到的”用 LOD 作为代理”的做法,我就照着这个思路走了。为此我不得不重新调整拓扑,让它在模拟中表现良好——这意味着要把所有网格合并成一个连续的整体,并重新排布拓扑,使其能顺畅形变。经过一番测试,斗篷和马甲最终用上了和静态拓扑相当不同的”模拟拓扑”。
刚体物理(Rigid Body Physics)并不是什么新概念,早就存在了。像往常一样,我做了一番调研、想找些能直接用的内容,但大多数教程讲的都是旧版本引擎,另一些则没有覆盖 MetaHuman 蓝图(Blueprint)的搭建——而这对我恰恰是核心。所有工作都是在 Unreal Engine 里完成的。最终我做出了三个独立的资产:帽子配饰、带包和匕首的腰带系统,以及从靴子垂下的绳索。
接着,我为每个资产创建带新骨架的骨骼网格体,并手动为每个需要物理化的部件拼出一条骨骼链。随后相应地给资产蒙皮,并为每一个都创建了物理资产(Physics Asset,PA)。其实最耗时的步骤正是让 PA 真正”跑通”。我为每根骨头都创建了物理体(physics body),并合理地把其中一部分指定为运动学(Kinematic)、另一部分指定为模拟(Simulated)。腰带系统最难做,因为它既要和服装碰撞,又要和自身碰撞(包和匕首)。
在设置好正确的边距(margin)和容差(tolerance)之后,整体表现相当不错,可我还是不断碰到严重的穿模(clipping)和抖动(jittering)问题。我花了好几个小时反复调试,才把它调到自己满意的状态。PA 调好后,就该放到 Jester 的蓝图里测试了——我原本设想的运作方式是:把每个资产挂到角色的插槽(socket)上(比如帽子配饰挂到头部插槽),然后开启碰撞、把它指定为物理角色(PhysicsActor)。但我不知道的是,这种做法只对 MetaHuman 的头部有效。我的腰带系统和绳索始终纹丝不动。
我当时非常挫败,因为没人提过解决这个问题的办法,所以我只能自己想办法让它跑起来。这个修复纯粹是误打误撞——我没有把模拟用的骨骼网格体直接挂到插槽上,而是先放一个”场景(scene)”组件挂到那个插槽上,再把资产挂到这个组件上。不知为何,多了这一层”垫衬”就把问题解决了,我当时简直开心到不行。
为了展示我投入大量时间搭建的复杂系统,我知道必须做一段动画,而不只是某种默认动作。做”鞠躬”(reverence)这个想法对我来说很自然,因为它对这个角色再合理不过了,但我找不到任何接近我心里构想的参考。我没有动作捕捉(mocap)设备,而无标记(markerless)方案里唯一能用的就是 Rococo 的 AI 方案——我之前试过,对结果并不满意,所以没再深究。我过去曾用过一次 Cascadeur,很喜欢它整体的理念,只是当时担心重定向(retargeting)的问题。但当我真正开始研究这款软件时,我发现它有了面向 Unreal Engine 的新插件,能让你在 Sequencer 里以实时反馈的方式迭代动画,这对我来说再理想不过了。
我一度很担心自己动画的质量,因为除了个人项目里经常给角色摆 pose、做点简单待机(idle)之外,我没有任何动画基础。Cascadeur 有 AI 插值(interpolation)选项,但对这段特定动画来说,它反而比其它任何类型都更成问题——给我带来大量抖动和”瞬移式”卡 pose 的现象,所以我还是沿用标准插值类型。我有一段自己表演鞠躬的视频,所以除了想象之外,那便是我主要的灵感来源。这段动画起初看起来非常”跳”,但我最终还是让它契合了这个角色。鉴于角色本身的特质,Jester 能”糊弄”过去不少不自然的动作,反而让角色显得更神秘。
Jester 的最终电影感镜头(cinematic)是在我发布到 ArtStation 的前一天才做出的。这段 cinematic 其实包含两条独立的 Sequence(序列)。其中一条完全基于我此前重定向(retarget)到角色身上的 Mixamo 动画。我当时刚加上斗篷和毛皮卡片(fur cards),想展示它们,就那么对着那段视频发愁,不知该如何是好。
后来,在发布前一周,我得知 UE 5.8 里出了新的无标记动作捕捉(Markerless Mocap)插件,便决定试一试。这个工具让我印象极深,不试绝对不行。于是我录下自己表演鞠躬和待机的视频,通过插件处理,生成了一条 Sequence。我在场景上也特别走运——我手头正好有 RagTarock 制作的”歌剧院”(Opera)环境,和我的 Jester 简直是绝配。
灯光
出于渲染需求,我准备了三套互不相同的棚拍式(studio-like)灯光方案。我并没有搞什么花哨的,因为主要目标就是展示角色,所以必须把光打足、打好。

我发现聚光灯(spotlight)对我来说效果最好;当然,要让材质在任意光线下都好看,里面有大量需要琢磨的细节。我总是先用主光(key light)打底,给后续整套布光定下基调。第二盏灯通常打在脸上,让它更”跳”;再来一盏补光(fill light)消除暗部。一盏摆放得当的轮廓光(rim light)更是能给整套灯光组(light rig)增色不少。在做 Jester 的过程中,我还发现了 False Color(伪色)——一个在专业电影摄影里用了很久的实用工具。
它能显示过曝、欠曝以及中间的所有区域,帮我省下好几个小时的画面开发(look development)时间,也消除了凭感觉瞎猜。静态图我一律用 EXR 格式输出,再推进 Photoshop;我用 Camera Raw 滤镜做调色和渲染微调,这对我来说已被证明是最佳方案。视频方面,我用 Apple ProRes 格式,再配合 Premiere Pro 剪辑。

结语
Evil Jester 花了四个月才完成,另外又用了两周来收尾所有的拆解图和电影感镜头。我有个毛病:在渲染阶段总会漏掉东西,或者干脆没注意到某些问题,所以往往要把渲染重做好几遍,非常耗时——说实话,我至今没找到对付它的办法。比如有段时间我把帽子配饰隐藏了,结果彻底忘了它们的存在,直到在”Evil Jester Demo — Final”视频里看到才想起来,只好把整段重新渲染。
我一开始就清楚这个角色会是个挑战,这也是我当初选这个概念的原因。我真正喜欢这个概念的地方在于,它能让我拆成”模块”来推进——即便时间不够,我也有清晰的计划。我的优先项是先做出一个基础角色——脸、头发、帽子、服装、匕首和包。下一个模块是不带毛皮的斗篷,再之后才是毛皮本身。唯一我决定放弃的元素是那根玩具马权杖(hobbyhorse staff)。我本来很笃定之后会补上,但最终还是放弃了,因为角色已经渲染、开发完成了。多加那件武器意味着要把一大块工作推倒重来,而它带来的提升却未必有多大。
如果要说这个项目最大的挑战,那我肯定选 Unreal Engine 的整合。我选择做这一切时,手头时间并不宽裕,没有真正的技术支持,只能靠自己的直觉。而且我其实”完全没必要”做这些——它们并不在我的作业要求里。我之所以去做,是因为我对自己的角色非常较真:如果连让它们”动起来”都做不到,我就会觉得自己做得不够好。仅仅渲染一个静态 pose,对我来说根本不够。
我非常幸运地得到了 arguably 业内最顶尖的 3D 角色美术之一——拉瑞安工作室(Larian Studios)的 Wayne Chu 的指导。他鞭策我做到最好,在我提出疯狂想法和奇怪管线时为我打气,在每个阶段都支持我,并且确保不让我太安逸;与此同时,他又不会替我把活儿干了,而是让我自己喘气、思考、突破。我也从 Think Tank 的同学和朋友们那里得到了很多支持,他们很喜欢看我做这个角色,也一直陪着我。
当我刚刚起步时,我曾受到众多 3D 艺术家的启发——我当时唯一的愿望就是把手艺练好,有朝一日能摸到他们的水平。而三年后的今天,我已经手握多个拿得出手的项目,准备好去征服世界了。我最大的目标,是参与一些能让我自豪、也能启发他人的东西。我真心希望行业里的每一位艺术家都不要丢失那簇火花,记得自己当初为什么开始做这一行。


评论留言