UE4 中风格化人体皮肤着色器的秘密——技巧和窍门
2024-07-25
文章
7086 0 3761

一、EXPARIA 项目

我叫 Dzung Phung Dinh,是 Thunder Cloud 的创始人兼团队负责人。我写这篇文章是为了与大家分享我在创建 Exparia 过程中的经验,以及如何在该项目中实现 UE4 皮肤。
您可能已经知道,早在 2016 年,ArtStation 就举办了官方竞赛“旅程”。我深受主题的启发,并为此而兴奋不已。我参加了比赛,并计划以该主题创建一个史诗般的 3D 场景。比赛总时长约为 3 个月。我认为,如果艺术家全身心投入其中,那么这段时间足以让他创作出好作品。
不幸的是,我忙于 Thunder Cloud 的各种工作,比赛结束时我没能完成作品。我真的没有足够的时间,或者我对这件作品太有野心了。但最近我决定接手这个项目并完成它,因为现在这完全是我个人的项目,我想再次有点野心。
我的目标是创作一个以“旅程”为主题的史诗电影场景。主角是一个名叫 Exparia 的女孩。这是一个文字游戏——Explorer(在我的画廊里,我所有的女孩角色的名字都类似于“-aria”)。她是一名机甲飞行员,肩负着为人类探索新世界的任务。这个场景背后有一个小故事,正如你在概念图中看到的,一个巨大的虫洞出现在地球轨道上方,某种石头外星结构漂浮在它周围,这告诉我们这个虫洞不是大自然的杰作。
它是人工建造的,有着某种险恶的目的。人类决定派遣一支远航舰队去探索虫洞的背后。舰队中搭载的所有机甲都被称为“神风特攻队”,这意味着他们是第一批奔赴前线但很可能回不来的。他们同时接受科学家和士兵的训练。我们的主角——艾普莉娅坐在其中一台机甲中,脸上带着微笑——显示出她对探索新世界的渴望,对可能面临的潜在威胁感到焦虑。
项目的最终结果不仅仅是静态图像,而且还是一个带有动画和效果的小型电影镜头——所有这些都是在 UE4 中完成的。通过从事这个项目,我真的想提高我在艺术和技术方面的技能。有穿着衣服的有机角色、机器人/机甲、硬表面室内环境和背景中的开放世界环境等。有很多事情我可以推动和挑战自己,以完善我的技能、工作流程知识和不同的工具,使其在 UE4 中发挥最佳作用。正如我上面所说,所有工作流程都是围绕 UE4 解决的。
需要注意的是,既然列出了这么多内容,您可能会问这个项目的主要元素是什么?是主要角色和 UE4 在渲染高质量图像和动画以供制作方面的潜在能力。由于我的背景更多是角色艺术,而 Thunder Cloud 最强大的服务是角色艺术。因此,该项目最适合作为我和 Thunder Cloud 团队的研发和培训项目。

二、2D概念

