大家好!我是 Eugenia Zanina,一名游戏 3D 角色美术师(3D Character Artist)。我想分享我的游戏角色项目 Owl Harpy(猫头鹰鸟身女妖) 的拆解,这个项目是在 Unreal Engine(虚幻引擎)中创作的。我接触 3D 已经有四年了。我知道这个时间相对较短,老实说,聊起自己的工作我总觉得有点局促,因为我还有太多要学。所以我希望这篇拆解更像是一种提醒,而不是教程——提醒自己学习可以很难,ArtStation 上的每个项目都凝结了无数的工时。如果这篇拆解能激励到某个人、给他继续学习和进步的力量,我会很开心。对我来说,这个项目是一段漫长旅程的终点。至于我的背景,我从一名自学成才的 2D 美术师起步——接一些小插画外包,后来进入手机游戏行业工作。出于好奇我开始学 3D,上了几门课,之后很快就找到了工作。在和我同级别的美术师里,我的艺术感觉和产出好看作品的能力得到了认可。但作为一个天生有创造力的人,技术层面对我来说是个挑战。像重拓扑(retopology)、烘焙(baking)或灯光设置这类简单技术上手很快,也会随时间提升,但制作可用于游戏的毛发(game-ready hair)却是一道难以逾越的障碍。任务的复杂度和体量一直让我害怕,可我还是不断尝试去攻克它。
Owl Harpy
在这个项目之前,我尝试过三次用游戏管线制作毛发,每次都失败了。第一次,是我对技术理解得不够深。第二次,是我对所需软件不够熟练。最后一次,我无法在毛发将要使用的引擎里把着色器(shader)搭起来。每一次失败都动摇了我的信心,我也一直把这件事往后拖。终于,我决定一劳永逸地搞懂游戏毛发管线。开始前,我给自己定了这些标准:
- 角色应该简单但完整,这样我可以把卡片(cards)作为模型的一部分来处理。
- 它应该包含普通角色里常见的所有毛发类型——头发、毛皮和羽毛——这样我才能理解它们制作上的差异。
- 我的重点主要是毛发,而不是建模,但最终结果依然要好看、精致。
- 我不会用多边形数(poly count)来限制自己——我缺乏经验去判断这类工作所需的多边形数量。
我选了 Betty Jiang 的 Owl Harpy 插画作为参考。它符合我所有的标准,更重要的是,它极大地激励了我。对个人作品集(portfolio)工作来说,灵感至关重要,因为没有外在的驱动力去完成它。

References(参考)
我从收集补充参考开始。原作是一幅插画,所以它并没有提供关于模型应该长什么样的详尽信息。一方面,这给了一些自由;但另一方面,由于游戏需要标准 A-pose 或 T-pose 的模型,去匹配角色、比例和细节几乎不可能。不过,匹配参考对我来说是次要的。我的主要目标是做出写实的毛发、羽毛和毛皮。所以我收集参考主要是为了理解类似的东西在现实中长什么样。

第二步重要的工作是制定计划。我做过足够多的模型,明白“三思而后行”这条规则同样适用于 3D。没有规划的步骤常常把工作搞复杂,逼你回到前面的阶段,或者需要重做一切。所以我提前想好了如何在模型上分配材质,好让着色器设置更简单。因为我需要大量不同类型的卡片——用于毛发和身体——我把它们分成了两套 UV 贴图,并根据参考拆解图创建了布局。

Modeling, Retopology, and Texturing(建模、重拓扑与贴图)
我不会深入讲身体和头部的建模拆解,因为它是一个相当标准的过程。我没用任何独特的技术——一切都手动建模,轻微用了一些 alpha 来做纹理。最初我打算让身体的一部分不覆盖毛皮,但后来改了主意。基础部分,我在 Maya 里手动创建了标准的动画重拓扑(animation retopology)。在那里,我也展开了 UV 并做了布局,用了三套 2K 瓦片集(tile sets)——一套给头部和眼睛,一套给身体,第三套给翅膀上部。因为我主要做角色,我的 UV 壳(UV shells)常常形状各异,自动布局处理不好它们。所以对于有机物体,我手动把壳尽量紧凑地排布。这也让我能决定是否增加或减少某些部分,而不损失可见的质量。我也开始用 PBR 管线配合 Substance 3D Painter 处理身体贴图。贴图永远是个漫长的过程,尤其是当角色要放进游戏引擎里用时,我整个过程中一直在调整、修复贴图。因为我想把重点放在毛发上,我决定不用 MetaHuman 技术——那是我下一步要学的内容。要掌握这项工作,我需要一次专注一件复杂的事。所以这个项目里的身体贴图相当标准。

The Hair and Feathers(毛发与羽毛)
基础(相对简单的)部分做完后,我进入了最具挑战性的部分。我用 Maya 里的 XGen 插件创建毛发和羽毛。我知道有专门做写实羽毛的软件,但我的目标是把这个插件学透,足以重建任何需要的形式。我从羽毛开始,因为我已有做头发卡片的经验,但羽毛对我而言是完全崭新的任务。事实证明,如果你理解了物体的结构,做头发以外的东西并没有太大区别。通常,毛发引导线(hair guides)创建在水平面上,这样发丝是垂直的——根部在上,末端在下。羽毛的羽丝(filaments)沿羽轴(shaft)两侧分布,所以我创建了两个垂直平面,在上面生成毛发引导线。

