Подтвердить что ты не робот

Рендеринг и сохранение изображений через python Blender

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

4b9b3361

Ответ 1

Вот что я сделал в 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. открыть интерактивную оболочку Python (Shift+F4)
  6. вставьте и запустите скрипт

В итоге у вас будет несколько картинок (определяемых 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 )

Ответ 2

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

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

Ответ 3

Вам нужно будет сделать следующее. i во второй строке после цикла for - это индекс цикла файлового цикла.

Я проверил, что это работает во время работы в консоли, а также из командной строки. Не забудьте удалить объекты после рендеринга одного файла. (Команда удаления здесь не указана, так как она не является общей. Некоторые конкретные аргументы будут необходимы в этой команде, если этот объект имеет ссылки)

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)