作为建筑师的他每天工作繁忙,但怀揣着对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担任建筑师。 ArtStation主页: https://www.artstation.com/johnyim *本文是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建模" src="https://images.ctfassets.net/n48l7mstmf1c/5ztzgknzHPtWXhkf9XFIbS/22af97874559bb2270de106f40226be8/GIF_1.gif" style="box-sizing: border-box; vertical-align: middle; border-style: none; margin: 20px auto; display: block; max-width: 100%;"> Rhino建模总是从曲线开始沿曲线复制墙模块并弯曲该模块被重新用于走廊和边墙,以节省时间和(渲染)内存。在过去的一年里,我建立了一个建筑轮廓和装饰物的图书馆,我能够重用和回收用于建筑建模的轮廓及装饰物。 装饰物建模可能是一项艰巨的任务,但有了几个装饰物的建模,我便只需将它们复制并按几何方式重新排列,就获得独特的形状。 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导出的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中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文件中的首选模拟融合在一起。 用「Soft Transform」清理Houdini的模拟布注:有两个教程详细介绍了Houdini 布料清理过程,我在项目的工作中循环观看了这两个教程: 清理布料模拟,然后作为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个多月,反复迭代渲染和校正。 特写镜头I特写镜头II完成镜头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追求道路上的重要组成部分。
|