I would like to be able to render images from 12+ cameras all in one click. How would one accomplish this?

  • $\begingroup$ Found this 7 minute tutorial on youtube. It seems to do what you want. (NB: Haven't tried it for 2.9) $\endgroup$
    – angryITguy
    Dec 23 '20 at 3:17

There are many ways to do this.

You can bind markers to cameras

(How can I make a camera the active one?.) and then render as an image sequence. Read: How swap views between multiple cameras? and continuous sequence of frames with multiple cameras with each camera starting at start of animation?

Or you can create different scenes, (Move a set to another scene even though it’s done) each one with a different active camera. Then on the compositor assign the output of each scene to a file node (or whatever it is that you want to do with the rendered images). Additional info here: https://blender.stackexchange.com/a/23371/1853 and how to take images with multiple cameras with Script?

Or you can have the same scene but with cameras in different collection (if you are using blender 2.8) and, again, accessing the output of those different collections in the compositor.

  • $\begingroup$ or write a short python script that loops through your camera objects setting them as the active camera "bpy.context.scene.camera = myCamObj" and renders to a unique filename "bpy.ops.render.render(write_still=True) " "bpy.context.scene.render.filepath = OUTPUTFILENAME" $\endgroup$
    – rob
    May 23 '19 at 14:49
  • $\begingroup$ @Rob please write an answer witht that info! $\endgroup$
    – user1853
    May 23 '19 at 14:52
  • 1
    $\begingroup$ @Rob , yes, please do write an answer for that one! Being able to save the files automatically is ideal. $\endgroup$ May 23 '19 at 15:56

From @Rob:

It will render all camera object with filename as camera name. Render path should set as a Directory

import bpy
import os

path_dir = bpy.context.scene.render.filepath #save for restore

for cam in [obj for obj in bpy.data.objects if obj.type == 'CAMERA']:
    bpy.context.scene.camera = cam
    bpy.context.scene.render.filepath = os.path.join(path_dir, cam.name)
    bpy.context.scene.render.filepath = path_dir

this isn't with a single click but a lazy way to do it simultaneously, open the same blender file in a different desktop the-number-of-cameras-in-your-scene times, then select the camera you want from each desktop instance and render one after the other. voila :)

different desktops like with windows 10 in order to make things less clumsy


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.