Python-Skript mit Argumenten für die command-line-Mixer
Ich bin neu in blender und python. Ich habe ein blender-Modell (.Mischung), die will ich batch-Rendern als mehrere Bilder, die einige Eigenschaften für jedes Bild.
Schrieb ich ein python-Skript mit diesen Parametern, so etwas wie:
import bpy
pi = 3.14159265
fov = 50
scene = bpy.data.scenes["Scene"]
# Set render resolution
scene.render.resolution_x = 480
scene.render.resolution_y = 359
# Set camera fov in degrees
scene.camera.data.angle = fov*(pi/180.0)
# Set camera rotation in euler angles
scene.camera.rotation_mode = 'XYZ'
scene.camera.rotation_euler[0] = 0.0*(pi/180.0)
scene.camera.rotation_euler[1] = 0.0*(pi/180.0)
scene.camera.rotation_euler[2] = -30.0*(pi/180.0)
# Set camera translation
scene.camera.location.x = 0.0
scene.camera.location.y = 0.0
scene.camera.location.z = 80.0
Also dann als ich es starten wie
blender -b marker_a4.blend --python "marker_a4.py" -o //out -F JPEG -x 1 -f 1
Dann zum Beispiel, wenn ich versuche, die Argumente verwenden, um das python-Skript
...
import sys
...
fov = float(sys.argv[5])
...
Und führen Sie es:
blender -b marker_a4.blend --python "marker_a4.py" 80.0 -o //out -F JPEG -x 1 -f 1
Den render geht, aber ich bekomme diese Meldungen beim start.
read blend: /home/roho/workspace/encuadro/renders/marker/model/marker_a4.blend
read blend: /home/roho/workspace/encuadro/renders/marker/model/80.0
Unable to open "/home/roho/workspace/encuadro/renders/marker/model/80.0": No such file or directory.
...
Kann mir jemand sagen, was dies verursacht? Ich denke, blender ist auch die Analyse, wie ein Modell, aber verstehe nicht warum. Später habe ich versucht, etwas mehr sofisticated für die argument-parsing in python (argparse), aber es funktionierte nicht bei allen. Also ich denke, es könnte sein etwas seltsames passiert auf dieser Ebene.
Dank!
- Finden Sie die gleichen Fragen auf Blender ist stackexchange Seite: blender.stackexchange.com/questions/6817
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich die Lösung gefunden für das, was ich suchte, war intially.
Als Junuxx sagte: "Du kannst nicht vorbei Kommandozeilen-Argumente direkt an python in dieser situation..." aber man KANN Argumente an python, aber in einer anderen situation.
So die Möglichkeit, das zu tun, was ich will, ist zu RENDERN UND zu SPEICHERN DIREKT in das python-Skript
--Die python-option (oder -P) hat am Ende zu sein, und Sie können festlegen, Argumente mit -- und nur das Modell geladen wird, und führen Sie das Skript.
Kredit, um diesen link fand ich:
http://www.blender.org/forum/viewtopic.php?t=19102&highlight=batch+render
bpy.data.scenes["Scene"].render.image_settings.file_format = 'PNG'
float(sys.argv[6])
wäre besser geschrieben alsfloat(sys.argv[-1])
zuverlässig Holen Sie sich die zuletzt arg.Können Sie T-pass-Befehl Linie Argumente direkt an python, in dieser situation, weil Sie interpretiert werden als Argumente für blender. Ein Weg, um dieses ist das setzen von Umgebungsvariablen und dann rufen blender/python, wie hier (vorausgesetzt du bist auf Windows - dasselbe, was möglich ist, auf andere Betriebssysteme, aber mit einer anderen syntax)
Hinweis: keine Leerzeichen neben dem Gleichheitszeichen!
In der python-Skript, das ich genannt envvar.py Sie können os.getenv (), um auf diese Variablen zuzugreifen
Ausgabe: