While Blender has no build-in support for this feature. You can do this using Python:
From Within Blender
Add a script into your file, call it render_path.py
(for example).
- Press Run Script (only need to do once)
- Enable the Register option in the text editor (so it runs automatically).
Here is a sample script.
import bpy
def render_filepath_set(scene):
scene.render.filepath = '{file}_{scene}_{camera}_####'.format(
file=bpy.data.filepath.rpartition('.')[0],
scene=scene.name,
camera=scene.camera.name,
)
bpy.app.handlers.render_init.append(render_filepath_set)
From the Command-Line
A similar method can be used, by running a script from the command line, first create a file.
render_path.py
import bpy
scene = bpy.context.scene
scene.render.filepath = '{file}_{scene}_{camera}_####'.format(
file=bpy.data.filepath.rpartition('.')[0],
scene=scene.name,
camera=scene.camera.name,
)
And run it with:
blender --background /d/untitled.blend --python render_path.py --render-anim
Or, you can avoid using a Python file and simply pass in the script on the command line (using --python-expr
).
blender --background /d/untitled.blend --python-expr "import bpy; scene = bpy.context.scene; scene.render.filepath = '{file}_{scene}_{camera}_####'.format(file=bpy.data.filepath.rpartition('.')[0], scene=scene.name, camera=scene.camera.name)"
This isn't practical to manually type in of course, but can be used when running Blender as an automated task (shell script / bat file... etc).