A lightweight web viewer and offline renderer for Urban-GS: A Unified 3D Gaussian Splatting Framework for Compact and High-Fidelity Aerial-to-Street Reconstruction models, built on top of nerfstudio.
The core codebase is derived from nerfstudio. The Gaussian-based rendering framework also follows design ideas from yzslab/nerfstudio. We appreciate the open-source work and contributions from both projects.
Visualization_example.mp4
Note: The web viewer preview may exhibit lower visual quality than the actual rendered output video.
- The camera control logic has been updated to align with SIBR-style navigation. Use
WASDQEandIJKLUOto control the camera. - Dynamic blur control has been disabled so the rendering resolution stays stable while the camera is moving.
- This project is focused on rendering only. Training is not supported, the implementation has not been extensively tested, and it is not as fast as the SIBR viewers.
- The nerfstudio web viewer can reach similar rendering quality to SIBR viewers. Recommended settings:
- Increase the render resolution with the
Max Resoption under theCONTROLStab. - Increase JPEG quality with
--config.viewer.jpeg-quality 100, or switch to PNG output with--config.viewer.image-format png.
- Increase the render resolution with the
- The default scene orientation may be incorrect. You can adjust it in one of the following ways:
- Add
--no-auto-reorienttorun_viewer.pyorrender.pyif you want to keep the same coordinate system as the input dataset. - Click
RESET UP DIRECTIONunder theSCENEtab to use the current viewpoint as the orientation. - Use
--ref-orientation IMAGE_NAMEto specify an image as the reference orientation.
- Add
- Hold the right mouse button and move the camera slightly before pressing
W; otherwise, the camera may freeze after moving a short distance.- A fix has been submitted upstream: nerfstudio-project/nerfstudio#2404
- Alternatively, use this viewer: https://nsv.cslab.pro/23-09-15-1/?websocket_url=ws://localhost:7007
- Press
F5to refresh the page if the web viewer stops updating. If you are creating a camera path, clickEXPORT PATHto download it before refreshing, then useLOAD PATHto restore it afterward.
- Install the nerfstudio dependencies.
- Run
pip install -e .in this repository. This is required if you are reusing a virtual environment from another nerfstudio checkout. - Install the additional dependencies:
pip install plyfile==0.8.1
pip install ./submodules/gsplat-urbangs
pip install ./submodules/simple-knn- Install the viewer frontend dependencies:
cd nerfstudio/viewer/app
npm install
# or
yarn installStart the viewer frontend:
cd nerfstudio/viewer/app
yarn startIn a separate terminal, launch the Urban-GS viewer backend:
python nerfstudio/scripts/urban_gs/run_viewer.py --model-path GAUSSIAN_TRAINING_OUTPUT_MODEL_DIRRender a camera path to a video:
python nerfstudio/scripts/urban_gs/render.py camera-path \
--model-path GAUSSIAN_TRAINING_OUTPUT_MODEL_DIR \
--camera-path-filename YOUR_CAMERA_PATH_FILE.json \
--output-path YOUR_OUTPUT_MP4_FILE.mp4Code derived from nerfstudio is licensed under the Apache-2.0 license.