google-research
28 строк · 1.4 Кб
1--- external/eg3d/training/volumetric_rendering/ray_sampler.py 2023-03-14 23:35:46.915278482 +0000
2+++ external_reference/eg3d/training/volumetric_rendering/ray_sampler.py 2023-03-14 23:28:05.430774723 +0000
3@@ -35,7 +35,7 @@
4N, M = cam2world_matrix.shape[0], resolution**2
5cam_locs_world = cam2world_matrix[:, :3, 3]
6fx = intrinsics[:, 0, 0]
7- fy = intrinsics[:, 1, 1]
8+ fy = -intrinsics[:, 1, 1] # follow opengl convention from nerf
9cx = intrinsics[:, 0, 2]
10cy = intrinsics[:, 1, 2]
11sk = intrinsics[:, 0, 1]
12@@ -51,7 +51,8 @@
13x_lift = (x_cam - cx.unsqueeze(-1) + cy.unsqueeze(-1)*sk.unsqueeze(-1)/fy.unsqueeze(-1) - sk.unsqueeze(-1)*y_cam/fy.unsqueeze(-1)) / fx.unsqueeze(-1) * z_cam
14y_lift = (y_cam - cy.unsqueeze(-1)) / fy.unsqueeze(-1) * z_cam
15
16- cam_rel_points = torch.stack((x_lift, y_lift, z_cam, torch.ones_like(z_cam)), dim=-1)
17+ # follow opengl convention like nerf
18+ cam_rel_points = torch.stack((x_lift, y_lift, -z_cam, torch.ones_like(z_cam)), dim=-1)
19
20world_rel_points = torch.bmm(cam2world_matrix, cam_rel_points.permute(0, 2, 1)).permute(0, 2, 1)[:, :, :3]
21
22@@ -60,4 +61,4 @@
23
24ray_origins = cam_locs_world.unsqueeze(1).repeat(1, ray_dirs.shape[1], 1)
25
26- return ray_origins, ray_dirs
27\ No newline at end of file
28+ return ray_origins, ray_dirs
29