Cinema 4D* 中令人惊叹的体积效果第 2 部分: 喷发状等离子体云和块状云

在 3D 数字艺术中创建太阳耀斑和浮云

太阳 - 借助体积着色器以动画的形式使用可见光第 1 部分:可见光的魔力解释了可见体积光如何用作三维着色器(比如噪声着色器和梯度着色器)的“水族箱”。这种类型的光容器支持创建非阴影投射云,甚至是复杂的自发光结构,比如恒星星云。这包括创建不断移动、不断扩大的复杂结构,比如带有独特太阳耀斑和喷发的动画日冕。本文将对第 1 部分的内容进行扩展,深入研究如何创建更为复杂的视觉,比如逼真、炽热、细节丰富的太阳。

案例研究:时间问题(太阳)

观看当代科幻电影或电视纪录片时,您会发现对视觉效果 (VFX) 工作室来说,描绘细节级别高的逼真动画太阳是一项非常艰巨的任务 — 经典的粒子和流体场景,以及数日不眠不休地模拟。但这部德国电视纪录片 ZDF Terra X 的简介序列上演的恒星核聚变仅使用了我们在第 1 部分中使用的技巧。

浏览 NASA 的镜头你会发现太阳表面有非常丰富的视觉细节,借助 Cinema 4D* 噪声着色器可以再现这些细节。例如,pPhotospheres 颗粒可以通过移位的 Voronoi 进行复制,也可以通过 VL 噪声产生变形。

体积更大的现象,例如太阳耀斑、等离子体光线等,也可如此,因为噪声和梯度可用作体积光源的内容。

同心场景

在第 1 部分重建的恒星星云中,我们通过使用 3D – 线性梯度将多种现象,比如“小雾蓝”和“小雾紫”,限制在星云的不同区域,因此无需担心纹理投影。相反,对于像太阳这样包含不同活动区域和同心光发射的球体来说,纹理投影非常重要。

由于目前使用同心 Omni 光描绘体积光,因此我们必须在纹理标记:UV - 或在本文中为 – “球体”中处理适当的几何纹理投影。原因有以下两点:

光线

至于其他体积效果,我们将光源用作噪声容器,也是为了创建同心光线。应用于“对象空间”的噪声将在 Omni 光体积中显示其特定的 3D 结构,但不会像同心光线那样,如图 1 左侧所示。只有在 UV (2D) 模式下应用噪声,才会产生同心光线,如图 1 右侧所示。这需要在纹理标记:UV - 或在本文中为 – “球体”中进行正确的几何纹理投影。

2D 掩模

将几种现象限制在太阳区域(如赤道区域)时,需使用经典的 2D (V) 梯度,它还需要 UV 或球体投射。例如:太阳耀斑在“对象空间”中通过 3D 噪声创建,但被 2D (V) 梯度屏蔽,如图 2 所示。

solar images

图 2.左侧 — 对象空间中的噪声,右侧 — UV (2D) 空间中带有球体纹理投影的噪声

复杂度的简单分层

和许多视觉效果一样,复杂度来源于分层和组合不同的简单元素。对于不同大小的光线、太阳耀斑、喷发等视觉现象,可各使用一种 Omni Light,或多或少都比太阳球体大,如图 3 所示。只需八种体积 Omni 光,就可完成所有体积复杂度,如图 4 所示。

omni rays UI settings
图 3. 太阳耀斑的着色器属性

omni light settings
图 4.使用 Omni Light 的光线

有关详细分析请参阅 分析 - 在 Cinema 4D 中创建动画太阳

同心限制

借助我们在第 1 部分中介绍的技巧,将日冕、光线和太阳耀斑作为纹理应用在体积 Omni 光上。由于 Omni 光的“可见性”选项卡包含“内部距离”和“外部距离”参数,因此体积效果能够以同心圆的形式从太阳表面淡出,进入太空。

3D object texturing restrictions UI
图 5.有关同心限制的可见光设置

