# nerfview
**Repository Path**: huanghone/nerfview
## Basic Information
- **Project Name**: nerfview
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-09-30
- **Last Updated**: 2025-09-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# nerfview
nerfview is a minimal\* web viewer for interactive NeRF rendering. It is largely
inspired by [nerfstudio's
viewer](https://github.com/nerfstudio-project/nerfstudio), but with a
standalone packaging and simple API to quickly integrate into your own research
projects.
\*The whole package contains two files and is less than 400 lines of code.
## Installation
This package requires Python 3.8+.
For existing project, you can install it via pip:
```bash
pip install nerfview
```
To run our examples, you can clone this repository and then install it locally:
```bash
git clone https://github.com/nerfstudio-project/nerfview
# Install torch first.
pip install torch
# Then this repo and dependencies for running examples. Note that `gsplat`
# requires compilation and this will take some time for the first time.
pip install -e .
pip install -r examples/requirements.txt
```
## Usage
nerfview is built on [viser](https://viser.studio/latest/) and provides a
simple API for interactive viewing.
The canonical usage is as follows:
```python
from typing import Tuple
import viser
import nerfview
def render_fn(
camera_state: nerfview.CameraState, render_tab_state: nerfview.RenderTabState
) -> np.ndarray:
# Parse camera state for camera-to-world matrix (c2w) and intrinsic (K) as
# float64 numpy arrays.
if render_tab_state.preview_render:
width = render_tab_state.render_width
height = render_tab_state.render_height
else:
width = render_tab_state.viewer_width
height = render_tab_state.viewer_height
c2w = camera_state.c2w
K = camera_state.get_K([width, height])
# Do your things and get an image as a uint8 numpy array.
img = your_rendering_logic(...)
return img
# Initialize a viser server and our viewer.
server = viser.ViserServer(verbose=False)
viewer = nerfview.Viewer(server=server, render_fn=render_fn, mode='rendering')
```
It will start a viser server and render the image from a camera that you can interact with.
## Examples
We provide a few examples ranging from toy rendering to real-world NeRF training
applications. Click on the dropdown to see more details. You can always ask for
help message by the `-h` flag.
Rendering a dummy scene.
https://github.com/hangg7/nerfview/assets/10098306/53a41fac-bce7-4820-be75-f90483bc22a0
This example is the best starting point to understand the basic API.
```bash
python examples/00_dummy_rendering.py
```
Rendering a dummy training process.
https://github.com/hangg7/nerfview/assets/10098306/8b13ca4a-6aaa-46a7-a333-b889c2a4ac15
This example is the best starting point to understand the API for training time
update.
```bash
python examples/01_dummy_training.py
```
Rendering a mesh scene.
https://github.com/hangg7/nerfview/assets/10098306/84c9993f-82a3-48fb-9786-b5205bffcd6f
This example showcases how to interactively render a mesh by directly serving
rendering results from nvdiffrast.
```bash
# Only need to run once the first time.
bash examples/assets/download_dragon_mesh.sh
CUDA_VISIBLE_DEVICES=0 python examples/02_mesh_rendering.py
```
Rendering a pretrained 3DGS scene.
https://github.com/hangg7/nerfview/assets/10098306/7b526105-8b6f-431c-9b49-10c821a3bd36
This example showcases how to render a pretrained 3DGS model using gsplat. The
scene is cropped such that it is smaller to download. It is essentially the
[simple viewer
example](https://github.com/nerfstudio-project/gsplat/blob/07d9188590ae1ee1e9ff7794a4217cc4591b44cf/examples/simple_viewer.py),
which we include here to be self-contained.
```bash
# Only need to run once the first time.
bash examples/assets/download_gsplat_ckpt.sh
CUDA_VISIBLE_DEVICES=0 python examples/03_gsplat_rendering.py \
--ckpt examples/assets/ckpt_6999_crop.pt
```
Rendering a 3DGS training process.
https://github.com/hangg7/nerfview/assets/10098306/640d4067-e410-49aa-86b8-325140dd73a8
This example showcases how to render while training 3DGS on mip-NeRF's garden
scene using gsplat. It is essentially the [simple trainer
example](https://github.com/nerfstudio-project/gsplat/blob/07d9188590ae1ee1e9ff7794a4217cc4591b44cf/examples/simple_trainer.py),
which we include here to be self-contained.
```bash
# Only need to run once the first time.
bash examples/assets/download_colmap_garden.sh
CUDA_VISIBLE_DEVICES=0 python examples/04_gsplat_training.py \
--data_dir examples/assets/colmap_garden/ \
--data_factor 8 \
--result_dir results/garden/
```
## Acknowledgement
This project cannot exist without the great work of
[nerfstudio](https://github.com/nerfstudio-project/nerfstudio) and
[viser](https://viser.studio/latest/). We rely on
[nvdiffrast](https://nvlabs.github.io/nvdiffrast/) for the mesh example and
[gsplat](https://docs.gsplat.studio/latest/) for the 3DGS examples. We thank
the authors for their great work and open-source spirit.