Render suddenly slows down?

Hello! I am new to Blender. I am using Blender 2.82. All of a sudden rendering became really slow. I am only rendering a couple of small spheres using Cycles with the following settings, which as far as I’ve searched for should speed up the process:
*Cycles Max Bounces set to 12.
*Render tiles to 8
*Number of samples set to 16
*Caustics reflective and caustics refractive both disabled
I’m rendering using my CPU, as I don’t have a GPU. Since the images were quite simple, this morning it took about 5-6 seconds (only two really small white, untextured, spheres) to render each image. I wanted to continue this afternoon, when I ran the script, it took around 2 minutes or more to produce each image, I am quite positive I haven’t changed anything. I am using this python script:

# Render all cameras or cameras containing text given with command line argument "cameras".
# Example:
# Let's say test.blend file contains cameras "east.01", "east.02", "west.01", "west.02"
# By executing command "blender -b your_file.blend -P render_all_cameras.py" all 4 cameras will be rendered.
# Command "blender -b your_file.blend -P render_all_cameras.py  cameras=east" will render "east.01" and "east.02" cameras.
# Command "blender -b your_file.blend -P render_all_cameras.py  cameras=01" will render "east.01" and "west.01.02" cameras.


import bpy, bgl, blf,sys
from bpy import data, ops, props, types, context
print("\nThis Python script will render your scene with all available cameras")
print("or with camera(s) matching command line argument 'cameras'")
print("")
print("Usage:")
print("Render all cameras:")
print("blender -b your_file.blend -P render_all_cameras.py\n")
print("Render only matching cameras:")
print("blender -b your_file.blend -P render_all_cameras.py  cameras=east\n")

cameraNames=''

# Loop all command line arguments and try to find "cameras=east" or similar
for arg in sys.argv:
    words=arg.split('=')
    if ( words[0] == 'cameras'):
     cameraNames = words[1]

print('rendering cameras containing [' + cameraNames + ']')

print('\nPrint Scenes...')
sceneKey = bpy.data.scenes.keys()[0]
print('Using Scene['  + sceneKey + ']')

# Loop all objects and try to find Cameras
print('Looping Cameras')
c=0
bpy.data.scenes[sceneKey].render.image_settings.file_format = 'JPEG'
bpy.data.scenes[sceneKey].cycles.max_bounces=12
bpy.data.scenes[sceneKey].render.tile_x=8
bpy.data.scenes[sceneKey].render.tile_y=8
bpy.data.scenes[sceneKey].cycles.samples = 16
#bpy.data.scenes[sceneKey].view_layers['View Layer'].cycles.use_denoising
bpy.data.scenes[sceneKey].cycles.caustics_reflective = False
bpy.data.scenes[sceneKey].cycles.caustics_refractive = False
for obj in bpy.data.objects:
    # Find cameras that match cameraNames
    if ( obj.type =='CAMERA') and ( cameraNames == '' or obj.name.find(cameraNames) != -1) :
      print("Rendering scene["+sceneKey+"] with Camera["+obj.name+"]")

      # Set Scenes camera and output filename
      bpy.data.scenes[sceneKey].camera = obj


      bpy.data.scenes[sceneKey].render.filepath = '//caamera_' + str(c)

      # Render Scene and store the scene
      bpy.ops.render.render( write_still=True )
      c = c + 1
print('Done!')

Could anyone help me discover what could possibly be wrong? How is this possible? I wish to create an animation of these spheres moving, as I take pictures of them with four cameras, hence all this looping. I will then work with those images to reconstruct the 3D position of the spheres. That’s why I am concerned with the time the rendering process takes. I need to obtain at least 30 pictures (30 fps- will only move the spheres after each picture is taken) from each camera to just represent an animation of 1 second, which would make a total of 120 frames… 240 minutes…4 hours for just one second. It is too much, taking into account I haven’t even computed any movement yet…
Thank you so much in advance,

