《芭蕾舞者》:一名建筑师使用C4D、CC和iClone完成的CGI项目

2022-09-23 10:08:19 来源: 超视界-快速动画网 编辑者: 超视界

0 1109

内容来自于“https://magazine.reallusion.com/”

“芭蕾舞者”项目是一部 30 秒的完整 CG 动画,是 Kay John Yim 的第一个个人项目,以在巴洛克式圆形大厅休息室内上演的动画逼真的 CG 角色为特色。首席芭蕾舞演员主要使用Character Creator制作,在 iClone 中制作动画,并使用 Redshift 和 Cinema4D 渲染。

Kay John Yim是位于伦敦的Spink Partners的特许建筑师。他曾在英国、香港、沙特阿拉伯和卡塔尔从事过广泛的项目,包括房地产开发和景观设计。他的作品曾出现在Maxon、Artstation、CG Record 和 80.LV 上。

Yim 对利用技术制作未建成建筑的热情日益高涨,这逐渐驱使他担任 CGI 艺术家的角色,提供的视觉效果不仅可以作为客户演示,还可以作为设计和施工团队之间的沟通方式。自 2021 年 COVID 锁定以来,他挑战自己学习建筑以外的 CG 学科课程,并从那时起赢得了十多个 CG 比赛。

这篇制作教程文章是由 Kay John Yim 撰写的“芭蕾舞者:CGI 幻想”的简短版本。完整版请访问瑞云新闻中心。

芭蕾舞者的制作

动画代表了我在所有艺术追求中的内心挣扎,无论是隐喻还是字面上。

芭蕾舞,一种众所周知的艺术形式,具有严格的审美标准,极易受到公众和自我批评,是我日常专业和艺术实践的隐喻。作为一名建筑师,我从事建筑可视化工作,我的同事、高级建筑师和客户正在仔细检查每一个细节。作为一名艺术家,我在夜间从事个人 CG 项目,其中我会进行数百次甚至数千次迭代以获得完美的构图和配色方案。无论我的专业和艺术技巧多么精通,内心的挣扎永远不会消失。

经过几个月的反复试验,我学到了很多关于高效角色动画和渲染的知识。这篇文章是任何像我这样想要将他们的 CG 艺术提升到一个新水平的独立艺术家的中级指南。

该指南分为 4 个主要部分:

(1).架构

(2).角色

(3).动画

(4).渲染

我使用的软件包括:

(1).Rhino

(2).Moment of Inspiration 4 (MOI)

(3)Cinema4D (C4D)

(4).Redshift (RS)

(5).Character Creator 3 (CC3)

(6).iClone

(7).ZBrush & ZWrap

(8).XNormal

(9).Marvelous Designer 11 (MD)

(10).Houdini

1. 架构

我的主要建筑建模软件是 Rhino。

有许多不同的方法来处理架构建模。与 Cinema4D (C4D) 或 Houdini 等其他一些更流行的 DCC 相比,Rhino 的主要优势在于它能够处理大量非常详细的曲线。

作为一名建筑师,我建造的每个模型总是从一条曲线开始,通常是墙段、檐口或踢脚线段的形状,沿着平面图的另一条曲线扫过。Rhino 的命令列表一开始可能看起来很庞大,但我几乎只使用了其中的十几个来将曲线转换为 3D 几何图形:

(1).Rebuild

(2).Trim

(3).Blend

(4).Sweep

(5).Extrude

(6).Sweep 2 Rails

(7).Flow Along Surface

(8).Surface from Network of Curves

架构建模的关键是尽可能始终使用参考。我总是在屏幕的右下角打开 PureRef,以确保我以正确的比例和比例建模。这通常包括实际照片和建筑图纸。

对于这个特定的项目,我使用了慕尼黑的 Amalienburg Hunting Lounge作为建筑的主要参考。

项目的 PureRef 板

虽然建筑由 3 个部分组成——圆形大厅、走廊和端墙——但它们本质上是相同的模块。因此,我最初建模了一个由镜子和窗户组成的墙壁模块,复制并沿着圆圈弯曲以获得圆形大厅的墙壁。

Rhino 建模总是从曲线开始

墙模块复制并沿曲线弯曲

该模块被重新用于走廊和端墙,以节省时间和(渲染)内存。在过去的一年里,我建立了一个建筑型材和装饰品库,我能够重复利用和回收利用型材和装饰品来进行建筑建模。

装饰造型可能是一项艰巨的任务,但我只是简单地复制和重新排列它们以几何形状获得独特的形状。

