diff --git a/hy3dgen/texgen/differentiable_renderer/mesh_render.py b/hy3dgen/texgen/differentiable_renderer/mesh_render.py index 3c0f362..342d2f8 100755 --- a/hy3dgen/texgen/differentiable_renderer/mesh_render.py +++ b/hy3dgen/texgen/differentiable_renderer/mesh_render.py @@ -133,7 +133,7 @@ class MeshRender(): camera_distance=1.45, camera_type='orth', default_resolution=1024, texture_size=1024, use_antialias=True, max_mip_level=None, filter_mode='linear', - bake_mode='linear', raster_mode='cr', device='cuda'): + bake_mode='linear', raster_mode='cr', device='cuda', ortho_scale=1.2,): self.device = device @@ -159,7 +159,7 @@ class MeshRender(): raise f'No raster named {self.raster_mode}' if camera_type == 'orth': - self.ortho_scale = 1.2 + self.ortho_scale = ortho_scale self.camera_proj_mat = get_orthographic_projection_matrix( left=-self.ortho_scale * 0.5, right=self.ortho_scale * 0.5, bottom=-self.ortho_scale * 0.5, top=self.ortho_scale * 0.5, diff --git a/nodes.py b/nodes.py index 1d771a7..843fbff 100644 --- a/nodes.py +++ b/nodes.py @@ -241,6 +241,7 @@ class Hy3DCameraConfig: "camera_elevations": ("STRING", {"default": "0, 0, 0, 0, 90, -90", "multiline": False}), "view_weights": ("STRING", {"default": "1, 0.1, 0.5, 0.1, 0.05, 0.05", "multiline": False}), "camera_distance": ("FLOAT", {"default": 1.45, "min": 0.1, "max": 10.0, "step": 0.001}), + "ortho_scale": ("FLOAT", {"default": 1.2, "min": 0.1, "max": 10.0, "step": 0.001}), }, } @@ -249,7 +250,7 @@ class Hy3DCameraConfig: FUNCTION = "process" CATEGORY = "Hunyuan3DWrapper" - def process(self, camera_azimuths, camera_elevations, view_weights, camera_distance): + def process(self, camera_azimuths, camera_elevations, view_weights, camera_distance, ortho_scale): angles_list = list(map(int, camera_azimuths.replace(" ", "").split(','))) elevations_list = list(map(int, camera_elevations.replace(" ", "").split(','))) weights_list = list(map(float, view_weights.replace(" ", "").split(','))) @@ -258,7 +259,8 @@ class Hy3DCameraConfig: "selected_camera_azims": angles_list, "selected_camera_elevs": elevations_list, "selected_view_weights": weights_list, - "camera_distance": camera_distance + "camera_distance": camera_distance, + "ortho_scale": ortho_scale, } return (camera_config,) @@ -310,15 +312,18 @@ class Hy3DRenderMultiView: selected_camera_azims = [0, 90, 180, 270, 0, 180] selected_camera_elevs = [0, 0, 0, 0, 90, -90] camera_distance = 1.45 + ortho_scale = 1.2 else: selected_camera_azims = camera_config["selected_camera_azims"] selected_camera_elevs = camera_config["selected_camera_elevs"] camera_distance = camera_config["camera_distance"] + ortho_scale = camera_config["ortho_scale"] self.render = MeshRender( default_resolution=render_size, texture_size=texture_size, - camera_distance=camera_distance) + camera_distance=camera_distance, + ortho_scale=ortho_scale) self.render.load_mesh(mesh) @@ -377,15 +382,18 @@ class Hy3DRenderMultiViewDepth: selected_camera_azims = [0, 90, 180, 270, 0, 180] selected_camera_elevs = [0, 0, 0, 0, 90, -90] camera_distance = 1.45 + ortho_scale = 1.2 else: selected_camera_azims = camera_config["selected_camera_azims"] selected_camera_elevs = camera_config["selected_camera_elevs"] camera_distance = camera_config["camera_distance"] + ortho_scale = camera_config["ortho_scale"] self.render = MeshRender( default_resolution=render_size, texture_size=texture_size, - camera_distance=camera_distance) + camera_distance=camera_distance, + ortho_scale=ortho_scale) self.render.load_mesh(mesh)