2013-02-20 2 views
18

Я пытаюсь отобразить и сохранить несколько изображений через скрипт python в блендере. Я знаю, как визуализировать и сохранять изображение через графический интерфейс Blender, но я хочу сделать это через свой скрипт, так как я использую набор вложенных циклов и вам нужно сохранить несколько изображений. Я могу сделать изображение, и я думаю, сохранить изображение с успешным выходом. Но я не уверен, где это экономит, и когда я пытаюсь отредактировать путь к файлу, это дает мне ошибку контекста.рендеринг и сохранение изображений через Blender python

ответ

7

что-то вроде этого:

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() 
+5

Без параметра 'write_still = True' в качестве параметра для функции 'render()' blender не создавал изображение в моем случае. – tobltobs

20

Вот то, что я сделал в Blender 2.63:

bpy.data.scenes['Scene'].render.filepath = '/home/user/Documents/image.jpg' 
bpy.ops.render.render(write_still=True) 

Что я делал это создание панорамы VR (серия объекта выстрелов вокруг него). И я закончил с этим алгоритмом:

  1. создать или загрузить объект, который вы собираетесь принять выстрелы масштабировать
  2. и выполнять некоторые интересные освещения; проверить освещение с рендеринга сцены (используйте F12 ключ)
  3. создать Empty узел и установить его положение и поворот идентичности (положение: 0, 0, 0, вращение: 0, 0, 0)
  4. установить вид камеры в исходное положение (проверьте его с рендерингом, снова)
  5. запустить скрипт!

Вы должны сделать step_count снимки вокруг вашего объекта в вашем каталоге /home/user/VR.

cam = bpy.data.objects['Camera'] 
origin = bpy.data.objects['Empty'] 

step_count = 32 

for step in range(0, step_count): 
    origin.rotation_euler[2] = radians(step * (360.0/step_count)) 

    bpy.data.scenes["Scene"].render.filepath = '/home/user/VR/vr_shot_%d.jpg' % step 
    bpy.ops.render.render(write_still=True) 
+0

Удивление почему 'write_still = True' настолько важно, что у вас нет изображения, сохраненного без него. –

+1

@SibbsGambling Я думаю, это потому, что у Blender также есть возможность отображать изображения предварительного просмотра (как при нажатии F12). Таким образом, фактически сохранение рендера в качестве неподвижного изображения несколько необязательно. –

Смежные вопросы