When creating an object, like an A/C unit in my case, there are a lot of objects that are only partially visible because of the view or because they are behind other objects, and some are not visible at all because they might be on the back of the unit. Do all those objects, even the ones that aren't directly visible, get rendered when rendering in Cycles? Just trying to think of ways to improve render speeds. Thanks!
2 Answers
The short answer to your question is Yes, all of the other objects in your scene contribute to the final image and are computed by Cycles.
In a little bit more detail, Cycles is a ray-tracing render engine. This means that it simulates light rays bouncing around your scene. Just like in real life, these rays can bounce multiple times, which means they can go around corners, refract through glass, and influence the scene regardless of whether or not they are in direct view of the camera. For example, look at this simple scene:
Even though the red sphere is out of the camera's view, it still influences the scene, tinting everything red. It even spreads beyond the direct line-of-sight of the sphere, by bouncing off the walls.
So, how does Cycles render everything? It starts by creating a BVH Tree. BVH stands for Bounding Volume Hierarchy. The BVH Tree contains all of the objects in the scene, including particles and hair, and allows Cycles to make a quicker determination of whether or not a ray has intersected with a mesh.
Cycles classifies its rays in multiple ways. One of these classifications is Direct vs Indirect. Direct rays happen when an object is lit by a lamp or object that is in its direct line of sight. Because of this, Direct rays are only the first bounce of a ray. All other bounces are indirect rays. This indirect lighting is (most of the time) going to be the largest contribution of objects out of the camera view to your scene.
Knowing all this, what is the best way to decrease render times? There isn't one easy answer, but here are a few suggestions.
Decrease Max Bounces:
This limits the number of times a ray can bounce before it is killed. Decreasing these can minimize the amount of time spent calculating rays in parts of the scene not visible to the camera. This can make your scene darker, though, since it decreases the influence of indirect lighting sources.Use AO Bounces (in the Scene panel):
Similar to decreasing Max Bounces, this also limits how many bounces a ray can have before it dies. Instead of just killing the ray, though, this does an Ambient Occlusion calculation first. This can have the effect of lightening the scene, since AO passes are usually brighter than normal rendering.Use Camera Cull:
This is the most drastic of the options here. It will actually exclude objects outside of the camera view from the BVH Tree. When using this, you have to be careful not to get weird flickers from objects coming in and out of the camera margin. After enabling it in the Scene settings, you have to individually enable culling for each object in the Object settings:
If you want a little more control, you can manually animate the renderability of an object by hovering over the camera icon and pressing I:
-
$\begingroup$ Thank you! That makes sense. You've given me more useful information in a couple paragraphs than watching hours of YouTube videos on similar topics. I genuinely appreciate your help explaining this to me and giving me those tips to speed it up. Thanks again. $\endgroup$ Commented Jun 2, 2018 at 17:04
All the surfaces that are reachable with a light ray shot from the camera are taken into consideration when rendering. Even if the objects are not directly visible, they might contribute to the overall computation of indirect lighting, reflections, etc.
-
$\begingroup$ Soo, slower or not? His title question differs from the question's question. $\endgroup$– LeanderCommented Jun 1, 2018 at 16:51
-
$\begingroup$ @Leander The answer's answer answers "Do all those objects, even the ones that aren't directly visible, get rendered when rendering in Cycles?". I would presume that the more objects and things that are to be rendered the more resources (and maybe time) is needed. $\endgroup$– user1853Commented Jun 1, 2018 at 17:06