corona渲染内存爆满怎么回事

如题所述

corona内存爆满的原因:

内存使用量的急剧增加和突然增加可能会导致弹出错误的渲染错误消息,闪烁的窗口,UI中出现白色方块,系统总体运行缓慢甚至崩溃。可能会导致多种原因,其中包括:

1.排量。

在Corona Renderer中,任何具有使用位移的材料的网格都将基于以下方式细分:

    位移纹理的复杂性

    “渲染设置”>“性能”>“置换”下的质量设置

    渲染分辨率

    如果置换纹理非常详细,置换质量设置为很高或输出分辨率很高,则可能导致RAM用尽。

    解决方案:

    注意:从Corona Renderer 3开始,有一个新的Autobump功能(3ds Max | C4D),该功能大大减少了RAM的使用,而没有明显的质量损失。以下提示是针对较旧版本的Corona Renderer的,这些版本未使用Autobump,但它们仍可以帮助您降低RAM的使用量:

    不要使用过于详细的位移图。使用位移产生精细的细节通常需要提高位移质量,这可能会导致RAM用尽。最好将位移用于材料的较大特征,而将凸块用于较小的细节。例如:渲染砖墙时,仅使用位移获得砖的一般形状,并使用凹凸贴图模拟较小的细节,例如裂缝或其他缺陷。

    通过模糊或修剪最亮和最暗的区域来优化置换纹理。这将大大减少置换网格所需的细分数量。

    避免在大量物体(例如,形成森林的零散树木)上使用过于详细的位移贴图

    避免在覆盖场景大面积区域(例如,地板,墙壁)的材质中使用过于详细的置换贴图

    尝试通过增加屏幕尺寸来降低置换质量,并观察结果是否可以接受-默认值为2px通常可以提供良好的质量,但是以更高的分辨率渲染时,可以将其提高到4、8,甚至更多。

    如果场景是在早期版本的Corona中创建的,则在加载场景时会要求您切换到“新的位移行为”。确保执行此操作,因为这将激活新的置换算法,该算法 将使用更少的RAM。在此处可以找到更多信息: ( 3ds Max | C4D)

    此外,如果使用3dsmax,则可以使用CoronaDisplacementMod修改器覆盖各种对象上的位移质量。如果在对象上使用此修改器,则此特定对象将忽略“ 渲染设置”>“性能” 对话框中的位移设置。而是使用修改器的设置。为离摄像机更近或更远,或靠近帧中心或边框的对象定义“细节级别”很有用。

    2.在整个场景中应用,散布或以其他方式严重实例化(重复)的具有Corona Light Mtl的高多边形对象。

    无法正确地对此类对象进行实例化,从而导致将每个对象中的每一个单独存储在内存中。在应用Corona Light Mtl时使用太多或太详细的对象可能会导致RAM用尽。
    解决方案:

    减少重复对象上的多边形数量。

    减少实例总数。

    仅在可能的情况下,使用启用了自发光功能的Corona Mtl代替Corona Light Mtl。有关更多信息,请参见:我应该使用电晕照明还是自发光?(3ds Max | C4D)

    当创建许多灯(例如,工厂大厅中有许多顶灯)时,请使用自发光材料或电晕灯Mtl,而对于直接可见的部分(例如,灯泡或灯丝)禁用“发射光”选项一个灯泡),并添加单独的简单几何形状以产生光。这可以是放置在天花板下方的简单矩形。

    3.渲染元素

    每个渲染元素都需要计算额外的内存。RAM使用率随渲染图像的分辨率和添加的渲染元素数量的增加而增加。

    解决方案:

    如果可能,在渲染高分辨率图像时避免使用渲染元素,或将其减少到尽可能低的数量。

    如果可能,在渲染高分辨率图像时避免使用降噪。每个去噪的渲染元素计数两次-它存储去噪和非去噪版本的数据。

    尽可能优化LightMix-例如,不要为吊灯上的每个光源创建10个LightSelect元素,而是对光源进行分组并创建一个控制所有光源的LightSelect元素。

    如果不需要使用LightMix单独控制灯光,则可以将其不分配给任何LightSelect元素-在这种情况下,它将自动包含在“ Rest(未分配)”类别中,该类别仅计为一个渲染元素。

    4.实例化(复制)动画对象

    当前,存在一个限制,使得无法实例化动画对象。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-08-11

可能的原因和解决方法:

    输出分辨率太高
    解决方法: 如果可能,降低输出分辨率。
    注意:如果您使用的是 3dsmax,禁用 VFB 也可能有帮助(渲染设置 > 系统 > 系统设置 > VFB 设置 > 类型:无);但是,节省的内存可能可以忽略不计。

    渲染元素过多。
    解决方案:删除所有不必要的渲染元素,尽可能降低输出分辨率。

    为渲染元素启用降噪。
    解决方案:仅对那些绝对必要的渲染元素启用去噪。

    场景中高分辨率纹理过多
    解决方案: 减少场景中使用的位图数量和分辨率

    位移屏幕尺寸值设置得太低。
    解决方案: 除非绝对必要,否则不要使用非常高的位移设置。通常,屏幕尺寸可以保留为默认值。它永远不应设置为小于 1。较高的值意味着较低的质量和较低的 RAM 使用率。