通过提前为所有羽毛类型找到详细的参考,我节省了大量时间,因为它们在翅膀和身体上的位置不同,外观差异很大。用引导线工作帮我创建出所需的羽毛形状。和头发不同,羽毛有非常特定的形态,光用程序化修改器(procedural modifiers)是不够的——你需要严格控制过程。所以用普通枢轴(pivot)逐个形变每根引导线,让我能为每根羽毛创建复杂、独特的形状,而修改器则增添了变化和“质感”——有些我留得硬挺,有些做得更柔软蓬松。一个重要细节是沿羽轴添加弯曲,这样未来在扁平平面上它们看起来才有体积感。

掌握 XGen 做羽毛之后,创建头发相对简单。角色有一头长发,所以我必须仔细控制头发的厚度。因为长发和短毛在同一张 UV 上,它们需要根据每根发丝预期的大小有不同的厚度。在我这个例子里,长而卷曲的发丝比短毛大好几倍,所以它们在 UV 上的厚度应该更小。否则,放大卡片时,它们会变得太粗、不写实,而不是与毛皮匹配。

我在 Maya 里用 Arnold Render 烘焙了毛发和羽毛的贴图。我创建了很多不同的贴图,因为我不确定在 Unreal Engine(我计划做最终渲染的地方)里搭着色器会需要哪些。我稍后会展示我实际需要的贴图清单。卡片就绪后,我进入了最困难的阶段——创建着色器。问题在于我是 Unreal Engine 的新手。作为一个 3D 角色美术师,我创建过相当简单的 PBR 贴图着色器,偶尔加透明度、次表面散射(Subsurface Scattering)、发光(glow),或者编辑颜色、粗糙度(Roughness)和金属度(Metallic)参数。根据我的经验,我见过好几种头发着色器,它们看起来总是非常复杂,所以我很怕接近这个阶段。但幸运的是,3D 社区很友好、也很乐于回应。我的朋友,一名梳理(Grooming)美术师,推荐了一个很棒的视频,逐步展示了如何创建一个很酷的着色器,作者还解释了每个节点(node)的用途。虽然花了时间,但我成功基于这个视频示例创建了我修改后的着色器,因为原版对羽毛效果不好。
所有羽毛颜色都不同,有些还带图案。另外,我把两种羽毛变体放在了同一张 UV 纸上:外侧翅膀面用硬挺、有光泽的,内侧翅膀面和身体用柔软、蓬松的。同样的镜面反射(Specular)和粗糙度(Roughness)参数设置给不出想要的效果,所以我用遮罩(masks)和附加节点输出两组参数给不同的羽毛类型,分别调整。我没有用特定的颜色值,而是用 Photoshop 手动创建了一张贴图,再用 Unreal Engine 的节点调整色相(hue)和饱和度(saturation)。总体上我很满意,但我注意到参考里的一个细节:有些羽毛两面颜色不同。这是个微小细节,但我把它视为继续学习的信号(而且一旦看到,就忘不掉了)。我用 TwoSidedSign 节点和一张修改后的颜色贴图,给部分背面羽毛赋了不同的颜色。

下面你可以看到贴图的最终清单:

然后我开始用 GS Curve Tool 在模型上摆放羽毛和发丝。它简单直观,但很有效。比如,我可以快速轻松地从角色头上的辫子里创建出一“束”,方法是把一条曲线赋给整条辫子,而不是单张卡片。脸旁的卷发我如法炮制——用不同卡片做出一束,再把曲线赋给整束卷发。

卡片摆放与其说是技术活,不如说是艺术过程,所以这个阶段我非常享受。它也是渲染前的最后一步,模型终于以最终形态出现。到最后我意识到,一个需要大量梳理(grooming)的模型在技术上和情感上都很具挑战——它由若干个分别创建的对象组成,你只有到最后才能看到它们如何协同工作。所以经验和规划在这类工作中至关重要。说到场景搭建阶段,我不能说模型已经就绪。在调整灯光、渲染和后期处理时,我不断修复、改变和改进。我一直微调参数到最后一刻,而材质实例(material instances)和条理清晰的参数集对此帮助巨大。
Lighting(灯光)
渲染上,我用了 Unreal Engine 5.5。作为设置基础,我用了 MetaHuman Lighting 场景。老实说,要回想我试过的所有设置并精确说出我决定保留什么、舍弃什么,相当困难。我也为不同的渲染用了不同的灯光方案——用于展示帧的艺术化灯光营造合适的氛围,用于细节的则更 calm、棚拍式。我尽量遵循标准的三点布光(three-light scheme):主光(key light)、补光(fill light)和轮廓光(rim light)。但在我看来,创作好看的渲染时你不该限制自己。如果我需要额外的光来突出某个细节,或获得富有表现力的反射或高光(highlight),我就会用它。比如,这是其中一个场景:

Conclusion(结语)
我总是试图用灯光强调对我而言特别的东西,藏起错误和不成功的瞬间,让它们不引人注意。一点泛光(bloom)、色差(chromatic aberration)和锐化(sharpening)总能让画面更好——只是别做过头。毕竟,主要的工作是建模和贴图,不是后期效果。就这些!希望这篇拆解能激励你去尝试,创作出漂亮的东西!



评论留言