UE4中的风格化角色制作技术

介绍
大家好,我叫Dzung Phung Dinh,雷云工作室创始人——3D动画游戏美术外包公司。我本人是一位在游戏、电影和广告行业拥有 12 年工作经验的艺术家。在 Thundercloud 之前,我一直从事各种规模的项目,从 Rare UK 的 Xbox One 游戏和伦敦 Double Negative 的故事片到作为 The Color Club International 的 3D 艺术总监的各种广告商业项目。
有些人可能已经知道我的旧项目——Exparia(去年发表了一篇关于 80lv 的制作文章)。它很受欢迎,我看到我们的社区对 UE4 风格化外观开发和渲染的深入技术非常感兴趣。因此,我很高兴写更多关于这个主题的文章,特别是一个案例研究——我的最新项目——Pisciasa。她是我的 OC 系列(机甲怪物系列的女孩)之一,最重要的是,她是我最近参加CubeBrush – ArtWar2比赛的参赛作品。
在做每一个项目的过程中,我一直在不停地训练自己的艺术和技术技能。我参加了Inktober来训练我的 2D 绘图技能,我编写了更多的工具和脚本来帮助 Thundercloud 的 3D 制作。我还在 UE4 中发现了一些更有趣的着色器技术,它们可以使我进行风格化渲染的方式受益。自从 Exparia 以来,我在过去几个月中学到了很多东西,我想用我的最新作品 Pisiasa 将我所有的技能和经验用于挑战 Artwar2,因此在本文中,您将简要了解所有技术和工作流程我为 Pisciasa 开发。

志向
Pisciasa 最大的抱负是我为自己设定的标准,以推动最终 3d 作品的质量尽可能接近 2d 插图概念。我希望人们无法区分最终的 3D 作品和它的 2D 概念作品,从而在艺术指导和制作技术上提高 3D 的质量。一旦我能实现这个目标,我就会有信心我可以在 UE4 中将我的任何 2D 作品执行成一个体面的风格化 PBR 作品,而不会失去它在 2D 中的任何感觉或艺术外观。
拥有 Exparia 和我过去项目的经验,我知道我需要解决很多问题。首先,我需要一个更详细的 2d 概念,以便我确切地知道我应该在 UE4 中实现什么样的外观/视觉目标,以及我需要在 UE4 中制作什么样的效果、风格化着色器。
UE4中最终图像的渲染质量也需要提高,有更好的阴影、更好的光照、更好的AA、细节渲染等。
最后,最重要的是,我需要一个更好的计划和时间表来帮助我在 ARTWAR2 截止日期之前完成 Pisciasa。将清晰的 2D 概念作为艺术目标极大地帮助我规划我的制作和视觉最终结果。

着色器开发的重大改进
有一点可以肯定,即使我可以设法在建模和纹理上进行一些操作,但最终决定我是否能获得与概念相同的感觉的是项目的后期部分——着色器开发和照明. 这些步骤将使风格化手绘模型的静态外观更加生动,这些模型通常以纯无光模式呈现。
很多人之所以不添加灯光并且不使用除未照明材料之外的其他着色器来呈现风格化的手绘纹理模型是有原因的,因为绘制的表面没有包含足够的信息来使灯光表现得像它应该的那样,从而使纹理看起来是伪造的,或者更确切地说,只是在模型上绘制静态图像时展示真实的自我。但是,如果我能设法开发一个着色器,它以某种方式具有看起来像一幅风格化绘画的照明细节,那么我就可以做到这一点。
不同着色器模型和照明设置的比较可能会导致风格化手绘角色的呈现质量大不相同。
这是一个备忘单,因此您可以全面了解 Pisciasa 着色器设置。老实说,我不是 UE4 外观开发着色器专家,我的大多数着色器并没有真正花哨的编码来操纵它们对场景中真实灯光的反应方式(我真的需要在未来学习编写着色器),而是我操纵主要影响模型表面的基本事物,如 UE4 着色器编辑器中的基色、次表面颜色和法线。

外观开发设置
我使用 BP_light_studio 作为做外观开发的入门设置,它为我提供了一个漂亮的 HDR 圆顶、定向阳光和其他东西,如雾、天窗等。我可以旋转 BP_light_studio 演员以??获得不同的太阳角度以在不同的光照条件下测试模型(白天/日落/夜晚)
我使用了很多菲涅尔和正常操作函数来开发我的着色器,所以我总是将我的着色器应用到不同的图元上以测试它在不同的完美图元表面上的反应,如果出现问题,也更容易排除故障和检测错误使用着色器。

