Unveränderter Ausgangsstand inklusive Masterprompt und Konzeptbildern unter assets/. .godot/ und docs/screenshots/ bleiben laut .gitignore unversioniert; letztere sind unter ../backups gesichert. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
"""Blender batch entry: generate all 59 assets, or select an ID/role.
|
|
|
|
blender --background --factory-startup --python generate_all.py -- --id g01
|
|
blender --background --factory-startup --python generate_all.py -- --all
|
|
"""
|
|
import argparse
|
|
from pathlib import Path
|
|
import sys
|
|
|
|
DIRECTORY = Path(__file__).resolve().parent
|
|
sys.path.insert(0, str(DIRECTORY))
|
|
from catalog import specs
|
|
from pipeline import build_one, write_manifest
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description=__doc__)
|
|
parser.add_argument('--all', action='store_true')
|
|
parser.add_argument('--id', action='append', default=[])
|
|
parser.add_argument('--role')
|
|
parser.add_argument('--faction')
|
|
parser.add_argument('--export-dir')
|
|
parser.add_argument('--blend-dir')
|
|
args = parser.parse_args(sys.argv[sys.argv.index('--') + 1:] if '--' in sys.argv else [])
|
|
selected = [s for s in specs() if (not args.id or s['id'] in args.id)
|
|
and (not args.role or s['role'] == args.role)
|
|
and (not args.faction or s['faction'] == args.faction)]
|
|
known = {s['id'] for s in specs()}
|
|
if set(args.id) - known or not selected:
|
|
raise ValueError('Unknown ID/role selection')
|
|
records = []
|
|
for spec in selected:
|
|
records.append(build_one(spec['id'], export_dir=args.export_dir, blend_dir=args.blend_dir, keep_scene=False))
|
|
if len(selected) == len(specs()):
|
|
write_manifest(records)
|
|
print(f'PHASE4_EXPORT_PASS: {len(selected)} models')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|