优秀的 3D 艺术家处于两者之间,将艺术与 3D 技术融为一体。我在学习 3D 的同时,一直在训练数字 2D 艺术和概念绘画。能够担任 2D 艺术家让我能够在概念、设计和颜色方面更加自由地思考,而不局限于 3D 技术和软件中现有的内容。在这个特定的项目中,我的目标是打造一种非常风格化的数字 2D 绘画视觉风格,并带有一点 PBR 着色器的外观。
这是我之前画的 2D 作品,我用它作为女孩的主要概念。我用这幅作品作为开发着色器和纹理的主要参考。我必须分解 2D 绘画中的每个元素,使其看起来像一幅画并吸引观众,同时利用我的 3D 技能将其转化为 3D 技术。我还学习和查看其他 2D 艺术家的作品,了解他们如何“渲染”/解释和解决 2D 角色的某些区域。
例如,我认为 2D 数字绘画风格的眼睛比 3D 渲染器生成和计算的 3D 模型更自然、更有灵魂。首先,我训练自己能够用 2D 绘画,学习某种 2D 风格的基本结构。然后,我开始在 3D 和 UE4 中模仿所有这些结构和风格化元素。
就整个项目而言,从制作角度来说,能够先草拟出 2D 概念让我能够预测我的 3D 场景最终会是什么样子。它为我的 3D 模型需要达到的视觉质量设定了标准。它还帮助我确定场景中某些资产的重要性和优先级,并提出适当的工作流程和需要花费的时间。
例如,当然,从最初的概念来看,女孩和她的机甲是关键元素;但她周围的机库地板也需要一定程度的细节。背景中有巨大的宇宙飞船和广阔的开阔景观,但它们距离很远,而且被环境雾气所笼罩。因此,我可以确定适合它们的细节级别以及处理它们的最佳工作流程,无论它们是需要高多边形法线贴图还是仅需要纯模型和漫反射,或者在远处的山地景观的情况下甚至可以使用哑光绘画等。

三、管道

我们为世界各地的众多客户提供角色制作服务,客户对从手机游戏到高端游戏的风格和规格要求各有不同。
我们为所有类型的所有角色都使用一种单一的通用“母”管道,这可能听起来很荒谬,但首先我们“在纸面上”将这种通用管道应用于项目,然后剥离不必要的部分或为某些部分选择合适的工作流程,最后我们有了针对某个项目优化的最佳管道,同时保持主要工作流程,因此团队中的每个人都可以很快地开始工作,不会因为不同项目使用不同的管道而感到困惑,因为它们都来自一个单一的“母”管道。
在这里你可以看到“母”管道的样子。
这是低多边形手绘纹理角色管道精简版的示例。
下面是我在这个项目中使用的更“完整”的版本,适用于需要高多边形雕刻版本和烘焙的风格化 PBR 角色(《守望先锋》就是一个很好的例子)

IV. 工具和软件

至于我和团队在 Thunder Cloud 使用的工具,在流程的不同步骤中,我使用了各种工具,从常用工具(如Maya作为主要建模工具)、Zbrush作为主要雕刻工具、 xNormal用于烘焙、Substance Painter用于 PBR 遮罩到不常用工具(如BodyPaint 3D用于纹理、Crazybump用于地图转换),然后是我自己编写的几个 Thunder Cloud 内部工具,用于协助角色制作。您可能已经知道 - 头发工具 GMH2 是我创作的,我正在用它将我的头发基础网格转换为头发卡片和纹理,用于该项目的角色。可以在此处找到有关 GMH2 的更多信息。
我自己编写了许多其他内部工具来协助完成该项目,例如:
烘焙管理器支持并加快从高多边形到低多边形的烘焙过程,使其不那么忙乱和紧张,它可以帮助您进行排除烘焙、ID 烘焙的网格自动分离、笼子自动生成等。我正在研究一种让它与 xNormal 通信以进行批量烘焙的方法。
导出管理器:一个小脚本,可以帮助快速导出带有材质名称的角色,让我能够以非常顺畅和轻松的方式在 UE4 和 Maya 之间切换。

V. 艺术指导与制作

