(camera_state: nerfview.CameraState, img_wh: Tuple[int, int])
| 160 | # register and open viewer |
| 161 | @torch.no_grad() |
| 162 | def viewer_render_fn(camera_state: nerfview.CameraState, img_wh: Tuple[int, int]): |
| 163 | width, height = img_wh |
| 164 | c2w = camera_state.c2w |
| 165 | K = camera_state.get_K(img_wh) |
| 166 | c2w = torch.from_numpy(c2w).float().to(device) |
| 167 | K = torch.from_numpy(K).float().to(device) |
| 168 | viewmat = c2w.inverse() |
| 169 | |
| 170 | if args.backend == "gsplat": |
| 171 | rasterization_fn = rasterization |
| 172 | elif args.backend == "inria": |
| 173 | from gsplat import rasterization_inria_wrapper |
| 174 | |
| 175 | rasterization_fn = rasterization_inria_wrapper |
| 176 | else: |
| 177 | raise ValueError |
| 178 | |
| 179 | render_colors, render_alphas, meta = rasterization_fn( |
| 180 | means, # [N, 3] |
| 181 | quats, # [N, 4] |
| 182 | scales, # [N, 3] |
| 183 | opacities, # [N] |
| 184 | colors, # [N, S, 3] |
| 185 | viewmat[None], # [1, 4, 4] |
| 186 | K[None], # [1, 3, 3] |
| 187 | width, |
| 188 | height, |
| 189 | sh_degree=sh_degree, |
| 190 | render_mode="RGB", |
| 191 | # this is to speedup large-scale rendering by skipping far-away Gaussians. |
| 192 | radius_clip=3, |
| 193 | ) |
| 194 | render_rgbs = render_colors[0, ..., 0:3].cpu().numpy() |
| 195 | return render_rgbs |
| 196 | |
| 197 | server = viser.ViserServer(port=args.port, verbose=False) |
| 198 | _ = nerfview.Viewer( |
nothing calls this directly
no outgoing calls
no test coverage detected