def __set_post_process(self): asr_scene_props = self.bl_scene.appleseed for index, stage in enumerate(asr_scene_props.post_processing_stages): if stage.model == 'render_stamp_post_processing_stage': params = {'order': index, 'format_string': stage.render_stamp} else: params = {'order': index, 'color_map': stage.color_map, 'auto_range': stage.auto_range, 'range_min': stage.range_min, 'range_max': stage.range_max, 'add_legend_bar': stage.add_legend_bar, 'legend_bar_ticks': stage.legend_bar_ticks, 'render_isolines': stage.render_isolines, 'line_thickness': stage.line_thickness} if stage.color_map == 'custom': params['color_map_file_path'] = stage.color_map_file_path post_process = asr.PostProcessingStage(stage.model, stage.name, params) logger.debug("Adding AOV: %s", stage.name) self.__frame.post_processing_stages().insert(post_process)
def __translate_frame(self): """ Convert image related settings (resolution, crop windows, AOVs, ...) to appleseed. """ logger.debug("Translating frame") asr_scene_props = self.bl_scene.appleseed scale = self.bl_scene.render.resolution_percentage / 100.0 if self.__context: width = int(self.__context.region.width) height = int(self.__context.region.height) self.__viewport_resolution = [width, height] else: width = int(self.bl_scene.render.resolution_x * scale) height = int(self.bl_scene.render.resolution_y * scale) frame_params = { 'resolution': asr.Vector2i(width, height), 'camera': self.bl_scene.camera.name, 'tile_size': asr.Vector2i(asr_scene_props.tile_size, asr_scene_props.tile_size), 'filter': asr_scene_props.pixel_filter, 'filter_size': asr_scene_props.pixel_filter_size, 'denoiser': asr_scene_props.denoise_mode, 'skip_denoised': asr_scene_props.skip_denoised, 'random_pixel_order': asr_scene_props.random_pixel_order, 'prefilter_spikes': asr_scene_props.prefilter_spikes, 'spike_threshold': asr_scene_props.spike_threshold, 'patch_distance_threshold': asr_scene_props.patch_distance_threshold, 'denoise_scales': asr_scene_props.denoise_scales, 'mark_invalid_pixels': asr_scene_props.mark_invalid_pixels } # AOVs aovs = asr.AOVContainer() if self.export_mode != ProjectExportMode.INTERACTIVE_RENDER: if asr_scene_props.diffuse_aov: aovs.insert(asr.AOV('diffuse_aov', {})) if asr_scene_props.direct_diffuse_aov: aovs.insert(asr.AOV('direct_diffuse_aov', {})) if asr_scene_props.indirect_diffuse_aov: aovs.insert(asr.AOV('indirect_diffuse_aov', {})) if asr_scene_props.glossy_aov: aovs.insert(asr.AOV('glossy_aov', {})) if asr_scene_props.direct_glossy_aov: aovs.insert(asr.AOV('direct_glossy_aov', {})) if asr_scene_props.indirect_glossy_aov: aovs.insert(asr.AOV('indirect_glossy_aov', {})) if asr_scene_props.normal_aov: aovs.insert(asr.AOV('normal_aov', {})) if asr_scene_props.position_aov: aovs.insert(asr.AOV('position_aov', {})) if asr_scene_props.uv_aov: aovs.insert(asr.AOV('uv_aov', {})) if asr_scene_props.depth_aov: aovs.insert(asr.AOV('depth_aov', {})) if asr_scene_props.pixel_time_aov: aovs.insert(asr.AOV('pixel_time_aov', {})) if asr_scene_props.invalid_samples_aov: aovs.insert(asr.AOV('invalid_samples_aov', {})) if asr_scene_props.pixel_sample_count_aov: aovs.insert(asr.AOV('pixel_sample_count_aov', {})) if asr_scene_props.pixel_variation_aov: aovs.insert(asr.AOV('pixel_variation_aov', {})) if asr_scene_props.albedo_aov: aovs.insert(asr.AOV('albedo_aov', {})) if asr_scene_props.emission_aov: aovs.insert(asr.AOV('emission_aov', {})) if asr_scene_props.npr_shading_aov: aovs.insert(asr.AOV('npr_shading_aov', {})) if asr_scene_props.npr_contour_aov: aovs.insert(asr.AOV('npr_contour_aov', {})) # Create and set the frame in the project. frame = asr.Frame("beauty", frame_params, aovs) if len( asr_scene_props.post_processing_stages ) > 0 and self.export_mode != ProjectExportMode.INTERACTIVE_RENDER: for index, stage in enumerate( asr_scene_props.post_processing_stages): if stage.model == 'render_stamp_post_processing_stage': params = { 'order': index, 'format_string': stage.render_stamp } else: params = { 'order': index, 'color_map': stage.color_map, 'auto_range': stage.auto_range, 'range_min': stage.range_min, 'range_max': stage.range_max, 'add_legend_bar': stage.add_legend_bar, 'legend_bar_ticks': stage.legend_bar_ticks, 'render_isolines': stage.render_isolines, 'line_thickness': stage.line_thickness } if stage.color_map == 'custom': params[ 'color_map_file_path'] = stage.color_map_file_path post_process = asr.PostProcessingStage(stage.model, stage.name, params) frame.post_processing_stages().insert(post_process) if self.bl_scene.render.use_border and self.export_mode != ProjectExportMode.INTERACTIVE_RENDER: min_x = int(self.bl_scene.render.border_min_x * width) max_x = int(self.bl_scene.render.border_max_x * width) - 1 min_y = height - int(self.bl_scene.render.border_max_y * height) max_y = height - int( self.bl_scene.render.border_min_y * height) - 1 frame.set_crop_window([min_x, min_y, max_x, max_y]) elif self.export_mode == ProjectExportMode.INTERACTIVE_RENDER and self.__context.space_data.use_render_border \ and self.__context.region_data.view_perspective in ('ORTHO', 'PERSP'): min_x = int(self.__context.space_data.render_border_min_x * width) max_x = int( self.__context.space_data.render_border_max_x * width) - 1 min_y = height - int( self.__context.space_data.render_border_max_y * height) max_y = height - int( self.__context.space_data.render_border_min_y * height) - 1 frame.set_crop_window([min_x, min_y, max_x, max_y]) self.__project.set_frame(frame)