Вопрос по python, rendering – Скрипт Python с аргументами для командной строки Blender

8

Я новичок в Blender и Python. У меня есть модель блендера (.blend), которую я хочу визуализировать как несколько изображений, предоставляя некоторые свойства для каждого изображения.

Я написал скрипт на Python с этими параметрами, что-то вроде:

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

Итак, я запускаю это как

blender -b marker_a4.blend --python "marker_a4.py" -o //out -F JPEG -x 1 -f 1 

Тогда, например, если я пытаюсь использовать аргументы для сценария Python

...
import sys
...
fov = float(sys.argv[5])
...

И запустите это:

blender -b marker_a4.blend --python "marker_a4.py" 80.0 -o //out -F JPEG -x 1 -f 1 

Визуализация завершена, но я получаю эти сообщения при запуске.

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.
...

Кто-нибудь может сказать мне, что вызывает это? Я думаю, что Blender также анализирует это как модель, но не понимаю почему. Позже я попробовал что-то более изощренное для разбора аргументов в python (argparse), но это не сработало вообще. Поэтому я думаю, что на этом уровне может произойти что-то странное.

Спасибо!

Error: User Rate Limit Exceededblender.stackexchange.com/questions/6817 ideasman42

Ваш Ответ

2   ответа
4

set arg1='foo' & set arg2='bar' & python envvar.py

Note

import os
print 'arg1 = ', os.getenv('arg1')
print 'arg2 = ', os.getenv('arg2')

arg1 = 'foo'
arg2 = 'bar'
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededblender.org/documentation/249PythonDoc/API_related-module.html roho
8

this situation

import sys

fov = float(sys.argv[-1])   
...
# Set Scenes camera and output filename 
bpy.data.scenes["Scene"].render.file_format = 'PNG'
bpy.data.scenes["Scene"].render.filepath = '//out'

# Render Scene and store the scene 
bpy.ops.render.render( write_still=True ) 

> blender -b "demo.blend" -P script.py -- 50

Error: User Rate Limit Exceededbpy.data.scenes["Scene"].render.image_settings.file_format = 'PNG'
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded roho
float(sys.argv[6]) Error: User Rate Limit Exceededfloat(sys.argv[-1])Error: User Rate Limit Exceeded

Похожие вопросы