犀牛饰品放置

Rhino 中的所有对象然后按材质分配到不同的层;这使得后来在 C4D 中的材质分配变得更加容易。

按材质将对象分配给图层

注释:

熟悉 Rhino 导航的最好方法是为小尺寸对象建模。Simply Rhino 有一个很棒的初学者系列在 Rhino 中为茶壶建模:对于任何需要的人,都可以在 Textures.com 等 3D 模型商店购买预制的装饰品;一些装饰品制造商在Sketchfab和3dsky上提供免费模型可供下载。

从 Rhino 导出到 C4D

Rhino 主要是一个 NURBS (Non-Uniform Rational B-Splines) 软件;尽管 NURBS 模型在表示曲线和曲面数据方面非常准确,但大多数渲染引擎或 DCC 不支持 NURBS。

为此,我将 NURBS 和 MESHES 分别导出为 .3dm 和 .FBX,并使用 Moment of Inspiration (MOI) 将 NURBS 模型转换为网格。

MOI 具有最好的 NURBS 到四边形网格转换(在 Rhino 或任何其他 DCC 上) - 它始终提供干净的网格,然后可以轻松编辑或 UV 映射以进行渲染。

从 MOI 导出

导入 C4D

将 FBX 文件导入 C4D 相对简单,但有几件事我需要注意,特别是导入设置、模型方向和文件单位,按操作顺序列出如下:

(1)在 C4D 中打开一个新项目(项目单位为 cm);

(2)合并FBX;

(3)在合并面板中检查“几何”和“材料”;

(4)在 Y 轴上将导入的几何方向 (P) 更改 -90 度;

(5)使用脚本“AT Group All Materials”自动将Rhino材料组织成不同的组。

导入从 MOI 导出的 FBX

导入直接从 Rhino 导出的 FBX

我在Rhino中建模了一半架构,然后将其镜像为C4D中的实例,因为一切都是对称的。

C4D 实例和镜像

地板(凡尔赛镶木地板)采用照片纹理方法建模,最受 CG 艺术家 Ian Hubert 的吹捧。我在平面上应用了一张 Versailles Parquet 瓷砖照片作为纹理,然后用“刀”工具将平面切成薄片,以获得沿瓷砖灌浆的反射粗糙度变化。这让我可以在Redshift中使用 Curvature 添加微妙的颜色和污垢变化。

然后将地砖放在克隆机下进行复制并跨越整个地板。

克隆地砖

注释:

C4D 和 Rhino 使用不同的 Y 和 Z 方向,因此直接从 Rhino 导出的 FBX 必须在 C4D 中旋转。

建筑着色(Cinema4D + Redshift)

由于我事先按材质对所有网格进行了分组,因此分配材质就像将材质组拖放到立方体贴图或三平面贴图一样简单。我使用 Textures.com、Greyscalegorilla 的 EMC 材料包和 Quixel Megascans 作为我所有着色器的基础材料。

为了使 ACES 在 Redshift 中正常工作,必须手动将每个纹理分配到 RS 纹理节点中的正确颜色空间;一般漫反射/反照率贴图属于“sRGB”,其余(粗糙度、位移、法线贴图)属于“Raw”。我的建筑着色器主要是照片纹理和“污垢”纹理的 50/50 混合,以提供额外的真实感。

2.角色

基本角色是在 Character Creator 3 (CC3) 中创建的,带有Ultimate Morphs和SkinGen 插件——这两个插件都对艺术家非常友好,参数一目了然。

Ultimate Morphs 为角色的每个骨骼和肌肉大小提供了精确的滑块控制,而 SkinGen 为肤色、皮肤纹理细节和化妆提供了广泛的预设。我还使用 CC3 的 Hair Builder 为我的角色应用了可用于游戏的头发网格。

CC3 变形和头发生成器

面纹理

面部是 CG 角色最重要的部分之一,需要格外注意。我发现添加逼真细节的最佳工作流程是使用纹理 XYZ 的 VFace 模型和 Zwrap 的“杀手工作流程”。

VFACE是一组由Texturing XYZ制作的最先进的摄影测量人体头部模型;每个 VFACE 都带有 16K 的照片扫描皮肤纹理、置换和实用贴图;Zwrap 是一个ZBrush 插件,它允许将预先存在的拓扑自动拟合到自定义模型。

“Killer 工作流程”本质上将 VFACE 网格形状与CC3 头部模型相匹配;使用 Killer 工作流程,一旦 2 个网格形状匹配,我就能够将所有 VFACE 细节烘焙到 CC3 头部模型。