在这个特定的项目中,我的目标是打造出一种非常干净的风格化 PBR 3D 外观,类似于《守望先锋》、《剑灵》等,或者 2D 数字绘画,这些外观经常出现在MujihaBdsPlace等艺术家的作品中。因此,我并没有真正花时间去雕刻细节,而是保持一切整洁,我主要关注大细节和中等细节,如大斜面和边缘、大衣服褶皱、人物特征的整体形状,如鼻子、眼睛、嘴唇等。
在纹理部分涂上厚厚的油漆后,雕刻中的小细节不会太明显,而且很难更改和维护。因此,对于高多边形雕刻模型,我只会停留在稍后烘焙地图中可见的中等和大细节上。
至于低多边形模型,就像现在许多高端的下一代游戏一样,我计划主角的三角形数量约为 50k 三角形,头发则为 40~60 三角形,因此我有足够的多边形来构建我的低多边形模型。我将每个对象建模为单独的网格以便于烘焙,当然,它们毕竟用于电影场景,因此它们不应太低多边形,但仍然足够轻量以在 UE4 中流畅运行。
手绘纹理在我的制作中扮演着重要的角色,它影响了模型的外观和感觉。我通常不会从头开始绘制这些纹理。我从 Xnormal 中烘焙出一系列贴图,然后在 Photoshop 中组合和过滤这些贴图,以快速创建一个尽可能接近我想要的最终结果的基础贴图。
这样,我可以轻松快捷地预览和控制纹理的最终结果。我将这种基础纹理称为“程序图”,因为它完全是在 Photoshop 中使用滤镜和一些简单的蒙版制作的,根本不涉及绘画。一旦我对程序图阻挡的外观、色调和整体形状/体积感到满意,我就会开始在 BodyPaint 中绘画来起草纹理我选择 Bodypaint 的原因是,只需对其 UI 和热键进行一些调整,它的行为就比任何其他纹理软件都更类似于 Photoshop,因此我使用 Bodypaint 非常舒服,并且在处理同一个 PSD 文件时,我可以轻松地在 BodyPaint 和 Photoshop 之间来回切换。
就风格化角色而言,对我来说,漫反射纹理是最重要的贴图,必须先做好。一旦我拥有了所有东西的不错的漫反射纹理,我就会将模型直接带入 UE4 进行进一步的外观开发。在 UE4 中,我必须设置一个具有适当照明和 HDRI 的环境来排除故障并预览其他贴图,例如粗糙度、镜面反射、法线。
到目前为止,我的工作流程似乎非常线性,但从我完成漫反射贴图的绘制时开始,它几乎只是在建模、调整漫反射、法线和所有其他贴图以及一点一点开发着色器之间来回切换,直到我得到结果。

六、材料

实际上,我最近才开始学习 UE4,所以我还有很多东西要学。我不会制作超级复杂的材质函数,也不会编写自己的自定义着色器节点,因为我并不是一个真正的技术人员。所以我现在拥有的一切都是非常简单的 UE4 基本节点和图表。我从 UE4 中我觉得最接近我想要的基本材质开始,例如皮肤材质。我从 Subsurface 着色器开始,然后从那里开始逐步向上,查看 2D 绘画并观察缺少哪个元素,并找到在 UE4 中复制相同效果的方法。以下是分步分解:
  • 以基本参数作为起始基础的基础材质(SubSurface 着色器)。

漫反射颜色

  • 输入基础纹理。

  • 添加带有变暗皮肤纹理的菲涅尔蒙版来控制轮廓渐变的效果,类似于 2D 插画家经常进行的阴影处理方式。(例如在 3D 中查看街头霸王)可以使用强度和衰减来调整此效果以获得不同的结果。

次表面颜色

