To be clear i want a script, which produces what i am describing below. I want to iterate through all the cameras in my scene where each one renderes an image. I can do this manually by rendering with active camera, then set another camera to active, and then render again.

I have five cameras in my scene and i am going to be using this scene a lot. in reality the question might be more about setting a camera to active with script.


2 Answers 2


You might want to edit the os.path.join to get an OS independent tmp directory or set something else.

import bpy
import os

scene = bpy.context.scene

for ob in scene.objects:
    if ob.type == 'CAMERA':
        bpy.context.scene.camera = ob
        print('Set camera %s' % ob.name )
        file = os.path.join("C:/tmp", ob.name )
        bpy.context.scene.render.filepath = file
        bpy.ops.render.render( write_still=True )
  • $\begingroup$ I am not a python genius, why would i need to do so? $\endgroup$
    – Artmole
    Apr 24, 2014 at 21:53
  • $\begingroup$ @Artmole the drive letter C: wouldn't work on Linux and MacOs or you want another output folder. The rest is straight forward loop over all objects in the scene, check whether the object is a camera if so set it as camera, setup the filepath where the render should be stored and write the render to a file with the name of the camera. $\endgroup$
    – stacker
    Apr 25, 2014 at 6:13

If it's a still, you could make it into an animation where the only thing that changes is the active camera, and render it as an animation (see How can I make a camera the active one? for how to animate the active camera property)


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.