我正在尝试通过Python脚本在Blender中渲染和保存多个图像。 我知道如何通过Blender GUI渲染和保存图像,但我希望通过我的脚本来完成所有操作,因为我正在使用一组嵌套循环并需要保存多个图像。 我能够渲染图像并且估计成功保存了图像。 但我不确定它保存到哪里,当我尝试编辑文件路径时,它会给出上下文错误。
删除
创建一个"空"对象,并将其位置设置为主题的中心,旋转设置为身份(0,0,0)。
4. 将相机视图设置为起始位置(再次用渲染检查)。
5. 打开交互式Python shell(Shift+F4)。
6. 粘贴并运行脚本。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')
你将需要选择你想要渲染的对象。或者你可以使用 Blender 的 Python API 在场景中找到该对象并将其作为 subject
参数传递给函数:rotate_and_render('/Users/myusername/Pictures/VR', 'render%d.jpg', subject = bpy.data.objects["Cube"])
类似这样的内容:
import bpy
bpy.context.scene.render.filepath = 'pathToOutputImage'
bpy.context.scene.render.resolution_x = w #perhaps set resolution in code
bpy.context.scene.render.resolution_y = h
bpy.ops.render.render()
您需要完成以下操作。在for
循环后第二行中的i
是文件循环的循环索引。
我已验证此方法可在控制台和命令行中运行。渲染一个文件后不要忘记删除对象。(此处未给出删除命令,因为它不是通用的。如果该对象有链接,则需要在该命令中添加一些特定的参数)
for area in bpy.context.screen.areas:
if area.type == 'VIEW_3D':
area.spaces[0].viewport_shade = 'RENDERED'
bpy.context.scene.render.image_settings.file_format='JPEG'
bpy.context.scene.render.filepath = ".pic%0.2d.jpg"%i
bpy.ops.render.render(use_viewport = True, write_still=True)