将漫反射纹理与绿色相乘并插入“地下颜色”插槽以查看地下效果
创建菲涅尔蒙版以将两种地下颜色混合在一起,模拟绘画中微妙的色彩变化渐变阴影。
我创建了一个单独的材质函数菲涅尔蒙版,可以控制渐变位置和强度。此功能还允许向自定义菲涅尔蒙版添加一些噪声,以获得更自然的皮肤外观。下面是渐变函数的详细介绍:
使用不同的强度、衰减值和额外的混合纹理(如静脉和孢子)来获得更自然的外观。不同的组合可以产生各种外观,并可能应用于皮肤着色器以外的其他事物。
2D 绘画中的一些反射/高光区域有许多热点和小闪光,几乎像汽车油漆材料一样,因此我在基础粗糙度/镜面反射图/法线图的顶部添加了一些微细节噪声图,通过叠加混合微污垢纹理,在近距离观察时为镜面添加小细节。
但是,我仍然需要在反射区域增加更多高光点。我找到了一种设置来控制反射/高光点,而不必过多地干扰场景照明。
这个有点棘手,我设置这个图主要是为了解决 UE4 的反射向量节点。将它插入纹理节点的 UV 中,我们将得到某种球形环境反射纹理。
但是,我做了几次测试,发现节点需要立方体贴图作为纹理样本才能正常工作。将 Photoshop 中的 2D 图像转换为立方体贴图的过程相当简单,但仍然是一项非常手动的任务,如果我们必须多次来回执行以测试结果,则可能会非常耗时。因此,我使用 Photoshop 中的平面长环境反射 2D 纹理并将其应用于未点亮的球体,然后在球体内放置一个渲染目标立方体,以从球体内部创建立方体贴图渲染。
通过这种方式,我可以在 Photoshop 中更新我的反射贴图,然后立即重新导入并更新 UE4 中的立方体贴图。将此反射贴图与颜色纹理以及菲涅尔遮罩进行屏幕混合,以将合适的自定义反射混合到我们的颜色纹理中。
我还制作了一个自定义材质函数来控制反射图的一些参数,例如高光区域的强度、基本反射值、菲涅尔衰减、用于遮罩的镜面反射图等。
这些是皮肤着色器的整体设置,我还没有在这个项目之外测试过它,但我对最终结果非常满意,我可以保持 2D/手绘外观,同时仍能保留照明信息,甚至能够在其反射和次表面颜色上添加额外的细节层。这几乎就是皮肤着色器的所有内容,稍后我将讨论眼睛的设置,它更复杂,但或多或少基于相同的原理。

VII. 目标与限制

我的最终目标是制作一个看起来像数字 2D 绘画的 3D 电影动画。因此,这类项目是为了突破我在 UE4 中可以实现的视觉效果的极限。因此,只要结果看起来足够好,并且足够强大,能够在特定情况下(不同的光照、视角和距离)正确运行,我不介意完全伪造它。
例如,对于次表面渐变菲涅尔坡道,如果它的行为基于光线方向,就像真实的次表面散射一样,那么它会更加准确,但由于这种效果相当微妙,我可以使用简单的菲涅尔渐变。这可能不适用于强光照射的角色。SS 颜色必须基于照明方向而不是视角衰减。但对于这种情况,这已经足够好了。
每当我决定为着色器添加一层细节时,我都需要测试它是否看起来正确,以及在不同光照条件和视角下的表现如何。有时,如果是静态图像并从正面观看,效果看起来会非常好,但如果从侧面观看,效果会非常奇怪,例如模糊效果,因此我必须在最佳外观和最佳效果之间取得平衡,甚至需要找出一种新方法,用不同的方法从头开始制作该效果。

结构

某些方法/设置可能还不够准确,但我已经起草了所有必要的元素,以便获得良好的结果,这样我以后就可以随时回来完善这一部分。例如,如果我将来能想出更好的方法来制作自定义反射贴图或次表面渐变,我可以更新这些材质函数,这些函数已经整理好并存储在我自己的库中,可以重复使用和升级。

平衡

重要的是,一旦我完成了将所有花哨的细节添加到着色器中,我就会退后一步并判断我是否离最初的目标太远,对于这个特定的项目,我想让它尽可能接近风格化的数字 2D 绘画外观,所以我需要调整任何可能使整个东西看起来不自然或与风格相差太远的东西。
例如,增加皮肤表面的法线/凹凸可能会使其看起来太像数字 3D 作品。

八、面部特征

