| name | blender-interface-cli-headless-execution |
| description | Sub-skill of blender-interface: CLI Headless Execution (+3). |
| version | 1.1.0 |
| category | engineering |
| type | reference |
| scripts_exempt | true |
CLI Headless Execution (+3)
CLI Headless Execution
blender --background --python script.py
blender model.blend --background --python script.py
blender model.blend --background --render-output //renders/frame_ --render-frame 1
blender model.blend --background --render-output //renders/frame_ --render-anim
blender model.blend --background --frame-start 1 --frame-end 100 --render-anim
blender --background --python script.py -- --input mesh.stl --output render.png
CLI Flags Reference
| Flag | Purpose |
|---|
--background / -b | Run without GUI (headless) |
--python / -P | Execute Python script |
--python-expr | Execute Python expression inline |
--render-output / -o | Set render output path |
--render-frame / -f | Render single frame |
--render-anim / -a | Render full animation |
--frame-start / -s | Set start frame |
--frame-end / -e | Set end frame |
--factory-startup | Ignore user preferences |
--addons | Enable specific addons |
--threads | Set thread count |
Accessing Custom Arguments in Script
import sys
argv = sys.argv
if "--" in argv:
custom_args = argv[argv.index("--") + 1:]
else:
custom_args = []
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--input", required=True)
parser.add_argument("--output", required=True)
args = parser.parse_args(custom_args)
Complete Headless Render Pipeline
"""Headless Blender render script for engineering visualization."""
import bpy
import sys
import argparse
def parse_args():
argv = sys.argv
custom = argv[argv.index("--") + 1:] if "--" in argv else []
parser = argparse.ArgumentParser()
parser.add_argument("--input-stl", required=True)
parser.add_argument("--output-png", required=True)
parser.add_argument("--resolution", type=int, nargs=2, default=[1920, 1080])
return parser.parse_args(custom)
def main():
args = parse_args()
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()
try:
bpy.ops.wm.stl_import(filepath=args.input_stl)
except AttributeError:
bpy.ops.import_mesh.stl(filepath=args.input_stl)
obj = bpy.context.selected_objects[0]
bpy.ops.object.origin_set(type='ORIGIN_GEOMETRY', center='BOUNDS')
obj.location = (0, 0, 0)
setup_engineering_camera(distance=(obj.dimensions) * )
setup_lighting()
configure_render(resolution=(args.resolution))
bpy.context.scene.render.filepath = args.output_png
bpy.ops.render.render(write_still=)
()
__name__ == :
main()