我对“Killer 工作流程”的改编可以分解如下:

(1)将 T 形角色从 CC3 导出到 C4D;

(2)删除CC3角色头部以外的所有多边形;

(3)将 CC3 头部模型和 VFACE 模型都导出到ZBrush;

(4)使用 MOVE/Smooth 刷子操纵 VFACE 模型,使其尽可能贴合 CC3 头部模型;

(5)启动 ZWRAP,点击并匹配尽可能多的点,特别是在鼻子、眼睛、嘴巴和耳朵周围;

(6)让 ZWRAP 处理匹配的点;

(7)然后 ZWRARP 应该能够输出与 CC3 头部模型完美匹配的 VFACE 模型;

(8)将两个模型输入 XNormal 并将 VFACE 纹理烘焙到 CC3 头部模型。

ZWRAP 中 VFACE(左)和 CC3 HEADS(右)的匹配点

注释:

Textureing.XYZ 官方 Youtube 频道上的完整“杀手级工作流程”教程:VFace – Amy Ash 入门。我建议在处理之前将匹配点保存在 ZWRAP 中。我还建议在 XNormal 中单独烘焙所有 VFACE 贴图,因为它们的分辨率非常高,并且在批量烘焙时可能会导致 XNormal 崩溃。

皮肤着色(Cinema4D + Redshift)

准备好 XYZ 纹理贴图后,我就从 CC3 导出了其余的角色纹理贴图。之后,我将角色导入C4D,并将所有材质转换为Redshift材质。

在撰写本文时,不幸的是,Redshift 还不支持Randomwalk SSS (一种在其他渲染器(如Arnold )中发现的非常逼真且物理精确的次表面散射模型),因此在渲染皮肤时需要进行更多调整。

3 级次表面散射由具有不同“颜色校正”设置的单一漫反射材料驱动。头部着色器混合了 CC3 纹理和 VFACE 纹理;VFACE 多通道位移与“microskin”CC3 位移图混合。

角色外观开发

将“红移对象”应用于角色以启用置换——只有这样 VFACE 置换才会出现在渲染中。

人物特写渲染

头发着色

在尝试使用 C4D Ornatrix、Maya Xgen 和 Houdini 进行修饰后,我决定将 CC3 中的烘焙头发网格用于项目“Ballerina”会更加高效。我使用红移“玻璃”材质,将CC3 头发纹理贴图输入“反射”和“折射”颜色槽,因为头发(在现实生活中)像微小的玻璃管一样对光做出反应。

注释:

对于任何有兴趣将 CC3 头发提升到新水平的人,CGcircuit 有一个很棒的牛皮纸教程,专门用于头发生成和模拟。

Houdini中CC3网格头发到头发几何转换的早期测试

3. 动画

角色动画: iClone

然后我将CC3 Character导出到 iClone 以制作动画。我考虑了几种处理逼真角色动画的方法,其中包括:

(1)使用现成的动作捕捉数据(Mixamo、Reallusion ActorCore);

(2)委托一个动作捕捉工作室制作定制的动作捕捉动画;

(3)使用动作捕捉套装(例如 Rokoko 或 Xsens)进行自定义动作捕捉动画;

(4)老式的关键帧。

在尝试了各种现成的动作捕捉数据后,我发现Mixamo 动作捕捉过于通用,其中大部分看起来非常机器人;Reallusion Actorcore 有一些非常逼真的动作,但我找不到该项目所需的确切内容。由于没有预算和(我的)非常具体的角色动作要求,选项 2 和 3 是不可能的。这让我想到了老式的关键帧。

首先,我截取了芭蕾舞表演的视频,并在 PureRef 中逐帧排列。然后我将 PureRef 参考(半透明度)覆盖在iClone上,并使用“ Edit Motion Layer ”调整每个角色关节以匹配我的参考。

姿势 1

姿势 2

然后将动画角色导出到Alembic文件。

最终角色动画

注释 :

虽然我的最终项目概念以慢动作描绘了芭蕾舞演员,但我最初的想法实际上是为 20 秒的芭蕾舞舞蹈设定关键帧,但我很快意识到这是个坏主意,原因有很多:

(1)在慢动作中可以插入很多帧,但是实时运动涉及很多独特的帧,因此需要更多的调整;

(2)接着会有更多独特的帧意味着更多的渲染问题(闪烁、镶嵌问题等)。