面部和身体皮肤着色器
面部着色器始终是我开始工作的第一个,一旦我可以对面部有一个体面的看法,我就会从那里向上移动。我使用我为 Exparia 制作的旧皮肤着色器作为基础,我调整了一些节点和图形以获得更好的假反射功能节点的效果,这些着色器的详细分解可以在这篇文章中找到 。
下面是图表的捕获,每个节点组都有清晰的注释。我可以使用重新布线引脚来清除看起来很疯狂的图形,但是由于某种奇怪的原因,当使用重新布线引脚时我的 UE 无法正确编译输出时出现错误,所以我为看起来很疯狂的电线道歉。

UE4、角色制作

假风格化反光材质功能
我设置的皮肤着色器的主要功能之一是风格化假反射的材质功能。它的主要作用是将输入的任何 2D 立方体贴图纹理(可以是照片、手绘纹理、概念艺术等)作为反射纹理添加到现有漫反射输入之上。该功能还可以让您控制菲涅尔数量,以及高光区域的发光,就好像输入是 HDR 图像一样。我在许多着色器中使用了此函数的各种形式来存档风格化外观。
不同的 HDR 或立方体贴图输入会产生不同风格的反射材料

新改进的程式化眼睛材料设置
下面是我在 Exparia 的旧眼睛设置,它有点难以维护或对最终外观进行任何调整,因为它由几个不同的网格组成,具有不同光照模型(不透明、切口和附加半透明)的不同着色器,这是一个维护起来有点复杂。
我为 Pisciasa 的眼睛想出了一个更好的新设置,现在她的眼球只包含 1 个网格,一个简单的眼球球体。简单眼球的常见问题是,从侧视角度观看时,它们看起来非常奇怪,因为真眼的虹膜实际上是凹陷的,而向外弯曲的区域只是角膜晶状体,因此我们在眼睛中发生了非常复杂的折射效果区域。为了解决这个问题,我在 UE4 中使用了 Bump Depth 节点,该节点用于视差映射,但在这种情况下,我将设置它,以便仅当您以窄角度观看眼睛时才会发生视差(即由菲涅尔蒙版控制),这种效果与顶部的假反射相结合会假装折射效果非常好。
通过使用视差和带有镜面反射贴图遮罩的程式化反射贴图,对具有假折射的凹眼球进行 Pisciasa 眼睛设置。
原则上,眼睛着色器与我的皮肤着色器相同,只是它有一个额外的效果——假折射/视差效果,我后来将它作为一个额外的功能集成到我现有的皮肤着色器中。因此,如果您的角色的脸部上绘制了基于纹理的眼睛(未分离的眼球),则此着色器也可以很好地工作,您只需要一个深度贴图来掩盖我们眼睛的虹膜区域,以便仅在这些区域发生折射效果。

UE4、角色制作

程式化的各向异性着色器
我对 Pisciasa 的着色器所做的主要改进之一是在她的衣服和头发上使用的程式化的各向异性(假)着色器。主要来源于我做的自定义反射材质函数。着色器的设置包括 2 个叠加在 Base Color pass 顶部的反射效果,一个在顶部区域,一个在底部区域,这些是为了伪造太阳和地面反射的效果,我也有参数来控制比例和位置这些反思。
运行中的程式化各向异性材料
从上面的程式化各向异性反射函数派生而来,我制作了一个程式化的头发材质,利用这个功能并为头发添加了一些额外的特定功能。

程式化的头发着色器
这个进一步利用了假的各向异性风格化函数,我学习了一个关于头发切线的技巧,使它看起来像真正的各向异性着色器。
然后我添加与头发切线法线混合的所有细节法线贴图,这样头发表面将具有法线贴图的各向异性外观和微妙细节。

平滑模型表面的镶嵌技巧
我为我的大部分着色器打开了 PN_triangle 曲面细分,因为它们可以安全地用于静态网格物体,它们为我提供了更平滑的表面模型。我真的很喜欢这种镶嵌效果,因为它们设法保持模型原始的锐利边缘,并且只是为表面曲率添加了微妙的平滑度。

看开发提示和技巧
因为我的着色器和图形涉及许多节点和功能,除了使用注释组或重新路由引脚之外,我还有许多提示和技巧来组织和加快速度。

