The code below creates a “VR panorama” (a series of pictures of an object, from different perspectives around it).
I ended up with this algorithm:
- create or load an object you are going to take pictures of (the subject)
- scale it and add some nice lighting (so that the object is visible from directions you want); you can check the lighting by rendering the scene (using the F12 key)
create anEmpty
object and set its position to the center of the subject and rotation to identity (0, 0, 0
)- set your camera view to the starting position (check it with rendering, again)
- open interactive Python shell (Shift+F4)
- paste & run the script
You shall end up with a number of pictures (defined by rotation_steps
) around your object under /Users/myusername/Pictures/VR
directory:
def rotate_and_render(output_dir, output_file_pattern_string = 'render%d.jpg', rotation_steps = 32, rotation_angle = 360.0, subject = bpy.context.object):
import os
original_rotation = subject.rotation_euler
for step in range(0, rotation_steps):
subject.rotation_euler[2] = radians(step * (rotation_angle / rotation_steps))
bpy.context.scene.render.filepath = os.path.join(output_dir, (output_file_pattern_string % step))
bpy.ops.render.render(write_still = True)
subject.rotation_euler = original_rotation
rotate_and_render('/Users/myusername/Pictures/VR', 'render%d.jpg')
You will have to select the object you want to render. Alternatively, you can use Blender’s Python API to find the object in the scene and pass it as a subject
param to the function:
rotate_and_render('/Users/myusername/Pictures/VR', 'render%d.jpg', subject = bpy.data.objects["Cube"])