我最初想法的早期测试渲染。

考虑到这是我的第一个角色动画项目,我得出了一个慢动作风格序列的结论——两个独特的姿势,每个姿势有 160 帧运动。

服装模拟

布料模拟是该项目迄今为止最具挑战性的部分。我考虑的两个主要布料模拟/求解器是Marvelous Designer (MD)和Houdini Vellum。

虽然 Houdini Vellum 比 Marvelous Designer 更通用、更可靠,但我个人认为它太慢了,因此没有农场是不切实际的(Houdini Vellum 中的一帧布料模拟可能需要 3 分钟,而 Marvelous 中则需要 30 秒具有 128GB 内存的 Threadripper PRO 3955WX 上的设计师)。

MD 中的布料模拟虽然设置起来通常比 Houdini 牛皮纸要快得多,但并不像我想象的那么简单。MD 中的模拟服装总是带有某种形式的故障。这包括布料抖动、穿透字符或完全错位。以下是我调整的一些设置,以尽量减少故障:

(1)使用“Tack”将服装的部分连接到角色上;

(2)增加布料的“密度”和“空气阻尼”,以防止衣服移动得太快而随后移出位置;

(3)单独模拟服装的各个部分——虽然在物理上并不准确,但让我能够更快地进行迭代和调试。

除了上述调整之外,我还减少了“重力”以实现慢动作效果。

MD模拟

注释 :

Marvelous Designer Youtube 官方频道有很多服装造型直播,我认为这是学习 MD 最有用的资源。或者,网上有很多现成的 3D 服装(特别是在 Marvelous Designer 的官方网站或 Artstation Marketplace 上),我将其用作我很多项目的基础。

MD 极易崩溃,MD10 和 MD11 中也存在一个错误,导致 90% 的时间无法保存模拟服装,因此请始终将模拟服装导出为 Alembic 文件,而不是依赖 MD 来保存模拟。

模拟清理

经过数十次模拟后,我会将 MD 导出的 Alembic 文件导入到 Houdini 中,我在其中进行了很多手动清理,其中包括:

(1)使用“Soft Transform”手动修复碰撞的布料和角色;

(2)使用“属性模糊”减少模拟故障;

(3)使用“时间混合”将来自不同 alembic 文件的优选模拟混合在一起。

使用“Soft Transform”在 Houdini 中清理模拟布料

然后将清理过的布料模拟作为 Alembic 导出到 C4D。

服装模拟的替代方案

对于因不切实际的 Houdini Vellum 布料模拟时间和 MD 故障而感到沮丧的人,另一种选择是在 CC3 中将服装直接贴在角色的皮肤上——这是游戏制作中最常见的技术。

在 CC3 中将服装附加到角色上

注释:

在此处查看 Reallusion 的官方指南,了解如何制作适合游戏的服装。

服装烘焙和着色

完成 MD 中的布料模拟和 Houdini 中的清理后,我将 Alembic 文件导入 C4D。MD Alembic 文件在 C4D 中始终显示为一个没有任何选择集的 alembic 对象;这使得材料分配变得不可能。

这就是 C4D 烘焙发挥作用的地方——我使用 PLA(点级动画)将 Alembic 文件转换为 C4D 对象的过程:

(1)将alembic对象拖入C4D时间线;

(2)转到“功能”;

(3)“烘焙对象”;

(4)检查“PLA”;

(5)然后烘烤。

通过上面的步骤,我能够得到一个烘焙的 C4D 对象,我可以轻松地选择多边形并使用选择集分配多个材质。然后我从 MD 导出一个带有材质的 OBJ 文件,导入到 C4D 中,并将选择集直接拖到烘焙下来的服装对象上。这消除了在 C4D 中手动重新分配材料的需要。

我混合了亚麻纹理贴图(来自 Quixel Megascans Bridge)和 Redshift Car Shader 来模拟许多专业芭蕾舞短裙中的亮片面料。

织物材料的特写渲染

警告 :

不要将 AO 或曲率节点用于模拟服装材质(或任何动画对象),因为它们可能会在最终渲染中产生故障。

4. 渲染

照明与环境

尽管我尽量将灯光保持在最低限度,但由于夜间设置,“芭蕾舞者”项目不可避免地需要大量修补。

夜间的 HDRI 没有为室内空间提供足够的环境光,而作为主要光源的吊灯灯泡太暗了。最后,我在中央枝形吊灯下放置了一个不可见的聚光灯,并使用了只影响所有建筑装饰的假聚光灯。假灯提供了额外的反射光,提供了恰到好处的照明量,而不会破坏喜怒无常的气氛。

