diff --git a/README.md b/README.md index 2b2203373..95ba60a48 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@
-
+
diff --git a/docs/developer_guides/viewer/local_viewer.md b/docs/developer_guides/viewer/local_viewer.md
index 2931f8c0d..ef8b1ac1f 100644
--- a/docs/developer_guides/viewer/local_viewer.md
+++ b/docs/developer_guides/viewer/local_viewer.md
@@ -1,4 +1,8 @@
-# Local Server
+# (Legacy Viewer) Local Server
+
+**Note:** this doc only applies to the legacy version of the viewer, which was the default in in Nerfstudio versions `<=0.3.4`. It was deprecated starting Nerfstudio version `1.0.0`, where it needs to be opted into via the `--vis viewer_legacy` argument.
+
+---
If you are unable to connect to `https://viewer.nerf.studio`, want to use Safari, or want to develop the viewer codebase, you can launch your own local viewer.
diff --git a/nerfstudio/models/splatfacto.py b/nerfstudio/models/splatfacto.py
index b23eabe00..a826599f9 100644
--- a/nerfstudio/models/splatfacto.py
+++ b/nerfstudio/models/splatfacto.py
@@ -155,6 +155,8 @@ class SplatfactoModelConfig(ModelConfig):
"""threshold of ratio of gaussian max to min scale before applying regularization
loss from the PhysGaussian paper
"""
+ output_depth_during_training: bool = False
+ """If True, output depth during training. Otherwise, only output depth during evaluation."""
class SplatfactoModel(Model):
@@ -667,7 +669,10 @@ class SplatfactoModel(Model):
if self.crop_box is not None and not self.training:
crop_ids = self.crop_box.within(self.means).squeeze()
if crop_ids.sum() == 0:
- return {"rgb": background.repeat(int(camera.height.item()), int(camera.width.item()), 1)}
+ rgb = background.repeat(int(camera.height.item()), int(camera.width.item()), 1)
+ depth = background.new_ones(*rgb.shape[:2], 1) * 10
+ accumulation = background.new_zeros(*rgb.shape[:2], 1)
+ return {"rgb": rgb, "depth": depth, "accumulation": accumulation}
else:
crop_ids = None
camera_downscale = self._get_downscale_factor()
@@ -732,7 +737,10 @@ class SplatfactoModel(Model):
tile_bounds,
) # type: ignore
if (self.radii).sum() == 0:
- return {"rgb": background.repeat(int(camera.height.item()), int(camera.width.item()), 1)}
+ rgb = background.repeat(int(camera.height.item()), int(camera.width.item()), 1)
+ depth = background.new_ones(*rgb.shape[:2], 1) * 10
+ accumulation = background.new_zeros(*rgb.shape[:2], 1)
+ return {"rgb": rgb, "depth": depth, "accumulation": accumulation}
# Important to allow xys grads to populate properly
if self.training:
@@ -766,7 +774,7 @@ class SplatfactoModel(Model):
alpha = alpha[..., None]
rgb = torch.clamp(rgb, max=1.0) # type: ignore
depth_im = None
- if not self.training:
+ if self.config.output_depth_during_training or not self.training:
depth_im = rasterize_gaussians( # type: ignore
self.xys,
depths,