为了更好地控制这种行为,可将 3D 球体梯度用作纹理中的掩模,如图 8 和图 9 所示。梯度的优势在于它能对效果的淡出进行微调,同时支持施加湍流。

mask turbulence noise setting in UI
图 6.用球体 3D 梯度屏蔽小规模湍流噪声

gradient properties UI settings
图 7.小光线的 3D 梯度属性

太阳耀斑

太阳耀斑的效果可能看起来非常复杂,但实际上非常简单:由一种 Omni Light 组成,其中包含一种大比例 Naki 噪声,按照“动画速度”轻微移动,并用在“对象空间”中。Naki 位于图层着色器中,通过“着色器”效果进行着色,并由 2D - V 梯度屏蔽在差不多的赤道区域,如上图 2 所示。

Naki 噪声的“全局比例”随时间推移发生变化,也就是说噪声从太阳中心以同心圆的形式增长。仅这样就已经产生了类似等离子体的大规模结构的错觉。

为了更好地控制太阳耀斑消失于太空的方式,不断增长的 Naki 可以用静态但强湍流 3D 球体梯度来屏蔽,还可应用于“对象空间”。这样将生成从太阳演变而来并剧烈消失在太空中的太阳耀斑。

太阳表面

使用着色器设置创建类似实际太阳表面的效果,一切都在“亮度通道”中进行。与体积着色类似,这里“图层着色器”非常关键,因为噪声、梯度和图层着色器效果与不同的图层模式和不透明度相互堆叠在一起。此外,几个图层都可用来屏蔽上面的图层,如图 8 所示。

shader properties in the material editor UI
图 8.太阳表面着色器属性

在“位移通道”中,根据“亮度通道”的视觉细节,“图层着色器”内的几种噪声会令太阳的多边形 Hires 几何体变形,如图 9 所示。

3D object displacement map settings
图 9.位移通道中的参数

通过连接表面的 MoGraph 克隆和 Cinema 4D 中的 pCONNECTOR 插件并将它们放在“Sweep”对象中,可以对大比例等离子弧进行程序建模。

太阳之旅

00:11 分,动画摄像机正进入太阳体积。通过动画混合成类似第 1 部分介绍的恒星星云的序列来进行合成,可以完成这种过渡。必须注意,对于这种过渡,外部摄像机的最终速度的方向和线性速度必须与内部摄像机的起始速度相同。

借助标准渲染器和英特尔® Embree 加速实现快速渲染

自版本 5 (1998) 以来,基于样本的体积光已成为 CINEMA 4D 的一项特性,而且这种样本与现代样本(比如面积阴影、粗糙反射、环境遮挡)不同。CINEMA 4D 以不同的方式对它们进行处理,这意味着:渲染这种场景时,“老旧”标准渲染器的速度比“新式”物理渲染器更快。

此外,标准渲染器自版本 19 以来已采用英特尔® Embree 技术实现了加速。英特尔® Embree 是面向最新英特尔® 处理器优化的光线追踪库。渲染速度明显加快 — 相比版本 18,在某些情况下速度加快高达 100%。英特尔® Embree 为经典好用的标准渲染器注入了新的活力。

默认情况下,噪声和程序着色器也有 SAT 纹理插值,因此对渲染来说,除了几何特性外不需要抗锯齿。换句话说,标准渲染器以极快的速度渲染场景 — 对此处产生的体积复杂度尤其如此。

浮云 - MoGraph Cloners 用作体积着色器设置的容器

应用于恒星星云和太阳的技巧将体积光源的体积用作 3D 噪声容器。尽管这种光容器使用起来实际上非常简单,但它有一个缺点,所有创建的结构和效果实际上都是可见光,而且无法具备不透明性和投射阴影。因此,如果您采用这一技巧创建云,这种云将永远不会在地面或自身上投下阴影。

如果要为阳光灿烂的夏日天空创建典型的阴影投射浮云,那么请采用基础相同(体积着色器),但容器不同(MoGraph Cloner)的技巧。

