白天建筑师,晚上 CG 艺术家,他将建筑的华丽发挥极致
作为建筑师的他每天工作繁忙,但怀揣着对 CG 艺术的热忱,他在 2-3 年内自学了 30+CG 制作软件、插件,并用业余时间创作了诸多精彩绝伦的 CG 作品。他的作品细节丰富,画风瑰丽,充满了浪漫的想象和细腻的质感……他便是严圻 (Kay John Yim)。
▲ 严圻近期部分作品 © Kay John Yim
严圻 | Kay John Yim 英国皇家特许建筑师/CG 艺术家
严圻来自中国香港,毕业于英国巴斯大学(University of Bath)科学/建筑研究专业,同时也是荷兰代尔夫特理工大学(Delft University of Technology)建筑学的交换生。毕业后在建筑联盟学院(Architectural Association School of Architecture)进修建筑学。目前在英国知名建筑设计公司 Spink Partners 担任建筑师。
*本文是 Kay John Yim 为Renderbus瑞云渲染撰写的一篇指南,也记录了他个人首个 CG 动画角色项目「Ballerina」的创作过程。
「Ballerina」项目是一部完整的 30 秒 CG 动画,这是我个人首个在宏伟的巴洛克圆形大厅中展示逼真的 CG 动画角色的项目。
动画是我在所有艺术追求中内心挣扎的表现形式,无论是隐喻还是字面意义。
芭蕾舞是一种广为人知的艺术形式,具有严格的审美标准,极易受到公众和自我批评的影响,也是我日常职业和艺术实践的隐喻。
▲「Ballerina」静帧 © Kay John Yim
作为一名建筑师,白天我致力于建筑可视化,我的同事、资深建筑师和客户都在仔细检查每一个细节。作为一名艺术家,夜间我从事个人 CG 项目,这期间我会进行数百次甚至数千次迭代,以获得完美的构图和配色方案。无论我在专业和艺术技巧方面变得多么熟练,内心的挣扎永远不会消失。
这个项目实际上也是一场技术斗争——CG 角色创作过程的每一步对我来说都是陌生的。当我开始从事这个项目时,我很难找到一个创建栩栩如生角色动画的综合指南。对于一个独立 CG 艺术家来说,我发现几乎每一篇文章或教程不是太专业化,就是太不切实际。
通过几个月的反复摸索,我学到了很多关于高效角色动画和渲染的知识。 这篇文章对于像我这样想要将 CG 艺术提升到新水平的独立艺术家来说,是一个中级指南。尽管我很乐意为每个人提供指南,但实际上不可能涵盖我使用的每一款软件的细节,因此我尽可能地在其中加入了教程或资源的链接,以供初学者学习。
▲「Ballerina」静帧 © Kay John Yim
指南分为 4 个主要部分:
• 架构
• 角色
• 动画
• 渲染
我使用的软件包括:
Rhino
Moment of Inspiration 4 (MOI)
Cinema 4D (C4D)
Redshift (RS)
Character Creator 3 (CC3)
iClone
ZBrush & ZWrap
XNormal
Marvelous Designer 11 (MD)
Houdini
#01 架构
我的主要建筑建模软件是 Rhino。
建筑建模有许多不同的方法。作为一名建筑师,我使用了数十种 CAD 和 DCC 软件,Rhino 可以说是比较优秀的建筑建模软件,这源于它的准确性和多功能性。Rhino 相对于 Cinema 4D 或 Houdini 等其他更受欢迎的 DCC 的主要优势在于它能够大量处理非常详细的曲线。
作为一名建筑师,我建造的每个模型都是从一条曲线开始的,通常是墙截面、檐口或踢脚板的形状,沿着平面图的另一条曲线。Rhino 的命令列表一开始可能看起来很强大,但我几乎只使用了十几个命令就将曲线转化为 3D 几何体:
Rebuild
Trim
Blend
Sweep
Extrude
Sweep 2 Rails
Flow Along Surface
Surface from Network of Curves
建筑建模的关键是尽可能始终使用参照。我总是在屏幕的右下角打开 PureRef,以确保我的模型比例和规模正确。通常包括实际照片和建筑图纸。
在这个特定的项目中,我使用了慕尼黑阿玛琳堡狩猎休息室作为建筑的主要参考。
PureRef 的项目板
我下载了尽可能多的高分辨率参考资料,其中包括不同相机角度、不同照明及天气条件的图片。这为我提供了大量的细节,以及相对于人文尺度的空间总体概念。
虽然建筑由三部分组成,即圆形大厅、走廊和边墙,但它们本质上是同一个模块。因此,我最初建模了一个由一面镜子和一扇窗户组成的墙体模块,复制并沿一个圆弯曲,以获得圆形大厅的墙。
Rhino 建模总是从曲线开始
沿曲线复制墙模块并弯曲
该模块被重新用于走廊和边墙,以节省时间和(渲染)内存。在过去的一年里,我建立了一个建筑轮廓和装饰物的图书馆,我能够重用和回收用于建筑建模的轮廓及装饰物。
装饰物建模可能是一项艰巨的任务,但有了几个装饰物的建模,我便只需将它们复制并按几何方式重新排列,就获得独特的形状。
例如,天花板装饰物基本上是一个单一的装饰物,覆盖了圆顶表面的 1/8,但径向复制了 8 次,覆盖了整个天花板。同样的技术也适用于枝形吊灯的建模。
然后,Rhino 中的所有对象按材质分配到不同的层,这使得 C4D 以后的材料分配更加容易。
按材质将对象指定给图层
注: ① 熟悉 Rhino 导航的最佳方法是对小型对象建模。Simply Rhino 有一个很棒的用 Rhino 制作茶壶的初学者系列。
② 我也发布过一些 WIP Montage,虽然不是教程,但应该足以概括我的建模过程。
③ Rhino 装饰物建模详细教程。
对于任何手头拮据的人来说,都可以在像 Textures.com 这样的 3D 模型商店购买预建饰品。在 Sketchfab 和 3dsky 上可以下载一些装饰品制造商的免费模型。
1.从 Rhino 导出到 C4D
经过 4 天的建筑建模,Rhino 模型最终由 50%的 NURBS 和 50%的 MESH 构成。 我主要对重要建筑元素(墙、檐口、踢脚线)使用 NURBS,对装饰物则使用 MESH。
Rhino 主要是一个 NURBS(非均匀有理 B 样条)软件。尽管 NURBS 模型在表示曲线和曲面数据方面非常精确,但大多数渲染引擎或 DCC 不支持 NURBS。
因此,我将 NURBS 和 MESH 依次导出到.3dm 和.FBX,并使用 Moment of Inspiration(MOI)将 NURBS 模型转换为 MESH。
MOI 具有最佳的 NURBS 到四边形 MESH 转换(在 Rhino 或任何其他 DCC 上),它始终提供干净的 MESH,然后可以轻松编辑或 UV 映射来进行渲染。
从 MOI 导出
2.导入 C4D
将 FBX 文件导入 C4D 相对简单,但我注意了几件事,特别是以下按操作顺序列出的导入设置、模型方向和文件单位:
1) 在 C4D 中开发一个新项目(项目单位用 cm);
2) 合并 FBX;
3) 检查合并面板中的「Geometry」和「Material」;
4) 将导入的几何体方向(P)在 Y 轴上更改-90 度;
5) 使用脚本「AT Group All Materials」自动将 Rhino 材质组织到不同的组中。
导入从 MOI 导出的 FBX
我在 Rhino 中建模了一半 ,然后在 C4D 中将其镜像为一个实例,因为一切都是对称的。
C4D 实例和镜像
地板(凡尔赛镶木地板)采用图片纹理方法进行建模,CG 艺术家 Ian Hubert 大为称赞这种方法。我在一个平面上应用了凡尔赛镶木地板图片作为纹理,然后用「knife」工具将平面切成薄片,以获得沿地板灌浆反射出的粗糙度变化。 这让我可以在 Redshift 中添加细微的带有曲率的颜色和磨损变化。
然后将地砖放在 Cloner 下进行复制,并覆盖整个地板。
注:C4D 和 Rhino 使用不同的 Y 和 Z 方向,因此直接从 Rhino 导出的 FBX 必须在 C4D 中旋转。 伊恩·休伯特的 Youtube 频道-IanHubert 有很多有用且高效的 CG 技术,图像纹理是最流行的技术之一。 ④「AT Group all materials」脚本的:
3.建筑明暗处理(Cinema4D+Redshift)
由于我预先按材质对所有 MESH 进行分组,因此指定材质就像将立方体贴图或三平面贴图拖放到材质组一样简单。
我使用了 Texture.com,Greyscalegorilla 的 EMC material pack 和 Quixel Megascans 作为我所有着色器的基本材质。
要使 ACES 在 Redshift 中正常工作,必须手动将每个纹理指定给 RS 纹理节点中的正确的色域。通常漫反射/反照率贴图属于「sRGB」,其余(粗糙度、位移、法线贴图)属于「Raw」。
我的建筑着色器大多是照片纹理和脏旧磨损纹理 50/50 混合,以给予额外的真实感暗示。
墙材质的 RS Shader Graph
#02 角色
基本角色是在带有 Ultimate Morphs 和 SkinGen 插件的 Character Creator 3(CC3)中创建的。这两个有着不言而喻参数的插件都非常适合艺术家。
Ultimate Morphs 为角色的每个骨骼和肌肉大小提供了精确的滑块控制,而 SkinGen 为肤色、皮肤纹理细节和化妆提供了多种预设。
我还使用 CC3 的头发生成器为我的角色应用了一个准备就绪的头发 MESH。
CC3 变形和头发生成器
1.面部纹理
面部是 CG 角色中最为重要的部分之一,需要特别注意。我发现添加照片级真实感细节的最佳工作流是使用纹理 XYZ 的 VFACE 模型和 Zwrap 的「Killer workflow」。
VFACE 是一个由纹理 XYZ 生成的先进的摄影测量人头模型的集合。每个 VFACE 都有 16K 的经过图片扫描的皮肤纹理、置换和实用贴图。Zwrap 是一个 ZBrush 插件,它允许用户自动将预先存在的拓扑适配到自定义模型。基本上将 VFACE MESH 形状与 CC3 头部模型相匹配。使用「Killer workflow」,我能够在两个 MESH 形状匹配后将所有 VFACE 细节烘焙到 CC3 头部模型。
我对「Killer workflow」的调整可以分解如下:
1) 将 T 形角色从 CC3 导出到 C4D;
2) 删除除 CC3 角色头部以外的所有多边形;
3) 将 CC3 头部模型和 VFACE 模型导出到 ZBrush;
4) 使用 MOVE/Smooth brush 对操纵器 VFACE 模型进行处理,以尽可能接近 CC3 头部模型;
5) 启动 ZWRAP,点击并匹配尽可能多的点,尤其是鼻子、眼睛、嘴巴和耳朵周围;
6) 让 ZWRAP 处理匹配点;
7) ZWRARP 应能够输出与 CC3 头部模型完全匹配的 VFACE 模型;
8) 将两个模型都输入 XNormal,并将 VFACE 纹理烘焙到 CC3 头部模型。
注:我建议在处理之前将匹配点保存在 ZWRAP 中。我还建议在 XNormal 中单独烘焙所有 VFACE 贴图,因为它们的分辨率非常高,在批量烘焙时可能会使 XNormal 崩溃。
⑤「Killer Workflow」关于纹理的完整教程。
2.蒙皮着色(Cinema4D+Redshift)
我准备好了 XYZ 纹理贴图后,就从 CC3 导出了其余的角色纹理贴图。之后,我将角色导入 C4D,并将所有材质转换为 Redshift 材质。
遗憾的是,在撰写本文时,Redshift 还不支持 Randomwalk SSS(在 Arnold 等其他渲染器中发现的一种非常真实且身体上精确的次表面散射模型),因此在渲染蒙皮时需要进行更多调整。
3 级 Subsurface Scattering 由具有不同「Color Correct」设置的 Diffuse 材质驱动。
「Leg」材质的 RS Shader Graph
头部着色器是 CC3 纹理和 VFACE 纹理的混合体。VFACE 多通道位移与「microskin」CC3 位移贴图融合。
「Head」材质的 RS Shader Graph
角色的特写渲染
将「Redshift Object」应用于角色以启用置换—— 只有这样,VFACE 置换才会显示在渲染中。
注:蒙皮着色是渲染中最高级的方面之一。
⑥ 红移蒙皮着色中一个十分有用的教程。
3.头发着色
在使用 C4D Ornatrix、Maya Xgen 和 Houdini 进行了装扮实验后,我决定在「Ballerina」项目中使用 CC3 烘焙头发 MESH,这使整个过程更高效。
我使用 Redshift 具有 CC3 头发纹理贴图的「glass」材质输入到「reflection」和「refraction」色彩槽中,因为头发(在现实生活中)对光线的反应就像微小的玻璃管一样。
注:对于有兴趣将 CC3 头发提升到更高逼真度的人,CGcircuit 提供了一个很棒的:
Houdini 中 CC3 MESH 头发到头发几何体转换的早期测试
#03 动画
1.角色动画(iClone)
我将 CC3 角色导出到 iClone 进行动画。我考虑了几种接近真实角色动画的方法,包括:
1) 使用现成的 mocap 数据(Mixamo、Reallusion Actorcore);
2) 委托 mocap 工作室制作定制 mocap 动画;
3) 使用 mocap 套装(如 Rokoko 或 Xsens)定制 mocap 动画;
4) 老式关键帧。
在对各种现成的 mocap 数据进行实验后,我发现 Mixamo mocap 过于通用,其中大多数看起来都非常呆板。Reallusion Actorcore 有一些非常逼真的动作,但我找不到项目所需的确切内容。
由于没有预算和我个人的非常具体的角色运动要求,选项 2 和 3 已经不在考虑范畴。这让我想到了老式的关键帧。
首先,我截取了芭蕾舞表演的视频,并在 PureRef 中逐帧排列。然后,我将 PureRef 引用(半模糊)覆盖在 iClone 上,并使用「Edit Motion Layer」调整每个角色关节以匹配我的引用。
姿势 1 姿势 2
最终角色动画
然后将动画角色导出到 Alembic 文件。
虽然我的最后一个项目概念描绘了慢动作的芭蕾舞演员,但我最初的想法实际上是为 20 秒的芭蕾舞设定关键帧,我很快意识到这不是个好主意,原因有很多:
1) 在慢动作中,许多帧可以插值,但实时运动涉及许多独特的帧,因此需要进行更多的调整;
2) 之后,越多的独特帧意味着更多的渲染问题(闪烁、镶嵌问题等)。
早期测试呈现了我最初的想法
考虑到这是我的第一个角色动画项目,我得出的结论是改为做一个慢动作风格的序列——两个独特的姿势,每个姿势有 160 帧。
2.服装模拟
布料模拟是该项目至今为止最具挑战性的部分。我考虑的两个主要布料模拟/解算器是 Marvelous Designer(MD)和 Houdini Vellum。
虽然 Houdini Vellum 比 Marvelous Designer 功能更多、更可靠,但我个人觉得它速度太慢,因此不考虑帧是不现实的(Houdini Vellum 中一帧布料模拟可能需要 3 分钟,而 Marvelous Designer 在内存为 128GBs 的 Threadripper PRO 3955WX 中仅需要 30 秒)。
MD 中的布料模拟虽然通常比 Houdini vellum 快得多,但并不像我想象的那么简单。MD 中的模拟服装总是会出现一些形式的故障,包括布料抖动、角色穿模或完全错位。以下是我为尽量减少故障而调整的一些设置:
1) 使用「Tack」将服装的各个部分附着到角色上;
2) 增加布料的「Density」和「Air Damping」,以防止服装移动过快而移动不到位;
3) 单独模拟服装的各个部分——虽然物理上不精确,但可以让我更快地迭代和调试。
除了上述调整之外,我还减少了「Gravity」,以实现慢动作外观。
MD 模拟设置
MD 模拟
注:由于我使用的缝纫图案的许可协议,我无法共享我的服装创作过程的屏幕截图。然而,Marvelous Designer 官方的 Youtube 频道有很多服装建模直播,我发现这是学习 MD 最有用的资源。
另外,网上也有很多现成的 3D 服装(特别是在神奇设计师的官方网站或 Artstation Marketplace 上),我将其作为我许多项目的基础。
MD 极易崩溃,MD10 和 MD11 中都有一个 bug,90%的时间它会阻碍模拟服装的保存,因此始终将模拟服装导出为 Alembic 文件,而不是依赖 MD 来保存模拟。
3.模拟清理
在数十次模拟之后,我将 MD 导出的 Alembic 文件导入 Houdini,在那里我进行了大量手动清理,包括:
1) 使用「Soft Transform」手动固定碰撞的布料和角色;
2) 使用「Attribute Blur」减少模拟故障;
3) 使用「Time Blend」将不同 alembic 文件中的首选模拟融合在一起。
注:有两个教程详细介绍了 Houdini 布料清理过程,我在项目的工作中循环观看了这两个教程:
Houdini的布料制作 和 Houdini Vellum生物设置
清理布料模拟,然后作为 Alembic 导出到 C4D。
4.服装模拟的替代方案
对于那些被不切实际的 Houdini Vellum 布料模拟时间和 MD 故障所困扰的人来说,另一种替代方法是在 CC3 中将服装贴在角色的皮肤上,这是一种在游戏制作中常见的技术。
将服装附加到 CC3 中的角色
虽然这是一个很省时的选择,但 CC3 制作的服装缺少真实的布料形态和褶皱。我建议仅对紧密附着到角色(鞋子)的对象使用此方法,或者仅在 MD 布料模拟持续失败的情况下作为服装的最后手段。
注:这是 Reallusion 的官方游戏成品服装创建指南。
5.服装烘焙和着色
在 MD 中完成布料模拟并在 Houdini 中完成清理后,我将 Alembic 文件导入到 C4D 中。MD Alembic 文件总是在 C4D 中显示为一个没有任何选择集的 Alembic 对象,这使得材料分配变得不可能。
这就是 C4D 烘焙发挥作用的地方——我使用该过程将 Alembic 文件转换为具有 PLA(点级别动画)的 C4D 对象:
1) 将 Alembic 对象拖动到 C4D 时间线中;
2) 转到「Functions」;
3) 烘焙对象;
4) 勾选「PLA」;
5) 然后烘焙。
通过以上步骤,我能够得到一个烘焙的 C4D 对象,我可以轻松地选择多边形并使用选择集指定多个材质。
之后,我从有材质的 MD 导出一个 OBJ 文件至 C4D 中,并将选择集直接拖动到烘焙的 garment 对象上。这消除了在 C4D 中手动重新分配材料的需要。
我使用亚麻混纺织物纹理贴图(来自 Quixel Megascans Bridge)和 Redshift 汽车着色器来模拟许多专业芭蕾舞短裙中的亮片面料。
织物材质的特写渲染
注:⑦ Travis Davis 提的一个用来演示正确顺序的教程。
请勿将 AO 或 Curvature 用于模拟服装材质(或任何动画对象),因为它们可能会在最终渲染中产生小故障。
#04 渲染
1.照明与环境
虽然我尽量减少照明,但由于夜间的设置,「Ballerina」项目不可避免地需要大量的修补工作。
夜间 HDRI 没有为室内空间提供足够的环境光,而且作为主要光源的枝形吊灯灯泡太暗。 最后,我在中央吊灯下放置了一个不可见的聚光灯,并使用了一个只影响所有建筑装饰的虚拟聚光灯。虚拟光提供了额外的反弹光,在不破坏情绪氛围的情况下提供了恰到好处的照明。
我还添加了一个 Z 轴乘以「Maxon Noise」控制的「Redshift Environment」,以增加场景的深度。
从外观上看,我在周围地区用 C4D 「Matrix」分散种了 2 种不同的山茱萸树。它们在场景中从地面向上发光,以增加深度。
总的来说,场景照明包括:
1) 顶灯(夜间 HDRI)x 1
2) 枝形吊灯(MESH 灯)x 3
3) 聚光灯(中心)x 1
4) 外部区域灯 x 4
5) 虚拟区域灯位于枝形吊灯下(仅包括建筑装饰)
RS 光照
注:树是用 SpeedTree 生成的。
⑧ 一个非常棒的关于控制 Redshift 环境的教程。
掌握照明需要大量的持续练习。除了每天的 CG 练习外,我还花了很多时间看电影的 b-rolls/分解图。例如,我从罗杰·迪肯的照明和摄影以及韦斯·安德森的构图和色彩搭配中获得了很多灵感。
2.摄像机切换移动
我所有的相机动作都很微妙。这包括推拉、相机转动和平移镜头,所有这些都是由 Greyscalegorilla 的 C4D 插件 Signal 驱动的。
我个人更喜欢使用 Signal 是因为它的无损性,但对于类似的相机运动来说,老式的关键帧可以很好地工作。
信号图
3.草稿渲染
在我准备好角色动画、布料模拟和相机移动后,我开始进行低分辨率测试渲染,以确保在最终渲染期间不会出现任何意外,包括:
1) 动画书(openGL)渲染,以确保动画的时间安排是最佳的;
2) 低分辨率低样例全序列渲染,以确保没有故障;
3) 全分辨率(2K)高样例仍然使用 AOVs(漫反射、反射、折射、体积)进行渲染,以检查导致常见噪点的原因(如果有);
4) 将测试渲染提交给 Renderbus 瑞云渲染的海外兄弟品牌 Fox Renderfarm,以确保最终云渲染与本地渲染匹配。
这个过程持续了 2 个多月,反复迭代渲染和校正。
4.最终渲染和去噪
我对最终渲染使用了相对较高的样例渲染设置,因为 Redshift 中的内部场景通常容易产生噪点。
RS 最终渲染设置
我还为最终渲染启用了运动模糊和焦外成像——与通过合成添加的运动模糊和焦外成像相比,运动模糊和焦外成像在渲染中看起来更好(物理上更精确)。
最终 2K 序列的一半在本地工作站上渲染,其余部分在 Renderbus 瑞云渲染的海外兄弟品牌 Fox Renderfarm 上云渲染,在双 RTX 3090 机器上总共渲染约 6840 小时。我用简洁的视频去除最后一个镜头的噪点,而特写镜头则用单个 Altus(Redshift)去除噪点。
注:使用「Altus Single」去噪时,请在红移「Unified Sampling」下始终关闭「Random Noise Pattern」。
5.Redshift 渲染 GI 技巧
Redshift 的 GI 辐照度缓存计算可能极为耗时。例如,我的最终渲染平均每帧有 5 分钟的 GI 辐照度缓存时间。
在 Vray 的 IR/LC 设置中有一个名为「use camera path」的选项,专门为相机在静止镜头中移动的场景而设计。启用「use camera path」后,Vray 将只计算整个序列的一帧 GI 缓存。
借用 Vray 的一个页面,我使用以下运动模糊设置来计算辐照度缓存的第一帧:
RS 渲染 GI 技巧运动模糊设置
然后使用一个辐照度缓存渲染整个序列。使用一个单独的 GI 缓存渲染项目的两个快照,总体渲染时间缩短了 10%。
注:GI 技巧只适用于运动较少的镜头。例如,当应用到「Ballerina」项目的 2 个特写镜头时,我在角色皮肤上得到了轻补丁和重影。
最终动画
#05 结论
在这个项目上花了几个月的时间,使我对传统角色动画师由衷佩服——我从来没有意识到制作角色动画所需的工作量,以及使 CG 角色逼真所需的微妙细节。
虽然我不认为自己是一个角色艺术家,但我个人认为角色动画在使 CG 环境具有相关性方面非常强大,因此仍然是我个人 CG 追求道路上的重要组成部分。
本文《白天建筑师,晚上CG艺术家,他将建筑的华丽发挥极致》内容由Renderbus瑞云渲染农场整理发布,如需转载,请注明出处。
版权声明: 本文为 InfoQ 作者【Renderbus瑞云渲染农场】的原创文章。
原文链接:【http://xie.infoq.cn/article/f64ae636fcc20c6b6f17f8b61】。未经作者许可,禁止转载。
评论