【问题标题】:How to run a python script taking arguments with blender?如何运行带有搅拌机参数的python脚本?
【发布时间】:2019-02-24 02:17:30
【问题描述】:

我有一个脚本,我想在 Blender 中运行以生成 AO 贴图(脚本已提供给我,并且来源保证它可以正常工作)。

我尝试按如下方式运行脚本:

blender --background --python /opt/ff/product_builder/furniture_builder/generate_ao_maps.py --input_dir /tmp/test.obj --output_dir /tmp/test.png --mode ao

产生:

AL lib: (EE) UpdateDeviceParams: Failed to set 44100hz, got 48000hz instead
found bundled python: /usr/share/blender/2.79/python
Traceback (most recent call last):
  File "/opt/ff/product_builder/furniture_builder/generate_ao_maps.py", line 195, in <module>
    main()
  File "/opt/ff/product_builder/furniture_builder/generate_ao_maps.py", line 178, in main
    args = parse_args()
  File "/opt/ff/product_builder/furniture_builder/generate_ao_maps.py", line 21, in parse_args
    return parser.parse_args(os.getenv(BLENDER_ENV).split(' '))
AttributeError: 'NoneType' object has no attribute 'split'
Error: File format is not supported in file '/tmp/test.obj'

Blender quit

如果我在没有搅拌机的情况下运行相同的脚本(但带有参数),它会告诉我:

Traceback (most recent call last):
  File "/opt/ff/product_builder/furniture_builder/generate_ao_maps.py", line 5, in <module>
    import bpy
ImportError: No module named bpy

我需要做什么才能将参数传递给脚本并使其工作?

【问题讨论】:

  • Blender 将忽略-- 之后的所有参数,因此您可以在此处设置选项。但是当你对环境变量做一些奇怪的事情时——我想如果没有你的脚本代码就不可能回答。

标签: python command-line scripting blender


【解决方案1】:

您看到该错误是因为您的脚本正在寻找环境变量BLENDER_ENV,而该变量不在您的系统中。我不承认 BLENDER_ENV 是标准的 Blender 相关环境变量,因此您的朋友很可能将 BLENDER_ENV 添加到他或她的环境中。

【讨论】:

  • 在脚本中:BLENDER_ENV = 'BLENDER_ARGS'
【解决方案2】:

首先,blender 按照给定的顺序处理其cli args,因此您的示例将在后台启动,运行脚本,然后设置 input_dir... 这很可能不会有您想要的结果。

你的脚本失败的问题是传递给os.getenv()的参数需要是一个字符串,它是一个shell环境变量的名称,如果你使用bash你需要导出变量来把它放到环境中在你开始搅拌机之前。

export BLENDER_ARGS="arg1 arg2"
blender -b myfile.blend --python myscript.py

如果您使用的是 csh,请使用 setenv BLENDER_ARGS "arg1 arg2"

然后在你的py脚本中,你使用os.getenv('BLENDER_ARGS').split(' ')

注意每个shell实例都是一个独立的环境,你需要在启动blender的同一个实例中设置变量。

您可能也有兴趣将 cli 参数传递给脚本,如回复 this question 时所述。

【讨论】:

    猜你喜欢
    • 2014-04-09
    • 1970-01-01
    • 2014-01-15
    • 2016-07-21
    • 2013-02-14
    • 2012-02-07
    • 2014-06-07
    • 2014-08-19
    • 2020-01-06
    相关资源
    最近更新 更多