wake-up-neo.com

rendern und Speichern von Bildern über Blender-Python

Ich versuche, mehrere Bilder über das Python-Skript im Blender zu rendern und zu speichern. Ich kann das Bild über die Blender-GUI rendern und speichern, aber ich möchte alles durch mein Skript machen, da ich verschachtelte Schleifen benutze und mehrere Bilder speichern muss. Ich kann das Bild rendern, und ich schätze, das Bild wird gespeichert, wenn die Ausgabe erfolgreich ist. Ich bin mir jedoch nicht sicher, wo es gespeichert wird und wenn ich versuche, den Dateipfad zu bearbeiten, wird mir der Fehler des Kontexts als falsch angezeigt. 

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 bis tworzenie panoramy VR (seria obrazów obiektów wokół niej). Ich 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. utwórz węzeł Empty i ustaw jego pozycję i obrót na tożsamość (pozycja: 0, 0, 0, rotation: 0, 0, 0)
  4. ustaw widok kamery na pozycję początkową (sprawdź to ponownie za pomocą renderowania
  5. otwórz interaktywną powłokę 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

etwas wie das:

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

Sie müssen Folgendes tun. Die Variable i in der zweiten Zeile nach der Schleife for ist der Schleifenindex der Dateischleife. 

Ich habe bestätigt, dass dies funktioniert, während Sie in der Konsole und auch von der Befehlszeile aus arbeiten. Vergessen Sie nicht, die Objekte nach dem Rendern einer Datei zu entfernen. (Der Befehl remove wird hier nicht angegeben, da er nicht generisch ist. In diesem Befehl sind einige bestimmte Argumente erforderlich, wenn das Objekt Verknüpfungen enthält.) 

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