尽可能使用参数
如果可能的话,我总是直接在我的主要测试着色器中构建我的图形,并在任何地方使用参数,因为这将为我节省大量时间调整数字和值,然后等待着色器再次编译。使用参数可能会在开始时增加一点开销编译时间,但实时更新功能值得。

在我构建它时清理并保持井井有条
令人惊讶的是,在我构建图表时清理并保持组织有序并没有减慢我的速度,反而大大加快了整个过程,因为一切都井井有条并记录在案,因此很容易掌握结构,我可以在任何时候快速排除故障发生错误或需要更改/改进图中的任何单个模块。

稍后优化
一旦我对整个图形感到满意,我将开始通过将未使用的参数转换为静态参数来优化图形,修改图形以查看是否可以通过使用更少的节点或使用更优化的流程来简化流程。

重复使用的包装
我花了很多时间用不同的模型和参数来测试我的图表,以确保它是一个不错的函数,我可以随着时间的推移重复使用。一旦我对结果感到满意,我就会打包整个图形并将其转换为具有适当输入和输出通道的材质函数。用一个紧凑的材质函数替换主着色器中的整个复杂图形,以便在我拥有更新/更好版本的函数时使事情更具可读性,并且更容易维护和更新。随着时间的推移,我一直在开发自己的 UE4 材质函数和着色器库,这里是我手头的快速浏览,该库的一部分包含在 Pisciasa 项目中。

灯光

基本照明工作流程
这是 Pisciasa 灯光设置的整个场景的视图,我在 UE4 中使用了 50 多个灯光来照亮最终场景,但是,思考过程似乎并没有那么复杂。我首先使用主光来锁定概念中非常关键的照明,然后添加补光+调整天光/环境以匹配阴影区域的颜色,
然后最后我开始在整个地方添加微小的背光和局部灯光(其中有 38 个!),以尝试重新创造与概念中相同的颜色和照明效果的感觉。

UE4、角色制作

体积光
在做 Pisciasa 的概念之前,我在 4.18 版的新更新中使用了 UE4 体积照明,我真的很喜欢它的质量,所以我非常有信心将这些效果放入最终渲染中,在此之前我打算使用alpha 卡来伪造效果,但现在我可以在 UE4 中获得带有阴影的真实体积照明,这确实以我想要的方式提升了情绪。

UE4、角色制作

渲染质量
我在 UE4 中渲染高质量图像的工作流程是以非常高的分辨率捕捉场景,例如 100 兆像素图像(10k x 10k 图像),然后将其缩小为更小的图像,以获得非常好的抗锯齿和细节渲染质量。
在我之前的所有项目中,我都使用 UE4 原生工具来捕获高分辨率屏幕截图,这不是真正稳定的,并且在渲染大分辨率时往往会冻结 UE4 和我的 1080ti。所以这就是 Nvidia Ansel 的用武之地。
Ansel 最初是由 Nvidia 开发的用于在 PC 游戏中捕获高分辨率屏幕截图的程序,现在它带有 UE4 作为插件,您可以在“在新窗口中播放”模式下运行。
在我想出一个可以使用 Ansel 的工作流程之前,经过一系列的失败和试验,我确实花了一段时间才习惯使用 Ansel。以下是一些值得注意的关键点:

使用 Level Sequencer 并使其在关卡开始时自动播放。
将您的 FBX 摄像机导入音序器,将其标记为所有格,以便它可以在播放模式期间保留其不可键控的值。
使用 Camera Track 控制您要捕捉的相机
在新窗口模式下播放必须与您的相机传感器宽度和高度比具有相同的分辨率,否则您的屏幕截图中会出现黑边。
使用 Ansel 的增强复选框以获得更好的自由度效果。

总结及未来计划
以上所有内容几乎都是我迄今为止在 Pisciasa 工作中获得的所有经验和技术。这里和那里仍然有很多未知的水域,我绝对需要像风格化的着色器那样真正对场景中的真实光线做出反应,或者找到一种方法来获得更好的阴影再现和控制等。但是最重要的是,我学到的一件重要的事情是时间管理和更好的计划,如果没有这两项,我将无法按时完成 Pisciasa 的雄心壮志。我现在知道我可以在 3 个月的空闲时间中取得什么成就。这对我来说会容易得多,而且在计划任何未来的项目时,我会更有信心,从我学到的知识中获得更高的质量和更大的抱负。感谢您花时间阅读这篇文章,希望您喜欢它,并在即将到来的时间里继续关注我的下一个项目!PDD出来。

返回首页

作者 lll

发表评论