MoGraph – 程序克隆和动画

在 Cinema 4D 专用工具集中,MoGraph 可为运动设计师提供各种功能强大的工具,支持他们实现程序性非破坏性动画。MoGraph 的核心功能是通过某些规则,比如沿样条线、以蜂窝阵列的形式或在对象的表面,克隆对象。诸如随机、着色器或时间之类的效果器可帮助克隆系统进行变化和移动。

尽管 MoGraph 可提供大量令人激动的功能吸引您畅玩和试验,但这里介绍的技巧可能是最无聊的:将简单平面克隆至将成为 3D 噪声容器的线性堆栈。

案例研究:苏格兰 — 高地的神话

德国电视纪录片项目 ZDF Terra X 特别介绍了苏格兰和英格兰的地理起源。“特写”镜头中的体积云和大气采用基于 MoGraph 的技巧创建而成,如下图所示。

volumetric clouds over landscape
图 10.从太空看到的体积云 — 用 MoGraph 和 3D 创建而成。

volumetric clouds over landscape
图 11.苏格兰尼斯湖上方用 MoGraph 和 3D 创建的体积云。

video still
图 12.苏格兰奥克尼群岛上方用 MoGraph 和 3D 噪声创建的体积云视频

块状浮云教程

如果要理解并熟练应用这种技巧,请按照下面的简短教程进行操作。

shader properties in the material editor UI
图 13.用于天空对象材质的颜色梯度

创建环境

通过“天空对象”创建一个新场景,并应用 2D 梯度处理该场景,如上图 13 中的示例。在“世界空间” -200cm 的位置放置一个 1 x 1 段、1200 x 1200 厘米大小的“平面图元”。涂上蓝色材质。创建一个摄像头,从平顶视图看它。空场景应类似于下图 14 中的示例。现在创建一种无限光,并应用光线追踪阴影 — 只是为了获得快速暗影效果,不论这种效果多么不现实。

High altitude landscape scene
图 14.空场景示例

堆叠平面

在主菜单/ MoGraph/ Cloner 下方创建一个 MoGraph Cloner,并使其从属于参数与地板平面相同的简单平面图元。平面将沿 Cloner 的 Y 轴克隆三次。

在“对象管理器”中单击 Cloner,并前往 Cloners Attribute Manager。您会看到默认情况下 Cloning Mode 设为 Linear,和我们想的一样。暂时将克隆计数保留为 3。将距离模式从 Per Step 设为 End Point,前往 P.Y 并输入 100 cm。这样将在此范围内沿世界的 Y 轴分布所有克隆的平面。

创建云材质

通过激活“材质 Alpha 通道”创建一种n新材质,并创建一个噪声着色器。单击噪声预览。在噪声内部选择 Naki,将“空间”设为“世界”,并将“全局比例”设为 2500%。将 Seed 设为 668,Low Clip 设为 50%,High Clip设为 100%。这样会稍微缩小噪声等级,以便您在黑色/透明空间中获得相互分开的白色/不透明的云朵(见图 15)。

High altitude landscape scene
图 15.云基础噪声参数

调整视口以便更好地交互

前往“视口”菜单/选项,然后选择 Enhanced OpenGL*(如果尚未激活)。选择“噪声和透明度”

打造浮云效果

材质应用于 cloner。现在您将获得不同的噪声显示,随着平面的不同发生变化。

逐步将克隆计数增加至 50,看看会发生什么。MoGraph Cloner 的切片 – “平面” — 充当 3D 噪声的一种“空间样本”,创建块状浮云。克隆次数越多,结果越平滑。因此现在计数充当一种“样本计数”。

增加光线深度

渲染时您会得到一些漂亮、柔软的浮云,但您会注意到这里出现了黑色的尖锐伪影,如图 16 所示。这是因为光线追踪器的光线深度已用完。这意味着,通过数量有限的透明度(Alpha-Channel 启用时的克隆平面)后,光线停止并渲染黑色像素。

artifacts in landscape scene
图 16.云中的尖锐黑伪影

