Я пытаюсь отображать и сохранять несколько изображений через python script в блендере. Я знаю, как визуализировать и сохранять изображение через графический интерфейс Blender, но я хочу сделать это через мой script, так как я использую набор вложенных циклов и должен сохранять несколько изображений. Я могу сделать изображение, и я думаю, сохранить изображение с успешным выходом. Но я не уверен, где это экономит, и когда я пытаюсь отредактировать путь к файлу, это дает мне ошибку контекста.
Рендеринг и сохранение изображений через python Blender
Ответ 1
Вот что я сделал в Blender 2.63
:
bpy.data.scenes['Scene'].render.filepath = '/home/user/Documents/image.jpg'
bpy.ops.render.render( write_still=True )
То, что это делает, создает панораму VR (серия изображений объекта вокруг нее). И я закончил с этим алгоритмом:
- создать или загрузить объект, который вы собираетесь сфотографировать
- масштабируйте его и добавьте хорошее освещение (чтобы объект был виден в нужных вам направлениях); проверьте освещение рендерингом сцены (используйте клавишу F12)
- создайте
Empty
узел и установите его положение и вращение в идентичность (положение:0, 0, 0
, вращение:0, 0, 0
) - установите вид камеры в исходное положение (проверьте это снова с рендерингом)
- открыть интерактивную оболочку Python (Shift+F4)
- вставьте и запустите скрипт
В итоге у вас будет несколько картинок (определяемых 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)