Hiding objects does not seem to save RAM

Hi Guys,

I have a large scene with many objects, etc. When I load the entire scene, Cinema uses around 40 GB of memory, and the rendering time increases significantly because there is almost no free RAM left. Therefore, for each more detailed shot, I hide almost everything both in the viewport and for rendering. However, Cinema 4D/Corona still requires almost the same amount of memory. Is this normal behavior, or am I doing something wrong?

I also notice similar strange behavior when rendering only a single object. The number of rendered pixels is about 10% compared to the full scene, but the rendering does not seem to be 10× faster — maybe only about 5× faster.I have a large scene with many objects, etc. When I load the entire scene, Cinema uses around 40 GB of memory, and the rendering time increases significantly because there is almost no free RAM left. Therefore, for each more detailed shot, I hide almost everything both in the viewport and for rendering. However, Cinema 4D/Corona still requires almost the same amount of memory. Is this normal behavior, or am I doing something wrong?

I also notice similar strange behavior when rendering only a single object. The number of rendered pixels is about 10% compared to the full scene, but the rendering does not seem to be 10× faster — maybe only about 5× faster.

Corona loads the objects into RAM regardless if they are visible or not. If you don’t want them to render, use layers instead, if you are not already using them.
You can then make a layer for grass for example, one for trees and so on.
Deactivate in the layer tab render, generator and deformer for all the objects you don’t need in the rendering.

Thank you for the advice. I haven’t been using LAYERS so far, because I find it easier to organize and modify scenes by grouping objects into logical units and hiding them as needed. Managing the scene through LAYERS feels less practical to me. When I render in Octane, hiding the objects is enough. It’s a real shame that CORONA doesn’t allow this.

I have reorganized the project into layers and disabled render tags, etc., but the problem with RAM usage remains. It seems that Corona loads everything regardless of whether it is hidden, whether the layer is disabled for rendering, and so on.

I tried searching for a solution, but I didn’t find any suggestion that actually works.

Can’t confirm this issue. I have to use layers every day, since I have huge scenes with millions of scattered and high poly objects.
For me, Corona does work as expected.

A few more infos could help. What exactly is causing the RAM issue? Displacement, scatters, deformers, generators, high poly meshes or high-res textures?

Scattered objects are not a problem as long as you use instances. I’ve just tested how much memory I can save by disabling displacement on all materials, and it was almost 40%.

The issue is that I have several different rooms in a fairly large project, plus some exterior parts. There are multiple 3D models with materials, including displacement, but when I render a single room, only one or two of those models with displacement materials are actually part of the scene.

The rest of the 3D models with such materials are placed on hidden layers, but Corona still loads them into memory anyway.

Thee are two issues here. The RAM issue doesn’t change because when you open the scene, C4D/Corona goes through all your materials, whether they are used or not, and loads all the texture files so they can be ready to use. Later, when you deactivate them from the render, the RAM is already being used from the initial opening of the project. Doesn’t matter if you use the little red dot method, Layers or Takes. That makes sense to me.

The real question is if you hide objects, especially complex or groups of objects, it should in theory render faster. I have found it doesn’t really make a difference in render speed. I often render a scene with object set to only not seen by camera, but I need the shadows. Corona still needs to calculate those objects for the shadows and reflections, etc. so makes sense it renders at the same speed.

The other thing to consider is do you really need your texture files to be 4k or 8k? A coffee mug in the very back of a room that never get larger than 50 pixels tall, with a subtle bump displacement, just doesn’t need those massive files. In fact, you can many times eliminate it altogether. This will save tons of RAM and render time. Of course you have to weigh the time it takes to optimize a complex scene vs. leaving it as-is.

Always close all other applications when you render so C4D has as much free RAM to use. Always good advice. Also, eliminate unused materials from your scene. Seems like C4D’s Remove Duplicate Materials function now works with Corona materials. In the past, it did not. This can be a huge help too. Probably have to save, close and reopen to see the RAM effects I’d guess.

Sorry for the rambling post. ha.

Thank you for the detailed and helpful response. However, I would like to respectfully disagree with the part stating that objects hidden from rendering (via the red dot, layers, etc.) should still be loaded into memory.

If an object is outside the camera view and I do not need it to cast shadows, appear in reflections, or otherwise contribute to the render, I do not see a reason why it should occupy RAM. I understand that geometry is loaded into memory when the project is opened, which in my case typically results in about 20–30% RAM usage.

After that, I disable approximately 60% of the project for rendering, and I would therefore expect only the materials and objects that remain visible for rendering to be loaded and used. This is how, for example, the OCTANE renderer behaves, which I occasionally use. While I understand that OCTANE is a GPU renderer, I would expect similar functionality in CORONA as well. When starting the render, RAM usage jumps to nearly 100%, even though most of the project is hidden from rendering.

In its current state, this behavior leads to the very issue that originally made me switch from OCTANE to CORONA for large projects.

iirc, layers should do the trick
(btw, there’s a little helper “MW Auto Layer Tag | Cinema 4D Python Tag Code)