def execute(self, context): import os preferences = context.user_preferences scene = context.scene render_layer = scene.render.layers.active in_filepath = self.input_filepath out_filepath = self.output_filepath in_filepaths = [] out_filepaths = [] if in_filepath != '': # Denoise a single file if out_filepath == '': out_filepath = in_filepath in_filepaths.append(in_filepath) out_filepaths.append(out_filepath) else: # Denoise animation sequence with expanded frames matching # Blender render output file naming. in_filepath = scene.render.filepath if out_filepath == '': out_filepath = in_filepath # Backup since we will overwrite the scene path temporarily original_filepath = scene.render.filepath for frame in range(scene.frame_start, scene.frame_end + 1): scene.render.filepath = in_filepath filepath = scene.render.frame_path(frame=frame) in_filepaths.append(filepath) if not os.path.isfile(filepath): scene.render.filepath = original_filepath self.report({ 'ERROR' }, f"Frame '{filepath}' not found, animation must be complete." ) return {'CANCELLED'} scene.render.filepath = out_filepath filepath = scene.render.frame_path(frame=frame) out_filepaths.append(filepath) scene.render.filepath = original_filepath # Run denoiser # TODO: support cancel and progress reports. import _cycles try: _cycles.denoise(preferences.as_pointer(), scene.as_pointer(), render_layer.as_pointer(), input=in_filepaths, output=out_filepaths) except Exception as e: self.report({'ERROR'}, str(e)) return {'FINISHED'} self.report({'INFO'}, "Denoising completed.") return {'FINISHED'}
def execute(self, context): import os preferences = context.preferences scene = context.scene view_layer = context.view_layer in_filepath = self.input_filepath out_filepath = self.output_filepath in_filepaths = [] out_filepaths = [] if in_filepath != '': # Denoise a single file if out_filepath == '': out_filepath = in_filepath in_filepaths.append(in_filepath) out_filepaths.append(out_filepath) else: # Denoise animation sequence with expanded frames matching # Blender render output file naming. in_filepath = scene.render.filepath if out_filepath == '': out_filepath = in_filepath # Backup since we will overwrite the scene path temporarily original_filepath = scene.render.filepath for frame in range(scene.frame_start, scene.frame_end + 1): scene.render.filepath = in_filepath filepath = scene.render.frame_path(frame=frame) in_filepaths.append(filepath) if not os.path.isfile(filepath): scene.render.filepath = original_filepath self.report({'ERROR'}, f"Frame '{filepath}' not found, animation must be complete.") return {'CANCELLED'} scene.render.filepath = out_filepath filepath = scene.render.frame_path(frame=frame) out_filepaths.append(filepath) scene.render.filepath = original_filepath # Run denoiser # TODO: support cancel and progress reports. import _cycles try: _cycles.denoise(preferences.as_pointer(), scene.as_pointer(), view_layer.as_pointer(), input=in_filepaths, output=out_filepaths) except Exception as e: self.report({'ERROR'}, str(e)) return {'FINISHED'} self.report({'INFO'}, "Denoising completed.") return {'FINISHED'}