Render sequences
This commit is contained in:
+99
-47
@@ -31,54 +31,83 @@ class VSETB_OT_render(Operator):
|
||||
scn = context.scene
|
||||
settings = get_scene_settings()
|
||||
|
||||
return context.window_manager.invoke_props_dialog(self, width=350)
|
||||
return context.window_manager.invoke_props_dialog(self, width=500)
|
||||
|
||||
def draw_export_row(self, layout, text, data, enable_prop, template_prop):
|
||||
row = layout.split(factor=0.1)
|
||||
heading = row.row(align=True)
|
||||
heading.alignment = 'RIGHT'
|
||||
heading.label(text=text)
|
||||
heading.prop(data, enable_prop, text='')
|
||||
row = row.row(align=True)
|
||||
row.enabled = getattr(data, enable_prop)
|
||||
row.prop(data, template_prop, text='')
|
||||
|
||||
def draw(self, context):
|
||||
scn = context.scene
|
||||
settings = get_scene_settings()
|
||||
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
#layout.use_property_split = True
|
||||
#layout.use_property_decorate = False
|
||||
|
||||
box = layout.box()
|
||||
col = box.column()
|
||||
col.label(text='Single File')
|
||||
#col.use_property_split = True
|
||||
#col.use_property_decorate = False
|
||||
|
||||
row = col.row(align=True)
|
||||
row.prop(settings.active_project, "render_single_file", text='')
|
||||
row.label(icon='FILE_MOVIE')
|
||||
row.label(text='Single File')
|
||||
|
||||
#col.prop(settings.active_project, "render_single_file")
|
||||
|
||||
row = col.row()
|
||||
row.prop(settings.active_project, "render_video")
|
||||
row = col.row()
|
||||
row.enabled = settings.active_project.render_video
|
||||
row.prop(settings.active_project, "render_video_template", text='Video Path')
|
||||
if settings.active_project.render_single_file:
|
||||
self.draw_export_row(col ,'Video', settings.active_project,
|
||||
'render_video',
|
||||
'render_video_template'
|
||||
)
|
||||
self.draw_export_row(col, 'Audio', settings.active_project,
|
||||
'render_audio',
|
||||
'render_audio_template'
|
||||
)
|
||||
#layout.separator()
|
||||
box = layout.box()
|
||||
col = box.column()
|
||||
row = col.row(align=True)
|
||||
row.prop(settings.active_project, "render_sequence", text='')
|
||||
row.label(icon='SEQUENCE')
|
||||
row.label(text='One file per sequence')
|
||||
|
||||
row = col.row()
|
||||
row.prop(settings.active_project, "render_audio")
|
||||
row = col.row()
|
||||
row.enabled = settings.active_project.render_audio
|
||||
row.prop(settings.active_project, "render_audio_template", text='Audio Path')
|
||||
if settings.active_project.render_sequence:
|
||||
self.draw_export_row(col ,'Video', settings.active_project,
|
||||
'render_video_per_sequence',
|
||||
'render_video_sequence_template'
|
||||
)
|
||||
self.draw_export_row(col, 'Audio', settings.active_project,
|
||||
'render_audio_per_sequence',
|
||||
'render_audio_sequence_template'
|
||||
)
|
||||
|
||||
#col.prop(settings, 'channel', text='Channel')
|
||||
#col.prop(self, 'selected_only')
|
||||
|
||||
#layout.separator()
|
||||
box = layout.box()
|
||||
col = box.column()
|
||||
col.label(text='File per strip')
|
||||
|
||||
col.prop(settings.active_project, "render_video_per_strip", text='Render Video')
|
||||
row = col.row()
|
||||
row.enabled = settings.active_project.render_video_per_strip
|
||||
row.prop(settings.active_project, "render_video_strip_template", text='Video Path')
|
||||
|
||||
col.prop(settings.active_project, "render_audio_per_strip", text='Render Audio')
|
||||
row = col.row()
|
||||
row.enabled = settings.active_project.render_audio_per_strip
|
||||
row.prop(settings.active_project, "render_audio_strip_template", text='Audio Path')
|
||||
#row.prop(settings.active_project, "render_sound_format", expand=True)
|
||||
row = col.row(align=True)
|
||||
row.prop(settings.active_project, "render_shot", text='')
|
||||
row.label(icon='SEQ_SEQUENCER')
|
||||
row.label(text='One file per shot')
|
||||
|
||||
if settings.active_project.render_shot:
|
||||
self.draw_export_row(col ,'Video', settings.active_project,
|
||||
'render_video_per_strip',
|
||||
'render_video_strip_template'
|
||||
)
|
||||
self.draw_export_row(col, 'Audio', settings.active_project,
|
||||
'render_audio_per_strip',
|
||||
'render_audio_strip_template'
|
||||
)
|
||||
|
||||
row = layout.row()
|
||||
row.prop(settings.active_project, "render_selected_only", text='Selected Only')
|
||||
#col.prop(settings, 'channel', text='Channel')
|
||||
#col.prop(self, 'selected_only')
|
||||
|
||||
@@ -90,26 +119,49 @@ class VSETB_OT_render(Operator):
|
||||
format_data = {**settings.format_data, **project.format_data}
|
||||
|
||||
start_time = time.perf_counter()
|
||||
if project.render_video:
|
||||
video_path = project.render_video_template.format(**format_data)
|
||||
render_scene(video_path)
|
||||
#background_render(output=video_path)
|
||||
if project.render_single_file:
|
||||
if project.render_video:
|
||||
video_template = os.path.expandvars(project.render_video_template)
|
||||
video_path = video_template.format(**format_data)
|
||||
render_scene(video_path)
|
||||
#background_render(output=video_path)
|
||||
|
||||
if project.render_audio:
|
||||
audio_path = project.render_audio_template.format(**format_data)
|
||||
bpy.ops.sound.mixdown(filepath=audio_path)
|
||||
if project.render_audio:
|
||||
audio_template = os.path.expandvars(project.render_audio_template)
|
||||
audio_path = audio_template.format(**format_data)
|
||||
bpy.ops.sound.mixdown(filepath=audio_path)
|
||||
|
||||
for strip in get_strips(channel='Shots', selected_only=True):
|
||||
strip_settings = strip.vsetb_strip_settings
|
||||
strip_data = {**format_data, **strip_settings.format_data}
|
||||
if project.render_sequence:
|
||||
print('Render Sequences...')
|
||||
for strip in get_strips(channel='Sequences', selected_only=project.render_selected_only):
|
||||
print(strip.name)
|
||||
strip_settings = strip.vsetb_strip_settings
|
||||
strip_data = {**format_data, **strip_settings.format_data}
|
||||
|
||||
if project.render_video_per_strip:
|
||||
strip_render_path = project.render_video_strip_template.format(**strip_data)
|
||||
render_strip(strip, strip_render_path)
|
||||
if project.render_sequence and project.render_video_per_sequence:
|
||||
video_sequence_template = os.path.expandvars(project.render_video_sequence_template)
|
||||
sequence_render_path = video_sequence_template.format(**strip_data)
|
||||
render_strip(strip, sequence_render_path)
|
||||
|
||||
if project.render_audio_per_strip:
|
||||
audio_render_path = project.render_audio_strip_template.format(**strip_data)
|
||||
render_sound(strip, audio_render_path)
|
||||
if project.render_shot and project.render_audio_per_sequence:
|
||||
audio_sequence_template = os.path.expandvars(project.render_audio_sequence_template)
|
||||
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):
|
||||
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)
|
||||
strip_render_path = video_strip_template.format(**strip_data)
|
||||
render_strip(strip, strip_render_path)
|
||||
|
||||
if project.render_audio_per_strip:
|
||||
audio_strip_template = os.path.expandvars(project.render_audio_strip_template)
|
||||
audio_render_path = audio_strip_template.format(**strip_data)
|
||||
render_sound(strip, audio_render_path)
|
||||
|
||||
self.report({"INFO"}, f'Strips rendered in {time.perf_counter()-start_time} seconds')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user