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$– angryITguyCommented Dec 23, 2020 at 3:17
-
$\begingroup$ There's this addon: creativeshrimp.com/renderburst.html $\endgroup$– Anson SavageCommented Jun 12, 2022 at 1:21
4 Answers
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$– robCommented May 23, 2019 at 14:49
-
$\begingroup$ @Rob please write an answer witht that info! $\endgroup$– user1853Commented May 23, 2019 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$ Commented May 23, 2019 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.ops.render.render(write_still=True)
bpy.context.scene.render.filepath = path_dir
You could try stereoscopy setup.
Each camera must have a proper name with suffix eg.: Camera_L, Camera_F then in stereoscopy switch to Multicamera add those suffixes _L, _F
and you should get all cameras rendered one by one in batch
this isn't with a single click but a lazy (inefficient) 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/workspace like with windows 10 in order to make things less clumsy
-
$\begingroup$ This could be problematic for slower computers when all the images are rendering at once, in different Blender windows. $\endgroup$ Commented Oct 1, 2021 at 16:59
-