Démarrez Blender en arrière-plan à partir de la ligne de commande et exécutez le traitement de Blender avec python. Je veux avoir des arguments lors de l'exécution de python.
Utilisez la bibliothèque argparse de python pour organiser les arguments.
Prenez un argument et exécutez-le comme run.bat.
run.bat
blender.exe --background --python generate.py --gender f --location i
, Une erreur est générée. '-' N'est pas dans la liste des arguments.
File "C:\hogehoge\generateData\generate.py", line 23, in
<module>
args = parser.parse_args(sys.argv[sys.argv.index('--') + 1:])
ValueError: '--' is not in list
unknown argument, loading as file: --gender
Error: Cannot read file 'C:\hogehoge\generateData\--gender': No such file or directory
Il semble y avoir un moyen d'ajouter un argument au script python avec blender, et d'ajouter "-" avant l'argument.
run.bat
blender.exe --background --python generate.py -- --gender f --location i
Ensuite, les arguments sont conservés dans sys.argv. Le code python de sys.argv pour récupérer l'argument avec argparse est le suivant.
main()
import sys
import argparse
if '__main__' == __name__:
parser = argparse.ArgumentParser()
parser.add_argument('--gender', type=str, choices=['f', 'm'], required=True,
help='gender: f->female, m->male')
parser.add_argument('--location', type=str, choices=['i', 'o'], required=True,
help='location: i->inside, o->outside')
args = parser.parse_args(sys.argv[sys.argv.index('--') + 1:])
gender = args.gender
location = args.location
Sys.argv [sys.argv.index ('-') + 1:], qui récupère les arguments en utilisant argparse, semble être magique.