add generic templates
This commit is contained in:
+28
-13
@@ -8,9 +8,10 @@ import bpy
|
||||
from bpy.types import Operator
|
||||
from bpy.props import BoolProperty
|
||||
|
||||
from vse_toolbox.sequencer_utils import (get_strips, render_strip, render_sound, render_scene)
|
||||
from vse_toolbox.sequencer_utils import (get_strips, render_strip, render_sound,
|
||||
render_scene, get_render_attributes)
|
||||
from vse_toolbox.bl_utils import (get_scene_settings, background_render)
|
||||
from vse_toolbox.file_utils import install_module
|
||||
from vse_toolbox.file_utils import install_module, expand
|
||||
|
||||
|
||||
|
||||
@@ -116,53 +117,67 @@ class VSETB_OT_render(Operator):
|
||||
settings = get_scene_settings()
|
||||
project = settings.active_project
|
||||
|
||||
project_templates = {t.name: t.value for t in project.templates}
|
||||
format_data = {**settings.format_data, **project.format_data}
|
||||
|
||||
single_file = False
|
||||
sequence_strips = []
|
||||
shot_strips = []
|
||||
|
||||
render_attrs = get_render_attributes()
|
||||
|
||||
start_time = time.perf_counter()
|
||||
if project.render_single_file:
|
||||
single_file = True
|
||||
if project.render_video:
|
||||
video_template = os.path.expandvars(project.render_video_template)
|
||||
video_template = expand(project.render_video_template, **project_templates)
|
||||
video_path = video_template.format(**format_data)
|
||||
render_scene(video_path)
|
||||
render_scene(video_path, attributes=render_attrs)
|
||||
#background_render(output=video_path)
|
||||
|
||||
if project.render_audio:
|
||||
audio_template = os.path.expandvars(project.render_audio_template)
|
||||
audio_template = expand(project.render_audio_template, **project_templates)
|
||||
audio_path = audio_template.format(**format_data)
|
||||
bpy.ops.sound.mixdown(filepath=audio_path)
|
||||
|
||||
if project.render_sequence:
|
||||
print('Render Sequences...')
|
||||
for strip in get_strips(channel='Sequences', selected_only=project.render_selected_only):
|
||||
sequence_strips = get_strips(channel='Sequences', selected_only=project.render_selected_only)
|
||||
for strip in sequence_strips:
|
||||
#print(strip.name)
|
||||
strip_settings = strip.vsetb_strip_settings
|
||||
strip_data = {**format_data, **strip_settings.format_data}
|
||||
|
||||
if project.render_sequence and project.render_video_per_sequence:
|
||||
video_sequence_template = os.path.expandvars(project.render_video_sequence_template)
|
||||
video_sequence_template = expand(project.render_video_sequence_template, **project_templates)
|
||||
sequence_render_path = video_sequence_template.format(**strip_data)
|
||||
render_strip(strip, sequence_render_path)
|
||||
render_strip(strip, sequence_render_path, attributes=render_attrs)
|
||||
|
||||
if project.render_shot and project.render_audio_per_sequence:
|
||||
audio_sequence_template = os.path.expandvars(project.render_audio_sequence_template)
|
||||
audio_sequence_template = expand(project.render_audio_sequence_template, **project_templates)
|
||||
audio_render_path = audio_sequence_template.format(**strip_data)
|
||||
render_sound(strip, audio_render_path)
|
||||
|
||||
if project.render_shot:
|
||||
for strip in get_strips(channel='Shots', selected_only=project.render_selected_only):
|
||||
shot_strips = get_strips(channel='Shots', selected_only=project.render_selected_only)
|
||||
for strip in shot_strips:
|
||||
strip_settings = strip.vsetb_strip_settings
|
||||
strip_data = {**format_data, **strip_settings.format_data}
|
||||
|
||||
if project.render_video_per_strip:
|
||||
video_strip_template = os.path.expandvars(project.render_video_strip_template)
|
||||
video_strip_template = expand(project.render_video_strip_template, **project_templates)
|
||||
strip_render_path = video_strip_template.format(**strip_data)
|
||||
render_strip(strip, strip_render_path)
|
||||
render_strip(strip, strip_render_path, attributes=render_attrs)
|
||||
|
||||
if project.render_audio_per_strip:
|
||||
audio_strip_template = os.path.expandvars(project.render_audio_strip_template)
|
||||
audio_strip_template = expand(project.render_audio_strip_template, **project_templates)
|
||||
audio_render_path = audio_strip_template.format(**strip_data)
|
||||
render_sound(strip, audio_render_path)
|
||||
|
||||
if not single_file and not sequence_strips and not shot_strips:
|
||||
self.report({"ERROR"}, f'No strips rendered, select sequence or shot strips')
|
||||
return {"CANCELLED"}
|
||||
|
||||
self.report({"INFO"}, f'Strips rendered in {time.perf_counter()-start_time} seconds')
|
||||
|
||||
return {"FINISHED"}
|
||||
|
||||
Reference in New Issue
Block a user