-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Open
Description
When both separate_sh
and pipe.convert_SHs_python
parameters are both True, gaussian_renderer.init.py raises a local variable dc
reference before assignment error. This was encountered when training a scene with --optimizer_type sparse_adam
and SIBR remote viewer with SHs Python set to True.
The code causing the issue:
# from SHs in Python, do it. If not, then SH -> RGB conversion will be done by rasterizer.
shs = None
colors_precomp = None
if override_color is None:
if pipe.convert_SHs_python:
shs_view = pc.get_features.transpose(1, 2).view(-1, 3, (pc.max_sh_degree+1)**2)
dir_pp = (pc.get_xyz - viewpoint_camera.camera_center.repeat(pc.get_features.shape[0], 1))
dir_pp_normalized = dir_pp/dir_pp.norm(dim=1, keepdim=True)
sh2rgb = eval_sh(pc.active_sh_degree, shs_view, dir_pp_normalized)
colors_precomp = torch.clamp_min(sh2rgb + 0.5, 0.0)
else:
if separate_sh:
dc, shs = pc.get_features_dc, pc.get_features_rest
else:
shs = pc.get_features
else:
colors_precomp = override_color
# Rasterize visible Gaussians to image, obtain their radii (on screen).
if separate_sh:
rendered_image, radii, depth_image = rasterizer(
means3D = means3D,
means2D = means2D,
dc = dc,
shs = shs,
colors_precomp = colors_precomp,
opacities = opacity,
scales = scales,
rotations = rotations,
cov3D_precomp = cov3D_precomp)
To fix it - we can just define it at the start dc = None
after shs = None
.
Metadata
Metadata
Assignees
Labels
No labels