diff --git a/.gitignore b/.gitignore index 7bbc71c..f9d7409 100644 --- a/.gitignore +++ b/.gitignore @@ -99,3 +99,6 @@ ENV/ # mypy .mypy_cache/ + +# blender backup files +*.blend1 diff --git a/cg/utils/README.md b/cg/utils/README.md new file mode 100644 index 0000000..6749a2d --- /dev/null +++ b/cg/utils/README.md @@ -0,0 +1,22 @@ +## blender_render_settings +Сценарий настроек редактора Blender для уменьшения времени рендеринга. + +Тестовая сцена +![](img/scene.blend "Тестовая сцена") + +Сценарий работает в 3х режимах оптимизации: +- small +- medium +- large + +Время тестовой сцены по умолчанию - 32 сек. +![](img/blender_render_settings_default.jpg "Время тестовой сцены по умолчанию") + +Время тестовой сцены в режиме `small` - 13 сек. +![](img/blender_render_settings_small.jpg "Время тестовой сцены в режиме small") + +Время тестовой сцены в режиме `medium` - 10 сек. +![](img/blender_render_settings_medium.jpg "Время тестовой сцены в режиме medium") + +Время тестовой сцены в режиме `large` - 4 сек. +![](img/blender_render_settings_large.jpg "Время тестовой сцены в режиме large") diff --git a/cg/utils/blender_render_settings.py b/cg/utils/blender_render_settings.py new file mode 100644 index 0000000..cb26210 --- /dev/null +++ b/cg/utils/blender_render_settings.py @@ -0,0 +1,110 @@ +# -*- coding: utf-8 -*- +""" +DESCRIPTION +This script setup render settings for reduce rendertime! +""" +__version__ = "0.1" + +import bpy + + +def settings(optimisation_level='medium'): + """ select optimisation_level: + 'small', + 'medium', + 'large' + """ + if optimisation_level == 'small': + bpy.context.scene.render.engine = 'CYCLES' + bpy.context.scene.cycles.device = 'GPU' + bpy.context.scene.cycles.adaptive_threshold = 0.02 + bpy.data.scenes["Scene"].cycles.samples = 256 + bpy.data.scenes["Scene"].cycles.use_denoising = True + bpy.data.scenes["Scene"].cycles.denoiser = 'OPENIMAGEDENOISE' + bpy.data.scenes["Scene"].cycles.denoising_input_passes = 'RGB_ALBEDO_NORMAL' + bpy.data.scenes["Scene"].cycles.denoising_prefilter = 'ACCURATE' + bpy.data.scenes["Scene"].cycles.use_fast_gi = False + bpy.data.scenes["Scene"].cycles.max_bounces = 12 + bpy.data.scenes["Scene"].cycles.diffuse_bounces = 4 + bpy.data.scenes["Scene"].cycles.glossy_bounces = 4 + bpy.data.scenes["Scene"].cycles.transmission_bounces = 12 + bpy.data.scenes["Scene"].cycles.transparent_max_bounces = 12 + + bpy.data.scenes["Scene"].cycles.use_animated_seed = True + bpy.data.scenes["Scene"].cycles.sample_clamp_indirect = 10 + bpy.data.scenes["Scene"].cycles.caustics_reflective = False + bpy.data.scenes["Scene"].cycles.caustics_refractive = False + + bpy.data.scenes["Scene"].render.use_motion_blur = False + + bpy.data.scenes["Scene"].cycles.use_auto_tile = False + + bpy.data.scenes["Scene"].view_settings.view_transform = 'Standard' + bpy.data.scenes["Scene"].view_settings.look = 'None' + + bpy.data.worlds["World"].cycles.sampling_method = 'MANUAL' + bpy.data.worlds["World"].cycles.sample_map_resolution = 1024 + bpy.data.worlds["World"].cycles.max_bounces = 1024 + + if optimisation_level == 'medium': + bpy.context.scene.render.engine = 'CYCLES' + bpy.context.scene.cycles.device = 'GPU' + bpy.data.scenes["Scene"].cycles.adaptive_threshold = 0.03 + bpy.data.scenes["Scene"].cycles.samples = 256 + bpy.data.scenes["Scene"].cycles.use_denoising = True + bpy.data.scenes["Scene"].cycles.denoiser = 'OPENIMAGEDENOISE' + bpy.data.scenes["Scene"].cycles.denoising_input_passes = 'RGB_ALBEDO_NORMAL' + bpy.data.scenes["Scene"].cycles.denoising_prefilter = 'ACCURATE' + bpy.data.scenes["Scene"].cycles.use_fast_gi = False + bpy.data.scenes["Scene"].cycles.max_bounces = 8 + bpy.data.scenes["Scene"].cycles.diffuse_bounces = 4 + bpy.data.scenes["Scene"].cycles.glossy_bounces = 2 + bpy.data.scenes["Scene"].cycles.transmission_bounces = 4 + bpy.data.scenes["Scene"].cycles.transparent_max_bounces = 8 + + bpy.data.scenes["Scene"].cycles.use_animated_seed = True + bpy.data.scenes["Scene"].cycles.sample_clamp_indirect = 10 + bpy.data.scenes["Scene"].cycles.caustics_reflective = False + bpy.data.scenes["Scene"].cycles.caustics_refractive = False + + bpy.data.scenes["Scene"].render.use_motion_blur = False + + bpy.data.scenes["Scene"].cycles.use_auto_tile = False + + bpy.data.scenes["Scene"].view_settings.view_transform = 'Standard' + bpy.data.scenes["Scene"].view_settings.look = 'None' + + bpy.data.worlds["World"].cycles.sampling_method = 'MANUAL' + bpy.data.worlds["World"].cycles.sample_map_resolution = 1024 + bpy.data.worlds["World"].cycles.max_bounces = 1024 + + if optimisation_level == 'large': + bpy.context.scene.render.engine = 'CYCLES' + bpy.context.scene.cycles.device = 'GPU' + bpy.data.scenes["Scene"].cycles.adaptive_threshold = 0.05 + bpy.data.scenes["Scene"].cycles.samples = 128 + bpy.data.scenes["Scene"].cycles.use_denoising = True + bpy.data.scenes["Scene"].cycles.denoiser = 'OPTIX' + bpy.data.scenes["Scene"].cycles.denoising_input_passes = 'RGB_ALBEDO' + bpy.data.scenes["Scene"].cycles.use_fast_gi = False + bpy.data.scenes["Scene"].cycles.max_bounces = 4 + bpy.data.scenes["Scene"].cycles.diffuse_bounces = 2 + bpy.data.scenes["Scene"].cycles.glossy_bounces = 2 + bpy.data.scenes["Scene"].cycles.transmission_bounces = 4 + bpy.data.scenes["Scene"].cycles.transparent_max_bounces = 4 + + bpy.data.scenes["Scene"].cycles.use_animated_seed = True + bpy.data.scenes["Scene"].cycles.sample_clamp_indirect = 10 + bpy.data.scenes["Scene"].cycles.caustics_reflective = False + bpy.data.scenes["Scene"].cycles.caustics_refractive = False + + bpy.data.scenes["Scene"].render.use_motion_blur = False + + bpy.data.scenes["Scene"].cycles.use_auto_tile = False + + bpy.data.scenes["Scene"].view_settings.view_transform = 'Standard' + bpy.data.scenes["Scene"].view_settings.look = 'None' + + bpy.data.worlds["World"].cycles.sampling_method = 'MANUAL' + bpy.data.worlds["World"].cycles.sample_map_resolution = 1024 + bpy.data.worlds["World"].cycles.max_bounces = 1024 diff --git a/cg/utils/img/blender_render_settings_default.jpg b/cg/utils/img/blender_render_settings_default.jpg new file mode 100644 index 0000000..6449211 Binary files /dev/null and b/cg/utils/img/blender_render_settings_default.jpg differ diff --git a/cg/utils/img/blender_render_settings_large.jpg b/cg/utils/img/blender_render_settings_large.jpg new file mode 100644 index 0000000..bcce497 Binary files /dev/null and b/cg/utils/img/blender_render_settings_large.jpg differ diff --git a/cg/utils/img/blender_render_settings_medium.jpg b/cg/utils/img/blender_render_settings_medium.jpg new file mode 100644 index 0000000..ab49a74 Binary files /dev/null and b/cg/utils/img/blender_render_settings_medium.jpg differ diff --git a/cg/utils/img/blender_render_settings_small.jpg b/cg/utils/img/blender_render_settings_small.jpg new file mode 100644 index 0000000..efcc35b Binary files /dev/null and b/cg/utils/img/blender_render_settings_small.jpg differ diff --git a/cg/utils/img/scene.blend b/cg/utils/img/scene.blend new file mode 100644 index 0000000..6e970ed Binary files /dev/null and b/cg/utils/img/scene.blend differ