From dd01b4903d106635f8d9f437b0304e718bc77835 Mon Sep 17 00:00:00 2001 From: hofee <64160135+GitHofee@users.noreply.github.com> Date: Wed, 16 Oct 2024 15:29:22 -0500 Subject: [PATCH] debug normal --- blender_util.py | 68 +++++++++++++++++++++++++---------------------- data_generator.py | 21 ++++++++------- 2 files changed, 48 insertions(+), 41 deletions(-) diff --git a/blender_util.py b/blender_util.py index 8a75016..25ddf9b 100644 --- a/blender_util.py +++ b/blender_util.py @@ -195,7 +195,7 @@ class BlenderUtils: return min_z @staticmethod - def render_normal( + def render_normal_and_depth( output_dir, file_name, binocular_vision=False, target_object=None ): target_cameras = [BlenderUtils.CAMERA_NAME] @@ -220,37 +220,6 @@ class BlenderUtils: scene.render.use_overwrite = False scene.render.use_file_extension = False scene.render.use_placeholder = False - bpy.ops.render.render(write_still=True) - - msg = "success" - return msg - - @staticmethod - def render_mask_and_depth( - output_dir, file_name, binocular_vision=False, target_object=None - ): - target_cameras = [BlenderUtils.CAMERA_NAME] - if binocular_vision: - target_cameras.append(BlenderUtils.CAMERA_RIGHT_NAME) - for cam_name in target_cameras: - bpy.context.scene.camera = BlenderUtils.get_obj(cam_name) - cam_suffix = "L" if cam_name == BlenderUtils.CAMERA_NAME else "R" - scene = bpy.context.scene - scene.render.filepath = "" - - mask_dir = os.path.join(output_dir, "mask") - if not os.path.exists(mask_dir): - os.makedirs(mask_dir) - - scene.render.filepath = os.path.join( - output_dir, mask_dir, f"{file_name}_{cam_suffix}.png" - ) - scene.render.image_settings.color_depth = "8" - scene.render.resolution_percentage = 100 - scene.render.use_overwrite = False - scene.render.use_file_extension = False - scene.render.use_placeholder = False - scene.use_nodes = True tree = scene.node_tree @@ -276,6 +245,41 @@ class BlenderUtils: output_depth.format.file_format = "PNG" output_depth.format.color_mode = "BW" output_depth.format.color_depth = "16" + tree.links.new(map_range.outputs[0], output_depth.inputs[0]) + bpy.ops.render.render(write_still=True) + + msg = "success" + return msg + + @staticmethod + def render_mask( + output_dir, file_name, binocular_vision=False, target_object=None + ): + target_cameras = [BlenderUtils.CAMERA_NAME] + if binocular_vision: + target_cameras.append(BlenderUtils.CAMERA_RIGHT_NAME) + # use pass z + bpy.context.scene.view_layers["ViewLayer"].use_pass_z = True + for cam_name in target_cameras: + bpy.context.scene.camera = BlenderUtils.get_obj(cam_name) + cam_suffix = "L" if cam_name == BlenderUtils.CAMERA_NAME else "R" + scene = bpy.context.scene + scene.render.filepath = "" + + mask_dir = os.path.join(output_dir, "mask") + if not os.path.exists(mask_dir): + os.makedirs(mask_dir) + + scene.render.filepath = os.path.join( + output_dir, mask_dir, f"{file_name}_{cam_suffix}.png" + ) + scene.render.image_settings.color_depth = "8" + scene.render.resolution_percentage = 100 + scene.render.use_overwrite = False + scene.render.use_file_extension = False + scene.render.use_placeholder = False + + bpy.ops.render.render(write_still=True) msg = "success" diff --git a/data_generator.py b/data_generator.py index ed37170..5287bf9 100644 --- a/data_generator.py +++ b/data_generator.py @@ -243,11 +243,22 @@ class DataGenerator: np.savetxt(os.path.join(scene_dir, "points_and_normals.txt"), points_normals) for i, cam_pose in enumerate(view_data["cam_poses"]): BlenderUtils.set_camera_at(cam_pose) - BlenderUtils.render_mask_and_depth(scene_dir, f"{i}", binocular_vision=self.binocular_vision, target_object = self.target_obj) + BlenderUtils.render_mask(scene_dir, f"{i}", binocular_vision=self.binocular_vision, target_object = self.target_obj) BlenderUtils.save_cam_params(scene_dir, i, binocular_vision=self.binocular_vision) self.set_progress("render frame", i, len(view_data["cam_poses"])) self.set_progress("render frame", len(view_data["cam_poses"]), len(view_data["cam_poses"])) BlenderUtils.save_scene_info(scene_dir, self.display_table_config, object_name) + + + + self.change_target_obj_material_to_normal() + for i, cam_pose in enumerate(view_data["cam_poses"]): + BlenderUtils.set_camera_at(cam_pose) + BlenderUtils.render_normal_and_depth(scene_dir, f"{i}", binocular_vision=self.binocular_vision, target_object = self.target_obj) + BlenderUtils.save_cam_params(scene_dir, i, binocular_vision=self.binocular_vision) + self.set_progress("render normal frame", i, len(view_data["cam_poses"])) + self.set_progress("render normal frame", len(view_data["cam_poses"]), len(view_data["cam_poses"])) + depth_dir = os.path.join(scene_dir, "depth") for depth_file in os.listdir(depth_dir): if not depth_file.endswith(".png"): @@ -256,14 +267,6 @@ class DataGenerator: new_file_path = os.path.join(depth_dir, f"{name}.png") os.rename(file_path,new_file_path) - self.change_target_obj_material_to_normal() - for i, cam_pose in enumerate(view_data["cam_poses"]): - BlenderUtils.set_camera_at(cam_pose) - BlenderUtils.render_normal(scene_dir, f"{i}", binocular_vision=self.binocular_vision, target_object = self.target_obj) - BlenderUtils.save_cam_params(scene_dir, i, binocular_vision=self.binocular_vision) - self.set_progress("render normal frame", i, len(view_data["cam_poses"])) - self.set_progress("render normal frame", len(view_data["cam_poses"]), len(view_data["cam_poses"])) - return True def change_target_obj_material_to_normal(self):