From 0c993cfacad0cd22485f5dd9a3b7d19a6ada6970 Mon Sep 17 00:00:00 2001 From: Dominik Winkelbauer Date: Mon, 23 Jan 2023 14:14:00 +0100 Subject: [PATCH 1/9] feat(blender): Updates to blender 3.4.1 --- blenderproc/python/utility/InstallUtility.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blenderproc/python/utility/InstallUtility.py b/blenderproc/python/utility/InstallUtility.py index dbe848d06..7130c02e2 100644 --- a/blenderproc/python/utility/InstallUtility.py +++ b/blenderproc/python/utility/InstallUtility.py @@ -90,8 +90,8 @@ def make_sure_blender_is_installed(custom_blender_path: str, blender_install_pat blender_install_path = "blender" # Determine configured version - # right new only support blender-3.3.1 - major_version = "3.3" + # right new only support blender-3.4.1 + major_version = "3.4" minor_version = "1" blender_version = f"blender-{major_version}.{minor_version}" if platform in ["linux", "linux2"]: From 9bc8285ac2f2659848256d61744047c7fcca30cd Mon Sep 17 00:00:00 2001 From: Dominik Winkelbauer Date: Tue, 25 Apr 2023 19:48:46 +0200 Subject: [PATCH 2/9] feat(core): Updates to blender 3.5.1 --- blenderproc/python/utility/InstallUtility.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blenderproc/python/utility/InstallUtility.py b/blenderproc/python/utility/InstallUtility.py index 7130c02e2..2ef86e929 100644 --- a/blenderproc/python/utility/InstallUtility.py +++ b/blenderproc/python/utility/InstallUtility.py @@ -90,8 +90,8 @@ def make_sure_blender_is_installed(custom_blender_path: str, blender_install_pat blender_install_path = "blender" # Determine configured version - # right new only support blender-3.4.1 - major_version = "3.4" + # right new only support blender-3.5.1 + major_version = "3.5" minor_version = "1" blender_version = f"blender-{major_version}.{minor_version}" if platform in ["linux", "linux2"]: From 35fbd3b8384bb49c4458fc0a4515ca5d854373be Mon Sep 17 00:00:00 2001 From: Dominik Winkelbauer Date: Thu, 17 Aug 2023 16:02:30 +0200 Subject: [PATCH 3/9] feat(core): Updates to blender 3.6.2 --- blenderproc/python/utility/InstallUtility.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blenderproc/python/utility/InstallUtility.py b/blenderproc/python/utility/InstallUtility.py index 2ef86e929..c77efbe74 100644 --- a/blenderproc/python/utility/InstallUtility.py +++ b/blenderproc/python/utility/InstallUtility.py @@ -91,8 +91,8 @@ def make_sure_blender_is_installed(custom_blender_path: str, blender_install_pat # Determine configured version # right new only support blender-3.5.1 - major_version = "3.5" - minor_version = "1" + major_version = "3.6" + minor_version = "2" blender_version = f"blender-{major_version}.{minor_version}" if platform in ["linux", "linux2"]: blender_version += "-linux-x64" From 0dcb7df20d9fa25af1b2ef691ccd51f91af07b8f Mon Sep 17 00:00:00 2001 From: Dominik Winkelbauer Date: Tue, 22 Aug 2023 23:29:58 +0200 Subject: [PATCH 4/9] feat(light): Sets light radius per default to 0.25 to be backwards compatible --- blenderproc/python/types/LightUtility.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/blenderproc/python/types/LightUtility.py b/blenderproc/python/types/LightUtility.py index 7cabcd976..8af907bc3 100644 --- a/blenderproc/python/types/LightUtility.py +++ b/blenderproc/python/types/LightUtility.py @@ -32,6 +32,7 @@ def __init__(self, light_type: str = "POINT", name: str = "light", blender_obj: light_obj = bpy.data.objects.new(name=name, object_data=light_data) bpy.context.collection.objects.link(light_obj) super().__init__(light_obj) + self.set_radius(0.25) else: super().__init__(blender_obj) @@ -46,6 +47,16 @@ def set_energy(self, energy: float, frame: Optional[int] = None): self.blender_obj.data.energy = energy Utility.insert_keyframe(self.blender_obj.data, "energy", frame) + def set_radius(self, radius: float, frame: Optional[int] = None): + """ Sets the radius / shadow_soft_size of the light. + + :param radius: Light size for ray shadow sampling (Raytraced shadows). + :param frame: The frame number which the value should be set to. If None is given, the current + frame number is used. + """ + self.blender_obj.data.shadow_soft_size = radius + Utility.insert_keyframe(self.blender_obj.data, "shadow_soft_size", frame) + def set_color(self, color: Union[list, Color], frame: Optional[int] = None): """ Sets the color of the light. @@ -191,6 +202,16 @@ def get_energy(self, frame: Optional[int] = None) -> float: with KeyFrame(frame): return self.blender_obj.data.energy + def get_radius(self, frame: Optional[int] = None) -> float: + """ Returns the radius / shadow_soft_size of the light. + + :param frame: The frame number which the value should be set to. If None is given, the current + frame number is used. + :return: The radius at the specified frame. + """ + with KeyFrame(frame): + return self.blender_obj.data.shadow_soft_size + def get_color(self, frame: Optional[int] = None) -> Color: """ Returns the RGB color of the light. From f8e3a3e545d6ee59ad74b79618204b0ef937b864 Mon Sep 17 00:00:00 2001 From: Dominik Winkelbauer Date: Tue, 17 Oct 2023 11:40:43 +0200 Subject: [PATCH 5/9] chore(blender): Updates to blender 3.6.4 --- blenderproc/python/utility/InstallUtility.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blenderproc/python/utility/InstallUtility.py b/blenderproc/python/utility/InstallUtility.py index 2ce98942d..eeca7ee6d 100644 --- a/blenderproc/python/utility/InstallUtility.py +++ b/blenderproc/python/utility/InstallUtility.py @@ -80,7 +80,7 @@ def make_sure_blender_is_installed(custom_blender_path: str, blender_install_pat # Determine configured version # right new only support blender-3.5.1 major_version = "3.6" - minor_version = "2" + minor_version = "4" blender_version = f"blender-{major_version}.{minor_version}" if platform in ["linux", "linux2"]: blender_version += "-linux-x64" From d3cd273150758ffaaa3e15041541e530d1b321ae Mon Sep 17 00:00:00 2001 From: Dominik Winkelbauer Date: Tue, 17 Oct 2023 17:29:11 +0200 Subject: [PATCH 6/9] fix(renderer): Disables light tree to keep rendering speed --- blenderproc/api/renderer/__init__.py | 2 +- blenderproc/python/renderer/RendererUtility.py | 10 ++++++++++ blenderproc/python/utility/Initializer.py | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/blenderproc/api/renderer/__init__.py b/blenderproc/api/renderer/__init__.py index 109c49d10..cdd2edf23 100644 --- a/blenderproc/api/renderer/__init__.py +++ b/blenderproc/api/renderer/__init__.py @@ -2,7 +2,7 @@ set_cpu_threads, toggle_stereo, set_simplify_subdivision_render, set_noise_threshold, \ set_max_amount_of_samples, enable_distance_output, enable_depth_output, enable_normals_output, \ enable_diffuse_color_output, map_file_format_to_file_ending, render, set_output_format, enable_motion_blur, \ - enable_segmentation_output, set_world_background, set_render_devices, enable_experimental_features + enable_segmentation_output, set_world_background, set_render_devices, enable_experimental_features, toggle_light_tree from blenderproc.python.renderer.SegMapRendererUtility import render_segmap from blenderproc.python.renderer.FlowRendererUtility import render_optical_flow from blenderproc.python.renderer.NOCSRendererUtility import render_nocs diff --git a/blenderproc/python/renderer/RendererUtility.py b/blenderproc/python/renderer/RendererUtility.py index b22db97d2..a2f8c2a00 100644 --- a/blenderproc/python/renderer/RendererUtility.py +++ b/blenderproc/python/renderer/RendererUtility.py @@ -123,6 +123,16 @@ def toggle_stereo(enable: bool): if enable: bpy.context.scene.render.views_format = "STEREO_3D" +def toggle_light_tree(enable: bool): + """ Enables/Disables blender's light tree for rendering. + + Enabling the light tree reduces the noise in scenes with many point lights, + however it increases the render time per sample. + See https://wiki.blender.org/wiki/Reference/Release_Notes/3.5/Cycles + + :param enable: True, if light tree should be enabled. + """ + bpy.context.scene.cycles.use_light_tree = enable def set_simplify_subdivision_render(simplify_subdivision_render: int): """ Sets global maximum subdivision level during rendering to speedup rendering. diff --git a/blenderproc/python/utility/Initializer.py b/blenderproc/python/utility/Initializer.py index 111792145..8e46f505f 100644 --- a/blenderproc/python/utility/Initializer.py +++ b/blenderproc/python/utility/Initializer.py @@ -118,6 +118,8 @@ def set_default_parameters(): # cpu thread means GPU-only rendering) RendererUtility.set_cpu_threads(0) RendererUtility.set_denoiser(DefaultConfig.denoiser) + # For now disable the light tree per default, as it seems to increase render time for most of our tests + RendererUtility.toggle_light_tree(False) RendererUtility.set_simplify_subdivision_render(DefaultConfig.simplify_subdivision_render) From 32c50c985bd1bf8a9f41a7deefb47d3b9927896b Mon Sep 17 00:00:00 2001 From: Dominik Winkelbauer Date: Tue, 17 Oct 2023 19:29:11 +0200 Subject: [PATCH 7/9] fix(front3d): Fixes transmission parameter of front3d materials --- blenderproc/python/loader/Front3DLoader.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/blenderproc/python/loader/Front3DLoader.py b/blenderproc/python/loader/Front3DLoader.py index 6874529b1..e2f484595 100644 --- a/blenderproc/python/loader/Front3DLoader.py +++ b/blenderproc/python/loader/Front3DLoader.py @@ -370,6 +370,10 @@ def load_furniture_objs(data: dict, future_model_path: str, lamp_light_strength: # => Reset the emission color principled_node.inputs["Emission"].default_value[:3] = [0, 0, 0] + # Front3d .mtl files use Tf incorrectly, they make all materials fully transmissive + # Revert that: + principled_node.inputs["Transmission"].default_value = 0 + # For each a texture node image_node = mat.new_node('ShaderNodeTexImage') # and load the texture.png From b874ea1d97691096a26c1b4505fb2375f7b622ee Mon Sep 17 00:00:00 2001 From: Dominik Winkelbauer Date: Wed, 18 Oct 2023 11:29:38 +0200 Subject: [PATCH 8/9] chore(blender): Downgrades to blender 3.5.1 --- blenderproc/python/utility/InstallUtility.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blenderproc/python/utility/InstallUtility.py b/blenderproc/python/utility/InstallUtility.py index eeca7ee6d..e3b26427e 100644 --- a/blenderproc/python/utility/InstallUtility.py +++ b/blenderproc/python/utility/InstallUtility.py @@ -79,8 +79,8 @@ def make_sure_blender_is_installed(custom_blender_path: str, blender_install_pat # Determine configured version # right new only support blender-3.5.1 - major_version = "3.6" - minor_version = "4" + major_version = "3.5" + minor_version = "1" blender_version = f"blender-{major_version}.{minor_version}" if platform in ["linux", "linux2"]: blender_version += "-linux-x64" From f63006baf4fa5fbbf36b8377b1e0ff094a88c706 Mon Sep 17 00:00:00 2001 From: Dominik Winkelbauer Date: Wed, 18 Oct 2023 15:02:45 +0200 Subject: [PATCH 9/9] chore(pip): Updates scipy --- blenderproc/python/utility/DefaultConfig.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blenderproc/python/utility/DefaultConfig.py b/blenderproc/python/utility/DefaultConfig.py index 58d9014ab..5a7198b88 100644 --- a/blenderproc/python/utility/DefaultConfig.py +++ b/blenderproc/python/utility/DefaultConfig.py @@ -44,7 +44,7 @@ class DefaultConfig: # Setup default_pip_packages = ["wheel", "pyyaml==5.1.2", "imageio==2.9.0", "gitpython==3.1.18", - "scikit-image==0.19.2", "pypng==0.0.20", "scipy==1.7.3", "matplotlib==3.5.1", + "scikit-image==0.19.2", "pypng==0.0.20", "scipy==1.11.3", "matplotlib==3.5.1", "pytz==2021.1", "h5py==3.6.0", "Pillow==8.3.2", "opencv-contrib-python==4.5.5.64", "scikit-learn==1.0.2", "python-dateutil==2.8.2", "rich==12.6.0", "trimesh==3.21.5", "pyrender==0.1.45"]