Source code for blenderproc.python.modules.renderer.RgbRenderer

from blenderproc.python.modules.renderer.RendererInterface import RendererInterface
from blenderproc.python.material import MaterialLoaderUtility
import blenderproc.python.renderer.RendererUtility as RendererUtility
from blenderproc.python.utility.Utility import UndoAfterExecution


[docs]class RgbRenderer(RendererInterface): """ Renders rgb images for each registered keypoint. Images are stored as PNG-files or JPEG-files with 8bit color depth. .. list-table:: :widths: 25 100 10 :header-rows: 1 * - Parameter - Description - Type * - render_texture_less - Render all objects with a white slightly glossy texture, does not change emission materials, Default: False. - bool * - image_type - Image type of saved rendered images, Default: 'PNG'. Available: ['PNG','JPEG'] - str * - transparent_background - Whether to render the background as transparent or not, Default: False. - bool * - use_motion_blur - Use Blender motion blur feature which is required for motion blur and rolling shutter simulation. This feature only works if camera poses follow a continous trajectory as Blender performs a Bezier interpolation between keyframes and therefore arbitrary results are to be expected if camera poses are discontinuous (e.g. when sampled), Default: False - bool * - motion_blur_length - Motion blur effect length (in frames), Default: 0.1 - float * - use_rolling_shutter - Use rolling shutter simulation (top to bottom). This depends on the setting enable_motion_blur being activated and a motion_blur_length > 0, Default: False - bool * - rolling_shutter_length - Time as fraction of the motion_blur_length one scanline is exposed when enable_rolling_shutter is activated. If set to 1, this creates a pure motion blur effect, if set to 0 a pure rolling shutter effect, Default: 0.2 - float """ def __init__(self, config): RendererInterface.__init__(self, config) self._texture_less_mode = config.get_bool('render_texture_less', False) self._image_type = config.get_string('image_type', 'PNG') self._use_motion_blur = config.get_bool('use_motion_blur', False) self._motion_blur_length = config.get_float('motion_blur_length', 0.1) self._use_rolling_shutter = config.get_bool('use_rolling_shutter', False) self._rolling_shutter_length = config.get_float('rolling_shutter_length', 0.2)
[docs] def run(self): # if the rendering is not performed -> it is probably the debug case. do_undo = not self._avoid_output with UndoAfterExecution(perform_undo_op=do_undo): self._configure_renderer(use_denoiser=True, default_denoiser="Intel") # check if texture less render mode is active if self._texture_less_mode: MaterialLoaderUtility.change_to_texture_less_render(self._use_alpha_channel) if self._use_alpha_channel: MaterialLoaderUtility.add_alpha_channel_to_textures(blurry_edges=True) # motion blur if self._use_motion_blur: RendererUtility.enable_motion_blur(self._motion_blur_length, 'TOP' if self._use_rolling_shutter else "NONE", self._rolling_shutter_length) self._render( "rgb_", "colors", enable_transparency=self.config.get_bool("transparent_background", False), file_format=self._image_type )