为避免这种情况,可前往“渲染器设置” (Cmd – B) 并导航至“选项”。将光线深度参数调整至克隆计数加 1,在本示例中为 51。阴影深度也可这样处理,以确保一定数量的透明度后方的阴影不被切除,如图 17 所示。因为这样会延长渲染时间,因此我们暂时使用光源中的光线追踪阴影。在最终渲染期间,您可以将其改为逼真的“区域阴影”。

cloud depth rendering
图 17.更改光线深度和阴影深度可避免黑色伪影

垂直限制云

我们可以清楚的看到,云的顶部和底部似乎被 cloner 堆栈的垂直边界切断。为了将其环绕,可用垂直 3D 梯度屏蔽 3D 噪声。

在云材质的 Alpha-Channel 上单击“纹理”旁边的三角形按钮,并选择“图层”。这样您就将噪声着色器放入了图层着色器。返回至 Alpha-Channel 并取消选中图像 alpha,以确保图层着色器的灰度信息被视作 Alpha-Information。

在图层着色器内部双击噪声并将其命名为"Cloud-Noise"。然后单击着色器并创建梯度着色器。至于类型,选择 3D – Linear。现在我们必须考虑如何调整梯度,以准确地自下而上屏蔽噪声。

由于 cloner 的最低平面位于 Y=0 且 cloner 本身的高度为 100 厘米,因此将 Y 轴上的梯度调整为自 0 厘米起 100 厘米止,梯度本身将从黑变为白到黑,如图 18 所示。将梯度模式设为 Multiply 并进行渲染。

gradient editor
图 18.垂直限制云的梯度

由于我们自下而上轻柔地屏蔽了云噪声,因此现在效果更好,如图 19 所示。但掩模太过轻柔和均匀。我们不将内置湍流应用于梯度,而是进行更复杂的操作。

Material Editor noise mask settings
图 19.轻柔屏蔽云噪声

在图层着色器中,右击并选择复制着色器/粘贴着色器复制粘贴云噪声。双击噪声并将其命名为"Mask-Noise"。将它放在梯度上。

将噪声调整为 500% 全局比例,并通过将 Low Clip 调为 85%High Clip 调为 0%,将其倒转过来。通过“材质编辑器”右上角的箭头按钮返回至“图层着色器”。将下方梯度的图层模式设为“正常”。您的设置应如图 20 所示。

rendering of clouds with cloud shader
图 20.云着色器的中间设置

现在将 Mask-Noise 的 Layer-Mode 设为 Levr,看看会发生什么:一种高对比度版本的噪声已从梯度中删除,因此可应用更多结构和调整。将噪声的不透明度降为 70%,以使边缘更柔软,如图 21 所示。在此将梯度的“模式”设为 multiply。渲染之前,前往 Cloud-Noise 并将 Low Clip 设为 20%。然后再次渲染。结果应如图 22 所示。

cloud shader final settings
图 21.云着色器的最终设置

vertical restrictions on shader
图 22.垂直限制的结构

阴影亮度 - 模拟一种次表面散射

云越来越逼真,但看起来有点灰暗。这是因为每个 MoGraph 切片都在下方的切片上投下了阴影 — 这就是创建云的方式。为了调亮阴影区域,可单独使用着色器设置模拟对象阴影侧的一种自发光:阴影亮度。

尽管该着色器设置最初是为了模拟对象阴影侧的漫射光,不过当用在云上时,您也可以用它来模拟次表面散射。“阴影亮度”包含两个重要组成部分:

  • Lumas Shader:检测有光的地方和有阴影的地方。Lumas 中的着色器选项卡显示 "show me where I am in the light",像颜色通道一样。
  • Colorizer Shader:将 Lumas 反转为"show me where I am in the shadow",并用于将颜色屏蔽到对象的阴影侧。

尽管“阴影亮度”位于“亮度通道”中,但着色器设置可稍微调亮“阴影”区域。

