如何运行带有blender参数的python脚本?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何运行带有blender参数的python脚本?相关的知识,希望对你有一定的参考价值。
我有一个脚本我想在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
如果我在没有blender的情况下运行这个相同的脚本(但是带有参数)它会告诉我:
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按照给定的顺序处理它的cli args,所以你的例子将在后台开始,运行一个脚本,然后设置input_dir ......这很可能没有你想要的结果。
您的脚本失败的问题是传递给os.getenv()
的arg需要是一个shell环境变量的名称,如果您使用bash,则需要在启动blender之前导出变量以将其放入环境中。
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所述。
您看到该错误,因为您的脚本正在查找环境变量BLENDER_ENV
,它不在您的系统上。我不承认BLENDER_ENV
是一个标准的Blender相关环境变量,因此你的朋友很可能将BLENDER_ENV
添加到他或她的环境中。
以上是关于如何运行带有blender参数的python脚本?的主要内容,如果未能解决你的问题,请参考以下文章
如果在后台执行脚本,如何在 Blender Python 上使用旋转运算符?