在我以前的项目中,我只是将手绘纹理资产放入 UE4,添加一些灯光,然后就这样了。整个过程感觉不对劲,手绘纹理资产在没有光照的情况下看起来可能很好,并且仅凭没有光照的颜色纹理就有自己的风格,但是当光照时,就会出现大麻烦,因为颜色纹理不再是唯一影响模型的纹理。场景中有阴影、高光和反射/镜面反射,您将丢失绘制在纹理上的细节,并且颜色纹理将显示为直接绘制的。
这个 D.va 是我以前做过的一个项目,当时我还没有深入研究过 UE4,所以一切都是基础设置。所以在这个项目 Exparia 中,我格外小心,确保灯光/阴影/反射在模型上正确反应。特别是在脸部区域,我会注意脸部的元素,如眼睛、鼻子和嘴巴。我可以花一整天的时间来调整纹理、编辑模型、来回调整着色器,一点一点地把它弄好。
在我的工作流程中,从头到尾,除了细化部分,一切都非常简单。我细化所花的时间可能与之前所有步骤的总和一样多,但这是值得的。没有简单的解决方案可以从一开始就做好,有时我甚至不得不回去建模一个新部件,更改整个部件的模型结构,使其与我刚刚创建的着色器一起工作。

眼睛

起初,我把它作为一只合并的眼睛(没有单独的眼球),但后来我不得不把它分解成如下所示的几个不同的部分,这样我就可以更好地控制眼睛的各个元素,如反射、高光、旋转眼球等。
下面是眼睛着色器的图表:

睫毛

一开始,睫毛是直接画在脸部纹理上的,但后来我不得不把它提取到单独的网格中,而为了最终的结果,我不得不复制睫毛网格以使其更丰满。我尽可能多地尝试使用半透明着色器,因为它的 AA alpha 蒙版比 Masked 着色器类型好得多。唯一的缺点是它的排序优先级,但由于眼睛有一个非常整齐的凹形,在这种情况下我可以不用排序。另一个替代选项是使用 Dither Opacity Mask 着色器,它也能给你一个不错的 AA 结果,但它不适合细条纹或半透明和移动的表面。

嘴唇

一开始嘴唇区域没有微小的细节,正如您所见,我在 Zbrush 中雕刻了很多嘴唇细节,因为我不想在雕刻时深入细节。我更喜欢在 Photoshop 中稍后添加细节,而不是在雕刻中直接雕刻,因为我可以自由和快速地尝试不同类型的细节,看看是否有效,皮肤孢子和细节也是如此——我更喜欢在纹理中添加这些细节,而不是雕刻。
顺便说一句,有时我需要将其中一个元素作为单个部分进行动画处理,然后将其渲染成超特写,以查看所有细节是否能够经受住动画/变形和光照/视角的变化,例如嘴唇动画、闭眼和睁眼等。在 UE4 中制作动画或使事物变形非常简单,我只需准备一系列网格的混合形状。
为什么要使用混合形状?因为与关节蒙皮动画相比,它的测试速度更快,控制变形也更容易。然后在 Maya 中为混合形状制作动画,将整个序列导出到 UE4,然后进行快速测试序列渲染。

IX. 渲染

对于这个项目“Exparia”,我没有在设置方面有所保留,因为整个场景稍后将用于创建一个小型电影场景,如果我想以合适的帧速率将其作为实时演示运行,可以使用 UE4 级别序列器将其渲染为电影,或者在质量方面缩小。我将 UE4 中所有可能的渲染设置最大化,因为我不想在开发视觉作品时受到任何东西的阻碍。优化将在稍后进行。以下是一些增加我使用的 UE4 渲染设置的技巧和窍门:
我禁用了预先计算的照明,因此我将在实时动态照明下工作的整个时间里,无需等待照明的构建。
由于我目前只致力于精炼和 ldev,我倾向于使照明尽可能简单,我使用入门包中的 BP_lightStudio 蓝图资产作为基础场景,因此我有一个定向光、一个天窗和一个 HDRI 圆顶,因此没有花哨的聚光灯或区域点光源等,以避免在以后对阴影和反射进行故障排除时出现任何混淆和误导。


推荐作品