激活云材质的“亮度通道”,并创建图层着色器。在图层着色器内部创建一个 Lumas Shader。停用 Lumas Shader 的所有反射方面。在“着色器”下方选择 100% 亮度并将“颜色”调为亮白色。返回至“图层着色器”,右击 Lumas 并选中 Colorizer,将 Lumas 放在 colorizer shader 中。在 Colorizer Shader 中将梯度从白调为黑。

返回至“图层着色器”,单击着色器按钮,创建颜色着色器。将颜色着色器调为淡蓝色。返回至“图层着色器”将颜色着色器不透明度设为 8%。选择图层掩模作为 colorizer 的图层模式。您的设置应如图 23 所示。现在您正在将亮蓝色屏蔽至云的阴影侧。

cloud luminance rendering
图 23.阴影亮度设置

增加光敏感度

看一下云材质的颜色通道,你会发现,亮度设为了 Lambert。Lambert 是指双向散射分布函数 (BSDF)。简单来说,它是描述从最亮点到最暗点,光如何在对象表面分布的函数。Lambert 正在模拟完美漫射表面,而另一个可用 BSDF — Oren Nayar 正在额外计算微面,以使外观的饱和度更高。

尽管对于明亮云彩来说 Lambert 是一个不错的选择,但 Oren-Nayar 也有一个优势:漫射级别和粗糙度参数。

通过粗糙度,您可以无缝混合 Lambert(0% 粗糙度)和 Oren-Nayar(100% 粗糙度)行为。此外,通过漫射级别,你可以调整光敏感度。因此,粗糙度设为 0%,漫射级别设为 200% 后,我们的 Lambert Illumination 就具备更高的光敏感度和亮度。

cloud shader
图 24.增加光敏感度的参数

增加克隆计数 (80)、调整光线深度,以及地面材料的阴影亮度和光源的区域阴影后,您最终的结果应如图 25 所示。

cloud shader final settings
图 25.最终的浮云效果

结论

块状浮云与克隆计数和光线深度有关。结果越平滑,渲染时间越长。应用逼真的区域阴影会进一步延长渲染时间,因此云是低克隆计数/光线深度与平滑结果之间的平衡。

在这种情况下,物理渲染器是最佳选择,因为它可提供高品质抗锯齿、加快区域阴影样本处理速度,并支持英特尔 Embree 加速。

如欲了解更多关于如何创建云、雾和星云的信息,请参阅《Cinema 4D* 中令人惊叹的体积效果第 1 部分:可见光的魔力》。关于 Marc 及其工作的更多详细信息,请访问英特尔® 开发人员专区(英特尔® DZ),包括MountainvistaSIGGRAPH 2018,并使用 Cinema 4D Mountainvista 场景工作负载对比 3D 渲染性能。另外,了解 SIGGRAPH 2018 期间推出的 Cinema 4D 版本 20。请访问英特尔® GameDev 计划,获取最新信息和资源,以帮助您更好地开发游戏。

资料来源

英特尔® 酷睿™ i9-7980XE 至尊版处理器

Cinema 4D

关于作者

Marc Potocnik英特尔® 软件创新者 Marc Potocnik 是德国设计师兼动画工作室 renderbaron (www.renderbaron.de) 的创始人。renderbaron 专门为高端公司,包括 ZDF、奥迪、西门子、宝马等,打造高质量 3D 动画和视觉效果。

Marc 1997 年在杜塞尔多夫应用科学大学学习通信设计,并借助 Cinema 4D R4 进入 3D 领域。2001 年,Marc 创立了 renderbaron,凭借 Cinema 4D 成为阴影、光照和渲染领域的权威。

Marc 担任 Maxon* 首席讲师,并编写了 Maxon QuickStart 培训:着色、光照和渲染。他还经常在世界各地召开的会议(SIGGRAPH、IBC 和 FMX)上分享知识。请登录 Facebook* 关注 renderbaron 项目。

Para obtener información más completa sobre las optimizaciones del compilador, consulte nuestro Aviso de optimización.