2014-10-29 92 views
1

我對Python腳本編程非常陌生,所以我一直在嘗試一些簡單的東西 - 一羣立方體進行3D隨機遊走的動畫。Blender中的Python腳本:如何保存一系列渲染圖像?

我已經設法讓程序渲染過程的每一幀,但我不知道如何保存每一幀。誰能幫忙?

這是代碼。我錯過了什麼會在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 

回答

0

默認情況下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 /」,將圖像放置在與混合文件位於同一文件夾中的稱爲呈現器的文件夾中 - 「//」是當前混合文件父文件夾的簡稱。