[英]Python scripting in Blender: how can I save a sequence of rendered images?
我是Python脚本的新手,所以我一直在尝试一些简单的事情-一堆立方体的动画进行3D随机游走。
我已经设法使该程序呈现过程的每一帧,但是我不知道如何保存每一帧。 有人可以帮忙吗?
这是代码。 我所缺少的将出现在def render_and_save函数中。
干杯!
import bpy
import random
number_of_cubes = 10
animation_length = 10
def create_cubes(number_to_make):
i = 0
while i < number_to_make:
bpy.ops.mesh.primitive_cube_add(radius=1, view_align=False, enter_editmode=False, location=(0, 0, 0))
i += 1
def move_cube():
bpy.ops.transform.translate(value=(random.randint(-1,1), random.randint(-1,1), random.randint(-1,1)), constraint_axis=(False, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1)
def select_cube(cube_name):
bpy.ops.object.select_all(action = "DESELECT")
bpy.ops.object.select_pattern(pattern = cube_name)
def move_all():
j = 0
while j < number_of_cubes:
if j == 0:
name_of_cube = "Cube"
print(name_of_cube)
elif j < 10:
name_of_cube = "Cube.00" + str(j)
print(name_of_cube)
elif j < 100:
name_of_cube = "Cube.0" + str(j)
print(name_of_cube)
select_cube(name_of_cube)
move_cube()
j += 1
def render_and_save(moves):
bpy.ops.render.render(use_viewport = True)
filename = str(moves)+".png"
#But what should go here to make it save each image?
create_cubes(number_of_cubes)
moves = 0
while moves < animation_length:
move_all()
render_and_save(moves)
moves += 1
默认情况下, bpy.ops.render.render()
不保存单个图像渲染。 只需将write_still=True
设置为启用即可。
def render_and_save(moves):
bpy.context.scene.render.filepath = "//renders/"+str(moves)+".png"
bpy.ops.render.render(use_viewport = True, write_still=True)
文件路径设置与渲染设置的输出面板中的可用值相同。 通过在其开头放置“ // render /”,将图像放置在一个名为renders的文件夹中,该文件夹与混合文件位于同一文件夹中-“ //”是当前混合文件父文件夹的缩写。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.