美文网首页
还被渲染慢渲染卡顿而苦恼?2021提高3D渲染性能的专业指南来了

还被渲染慢渲染卡顿而苦恼?2021提高3D渲染性能的专业指南来了

作者: 渲云云渲染农场 | 来源:发表于2021-10-12 16:16 被阅读0次

    作为一个设计师,每个人都希望自己的作品渲染得更快。几乎完成了一个项目,所缺少的最后一步只是最终渲染,如果渲染速度够快,你就可以轻松的在项目交接的日期内完成作品并交给客户,但是渲染是个复杂的过程,会遇到很多渲染慢和渲染卡顿的问题。比如在截止日期前24小时,你有一个 1000 帧的项目,不管你怎么看,每帧 5 分钟,你根本无法及时完成。

    渲染慢的原因很简单:3D 场景很复杂,没有一个场景的外观和工作方式与另一个场景完全相同,并且返回当前项目以使其渲染速度更快,这可能太耗时而无法让您按时完成最后期限更近。

    这时候如何提高渲染就成为了首先考虑的问题了,阅读这篇文章,这里有很多的方法技巧会让你更快的渲染

    提高渲染速度的方式

    无需大量场景更改即可让您更快地渲染的东西:

    有时您无法对场景进行任何更改,但仍希望尽可能加快最终渲染速度。您可以执行以下操作:

    购买更快/更多的 PC,更好/更多的硬件

    使用云渲染服务----渲云渲染

    检查软件更新(有时会进行功能改进和错误修复,让您的渲染速度更快)

    对于您的项目类型,不同的渲染引擎可能会快得多

    利用 Rendermanager 的强大功能及其可能带来的优化(例如一次渲染多个任务)

    在后期/合成中对渲染进行降噪,最好使用 Renderpasses

    更快地渲染需要更改场景的东西:

    如果有一个共识可以应用于所有场景优化,那就是:仅使用您绝对需要的尽可能多的场景组件和元素。更多的东西可能在视觉上几乎没有区别,但可能会花费你大量的渲染时间。

    多边形、光线、样本、灯光、细分……使用您可以选择的绝对最小值来实现您的外观。

    无论如何,这是本节的概述:

    减少网格、细分曲面、生成器、克隆器、实例、NURB 的多边形数量

    使用较少的单独灯光并放置它们,以便它们通过更少的光线反射更容易地照亮场景,或者使用覆盖更大区域的均匀照明,例如天空或 HDRI

    通过限制反射/折射中的跟踪深度并优化那些让光线计数爆炸的材料类型,在不降低质量的情况下简化您的材料

    优化渲染设置:限制光线反弹、设置截止阈值、利用自适应采样、钳制光线强度、减少 AOV、使用更快的 GI 设置

    使用渲染区域/蒙版和渲染层仅渲染帧的一部分

    当然,这个概述只是暗示了什么是可能的,您可能需要一些更深入的信息来完全理解如何实现上述内容。如果是这种情况,请继续阅读或跳至您最感兴趣的部分。

    在上面的列表中,我只列出了适用于大多数用户的最重要的部分。不过,整篇文章中有一些隐藏的宝石,这可能正是您所需要的。

    哪些渲染引擎可以优化?

    优化场景和渲染设置的指导原则可以应用于所有渲染引擎,因为它们都基于非常相似的功能。

    GPU 渲染引擎(如 Redshift、Octane、Cycles)或 CPU 渲染引擎(如 V-Ray、Arnold 或 Corona)都从您的 3d 场景中获取信息。众所周知,大多数渲染引擎都可以插入许多不同的3D 软件,无论是 Cinema 4D、3ds Max、Blender 还是其他任何软件。

    这让我们很容易理解所有这些应用程序及其工作方式之间必须有一个共同点,这种相似性也让我们可以全面应用渲染优化。

    如何更快地渲染概述:

    我将这篇文章分为两个主要部分:

    可以优化的内部渲染因子

    可以优化的外部渲染因子

    您会发现内部渲染因子与要优化/更快渲染的场景密切相关,需要更改场景元素和渲染设置。

    另一方面,优化外部渲染因子根本不需要或几乎不需要更改您的场景。这些是外部因素,例如整体硬件性能,或渲染管理器接收场景的方式。

    您可以优化两者中的任何一个并实现一些不错的加速,或者您可以解决内部和外部因素并看到您的渲染时间进一步减少!

    如何更快地渲染——方法论

    有两种方法可以解决这个问题:您可以盲目尝试下面的一些项目并希望它有所帮助,或者分析您的场景和环境,然后应用正确的修复。

    后一个选项所需的步骤很简单:

    找出您的场景渲染如此缓慢的原因

    修复它

    渲染慢与什么有关:

    您的场景很可能已经优化得非常好,您的硬件是最好的——但是您对拥有数百万棵树木的森林的 25K 全景渲染仍然需要 5 分钟?

    这让我们回到了加速场景的两个步骤,我们将其更改为:

    找到需要最少时间和金钱来解决的最大瓶颈

    修复它

    不要在不考虑视口或渲染性能的情况下构建场景,仅在点击最终渲染按钮时进行优化 –

    能够呈现速度就越快用于遍历更多的时候,而你对你的工作场景,提高质量,减少花费的时间,最终使你成为一个更具竞争力的3D艺术家谁能够在长期运行要求更高的利率或更多的薪金。

    渲染引擎的工作原理

    在本节开始,我们将从高级别的渲染引擎的工作原理以及增加渲染时间的因素开始,以便能够更好地确定我们必须更改哪些内容以使我们的场景渲染速度更快:

    为了简单起见,让我这样说 - 一般来说,我们在任何给定场景中只有 3 种类型的对象:

    发光的物体,如灯或太阳

    不同程度反射和折射光线的物体

    相机是我们的视点

    事实上,我们真实的物理世界也是类似构建的,我们的眼睛有时就是相机。渲染引擎“渲染”或计算 3D 场景的外观,与我们真实的物理世界非常相似。

    光源(如太阳)发出的光会从一个或多个表面反射,直到到达我们的眼睛,产生的光使我们以不同的方式看到物体。物理在现实世界中所做的事情,必须在渲染时由您的计算机精心“计算”。

    以从表面反弹的光线为例。计算机必须计算以下一些内容:

    光线从物体反射的角度是多少

    吸收了多少光线

    有多少光线散射到不同方向或进入表面

    多少光被反射或折射

    这只是一个简单场景中的单一光线。想象一下,必须为场景的每个表面计算很多很多光线。

    幸运的是,PC 的 CPU(处理器)和 GPU 非常擅长进行此类计算——比我们人类要好得多——尤其是 GPU(图形卡或视频卡)是为此类图形和“光线追踪”定制的”的计算。

    虽然我们可以更深入地了解渲染引擎的工作原理,但上面的描述应该已经足以分析和优化我们的场景以更快地渲染:

    由于渲染引擎所做的大部分工作是在场景中发射一堆光线,然后从物体上反弹,我们已经可以推断出以下内容:

    射线少,我们需要渲染一个无噪声的图像,更快的渲染过程将完成

    无噪音”:这是一个新术语,我们将快速了解一下:

    你很可能以前见过它。以低质量渲染的图像不平滑或不清晰。它们到处都是噪音或颗粒,因此难以辨别细节。

    这是噪音的来源以及我们如何摆脱它:

    任何图像(渲染与否)都由像素组成。渲染引擎为每个像素取一个样本。

    渲染引擎,为了简单起见,我们将其放置在场景的相机内,通过每个像素发射一条光线,然后知道该特定像素后面是什么。这也称为“取样”。

    通过像素发射光线并击中木头,那里有木头。通过像素发射光线并找到金属,图像的那个区域有金属。足够简单。

    但是,这是重要的部分:像素不是一维的,而是二维的。基本上,每个像素都是一个二维正方形。一堆方块在一起就是一个图像。

    那么为什么这很重要呢?因为光线或样本,我们通过像素拍摄以查看后面的 3d 场景中的内容是一维的。为了获得像素整个正方形区域后面的平均值,我们必须通过该像素和每个像素发射多条光线(采取多个样本)。

    以这个例子为例:

    如果我们只通过 X 射出一条光线并击中橙色三角形,则渲染引擎认为整个像素都被橙色三角形填充/覆盖,而实际上它只覆盖了该像素的右下部分。

    通过对该像素进行多次光线/采样,我们会知道该像素的 90% 实际上是白色/灰色而不是橙色(有些也是绿色)。因此,通过采集多个样本,我们可以扣除该像素的平均颜色。

    如果我们每个像素只使用一个或少量样本,我们并不确切知道整个像素后面是什么,就在我们的样本取自的一维点后面。

    结果:我们的错误阈值很高,我们得到了一个嘈杂的图像。

    更多样本,我们通过我们的每一个像素的拍摄降低无错误,或噪声阈值和更低的颗粒感我们得到的图像将成为。

    请记住,所有渲染引擎都有自己优化某些事物的方法,并且有一些方法可以伪造或优化某些过程,但通用功能可以全面应用于任何渲染引擎。

    您从场景中获取的样本越多,结果就越平滑。

    我们也可以这样说:如果您的场景中没有太多事情发生,与您的场景中充满复杂对象、复杂材质或复杂照明时相比,您将能够获得更少的样本。

    如何更快地渲染

    内部因素:优化您的场景

    足够的理论,让我们渲染得更快。我们现在将研究的一些优化方法的很大一部分将涉及降低场景的复杂性,因此我们可以减少样本数量,同时仍然获得无噪声的结果图像。

    还记得减少渲染时间所涉及的两个步骤吗?第一步是找出实际导致速度下降的原因

    先找到瓶颈——排除原则

    找出导致速度变慢的原因的最简单方法是利用排除原则。

    举个例子:如果我们的场景中有一百个对象,其中一个对象导致渲染速度变慢,找到这个对象的最快方法是通过排除原则。

    通过排除事物,您可以将它们排除在等式之外。排除场景对象?还是渲染慢?您的场景本身很可能没问题。减少了渲染设置?还是渲染慢?您的渲染设置很可能没问题。换了 CPU 或 GPU?还是渲染慢?CPU 或 GPU 很可能与您的渲染速度下降无关。

    请记住,减少可能导致速度变慢的因素以找到源头,然后我们可以进行修复。

    在本文中,我将介绍一些通常会导致渲染速度变慢的典型区域,您或许可以使用这些方法解决问题。

    但它们并不总是有效,所以尝试学习自己分析和剖析场景的技能,这样你就再也不需要外部帮助了。

    首先找到瓶颈——检查您的样品

    几乎每个现代渲染引擎都能够可视化为每个像素采集的样本数量。这是 Redshift 中的样子:

    暗像素表示样本数量较少,亮像素表示样本数量较多。能够渲染您的图像并一目了然地查看哪些区域需要最多的样本,可以告诉您很多关于您的场景以及从哪里开始优化的信息。

    样本分布可视化会告诉您渲染设置是否配置不当,或者是否存在某些场景对象、材质或照明需要太多样本才能清除。

    首先找到瓶颈——检查你的视口

    很多时候,您只需要在“线模式”中检查您的视口,以便在视口中显示所有多边形轮廓。

    以下面的场景为例。一目了然,哪些对象有很多多边形,应该有一些减少的潜力:

    视口屏幕截图设置为(隐藏)线视图

    首先找到瓶颈——检查你的场景和对象信息

    每个 3D 应用程序都可以显示整个场景或您选择的对象的多边形计数。这是在 Cinema 4D 中的样子:

    还记得之前的排除原则吗?首先检查整个场景的多边形计数。如果它看起来很高,请选择一半的对象并再次检查。减少对象选择的数量,直到找到具有不合理的高多边形计数的对象并优化它们。

    如果您有一个包含几个主要对象组的结构良好的场景,您也可以单步执行这些并在层次结构中向下工作,这可能会更快。

    减少多边形的数量

    渲染性能的一个重要因素是场景中的多边形数量。根据经验,您可以说对于大多数场景,多边形越少,渲染速度就越快。

    以下是大多数情况下这些大量多边形的来源列表:

    已经带有很多多边形的原始网格。例如导入的 CAD 数据或雕刻

    细分网格的修改器,使每个细分的多边形数量翻两番(例如 Cinema 4D 中的 HyperNurb、Blender 中的细分曲面等)

    克隆人

    通过组合/挤出曲线生成的任何类型的 NURB 对象

    具有太多细分的参数化对象

    微位移

    它们是必不可少的,但我们确实希望尽可能地优化它们。过程很简单:减少多边形的数量,直到您开始在渲染中看到视觉差异。

    让我解释一下:你需要一个每边有 100 个细分的参数立方体吗?当每一边只有一个多边形时,它看起来会有什么不同吗?不会!

    让我们快速浏览一下:

    原始网格

    具有过多多边形的原始网格很快就会成为渲染缓慢的原因。原始网格的问题是,它们很难优化。

    除了向它们添加一些减少多边形的修改器,这通常会严重破坏网格的 UV 布局和多边形流,除了手动减少多边形和重新拓扑之外,您真的无能为力。当然,如果你有这些原始网格的源文件的话就好多了!

    您的客户是否向您发送了 STEP 或其他 CAD 数据,您必须将这些数据转换为多边形才能在 3D 场景中使用它?很容易指定应该从中生成多少个多边形,可以尝试一下。

    在你的场景中有一个用ZBrush雕刻的角色,有数百万个多边形吗?也许您可以获得源文件并使用细分修改器,而不是将疯狂的分辨率直接烘焙到网格中。这样您就可以根据角色的屏幕尺寸调整细分级别。

    基线是这样的:只使用网格屏幕尺寸所需的多边形或细节。

    如果您的角色在背景中,与拍摄特写镜头相比,您应该能够获得更少的多边形。

    请记住,我并不是说您应该使用 Low-Poly 并更改场景的外观。您应该拥有实现场景外观所需最少多边形数量

    您还可以通过以下方式进一步减少多边形的数量:

    删除/禁用相机看不到的任何内容。

    渲染一架飞机在天空中飞翔?我敢打赌大多数内部对象甚至无法被相机看到。禁用这些座椅、轮子和其他内部构造网格。渲染森林?删除相机后面的所有树木和草。不需要那些。

    渲染客厅?我敢打赌,在反射中看到的任何东西都可以减少很多。你真的无法判断花瓶中倒映的植物是有一百万个多边形还是只有一千个多边形。

    细分、修饰符、生成器、克隆器、实例

    修饰符、生成器和克隆器它们使场景构建变得更加容易,而无需破坏性地烘焙您正在使用的网格。它们越容易使用,它们未被优化到最佳潜力的危险就越大。

    细分曲面为例。它们细分整个网格,使每个级别的多边形数量翻两番。不仅如此,您通常还可以选择单独设置 viewport-subdiv 和 render-subdiv。

    这可能看起来很明显,但这会带来危险,您可能不会注意到视口显示和实际渲染之间的多边形差异。您的视口可能会一帆风顺,因为细分设置为 0,但它们可能设置为比渲染时高得多的级别,你需要检查这个!

    生成器(例如Extrude )根据某些特定参数生成底层网格的新多边形。同样,您通常可以单独设置渲染设置和视口设置,因此请确保这些拉伸子步骤尽可能少。

    克隆器是渲染缓慢的罪魁祸首。尽管设置起来很简单,但要确保生成的实例是真正的内存实例,有时也称为渲染实例(或3dsmax中的Multiscatter)。这允许渲染器在它引用的内存中只拥有这些克隆对象中的一个,从而允许克隆器的内存消耗是非渲染实例所需的一小部分。

    在一棵树上克隆数百万片叶子?您的克隆器只需要单个叶子所需的内存(或多或少),从而使真正大量的克隆成为可能。即使您只是在克隆器或数组对象之外使用实例,请务必将其设置为用作渲染实例,以便节省内存。

    NURB/曲线组合

    与挤出类似,任何类型的扫描、放样或车床 NURB 生成器都将采用样条线/曲线或其中的许多,并从中创建 NURB 对象,然后在渲染时将其非破坏性地转换为多边形。

    因为曲线可以有如此多的顶点来使它们变得平滑,所以一定要优化您的结果、扫描、放样或车床,以仅使用实现您所追求的外观所需的最少量的子步骤。

    有时您可以在 Generator 本身中设置子步骤,有时您必须减少曲线上的细分,以优化生成的对象。

    参数对象

    每个 3D 软件都带有一些参数化的默认对象,这意味着它们可以在一定程度上改变,而不必破坏性地将它们转换为基本网格。这些默认对象通常包括平面/曲面、立方体、球体、圆锥体、圆柱体、管子等,您通常可以设置半径、高度、边数和其他参数。

    因为这些是默认对象,所以它们带有预定义的参数,这些参数可能不足以针对您的场景或您的一般工作方式进行优化。检查您的默认对象并尽可能减少多边形,而不会过多地改变场景的外观。

    事实上,大多数 3D 应用程序允许您保存参数对象的默认设置,因此如果您发现每次创建参数对象时都进行相同的调整,您可能希望从一开始就设置默认参数,从长远来看,可以为您节省一些时间。

    微位移

    Micro-Poly Displacements 是在渲染时创建许多新多边形的另一种东西,您通常不会在视口中看到。

    同样,请确保您确实需要它们,或者您是否可以使用法线贴图或凹凸贴图来伪造它们,尤其是当它们位于背景中或只能在反射中看到时。如果您确实需要它们,请检查细分数量可以向下走多远,直到置换的网格变得过于粗糙。

    多边形结论:为什么多边形越少渲染速度越快?

    事情是这样的:如果您在明亮的日光下使用默认的灰色材质渲染角色转盘,如果您的角色有 10k 或 10mio 多边形,您很可能看不到任何区别。多边形本身不会增加渲染引擎清除图像所需的样本数量。

    然而,多边形确实会减慢光线追踪器的整体性能和光线树的构建(这是实际渲染开始之前的准备过程 - 请参阅渲染管理器部分)。

    因此,尽管您不会看到所取样本数的差异,但在具有较少多边形的场景中,计算这些样本的速度会更快。

    灯光

    每个光发射器,无论是具有发光材质的对象还是实际的光对象,都会为您的场景添加更多光线,这些光线必须在渲染时进行跟踪。尤其是使用全局照明,您可能会在大多数场景中使用它,每盏灯都会产生在场景周围反弹几次的光线 - 并且这些光线中的每一条都必须由您的 GPU 或 CPU 计算.

    在某些情况下,添加一盏灯可以加快渲染速度:如果您使用 GI 并且图像中有很多暗区,无法轻松到达直射光,则添加另一个(非常暗的)灯来照亮这些区域会有所帮助快速清除那些嘈杂的像素。

    添加灯光以直接照亮您的拍摄对象,让您的渲染速度极快。灯光只会变得非常慢,如果它们必须反射几次才能到达您的主题,或者它们本身具有更复杂的性质。

    例如,区域光在计算上很昂贵,因为光线追踪器必须采样大量光线以覆盖区域光的整个区域,同时还要确保生成的阴影是柔和的。与点光源相比,区域光源是一个主要的减速——尤其是大面积光源。

    在可能的情况下尝试使用门户灯,尤其是在照亮通过窗户照明的室内场景时。入口光比区域光更高效,渲染速度也更快。

    尽可能使用聚光灯和非光线追踪、阴影贴图、软阴影。使用这些可以更快地计算软阴影,并且可以在不改变场景外观的情况下大大加快渲染时间。

    使用 HDRI 或天空对象在室外照明中渲染场景,并且太阳通常非常快,因为您可以从全(或半)圆顶获得均匀的照明,这意味着您的光线不必多次反弹即可照亮一切。

    如果您的 3D 软件和渲染引擎能够限制光线反射和光线范围,请这样做。让你的场景主体受到非常远的灯光的影响,或者被其他灯光阻挡/难以到达的灯光是没有意义的。

    必须多次反射才能到达场景主体的灯光发出的光线,或者已经衰减到几乎不可见的灯光,都会在渲染中引入大量噪点。有时您可以只使用渲染或项目标签来限制您的灯光应该照亮的对象以清除噪音。排除任何不必要的。

    材料

    有很多材质特性会减慢渲染速度,毕竟材质构成了场景的整个表面区域。

    您的照明可以通过三种基本方式与场景的材质进行交互。光可以是:

    反射(例如铬)

    折射(例如玻璃)

    部分吸收、散射和反射(例如皮肤)

    还记得我们所说的保持场景内光线和光线反弹的数量尽可能低以加快渲染速度吗?材料是使必须计算的光线数量呈指数增长的主要因素。任何增加场景中光线数量或需要清除大量样本的材质属性都会使渲染变慢。

    让我们来看看一些主要的源头:

    光泽反射和折射

    让光线从铬球反射(硬反射)是您在 3D 中可以做的最简单的事情。

    这是一个带有硬反射的并排的铬球,以及清除图像中噪声所需的样本分布(白色 = 更多样本,黑暗 = 更少样本):

    拿这个镀铬球,让反射变得柔和(有光泽),你就创建了大量需要计算的新光线。根据反射的柔和度,入射光线现在均匀地散射到各种方向。

    渲染引擎必须计算的样本和光线越多,完成渲染所需的时间就越长。

    这同样适用于光泽折射。光泽反射和光泽折射两者的结合会进一步增加渲染时间。

    现在,我并不是说,不要使用光泽折射或反射——它们是大多数材料不可或缺的一部分,但是当你使用它们时,请确保尽可能地优化它们。

    以下是优化折射和反射的方法:

    限制他们的光线反弹(跟踪深度)

    使用截止阈值进行优化

    当您的反射或折射有光泽(模糊)时,您无法真正分辨出反射或折射中的细节,我们可以利用这一点。

    因为材质中的反射/折射场景非常模糊,我们将无法判断反射/折射场景是否 100% 准确 - 这意味着我们可以在没有任何人的情况下降低折射/反射场景的复杂性注意到。

    通过限制跟踪深度,我们告诉特定的光泽材料只反射或折射其他对象,而不是这些对象自己的反射或折射(达到一定数量的深度/反弹)

    这意味着我们可以节省大量光线,因为我们人为地限制了跟踪深度。我们可以在大多数渲染引擎中直接在材质设置中执行此操作,或者有时您需要将渲染标签应用于某些对象才能使用它。

    这是Redshift 渲染引擎中的外观:

    我们在上图中看到的另一个优化是“截止阈值”——基本上,它的作用是告诉渲染器只考虑那些会改变像素外观的光线超过定义的阈值。

    它应该只将计算资源用于实际上会在渲染中产生显着差异的东西

    问题是,默认情况下,这些阈值非常低,根本不会影响您的渲染时间。您必须提高阈值才能充分利用它。稍微玩一下看看有什么不同。使用这些来加速光泽反射和折射。

    当然,您也可以在硬反射或折射上使用它们,但是因为在硬反射中一切都非常清晰,您可能会注意到更快发生截止的地方。

    材质凹凸/法线贴图/置换贴图

    还记得光泽反射如何增加材质产生的光线数量以及清除噪声所需的样本数量吗?在这方面,使用凹凸贴图、法线贴图或置换贴图非常相似。因为这些贴图试图伪造网格细节,入射光线也会被它们散射。

    细节越精细,产生的光线就越多。即使你的网格只有几个多边形,即一个立方体,如果你在它上面有一个复杂的凹凸贴图,将光线散射到所有地方,你的渲染速度会大大减慢。

    材质纹理/位图

    如果不使用一些出色的位图/纹理,几乎没有可以创建的 3D 场景。它们为您的网格添加了细节,在大多数情况下,建模工作量太大。确保您的纹理分辨率不要过度。在整个场景中拥有一堆 8k 纹理,即使 2k 或 1k 纹理就足够了(给定对象的屏幕大小),也会使渲染引擎更难处理您的场景。

    渲染设置

    调整渲染设置是加快渲染速度的最有效方法之一。不过,一如既往,我们不只是想降低质量,我们希望尽可能接近我们需要的质量,但仍然希望提高渲染性能。

    以下是一些最重要的因素,需要考虑以提高渲染性能:

    自适应采样器

    对于大多数现代渲染引擎来说,最重要的一点是将它们设置为使用自适应采样器。

    问题是:现代渲染引擎非常复杂,并且有自己确定的方法,需要多少样本才能进行高质量的渲染。

    您应该查看的第一个设置是自适应采样器的样本限制。每个引擎对这一部分的名称略有不同,但它在 Redshift 中的外观如下:

    还有 Vray:

    所有这些跨不同渲染引擎的自适应采样器都有一个共同点:

    最小样本

    最大样本

    (噪声/误差)阈值

    它的工作原理很简单:采样器通过每个像素拍摄最少数量的样本,以获得像素颜色的良好平均外观。

    然后将其与旁边的像素进行比较,并检查差异(例如照明)是否太大/太嘈杂。如果差异/噪声/误差高于阈值,它会在场景中拍摄更多样本,直到低于误差阈值(为方便起见进行了简化)。因此,即使您将最大样本数设置为 10000,采样器也只会使用低于错误阈值所需的数量。

    因此,从技术上讲,您必须在此处更改预览渲染的阈值到 0.1 之类的值,并将最终渲染的阈值增加到 0.01 之类的值。与往常一样,您必须进行一些测试并找到您愿意忍受的最佳点和噪音量。

    自适应采样器的功能确保它只使用清理图像所需的样本量。这意味着在光线充足的区域它只使用几个样本,例如在光线不足的区域,它可以使用更多的样本来清除噪音。确保您使用自适应采样器的功能,永远不要使用超过绝对需要的样本。

    限制光线反弹(跟踪深度)和截止阈值

    在材质部分,我们已经了解了如何限制反射和折射中的跟踪深度,但在大多数渲染引擎中,您可以全局设置它。

    这是 Redshift 中的样子:

    这背后的想法很简单:我们想要阻止特定光线反弹太多次。我们通常可以为反射、折射和透明度设置反弹限制。这些设置越低,允许的反弹越少,场景渲染得越快。这是加快渲染速度的主要因素之一。

    但是,当然,如果你把它设置得太低,你会看到一些黑洞或东西从反射、折射和透明区域消失。对每个场景进行一些试验以找到最佳位置。在上图中,在最大跟踪深度下方,我们看到了截止阈值,这也可以加快渲染速度。

    基本上,它的作用是告诉渲染器只考虑那些会在全局场景级别上改变像素外观超过定义阈值的光线。设置得越高,光线越早被忽略或取消,从而加快渲染速度。

    当然,这同样适用于此处:如果您将这些设置得太高,您将开始在着色器和照明中看到黑色像素或粗糙边缘,因此也请在这里找到您的最佳位置。

    限制最大光线强度

    使用此功能不仅可以加快渲染速度,而且通常还可以消除场景中的随机高光像素。

    在红移 (C4D) 中:

    在 Vray (C4D) 中:

    默认情况下,大多数渲染引擎允许光线和样本比您的显示器通常显示的要亮得多。这是有道理的,真的,毕竟光源通常很亮。

    但在大多数情况下,您不会看到强度为 2 或 10 的反射光之间的差异。两者都显示为 100% 白色(或 100% 亮度)。当然,如果您产生的反射或折射会吸收 90% 的入射光,您就会发现差异。

    但是,在大多数情况下,将光线强度限制为接近 1 的值将提高渲染性能,清理随机的明亮像素,同时不会对场景的外观产生太大影响。去尝试一下,找到你的最佳选择。

    AOV

    任意输出变量、多通道图像、渲染通道或它们携带的其他名称是与美容渲染器一起创建的图像,通常用于进一步用于合成和其他后期制作方式。

    很长一段时间我都不知道这一点,但是,是的,AOV 减慢了实际的渲染阶段。在渲染过程结束时,AOV 只需要很短的时间存储在我的美颜通道旁边,但是,不,它们会减慢整个渲染速度。

    当然,只有几个渲染通道这不会很明显,但是有 10 个或更多拼图遮罩、深度遮罩、对象缓冲区?在许多渲染引擎中,添加到最终渲染的每个 AOV 都会显着增加渲染时间。请确保仅渲染您绝对需要的 AOV。

    全局照明设置

    有许多技巧可以让您的 GI 快速渲染且无闪烁,让我们来看看您可以在几乎所有渲染引擎中使用的一些东西,如果使用得当,这些东西很可能会显着影响您的渲染性能:

    首先,只有在渲染动画并且在帧之间看到大量闪烁时才使用 Brute force / QMC GI。强制使用 GI 是使用 GI 最慢的方法。但需要大量时间来渲染。

    许多类型的场景不太复杂或有微小的细节,可以使用光缓存或光子映射,这通常渲染速度要快得多。特别是如果您只渲染静止图像,其中一些细微的帧差异并不重要,那么在第二次甚至第一次 GI Bounce 上使用 Light Cache 可以挽救生命。

    一般来说,当然,您可以而且应该限制您的 GI 反弹。将 GI 反弹设置为 1、2、3 或更多,进行几次测试渲染,看看差异是否真的很明显或需要。反弹越低,渲染速度就越快。

    有些场景甚至可能根本没有 GI。我知道,我的习惯也是为每个新场景打开 GI,但很多时候你不需要它。以户外场景为例。具有天空纹理和阳光的圆顶灯渲染速度可能比尝试通过天空 GI 反射来遮蔽阴影要快得多——并且在大多数情况下看起来非常相似。

    如果您的整个场景可以使用灯光缓存进行渲染,但是您的角色的头发只会弄乱一切并在整个帧中引发闪烁,只需渲染两次即可。使用设置为使用光缓存的角色阴影渲染您的背景场景,并仅使用设置为使用强力 GI 的角色渲染另一个通道。

    我们都知道如何在帖子中结合这一点。不要试图在一次通过或一层中完成所有事情。更简单:一些渲染引擎允许您为每个对象设置 GI 方法,通常通过渲染标签/合成标签。

    一般来说,您显然可以使用较低的 GI 质量设置(例如较低的 GI 样本)进行更快的渲染,并且将其与 comp 中的去噪结合使用是一种强大的工具。但更多关于“后期降噪”部分的内容。

    渲染可见性和包含/排除场景和对象关系

    默认情况下,光线只会在整个场景中反弹,而不管它们行进多远,或者该特定光线是否对图像的整体外观很重要。一些光线、物体、材质或灯光可能只是在消耗你的表现,而没有做太多其他的事情。

    某些对象可能很重要,需要通过相机查看,但您无法在所有这些模糊反射中真正看到它们,因此只需关闭该对象的反射光线可见性即可。就那么简单。

    在几乎任何渲染引擎中,您都可以为各种光线类型(如反射、折射、AO、阴影、GI 等)打开和关闭对象的可见性。

    某个对象是否将计算密集型阴影投射到场景的地板上,但由于阴影如此透明,因此无法真正看到?只需告诉该对象不要投下任何阴影!单独控制每个对象或组的可见性的能力是 3D 世界中最强大的功能之一,它也有助于加快渲染速度。

    这同样适用于包含/排除功能:您是否有阳光透过稍微有光泽的窗户照射,从而使房间内产生的散射光线永远呈现?只需将玻璃窗排除在阳光下,太阳光线就会穿过窗户而不会被散射!

    这种场景的渲染速度可能会快 10 倍,因为您没有通过窗户玻璃散射那些太阳光线(产生大量新光线)。

    使用渲染区域和渲染层

    特别是当您在紧迫的期限内并且客户或老板要求进行一些最终更改而需要很长时间才能完全重新渲染时,您可以只渲染补丁、某些对象,或者只是图像或序列的一部分。当然,修补东西是最后的手段,因为它确实会使您的项目变得不必要地复杂。

    这是一个示例:您的 60 秒动画已被最终渲染,因为客户已经批准了它的预览版本,但众所周知,他们总是回来并希望进行最后一次更改。

    因此,客户希望该镜头背景中的其中一栋房屋看起来不同。为了加快速度,您现在可以使用“渲染蒙版”,因为它们在某些渲染引擎中被调用。这样做是只渲染您选择的对象,并跳过场景中的其余像素,用alpha填充它们。这样你就可以重新渲染房子,然后把它放在已经存在的最终渲染上。

    这是这个 GUI 在 V-Ray (C4D) 中的样子:

    其他一些渲染引擎可以通过使用遮罩来做到这一点,通常在合成或渲染标签中找到,这些标签放置在您想要隐藏或显示的对象组(例如 Redshift)上。因此,考虑到我们在后台的房子占据了大约 1/4 的帧,这意味着我们可以比重新渲染整个完整帧更快地重新渲染客户请求的更改。如果您有静态相机,您甚至可以使用渲染区域,在某些引擎中也称为边框渲染,它只指定应该渲染的帧的矩形区域。

    当然,如果你提前做一些计划——特别是因为你很快就知道客户和老板喜欢改变什么——你可以用渲染层设置你的镜头,并将重要元素分开到不同的渲染层上,这样你就可以轻松地调整它们在 comp 中,或根据需要单独重新渲染它们。

    例如:将您的每个角色分开到它自己的渲染层上,将前景放在渲染层上,将背景放在渲染层上。这样您就可以更好地控制合成中的镜头,并且可以在需要时重新渲染最终图像的更小部分。

    尤其是在相机不移动的镜头中,如果所有移动的都是角色,则几乎不需要为每一帧渲染背景或前景。渲染背景和前景的单帧,然后在完整的图像序列中使用阴影捕捉器渲染这些角色渲染层。使用渲染层还可以解决一些在使用后期模糊(运动模糊)、后期 DOF(景深)或雾的深度遮罩时不断出现的烦人问题——尤其是当您不能使用深 EXR 遮罩时.

    提前考虑使项目后期和压力部分的更改更容易,这可以挽救生命。但是您必须在这里找到一个很好的最佳位置,因为设置项目以便以后更容易更改,当然也需要时间

    外部因素:优化场景之外的一切

    优化内部设置和 3D 场景的复杂性只是等式的一部分。有时你的场景已经被优化到了最大程度,或者你根本无法对场景进行任何更改,因为你只是负责渲染,或者不能再冒险对场景进行深入更改而没有被批准。

    您可以做很多事情来加快渲染速度,这些都是在 3D 场景之外控制的,但有时以下选项确实需要在您的场景中进行一些小准备,然后才能充分发挥其潜力:

    渲染通道和合成

    让我们从渲染通道开始。我们都在一定程度上使用过它们,我们在本文的 AOV 部分很快介绍了它们,因为它们有时确实会消耗一些性能。但通常情况下,使用渲染通道可以节省更多时间(如果使用得当)

    Renderpasses 不仅用于输出一些额外的图像信息,例如深度或对象或拼图遮罩。如果使用得当,它们可以组合在 comp 中以构建您的美图通行证

    渲染引擎的 Beauty Pass 是默认输出的标准最终 RGBA 图像,是内部由几个渲染通道组成的图像,例如漫反射通道、GI 通道、光通道、阴影通道、AO 通道、反射、折射……

    这些单独的通行证可以相互叠加或相乘,以重新制作最终的美容通行证。

    你可能已经猜到了:将它与一些拼图或加密遮罩结合起来,能够选择你的单个对象,你就有了一个非常强大的工具来改变你的场景,而无需重新渲染另一个帧用于该镜头的 3D 软件。

    后期去噪

    即使在 3D 渲染引擎中,也有一些方法可以使用降噪器。有些内置了 Altus De-noise 或 OptiX De-noising 技术等插件,但我不建议将它们用于生产或最终渲染。相反,在您最喜欢的合成应用程序中使用您的渲染通道和降噪插件。

    大多数时候,你的很多传球都很好,它们几乎没有噪音。例如,您的 Diffuse pass 通常非常干净。GI或Shadow pass虽然往往很嘈杂。因此,我们所要做的就是在后期使用去噪插件(例如AE 中的Neat Video De-noiser)对这两个通道进行去噪。

    如果您没有时间设置渲染通道或希望减少现有渲染上的噪点,通常也可以对美化通道应用去噪。

    它可以很好地工作,但经常会弄乱一些具有精细纹理的区域,因为降噪器在不查看其他通道的情况下并不真正知道什么是噪点以及什么是纹理细节。后期去噪通常可以让您获得更快的 3D 渲染,因为您可以将噪声阈值设置得更高。

    知道什么时候在 3D 中做某事,什么时候在后期做某事是我们都必须学习的一项技能——去噪是一项在后期效果很好的事情。

    充分利用后期/合成

    很多时候你可以在合成中做一些需要很长时间才能在你的 3D 场景中设置的事情,知道什么时候这是更有效的方式是一个优秀 3D 艺术家的标志。尤其是当您在完成最终渲染帧后进行更改时,添加补丁或进行一些遮罩工作以修复较小的问题可以为您节省大量时间,否则这些时间将用于重新渲染整个镜头。

    一些示例:如果您看到小的渲染故障,例如在帧上进行 z 深度冲突的对象、地板上的焦散故障,甚至只是颜色错误的对象,大多数情况下您只需屏蔽和修补这些没有人注意到。

    当然,没有错误的干净渲染是可取的,但是我们都可以忽略在最终渲染已经完成后我们会注意到的小事。了解在合成渲染序列时可以做什么会让您安心,即使是在高调的工作中也是如此。

    在例如 After Effects 中学习一些遮罩、转描、跟踪以修复轻微的渲染问题。

    当然,您可以在 comp 中做更多的事情,而不仅仅是修复在渲染阶段搞砸的东西。使用适当的渲染层、对象遮罩、深度遮罩,甚至法线贴图遮罩和 UV 遮罩,您可以在后期做很多事情,从而节省通常花在渲染上的时间。

    利用 3D 场景中的 3D 相机导出来设置静态背景或前景图层,从而节省渲染背景和前景完全没有变化的镜头的时间。在合成中使用运动模糊插件、景深插件和其他插件可以更好地控制您的镜头外观,即使在您完成渲染之后 - 并且不会将这些效果永久烘焙到您的渲染图像中。

    渲染产品可视化转盘动画?有几十种产品,每一种都有不同的标签?只需渲染一次产品并换出 comp 中的标签。

    使用渲染管理器

    对于任何认真的 3D 艺术家或创意机构来说,使用渲染管理器都是合乎逻辑的步骤,因为它带来了很多好处。一些好处包括更好地控制您正在渲染的作业,而不必只是 3D 渲染作业。

    大多数现代渲染管理器,例如Thinkbox Deadline(最多可免费用于 2 个节点,因此请试驾),支持运行各种作业,从 3D 渲染到视频渲染、粒子缓存、文件转换、图像处理到批量处理。

    Rendermanager 将减少您通常花在设置和检查渲染上的时间,并且通过渲染自动化,您甚至可以设置渲染管道的整个链。

    使用 Rendermanager,您可以自动化整个过程。只需创建一个在 3D 场景完成渲染时自动启动的合成作业。创建一个编辑作业,一旦这些合成作业完成,它将重新渲染您的预览。

    但是,Rendermanagers 还可以用于另一件事:提高渲染性能。

    你看,渲染引擎的工作原理都非常相似。点击渲染按钮后,渲染过程通常包括 3 个阶段:

    准备要渲染的场景,以便渲染引擎可以充分利用它

    渲染场景(以桶或渐进模式)

    将完成的渲染和 AOV 保存到存储

    通常,第二阶段,即实际的渲染阶段,占用的时间最多。当您进行最终渲染并且试图获得需要大量样本的无噪声图像时尤其如此。实际渲染阶段的伟大之处在于它非常容易并行化,这意味着渲染引擎充分利用了您的所有资源、CPU 内核或 GPU 内核来运行此阶段。

    第一阶段,虽然,在准备阶段,无法充分利用你的硬件,因为它是非常依赖于你的CPU的单核性能,最在这个阶段的计算只能在运行单核(或极少数核心)。这意味着您的 PC 的其余性能只是坐着等待,直到该阶段完成,它可以提升并充分利用其资源的潜力。

    这是在 V-Ray CPU 渲染器上渲染中等复杂 3D 场景时 CPU 利用率的屏幕截图:

    如您所见,CPU 利用率不高。很多时候,它在大约 10% 的利用率下闲置。这是场景准备发生的地方。它主要包括构建光线追踪层次结构和准备纹理。当利用率跃升至 100% 并保持一段时间时,这就是实际渲染阶段的开始,您通常可以通过渐进式存储桶或渐进式渲染看到这一阶段。

    在最好的情况下,您的 PC 资源在渲染过程中将始终被 100% 使用,但由于这不是渲染引擎的工作方式,我们可以使用渲染管理器来改进它。现在,请注意,此准备时间是您渲染的每帧固定的时间量 - 如果您的整体渲染时间更长,它不会变长。因此,如果您渲染需要数小时才能渲染的帧,那么一分钟的准备时间并不多。

    但是,如果您的帧只需要几分钟就可以完成渲染,那么一分钟的准备时间就会浪费大量资源。最坏的情况是您拥有一台配备大量 GPU 的强大 PC。假设您有一个带有 8 个 GPU 的渲染节点。所有 8 个 GPU 都将闲置在那里,等待准备工作完成。

    如果您有 8 台 PC,每台 PC 配备 1 个 GPU,则准备时间将被 8 分,从而浪费更少的资源——因为准备工作可以在 8 台 PC 上同时进行。

    同时是这里的关键词,因为我们可以使用 Rendermanager在一台 PC上同时渲染多个作业,为我们正在运行的每个渲染作业分配资源。

    因此,如果我们有一台带有 8 个 GPU 的 PC,我们可以使用渲染管理器一次运行 8 个作业,这些作业中的每一个都渲染我们的图像序列的一帧,并且这些作业中的每一个都被分配了一个 GPU,因此他们不干涉。这是渲染管理器的标准做法,易于设置。

    当然,在单台 PC 上同时运行多个渲染作业需要大量资源,但借助强大的 CPU 和大量 RAM,您可能会节省大量时间。当然,这个 8-GPU 示例非常极端,但即使使用普通的 1CPU、1GPU 机器,您也可以使用第二个同步渲染作业来填充 CPU 或 GPU 相当空闲的区域。

    使用不同的渲染引擎

    现在,使用不同的渲染引擎肯定不是您可以轻松完成的事情,如果您习惯于工作流程或绑定到公司管道中的特定工具,这将不起作用。但是,如果您确实掌握了使用哪些工具的权力,并且渴望了解另一个渲染引擎是否对未来的工作有意义,那么请做一些实验。

    您可能已经从事 CPU 渲染等工作多年,现在可能是时候跳上现代 GPU 渲染引擎,如Redshift或Octane。总会有比其他工具更适合您的项目类型和工作方法的工具,因此请继续测试市场上出现的新工具。

    检查软件更新

    您的版本中可能始终存在已在更新中修复的错误,或者可能存在可提高渲染性能的功能更新,因此请检查您使用的软件和工具是否有任何此类更新。如果您在工具中遇到一些奇怪的行为,请始终向开发人员报告,以便修复。大多数软件包都有论坛,您可以在其中轻松提交错误报告。

    升级您的 PC,购买更多更好的硬件

    您可以跳过 3D 项目场景的任何类型的优化,如果您只是获得更好的硬件,仍然可以看到明显更快的渲染速度。对于某些人来说,这可能不是一个可行的选择,但对于那些有钱花钱的人来说,这是值得考虑的。这一切都与投资回报有关。如果它现在花费更多钱,但您可以用一半的时间完成所有未来的渲染,那么更好的硬件很快就会收回成本。

    如何通过硬件升级提高 PC 的性能:

    决定要提高性能的工作负载(例如在 Redshift 中渲染或在 V-Ray 中渲染)

    找出对工作负载性能至关重要的硬件组件(用于 GPU 渲染的 GPU、用于 CPU 渲染的 CPU、RAM)

    检查当前硬件的性能指标(通过CPU 的Cinebench或VRAY-Bench或GPU 的Octanebench和Redshift Bench等基准测试)

    确定预算并找到适合您预算的潜在较新硬件组件的基准分数(由于大多数分数是线性的,因此您将已经知道较新部件与当前 PC 的性能相比要快多少)

    对于 GPU 渲染引擎,添加更多 GPU 通常几乎线性地扩展性能。不过,您必须确保拥有支持多 GPU 设置的平台、主板、CPU 和芯片组。对于 CPU 渲染,内核越多,时钟越高,通常越好。

    每个组件的性能越高,您通常为增加性能支付的额外费用就越高。有时获得多个低层组件(例如 GPU)而不是一个高端组件是有意义的。

    超频您当前拥有的硬件

    它是一个可行的选择,可以暂时从硬件中获得更高的性能。

    超频的缺点如下:

    它会增加不稳定性,如果出现问题或更糟,则可能会丢失渲染过程

    与性能提升相比,您产生了不成比例的热量

    与性能提升相比,您消耗的功率不成比例

    您的组件承受更大的压力,有可能损坏超频组件(CPU、GPU、主板、RAM)或整个 PC

    在这些免责声明之后,对于那些知道自己在做什么的来说,超频仍然是一个选择。但是,调整 OC 设置可能需要很多时间,因此请务必在遇到最终渲染的时间限制之前进行试验。CPU 和 GPU 超频都是可能的。

    在我看来,在大多数情况下,超频是不值得的,GPU 和 CPU 已经做得很好,它们的自动加速功能保持在更安全的范围内。

    使用渲云渲染

    渲染可以交给云渲染,不用本地渲染,本地渲染占用电脑,而且对于电脑配置,显卡,内存都要求较高。云渲染可以解放本地电脑,且把渲染速度交给到自己手上,根据项目的时间进度,选择不同的渲染模式,做到既能不耽误项目进展,提高效率,还可以不用考虑更换新的电脑设备。

    相关文章

      网友评论

          本文标题:还被渲染慢渲染卡顿而苦恼?2021提高3D渲染性能的专业指南来了

          本文链接:https://www.haomeiwen.com/subject/dszdoltx.html