理论足够多,让我们更快地渲染。
我们现在将介绍的一些优化方法中的很大一部分将涉及降低场景的复杂性,因此我们可以减少样本数量,同时仍然获得无噪声的最终图像。
还记得减少渲染时间的两个步骤吗?第一步是找出导致减速的真正原因。
查找导致减速的原因的最简单方法是利用排除原理。
举个例子:如果场景中有一百个对象,而其中一个对象导致渲染速度变慢,则找到该单个对象的最快方法是通过排除原理。
现在,我一次只能删除一个对象,最终,在最坏的情况下,经过一百次尝试,我才找到罪魁祸首,但是有一种更快的方法。
始终删除(或禁用)一半的对象并测试结果(重新渲染)。为什么?因为通过删除一半的对象,您已经可以将查找罪魁祸首所需的对象数量减少50%!
所以现在我们有50个对象。它仍会缓慢渲染吗?是?再次删除剩余的50个对象中的一半。
它仍会缓慢渲染吗?没有?大!现在,我们知道罪魁祸首在我们最后删除的那25个对象中。
因此,现在我们只需两步,就可以将一百个对象减少到25个。
继续执行此操作,直到找到对象。
(显然,这只是用于查找和测试问题所在的位置,请勿保存/覆盖场景。)
排除原理可以应用于任何事物。要命名网格、材质、灯光、关键帧。
始终尽可能缩小问题范围。尽可能地靠近罪魁祸首,您常常会发现解决方法比您想象的要容易得多。
您认为以下哪个论坛请求会允许其他人更好地帮助您?
1、“请帮助:我的场景渲染缓慢” 2、“请帮忙:为什么我场景中的树木渲染速度比其余场景(Redshift)慢得多?”
我可以保证,如果您得到第一个答案,那就是:“请先缩小问题来源”。
不过,第二个可能会立即得到答案:“大多数3D树上的叶子上通常都带有透明的材料。尝试限制透明度跟踪深度,看看渲染时间是否变好,或者渲染引擎是否具有在高透明度深度下更好地工作的着色器。”
Redshift的模板垫即使在高透明深度下也不会降低速度。尝试使用它。”
现在,第二个听起来好像可以立即解决您的问题。因为您已经知道导致减速的原因是什么,所以其他人可以更快地为您提供帮助。
通过排除事物,您可以将它们排除在等式之外。
排除场景对象?渲染仍然很慢吗?您的场景本身很可能会很好。
减少了渲染设置?渲染仍然很慢吗?您的渲染设置很可能很好。
交换您的CPU或GPU?渲染仍然很慢吗?CPU或GPU很可能与渲染速度降低无关。
你明白了。那样简单。
当然,问题始终可能是不同领域的结合,但是稍后我们会解决。
记住,要减少导致减速的原因。
然后我们可以进行修复。
在本文中,我将介绍一些典型的区域,这些区域通常被认为是导致渲染速度变慢的原因,您也许可以使用这些方法来解决您的问题。
不过,它们并不总是有效,因此,请尝试学习分析和剖析场景的技巧,这样就永远不需要外部帮助。
人们会来找您,因为您是专家。它所需要的只是对3D世界中解决问题的一些见解(不仅仅是渲染)。
几乎每个现代的Render Engine都可以可视化每个像素采集的样本数量。这是Redshift的样子:
深色像素代表较少的样本,明亮像素代表大量的样本。
能够渲染图像并一目了然地看到哪些区域需要最多的样本,可以告诉您很多有关场景以及从何处进行优化的信息。
样本分布可视化会告诉您渲染设置是否配置错误,或者是否存在某些场景对象,材质或照明仅需要太多样本来清除。
很多时候,您所需要做的就是在“线条模式”下检查视口,以便它在视口中显示所有多边形轮廓。
以下面这个场景为例。一目了然,哪些对象具有许多多边形,应该具有减少的潜力:
视口屏幕截图设置为(隐藏)线视图
每个3D应用程序都可以显示整个场景或所选对象的多边形数量。这是在Cinema 4D中的外观:
还记得以前的排除原则吗?首先检查整个场景的多边形数。如果看起来很高,请选择一半的对象,然后再次检查。
减少对象选择的数量,直到找到多边形计数过高的对象并进行优化。
如果您具有一个结构良好的场景,其中包含几个主要的对象组,则也可以单步执行这些操作并逐步遍历层次结构,这可能会更快。
渲染性能的一个重要因素是场景中多边形的数量。根据经验,可以说,对于大多数场景,多边形越少,渲染它的速度就越快。
以下是大部分时间来自大量多边形的列表:
原始网格物体已经带有很多多边形。例如,导入的CAD数据或造型
可以细分网格物体的修改器,每个细分的多边形数量增加四倍(例如Cinema 4D中的HyperNurbs,Blender中的细分曲面等)
克隆
通过组合/拉伸曲线生成的任何类型的NURB对象
细分过多的参数对象
微位移
现在,您不能就摆脱这些,对吗?它们是必不可少的,但我们确实希望尽可能地对其进行优化。
该过程很简单:减少多边形的数量,直到开始看到渲染中的视觉差异为止。
让我解释一下:您是否需要在每一侧都具有100个细分的参数立方体?如果每边只有一个多边形,看起来会有所不同吗?不会的!
让我们快速看一下其中的每个:
原始网格
多边形太多的原始网格物体很快就会成为渲染缓慢的原因。
原始网格物体的问题是,它们可能很难优化。
除了向其中添加一些折减修改器(通常会浪费大量的UV布局和多边形流动)之外,除了手动折减和retopo之外,您实际上无能为力。
当然,如果您具有这些Raw网格的源文件,它们的原始文件,就可以保存!
您的客户是否向您发送了要转换为多边形才能在3D场景中使用的STEP或其他CAD数据?指定要从中生成多少个多边形很容易。尝试一下。
您的场景中是否具有雕刻的角色,其中包含数百万个多边形?也许您可以获取源文件并使用细分修饰符,而不是将疯狂的分辨率直接烘焙到网格中。这样,您可以将细分级别调整为适合您的角色的屏幕大小。
基准是这样的:仅使用网格的屏幕尺寸所需的尽可能多的多边形或细节。
如果您的角色在背景中,那么与拍摄特写镜头相比,您应该能够减少多边形的数量。
(让我们忽略一个事实,即为高多边形的原始网格进行装配和设置动画是我永远都不想做的……)
记住,我并不是说您应该低调并改变场景的外观。您应该具有实现场景外观所需的最少数量的多边形。
您可以采取以下其他方法进一步减少多边形的数量:
删除/禁用相机看不到的所有内容。
渲染飞机在天上飞?我敢打赌,大多数内部对象甚至无法通过相机看到。禁用那些座椅,轮子和其他内部构造网格。
渲染森林?删除相机后面的所有树木和草丛。不需要那些。
渲染客厅?我敢打赌,在反射中看到的任何东西都可以减少很多。您无法真正判断花瓶中反映的植物是否具有一百万或一千个多边形。
细分,修饰符,生成器,克隆,实例
修饰符、生成器和克隆是一种祝福。它们使场景的构建变得容易得多,而不必破坏性地烘焙正在使用的网格。
他们越容易合作,就无法最大程度地优化自己的潜力。
以细分曲面为例。它们细分整个网格,每个级别将多边形的数量增加四倍。不仅如此,您通常还可以选择分别设置视口和细分和渲染子细分。
这看起来似乎很明显,但是却带来了这样的危险,即您可能不会注意到视口显示和实际渲染之间的多边形差异。
您的视口可能是顺畅的航行,因为细分设置为0,但它们可能设置为比渲染时更高的级别。检查一下!
诸如Extrude之类的生成器会根据一些特定参数生成基础网格的新多边形。
同样,您通常可以分别设置“渲染”设置和“视口”设置,因此请确保这些拉伸子步骤尽可能少。
克隆器是渲染速度慢的罪魁祸首。设置起来很容易,请确保生成的实例是真实的内存实例,有时也称为渲染实例(或3dsmax中的Multiscatter)。
这允许渲染器在其引用的内存中仅包含这些克隆对象中的一个,从而使克隆器的内存消耗仅是具有非渲染实例时所需内存的一小部分。
在树上克隆数百万片叶子?您的克隆程序只需要一个叶子所需的内存(或多或少),就可以实现真正大量的克隆。
即使您只是在克隆器或数组对象之外使用实例,也请确保将其设置为用作渲染实例,以便节省内存。
NURB /曲线组合
与拉伸类似,任何类型的Sweep,Loft或Lathe NURB生成器都会采用样条线/曲线或其中的许多样条线/曲线,并从中创建NURBs对象,然后在渲染时将其无损地转换为多边形。
由于“曲线”可以具有很多顶点来使其平滑,因此请确保优化生成的“扫掠”、“放样”或“车床”,以实现仅使用所需外观所需的最少子步数。
有时您可以在Generator本身中设置子步骤,有时必须减少曲线上的细分,以优化生成的对象。
参数对象
每个3D软件都带有一些参数化的默认对象,这意味着可以对它们进行一定程度的更改,而不必破坏性地将它们转换为基本网格。
这些默认对象通常包括平面/曲面、立方体、球体、圆锥体、圆柱体、管等,并且您通常可以设置半径、高度、边数和其他参数。
因为这些是默认对象,所以它们带有预定义的参数,这些参数可能无法针对场景或总体工作方式进行优化。
示例:如果添加需要用作地板的表面,则该平面的默认设置可能是已经有许多细分的默认设置,从而使该平面包含数百个多边形。
这是完全没有必要,你需要一个地平面是一个单一的多边形(除非你想以某种方式取代它)。
检查默认对象,并尽可能减少多边形,而不会过多改变场景的外观。
事实上,大多数3D应用程序都可让您保存参数对象的默认设置,因此,如果每次创建参数对象时都进行了相同的调整,则可能需要从头开始设置默认参数,从长远来看可以节省您一些时间。
微位移
Micro-Poly位移是渲染时会创建很多新多边形的另一件事,而通常不会在视口中看到。
同样,请确保您确实需要它们,或者是否可以使用法线贴图或凹凸贴图伪造它们,尤其是当它们在背景中或只能在反射中看到时。
如果确实需要它们,请检查细分数量,直到位移网格变得太粗糙为止。
事情是这样的:如果要在明亮的日光下使用默认的灰色材质渲染角色转盘,则如果角色具有10k或10mio多边形,则很可能看不到任何区别。
多边形本身不会增加渲染引擎清除图像所需的样本数量。
但是,多边形的确会降低光线跟踪器的整体性能和光线树的构建速度。
因此,尽管您不会看到“采样”的差异,但是在多边形较少的场景中,计算这些采样的速度会更快。
未完待续...
敬请期待《如何更快地渲染?深入了解3D渲染性能的指南!(4)》!!!
本文《如何更快地渲染?深入了解3D渲染性能的指南!(3)》内容由Renderbus云渲染农场整理发布,如需转载,请注明出处及链接:https://www.renderbus.com/share/how-to-render-faster-3/
相关阅读推荐:
如何更快地渲染?深入了解3D渲染性能的指南!(2)
如何更快地渲染?深入了解3D渲染性能的指南!(1)
【渲染引擎】Blender的2021年最佳渲染引擎(下)