web-dev-qa-db-fra.com

rendre et sauvegarder des images avec Blender python

J'essaie de rendre et de sauvegarder plusieurs images à l'aide d'un script Python dans Blender. Je sais comment rendre et enregistrer l'image à l'aide de l'interface graphique de Blender, mais je souhaite le faire tout au long de mon script, car j'utilise un ensemble de boucles imbriquées et je dois enregistrer plusieurs images. Je suis capable de restituer l'image et je suppose enregistrer l'image avec la sortie réussie. Mais je ne suis pas sûr où il enregistre et quand j'essaye de modifier le chemin du fichier, cela me donne l'erreur que le contexte est incorrect. 

24
user2047506

Oto co zrobiłem w Blender 2.63:

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

Robi à tworzenie panoramy VR (contenu de la collection de fichiers). Je skończyłem z tym algorytmem:

  1. utwórz lub wczytaj obiekt, który zamierzasz robić
  2. skaluj go i dodaj ładne oświetlenie (aby obiekt był widoczny z wybranych kierunków); sprawdź oświetlenie, renderując scenę (użyjF12klucz)
  3. tout ce que vous avez fait Empty i ustaw jego pozycję i obrót na tożsamość (pozycja: 0, 0, 0, rotation: 0, 0, 0)
  4. cliquez ici pour en savoir plus (sprawdź à ponownie za pomocą renderowania)
  5. autres informations du type Python (Shift+F4)
  6. wklej i uruchom skrypt

Musisz skończyć z wieloma obrazkami (zdefiniowane przez step_count) wokół twojego obiektu w katalogu /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 )
31
shybovycha

quelque chose comme ça:

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

Vous devrez faire ce qui suit. La i dans la deuxième ligne après la boucle for est l'index de la boucle de la boucle de fichier. 

J'ai vérifié que cela fonctionne lors de l'exécution dans la console et également à partir de la ligne de commande. N'oubliez pas de supprimer les objets après avoir rendu un fichier. (La commande remove n'est pas donnée ici car elle n'est pas générique. Quelques arguments spécifiques seront nécessaires dans cette commande si cet objet a des liens) 

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)
0
Mahesh Natarajan