Looks like the script is set to render multiple cameras at once, thus the addition in time, which would be an exponential increase. Max bounces is overall clamping of those bounces for all settings, so not very descriptive of the other like diffuse, glossy, transparency so on. Render samples of 16 seems really low, but for a simple scene like this not bad. Other than that, not sure. Seems like this would be more efficient to render each camera out separately, if the script is taking such a hit.

Thanks for your reply and your time. Sorry for the lack of detail, I’ve only been using Blender for 2 days. What do you mean rendering each camera separately? How could that be done automatically for the same scenery of objects moving?
Here are more details if that could be of any help:
*Pictures are RGB with 70% quality
*Compositing and Sequencer are unchecked
*Diffuse and Glossy are both set as 4, whereas transparency and transmission are set at 8 and 12 respectively. Volume is set to 0.
*I’ve removed clamping, both direct and indirect have values of 0
*About Caustics, they are disabled as I said. But there is this one parameter Filter Glossy set to 1, yet I’m uncertained if this plays a role at all if caustics are disabled.
*Volumes: Step size (0.1m, Max Steps (1024)
*I’ve got Hair and Simplify ticked, Max Subdivision is set to 6

I’m a Robotics engineer (still in the process) and vaguely know what these parameters mean, so I’m unsure whether they are relevant for my question. If there is anything I could tell you that should be relevant, please let me know. Thank you so much for your help. Below are two images of the set and results I expect, if that clarifies anything.

For and answer to how to render these for the same scene, you render the active camera till sequence completion and then make another camera active and so on. If the script is trying to do that, it should do each camera in sequence. Either way, I think it’s the script that is the bottleneck. I don’t quite understand the intent of your project.

Settings: I usually set diffuse to 2, use to be 3 but the decay of light from diffuse surfaces is pretty rapid, and it’s also a Pixar default. You usually won’t get more that 10% of incident light reflected from a diffuse surface, so after 2 bounces, the light is pretty dim
Glossy 4 just to get enough from reflections
Transparency/Transmission at least 6 to make sure light gets through transparent surfaces or had enough depth for sub surface scattering
Caustics and volumes shouldn’t be calculated for this scene
You don’t need hair, there’s none in the scene but won’t impact anything unless you are using hair.
Simplify doesn’t need to be used here.
Note about subdivision. Subdivision at 6 is high. With Catmull-Clark subdivsion, it subdivides each polygon in the mesh into 4 at a level of 1. Each level of subdivision increases the exponent, so a level of 2 is 4 squared or 16, at 6 you have subdivided each polygon by 4 to the 6th or 4096.

Is there a reason to use 4 cameras for this scene? Just curious.

I will try to explain the intent of my project… as maybe there is another way to do it more efficiently. The aim of the entire project is to simulate a MOCAP system with passive markers. In real life, I had a setup in the laboratory with four cameras taking pictures simultaneously and with a very fast frame rate (60 fps) of these reflectant markers in motion. I would then process these images with vision algorithms on C++ to obtain the 3D position of my markers. However, I can no longer access the lab so I wish to recreate its conditions with the help of Blender. I need to obtain synchronized images from the four cameras capturing markers (the spheres) in the same position from four different cameras/points of view. I need them to be four cameras so that the results from the algorithms are precise enough.

My initial approach is to move the marker very slightly a distance of 0.7 cm at most; take picture from camera 1, 2, 3 4 and repeat. But it’s taking a lot of rendering time. I am uncertain if there is another, more efficient way to do this, so that I could just tell each camera to save pictures (for later use) at 60 fps and that the rendering is quick enough…
I just tried adjusting what you told me, yet the processing time is still two minutes. Thank you so much though. If you have any other idea, please let me know.

Like I said, it’s probably the script for one reason or another, but not sure what changed. This should be something really simple to render and rapidly. Best of luck to you , and hopefully someone smarter than me can help you out.

Strangely yet luckily, I noticed that rendering today worked like gold using the same script… Probably something to do with my CPU… doesn’t make sense for a CPU to get “tired”, but it seems like it depends on the day. Thank you so much though! I really appreciate your time :slight_smile:

May be OS related too, heat and what not. Glad it’s working for you now.