diff --git a/packages/flamenco/flamenco/job_compilers/blender_render_progressive.py b/packages/flamenco/flamenco/job_compilers/blender_render_progressive.py index e59001399b7c52205769ec1ff4e73a2b77eb4b2c..7a5fbd794a532d690403317d5c2e491b34ac1587 100644 --- a/packages/flamenco/flamenco/job_compilers/blender_render_progressive.py +++ b/packages/flamenco/flamenco/job_compilers/blender_render_progressive.py @@ -94,9 +94,9 @@ class BlenderRenderProgressive(BlenderRender): # This is quite a limitation, but makes our code to predict the # filename that Blender will use a lot simpler. render_output = job['settings']['render_output'] - if u'######' not in render_output or u'#######' in render_output: + if not render_output.endswith(u'######') or render_output.endswith(u'#######'): raise exceptions.JobSettingError( - u'Setting "render_output" must contain exactly 6 "#" marks.') + u'Setting "render_output" must end in exactly 6 "#" marks.') def _make_progressive_render_tasks(self, job, name_fmt, parents, @@ -219,9 +219,9 @@ class BlenderRenderProgressive(BlenderRender): for framenr in chunk_frames: task_cmds.append( commands.MergeProgressiveRenders( - input1=unicode(input1).replace(u'######', u'%06i') % framenr, - input2=unicode(input2).replace(u'######', u'%06i') % framenr, - output=unicode(output).replace(u'######', u'%06i') % framenr, + input1=unicode(input1).replace(u'######', u'%06i.exr') % framenr, + input2=unicode(input2).replace(u'######', u'%06i.exr') % framenr, + output=unicode(output).replace(u'######', u'%06i.exr') % framenr, weight1=weight1, weight2=weight2, )) diff --git a/packages/flamenco/flamenco/job_compilers/commands.py b/packages/flamenco/flamenco/job_compilers/commands.py index 09dc89fa12e352717775649f80dbf09c18fe3cf9..bda838ba21f73f45085013f2a090a5a06c24fcfb 100644 --- a/packages/flamenco/flamenco/job_compilers/commands.py +++ b/packages/flamenco/flamenco/job_compilers/commands.py @@ -87,3 +87,8 @@ class MergeProgressiveRenders(AbstractCommand): weight1 = attr.ib(validator=attr.validators.instance_of(int)) weight2 = attr.ib(validator=attr.validators.instance_of(int)) + + # Blender command to run in order to merge the two EXR files. + # This is usually determined by the Flamenco Manager configuration. + blender_cmd = attr.ib(validator=attr.validators.instance_of(unicode), + default=u'{blender}') diff --git a/packages/flamenco/tests/test_job_compilers.py b/packages/flamenco/tests/test_job_compilers.py index e5adea68e9c4ebf2e013dc780fca1a93370a8c2c..ce41b328f8b02f5c0aa585d148e9791e272b8a3c 100644 --- a/packages/flamenco/tests/test_job_compilers.py +++ b/packages/flamenco/tests/test_job_compilers.py @@ -219,16 +219,16 @@ class BlenderRenderProgressiveTest(unittest.TestCase): job_doc, [ commands.MergeProgressiveRenders( - input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000001', - input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000001', - output=u'/render/out/_intermediate/merge-smpl-20-frm-000001', + input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000001.exr', + input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000001.exr', + output=u'/render/out/_intermediate/merge-smpl-20-frm-000001.exr', weight1=10, weight2=10, ), commands.MergeProgressiveRenders( - input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000002', - input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000002', - output=u'/render/out/_intermediate/merge-smpl-20-frm-000002', + input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000002.exr', + input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000002.exr', + output=u'/render/out/_intermediate/merge-smpl-20-frm-000002.exr', weight1=10, weight2=10, ), @@ -240,16 +240,16 @@ class BlenderRenderProgressiveTest(unittest.TestCase): job_doc, [ commands.MergeProgressiveRenders( - input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000003', - input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000003', - output=u'/render/out/_intermediate/merge-smpl-20-frm-000003', + input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000003.exr', + input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000003.exr', + output=u'/render/out/_intermediate/merge-smpl-20-frm-000003.exr', weight1=10, weight2=10, ), commands.MergeProgressiveRenders( - input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000004', - input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000004', - output=u'/render/out/_intermediate/merge-smpl-20-frm-000004', + input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000004.exr', + input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000004.exr', + output=u'/render/out/_intermediate/merge-smpl-20-frm-000004.exr', weight1=10, weight2=10, ), @@ -261,16 +261,16 @@ class BlenderRenderProgressiveTest(unittest.TestCase): job_doc, [ commands.MergeProgressiveRenders( - input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000005', - input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000005', - output=u'/render/out/_intermediate/merge-smpl-20-frm-000005', + input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000005.exr', + input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000005.exr', + output=u'/render/out/_intermediate/merge-smpl-20-frm-000005.exr', weight1=10, weight2=10, ), commands.MergeProgressiveRenders( - input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000006', - input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000006', - output=u'/render/out/_intermediate/merge-smpl-20-frm-000006', + input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000006.exr', + input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000006.exr', + output=u'/render/out/_intermediate/merge-smpl-20-frm-000006.exr', weight1=10, weight2=10, ), @@ -331,16 +331,16 @@ class BlenderRenderProgressiveTest(unittest.TestCase): job_doc, [ commands.MergeProgressiveRenders( - input1=u'/render/out/_intermediate/merge-smpl-20-frm-000001', - input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000001', - output=u'/render/out/frames-000001', + input1=u'/render/out/_intermediate/merge-smpl-20-frm-000001.exr', + input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000001.exr', + output=u'/render/out/frames-000001.exr', weight1=20, weight2=10, ), commands.MergeProgressiveRenders( - input1=u'/render/out/_intermediate/merge-smpl-20-frm-000002', - input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000002', - output=u'/render/out/frames-000002', + input1=u'/render/out/_intermediate/merge-smpl-20-frm-000002.exr', + input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000002.exr', + output=u'/render/out/frames-000002.exr', weight1=20, weight2=10, ), @@ -352,16 +352,16 @@ class BlenderRenderProgressiveTest(unittest.TestCase): job_doc, [ commands.MergeProgressiveRenders( - input1=u'/render/out/_intermediate/merge-smpl-20-frm-000003', - input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000003', - output=u'/render/out/frames-000003', + input1=u'/render/out/_intermediate/merge-smpl-20-frm-000003.exr', + input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000003.exr', + output=u'/render/out/frames-000003.exr', weight1=20, weight2=10, ), commands.MergeProgressiveRenders( - input1=u'/render/out/_intermediate/merge-smpl-20-frm-000004', - input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000004', - output=u'/render/out/frames-000004', + input1=u'/render/out/_intermediate/merge-smpl-20-frm-000004.exr', + input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000004.exr', + output=u'/render/out/frames-000004.exr', weight1=20, weight2=10, ), @@ -373,16 +373,16 @@ class BlenderRenderProgressiveTest(unittest.TestCase): job_doc, [ commands.MergeProgressiveRenders( - input1=u'/render/out/_intermediate/merge-smpl-20-frm-000005', - input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000005', - output=u'/render/out/frames-000005', + input1=u'/render/out/_intermediate/merge-smpl-20-frm-000005.exr', + input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000005.exr', + output=u'/render/out/frames-000005.exr', weight1=20, weight2=10, ), commands.MergeProgressiveRenders( - input1=u'/render/out/_intermediate/merge-smpl-20-frm-000006', - input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000006', - output=u'/render/out/frames-000006', + input1=u'/render/out/_intermediate/merge-smpl-20-frm-000006.exr', + input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000006.exr', + output=u'/render/out/frames-000006.exr', weight1=20, weight2=10, ),