我还添加了在 Z 轴上控制的“ Redshift Environment ”与“ Maxon Noise ”相乘,为场景提供更多深度。在外观方面,我在周边布置了两种带有 C4D矩阵对象(Matrix)。它们在场景中从头开始被照亮,以提供额外的深度。总之,场景的照明包括:

(1)顶灯(夜间 HDRI)x 1

(2)吊灯(网状灯)x 3

(3)聚光灯(中心)x 1

(4)外部区域灯 x 4

(5)位于枝形吊灯下的假区域灯(仅包括建筑装饰)

RS灯

注释:

树是用 SpeedTree 生成的。照明需要大量一致的练习才能掌握;除了日常的 CG 练习之外,我还花了很多时间观看电影的 b-rolls/breakdowns——例如,我从Roger Deakin的灯光和摄影,以及Wes Anderson的构图和色彩中获得了很多灵感组合。

相机运动

我所有的相机动作都非常微妙。这包括小车、相机胶卷和平移镜头,均由 Greyscalegorilla 的 C4D 插件 Signal 驱动。我个人更喜欢使用 Signal,因为它具有非破坏性,但老式的关键帧对于类似的相机运动来说效果很好。

草稿渲染

一旦我准备好角色动画、布料模拟和摄像机移动,我就开始进行低分辨率测试渲染,以确保在最终渲染过程中不会有任何意外,这包括:

(1)flipbook (openGL)渲染,以确保动画的时间是最佳的;

(2)低分辨率低样本全序列渲染,以确保没有故障;

(3)全分辨率 (2K) 高样本仍然使用 AOV(漫反射、反射、折射、体积)进行渲染,以检查导致流行噪声的因素(如果有);

(4)向Fox Renderfarm提交测试渲染,以确保最终渲染与我的本地渲染匹配。

这个过程持续了两个多月,反复渲染和修正。

特写镜头一


特写镜头二


最终的镜头


最终渲染和去噪

我为最终渲染使用了相对较高的采样渲染设置,因为Redshift中的室内场景通常容易出现噪点。

RS 最终渲染设置

我还为最终渲染打开了运动模糊和散景——总的来说,与通过合成添加的运动模糊和散景相比,运动模糊和散景在渲染中看起来更好(更准确)。

最终 2K 序列的一半在本地工作站上渲染,其余在Fox Renderfarm上渲染,在双 RTX 3090 机器上总共需要大约 6840 小时的渲染时间。我使用 Neat Video 对最终镜头进行降噪,而特写镜头使用 Single Altus(在 Redshift 中)进行降噪。

注释:

使用“Altus Single”进行降噪时,请始终在 Redshift“Unified Sampling”下关闭“Random Noise Pattern”。

Redshift 渲染 GI 技巧

Redshift 的 GI 辐照度缓存计算可能非常昂贵;例如,我的最终渲染每帧平均有 5 分钟的 GI 辐照度缓存时间。

在Vray中,IR/LC 设置中有一个名为“使用摄像机路径”的选项,专为摄像机在静止场景中移动的场景而设计。一旦启用“使用相机路径”,Vray 将只计算整个序列的一帧 GI 缓存。借用Vray的一个页面,我使用下面的运动模糊设置来计算Irradiance Cache的第一帧:

RS渲染GI技巧运动模糊设置

然后使用一个辐照度缓存来渲染整个序列。项目的两个镜头使用一个 GI 缓存进行渲染,整体渲染时间缩短了 10%。

注释 :

GI 技巧只适用于运动很少的镜头;例如,当应用于项目“芭蕾舞者”的 2 张特写镜头时,我在角色皮肤上出现了光斑和重影。

结论

在这个项目上花费了几个月的时间后,我对传统的角色动画师产生了一种欣赏——我从未意识到制作角色动画所涉及的工作量,以及将令人信服的 CG 角色带入生活所需的细节的微妙之处。

虽然我不认为自己是一名角色艺术家,但我个人认为角色动画在使 CG 环境具有关联性方面非常强大,因此仍然是我个人 CG 追求前进的重要组成部分。

了解更多:

• Kay John Yim’s personal site https://johnyim.com/

• Kay John Yim’s ArtStation https://www.artstation.com/johnyim

• Character Creator https://www.reallusion.com/character-creator/download.html

• iClone https://www.reallusion.com/iclone/download.html

• Reallusion https://www.reallusion.com/