-
-
-
-- [Quickstart](#quickstart)
-- [Learn more](#learn-more)
-- [Supported Features](#supported-features)
-
-# About
-
-_Itβs as simple as plug and play with nerfstudio!_
-
-Nerfstudio provides a simple API that allows for a simplified end-to-end process of creating, training, and testing NeRFs.
-The library supports a **more interpretable implementation of NeRFs by modularizing each component.**
-With more modular NeRFs, we hope to create a more user-friendly experience in exploring the technology.
-
-This is a contributor-friendly repo with the goal of building a community where users can more easily build upon each other's contributions.
-Nerfstudio initially launched as an opensource project by Berkeley students in [KAIR lab](https://people.eecs.berkeley.edu/~kanazawa/index.html#kair) at [Berkeley AI Research (BAIR)](https://bair.berkeley.edu/) in October 2022 as a part of a research project ([paper](https://arxiv.org/abs/2302.04264)). It is currently developed by Berkeley students and community contributors.
-
-We are committed to providing learning resources to help you understand the basics of (if you're just getting started), and keep up-to-date with (if you're a seasoned veteran) all things NeRF. As researchers, we know just how hard it is to get onboarded with this next-gen technology. So we're here to help with tutorials, documentation, and more!
-
-Have feature requests? Want to add your brand-spankin'-new NeRF model? Have a new dataset? **We welcome [contributions](https://docs.nerf.studio/reference/contributing.html)!** Please do not hesitate to reach out to the nerfstudio team with any questions via [Discord](https://discord.gg/uMbNqcraFc).
-
-Have feedback? We'd love for you to fill out our [Nerfstudio Feedback Form](https://forms.gle/sqN5phJN7LfQVwnP9) if you want to let us know who you are, why you are interested in Nerfstudio, or provide any feedback!
-
-We hope nerfstudio enables you to build faster :hammer: learn together :books: and contribute to our NeRF community :sparkling_heart:.
-
-## Sponsors
-
-Sponsors of this work includes [Luma AI](https://lumalabs.ai/) and the [BAIR commons](https://bcommons.berkeley.edu/home).
-
-
-
-# Quickstart
-
-The quickstart will help you get started with the default vanilla NeRF trained on the classic Blender Lego scene.
-For more complex changes (e.g., running with your own data/setting up a new NeRF graph), please refer to our [references](#learn-more).
-
-## 1. Installation: Setup the environment
-
-### Prerequisites
-
-You must have an NVIDIA video card with CUDA installed on the system. This library has been tested with version 11.8 of CUDA. You can find more information about installing CUDA [here](https://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html)
-
-### Create environment
-
-Nerfstudio requires `python >= 3.8`. We recommend using conda to manage dependencies. Make sure to install [Conda](https://docs.conda.io/miniconda.html) before proceeding.
-
-```bash
-conda create --name nerfstudio -y python=3.8
-conda activate nerfstudio
-pip install --upgrade pip
-```
-
-### Dependencies
-
-Install PyTorch with CUDA (this repo has been tested with CUDA 11.7 and CUDA 11.8) and [tiny-cuda-nn](https://github.com/NVlabs/tiny-cuda-nn).
-`cuda-toolkit` is required for building `tiny-cuda-nn`.
-
-For CUDA 11.8:
-
-```bash
-pip install torch==2.1.2+cu118 torchvision==0.16.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
-
-conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit
-pip install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
-```
-
-See [Dependencies](https://github.com/nerfstudio-project/nerfstudio/blob/main/docs/quickstart/installation.md#dependencies)
-in the Installation documentation for more.
-
-### Installing nerfstudio
-
-Easy option:
-
-```bash
-pip install nerfstudio
-```
-
-**OR** if you want the latest and greatest:
-
-```bash
-git clone https://github.com/nerfstudio-project/nerfstudio.git
-cd nerfstudio
-pip install --upgrade pip setuptools
-pip install -e .
-```
-
-**OR** if you want to skip all installation steps and directly start using nerfstudio, use the docker image:
-
-See [Installation](https://github.com/nerfstudio-project/nerfstudio/blob/main/docs/quickstart/installation.md) - **Use docker image**.
-
-## 2. Training your first model!
-
-The following will train a _nerfacto_ model, our recommended model for real world scenes.
-
-```bash
-# Download some test data:
-ns-download-data nerfstudio --capture-name=poster
-# Train model
-ns-train nerfacto --data data/nerfstudio/poster
-```
-
-If everything works, you should see training progress like the following:
-
-
-
-
-
-Navigating to the link at the end of the terminal will load the webviewer. If you are running on a remote machine, you will need to port forward the websocket port (defaults to 7007).
-
-
-
-
-
-### Resume from checkpoint / visualize existing run
-
-It is possible to load a pretrained model by running
-
-```bash
-ns-train nerfacto --data data/nerfstudio/poster --load-dir {outputs/.../nerfstudio_models}
-```
-
-## Visualize existing run
-
-Given a pretrained model checkpoint, you can start the viewer by running
-
-```bash
-ns-viewer --load-config {outputs/.../config.yml}
-```
-
-## 3. Exporting Results
-
-Once you have a NeRF model you can either render out a video or export a point cloud.
-
-### Render Video
-
-First we must create a path for the camera to follow. This can be done in the viewer under the "RENDER" tab. Orient your 3D view to the location where you wish the video to start, then press "ADD CAMERA". This will set the first camera key frame. Continue to new viewpoints adding additional cameras to create the camera path. We provide other parameters to further refine your camera path. Once satisfied, press "RENDER" which will display a modal that contains the command needed to render the video. Kill the training job (or create a new terminal if you have lots of compute) and run the command to generate the video.
-
-Other video export options are available, learn more by running
-
-```bash
-ns-render --help
-```
-
-### Generate Point Cloud
-
-While NeRF models are not designed to generate point clouds, it is still possible. Navigate to the "EXPORT" tab in the 3D viewer and select "POINT CLOUD". If the crop option is selected, everything in the yellow square will be exported into a point cloud. Modify the settings as desired then run the command at the bottom of the panel in your command line.
-
-Alternatively you can use the CLI without the viewer. Learn about the export options by running
-
-```bash
-ns-export pointcloud --help
-```
-
-## 4. Using Custom Data
-
-Using an existing dataset is great, but likely you want to use your own data! We support various methods for using your own data. Before it can be used in nerfstudio, the camera location and orientations must be determined and then converted into our format using `ns-process-data`. We rely on external tools for this, instructions and information can be found in the documentation.
-
-| Data | Capture Device | Requirements | `ns-process-data` Speed |
-| --------------------------------------------------------------------------------------------- | -------------- | ----------------------------------------------------------------- | ----------------------- |
-| π· [Images](https://docs.nerf.studio/quickstart/custom_dataset.html#images-or-video) | Any | [COLMAP](https://colmap.github.io/install.html) | π’ |
-| πΉ [Video](https://docs.nerf.studio/quickstart/custom_dataset.html#images-or-video) | Any | [COLMAP](https://colmap.github.io/install.html) | π’ |
-| π [360 Data](https://docs.nerf.studio/quickstart/custom_dataset.html#data-equirectangular) | Any | [COLMAP](https://colmap.github.io/install.html) | π’ |
-| π± [Polycam](https://docs.nerf.studio/quickstart/custom_dataset.html#polycam-capture) | IOS with LiDAR | [Polycam App](https://poly.cam/) | π |
-| π± [KIRI Engine](https://docs.nerf.studio/quickstart/custom_dataset.html#kiri-engine-capture) | IOS or Android | [KIRI Engine App](https://www.kiriengine.com/) | π |
-| π± [Record3D](https://docs.nerf.studio/quickstart/custom_dataset.html#record3d-capture) | IOS with LiDAR | [Record3D app](https://record3d.app/) | π |
-| π± [Spectacular AI](https://docs.nerf.studio/quickstart/custom_dataset.html#spectacularai) | IOS, OAK, [others](https://www.spectacularai.com/mapping#supported-devices) | [App](https://apps.apple.com/us/app/spectacular-rec/id6473188128) / [`sai-cli`](https://www.spectacularai.com/mapping) | π |
-| π₯ [Metashape](https://docs.nerf.studio/quickstart/custom_dataset.html#metashape) | Any | [Metashape](https://www.agisoft.com/) | π |
-| π₯ [RealityCapture](https://docs.nerf.studio/quickstart/custom_dataset.html#realitycapture) | Any | [RealityCapture](https://www.capturingreality.com/realitycapture) | π |
-| π₯ [ODM](https://docs.nerf.studio/quickstart/custom_dataset.html#odm) | Any | [ODM](https://github.com/OpenDroneMap/ODM) | π |
-| π [Aria](https://docs.nerf.studio/quickstart/custom_dataset.html#aria) | Aria glasses | [Project Aria](https://projectaria.com/) | π |
-| π [Custom](https://docs.nerf.studio/quickstart/data_conventions.html) | Any | Camera Poses | π |
-
-
-## 5. Advanced Options
-
-### Training models other than nerfacto
-
-We provide other models than nerfacto, for example if you want to train the original nerf model, use the following command
-
-```bash
-ns-train vanilla-nerf --data DATA_PATH
-```
-
-For a full list of included models run `ns-train --help`.
-
-### Modify Configuration
-
-Each model contains many parameters that can be changed, too many to list here. Use the `--help` command to see the full list of configuration options.
-
-```bash
-ns-train nerfacto --help
-```
-
-### Tensorboard / WandB / Viewer
-
-We support four different methods to track training progress, using the viewer[tensorboard](https://www.tensorflow.org/tensorboard), [Weights and Biases](https://wandb.ai/site), and ,[Comet](https://comet.com/?utm_source=nerf&utm_medium=referral&utm_content=github). You can specify which visualizer to use by appending `--vis {viewer, tensorboard, wandb, comet viewer+wandb, viewer+tensorboard, viewer+comet}` to the training command. Simultaneously utilizing the viewer alongside wandb or tensorboard may cause stuttering issues during evaluation steps. The viewer only works for methods that are fast (ie. nerfacto, instant-ngp), for slower methods like NeRF, use the other loggers.
-
-# Learn More
-
-And that's it for getting started with the basics of nerfstudio.
-
-If you're interested in learning more on how to create your own pipelines, develop with the viewer, run benchmarks, and more, please check out some of the quicklinks below or visit our [documentation](https://docs.nerf.studio/) directly.
-
-| Section | Description |
-| ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
-| [Documentation](https://docs.nerf.studio/) | Full API documentation and tutorials |
-| [Viewer](https://viewer.nerf.studio/) | Home page for our web viewer |
-| π **Educational** |
-| [Model Descriptions](https://docs.nerf.studio/nerfology/methods/index.html) | Description of all the models supported by nerfstudio and explanations of component parts. |
-| [Component Descriptions](https://docs.nerf.studio/nerfology/model_components/index.html) | Interactive notebooks that explain notable/commonly used modules in various models. |
-| π **Tutorials** |
-| [Getting Started](https://docs.nerf.studio/quickstart/installation.html) | A more in-depth guide on how to get started with nerfstudio from installation to contributing. |
-| [Using the Viewer](https://docs.nerf.studio/quickstart/viewer_quickstart.html) | A quick demo video on how to navigate the viewer. |
-| [Using Record3D](https://www.youtube.com/watch?v=XwKq7qDQCQk) | Demo video on how to run nerfstudio without using COLMAP. |
-| π» **For Developers** |
-| [Creating pipelines](https://docs.nerf.studio/developer_guides/pipelines/index.html) | Learn how to easily build new neural rendering pipelines by using and/or implementing new modules. |
-| [Creating datasets](https://docs.nerf.studio/quickstart/custom_dataset.html) | Have a new dataset? Learn how to run it with nerfstudio. |
-| [Contributing](https://docs.nerf.studio/reference/contributing.html) | Walk-through for how you can start contributing now. |
-| π **Community** |
-| [Discord](https://discord.gg/uMbNqcraFc) | Join our community to discuss more. We would love to hear from you! |
-| [Twitter](https://twitter.com/nerfstudioteam) | Follow us on Twitter @nerfstudioteam to see cool updates and announcements |
-| [Feedback Form](TODO) | We welcome any feedback! This is our chance to learn what you all are using Nerfstudio for. |
-
-# Supported Features
-
-We provide the following support structures to make life easier for getting started with NeRFs.
-
-**If you are looking for a feature that is not currently supported, please do not hesitate to contact the Nerfstudio Team on [Discord](https://discord.gg/uMbNqcraFc)!**
-
-- :mag_right: Web-based visualizer that allows you to:
- - Visualize training in real-time + interact with the scene
- - Create and render out scenes with custom camera trajectories
- - View different output types
- - And more!
-- :pencil2: Support for multiple logging interfaces (Tensorboard, Wandb), code profiling, and other built-in debugging tools
-- :chart_with_upwards_trend: Easy-to-use benchmarking scripts on the Blender dataset
-- :iphone: Full pipeline support (w/ Colmap, Polycam, or Record3D) for going from a video on your phone to a full 3D render.
-
-# Built On
-
-
-
-
-
-
-
-
-
-
-
-
-- Easy-to-use config system
-- Developed by [Brent Yi](https://brentyi.com/)
-
-
-
-
-
-
-
-
-
-
-
-
-- Library for accelerating NeRF renders
-- Developed by [Ruilong Li](https://www.liruilong.cn/)
-
-# Citation
-
-You can find a paper writeup of the framework on [arXiv](https://arxiv.org/abs/2302.04264).
-
-If you use this library or find the documentation useful for your research, please consider citing:
-
-```
-@inproceedings{nerfstudio,
- title = {Nerfstudio: A Modular Framework for Neural Radiance Field Development},
- author = {
- Tancik, Matthew and Weber, Ethan and Ng, Evonne and Li, Ruilong and Yi, Brent
- and Kerr, Justin and Wang, Terrance and Kristoffersen, Alexander and Austin,
- Jake and Salahi, Kamyar and Ahuja, Abhik and McAllister, David and Kanazawa,
- Angjoo
- },
- year = 2023,
- booktitle = {ACM SIGGRAPH 2023 Conference Proceedings},
- series = {SIGGRAPH '23}
-}
-```
-
-# Contributors
-
-
-
-
+# 3DSplatting
\ No newline at end of file
diff --git a/launch_bash.sh b/launch_bash.sh
new file mode 100755
index 0000000000..b17a70a1dd
--- /dev/null
+++ b/launch_bash.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+IMAGE_NAME="nerfstudio-cuda11"
+CONTAINER_NAME="nerfstudio-container"
+
+LOCAL_DIR="/home/horte/Documents/horte/GitHub/3DSplatting"
+CONTAINER_DIR="/root/3DSplatting"
+
+echo "π οΈ Construyendo la imagen '$IMAGE_NAME'..."
+docker build -t $IMAGE_NAME .
+
+echo "π Iniciando contenedor '$CONTAINER_NAME'..."
+docker run -it \
+ --cpus=14 \
+ --runtime=nvidia \
+ --gpus all \
+ --name $CONTAINER_NAME \
+ -v "$LOCAL_DIR:$CONTAINER_DIR" \
+ $IMAGE_NAME
+
+ # --memory=11g \
+ # --memory-swap=17g \
+ # --shm-size=6g \
diff --git a/.dockerignore b/nerfstudio/.dockerignore
similarity index 100%
rename from .dockerignore
rename to nerfstudio/.dockerignore
diff --git a/nerfstudio/Dockerfile b/nerfstudio/Dockerfile
new file mode 100644
index 0000000000..6cd4e058f0
--- /dev/null
+++ b/nerfstudio/Dockerfile
@@ -0,0 +1,155 @@
+# syntax=docker/dockerfile:1
+ARG UBUNTU_VERSION=22.04
+ARG NVIDIA_CUDA_VERSION=11.8.0
+# CUDA architectures, required by Colmap and tiny-cuda-nn. Use >= 8.0 for faster TCNN.
+ARG CUDA_ARCHITECTURES="90;89;86;80;75;70;61"
+ARG NERFSTUDIO_VERSION=""
+
+# Pull source either provided or from git.
+FROM scratch as source_copy
+ONBUILD COPY . /tmp/nerfstudio
+FROM alpine/git as source_no_copy
+ARG NERFSTUDIO_VERSION
+ONBUILD RUN git clone --branch ${NERFSTUDIO_VERSION} --recursive https://github.com/nerfstudio-project/nerfstudio.git /tmp/nerfstudio
+ARG NERFSTUDIO_VERSION
+FROM source_${NERFSTUDIO_VERSION:+no_}copy as source
+
+FROM nvidia/cuda:${NVIDIA_CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION} as builder
+ARG CUDA_ARCHITECTURES
+ARG NVIDIA_CUDA_VERSION
+ARG UBUNTU_VERSION
+
+ENV DEBIAN_FRONTEND=noninteractive
+ENV QT_XCB_GL_INTEGRATION=xcb_egl
+RUN apt-get update && \
+ apt-get install -y --no-install-recommends --no-install-suggests \
+ git \
+ wget \
+ ninja-build \
+ build-essential \
+ libboost-program-options-dev \
+ libboost-filesystem-dev \
+ libboost-graph-dev \
+ libboost-system-dev \
+ libeigen3-dev \
+ libflann-dev \
+ libfreeimage-dev \
+ libmetis-dev \
+ libgoogle-glog-dev \
+ libgtest-dev \
+ libsqlite3-dev \
+ libglew-dev \
+ qtbase5-dev \
+ libqt5opengl5-dev \
+ libcgal-dev \
+ libceres-dev \
+ python3.10-dev \
+ python3-pip
+
+# Build and install CMake
+RUN wget https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-linux-x86_64.sh \
+ -q -O /tmp/cmake-install.sh \
+ && chmod u+x /tmp/cmake-install.sh \
+ && mkdir /opt/cmake-3.31.3 \
+ && /tmp/cmake-install.sh --skip-license --prefix=/opt/cmake-3.31.3 \
+ && rm /tmp/cmake-install.sh \
+ && ln -s /opt/cmake-3.31.3/bin/* /usr/local/bin
+
+# Build and install GLOMAP.
+RUN git clone https://github.com/colmap/glomap.git && \
+ cd glomap && \
+ git checkout "1.0.0" && \
+ mkdir build && \
+ cd build && \
+ mkdir -p /build && \
+ cmake .. -GNinja "-DCMAKE_CUDA_ARCHITECTURES=${CUDA_ARCHITECTURES}" \
+ -DCMAKE_INSTALL_PREFIX=/build/glomap && \
+ ninja install -j1 && \
+ cd ~
+
+# Build and install COLMAP.
+RUN git clone https://github.com/colmap/colmap.git && \
+ cd colmap && \
+ git checkout "3.9.1" && \
+ mkdir build && \
+ cd build && \
+ mkdir -p /build && \
+ cmake .. -GNinja "-DCMAKE_CUDA_ARCHITECTURES=${CUDA_ARCHITECTURES}" \
+ -DCMAKE_INSTALL_PREFIX=/build/colmap && \
+ ninja install -j1 && \
+ cd ~
+
+# Upgrade pip and install dependencies.
+# pip install torch==2.2.2 torchvision==0.17.2 --index-url https://download.pytorch.org/whl/cu118 && \
+RUN pip install --no-cache-dir --upgrade pip 'setuptools<70.0.0' && \
+ pip install --no-cache-dir torch==2.1.2+cu118 torchvision==0.16.2+cu118 'numpy<2.0.0' --extra-index-url https://download.pytorch.org/whl/cu118 && \
+ git clone --branch master --recursive https://github.com/cvg/Hierarchical-Localization.git /opt/hloc && \
+ cd /opt/hloc && git checkout v1.4 && python3.10 -m pip install --no-cache-dir . && cd ~ && \
+ TCNN_CUDA_ARCHITECTURES="${CUDA_ARCHITECTURES}" pip install --no-cache-dir "git+https://github.com/NVlabs/tiny-cuda-nn.git@b3473c81396fe927293bdfd5a6be32df8769927c#subdirectory=bindings/torch" && \
+ pip install --no-cache-dir pycolmap==0.6.1 pyceres==2.1 omegaconf==2.3.0
+
+# Install gsplat and nerfstudio.
+# NOTE: both are installed jointly in order to prevent docker cache with latest
+# gsplat version (we do not expliticly specify the commit hash).
+#
+# We set MAX_JOBS to reduce resource usage for GH actions:
+# - https://github.com/nerfstudio-project/gsplat/blob/db444b904976d6e01e79b736dd89a1070b0ee1d0/setup.py#L13-L23
+COPY --from=source /tmp/nerfstudio/ /tmp/nerfstudio
+RUN export TORCH_CUDA_ARCH_LIST="$(echo "$CUDA_ARCHITECTURES" | tr ';' '\n' | awk '$0 > 70 {print substr($0,1,1)"."substr($0,2)}' | tr '\n' ' ' | sed 's/ $//')" && \
+ export MAX_JOBS=4 && \
+ GSPLAT_VERSION="$(sed -n 's/.*gsplat==\s*\([^," '"'"']*\).*/\1/p' /tmp/nerfstudio/pyproject.toml)" && \
+ pip install --no-cache-dir git+https://github.com/nerfstudio-project/gsplat.git@v${GSPLAT_VERSION} && \
+ pip install --no-cache-dir /tmp/nerfstudio 'numpy<2.0.0' && \
+ rm -rf /tmp/nerfstudio
+
+# Fix permissions
+RUN chmod -R go=u /usr/local/lib/python3.10 && \
+ chmod -R go=u /build
+
+#
+# Docker runtime stage.
+#
+FROM nvidia/cuda:${NVIDIA_CUDA_VERSION}-runtime-ubuntu${UBUNTU_VERSION} as runtime
+ARG CUDA_ARCHITECTURES
+ARG NVIDIA_CUDA_VERSION
+ARG UBUNTU_VERSION
+
+LABEL org.opencontainers.image.source = "https://github.com/nerfstudio-project/nerfstudio"
+LABEL org.opencontainers.image.licenses = "Apache License 2.0"
+LABEL org.opencontainers.image.base.name="docker.io/library/nvidia/cuda:${NVIDIA_CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION}"
+LABEL org.opencontainers.image.documentation = "https://docs.nerf.studio/"
+
+# Minimal dependencies to run COLMAP binary compiled in the builder stage.
+# Note: this reduces the size of the final image considerably, since all the
+# build dependencies are not needed.
+RUN apt-get update && \
+ apt-get install -y --no-install-recommends --no-install-suggests \
+ libboost-filesystem1.74.0 \
+ libboost-program-options1.74.0 \
+ libc6 \
+ libceres2 \
+ libfreeimage3 \
+ libgcc-s1 \
+ libgl1 \
+ libglew2.2 \
+ libgoogle-glog0v5 \
+ libqt5core5a \
+ libqt5gui5 \
+ libqt5widgets5 \
+ python3.10 \
+ python3.10-dev \
+ build-essential \
+ python-is-python3 \
+ ffmpeg
+
+# Copy packages from builder stage.
+COPY --from=builder /build/colmap/ /usr/local/
+COPY --from=builder /build/glomap/ /usr/local/
+COPY --from=builder /usr/local/lib/python3.10/dist-packages/ /usr/local/lib/python3.10/dist-packages/
+COPY --from=builder /usr/local/bin/ns* /usr/local/bin/
+
+# Install nerfstudio cli auto completion
+RUN /bin/bash -c 'ns-install-cli --mode install'
+
+# Bash as default entrypoint.
+CMD /bin/bash -l
diff --git a/nerfstudio/README.md b/nerfstudio/README.md
new file mode 100644
index 0000000000..95ba60a48f
--- /dev/null
+++ b/nerfstudio/README.md
@@ -0,0 +1,361 @@
+
+
+
+
+- [Quickstart](#quickstart)
+- [Learn more](#learn-more)
+- [Supported Features](#supported-features)
+
+# About
+
+_Itβs as simple as plug and play with nerfstudio!_
+
+Nerfstudio provides a simple API that allows for a simplified end-to-end process of creating, training, and testing NeRFs.
+The library supports a **more interpretable implementation of NeRFs by modularizing each component.**
+With more modular NeRFs, we hope to create a more user-friendly experience in exploring the technology.
+
+This is a contributor-friendly repo with the goal of building a community where users can more easily build upon each other's contributions.
+Nerfstudio initially launched as an opensource project by Berkeley students in [KAIR lab](https://people.eecs.berkeley.edu/~kanazawa/index.html#kair) at [Berkeley AI Research (BAIR)](https://bair.berkeley.edu/) in October 2022 as a part of a research project ([paper](https://arxiv.org/abs/2302.04264)). It is currently developed by Berkeley students and community contributors.
+
+We are committed to providing learning resources to help you understand the basics of (if you're just getting started), and keep up-to-date with (if you're a seasoned veteran) all things NeRF. As researchers, we know just how hard it is to get onboarded with this next-gen technology. So we're here to help with tutorials, documentation, and more!
+
+Have feature requests? Want to add your brand-spankin'-new NeRF model? Have a new dataset? **We welcome [contributions](https://docs.nerf.studio/reference/contributing.html)!** Please do not hesitate to reach out to the nerfstudio team with any questions via [Discord](https://discord.gg/uMbNqcraFc).
+
+Have feedback? We'd love for you to fill out our [Nerfstudio Feedback Form](https://forms.gle/sqN5phJN7LfQVwnP9) if you want to let us know who you are, why you are interested in Nerfstudio, or provide any feedback!
+
+We hope nerfstudio enables you to build faster :hammer: learn together :books: and contribute to our NeRF community :sparkling_heart:.
+
+## Sponsors
+
+Sponsors of this work includes [Luma AI](https://lumalabs.ai/) and the [BAIR commons](https://bcommons.berkeley.edu/home).
+
+
+
+# Quickstart
+
+The quickstart will help you get started with the default vanilla NeRF trained on the classic Blender Lego scene.
+For more complex changes (e.g., running with your own data/setting up a new NeRF graph), please refer to our [references](#learn-more).
+
+## 1. Installation: Setup the environment
+
+### Prerequisites
+
+You must have an NVIDIA video card with CUDA installed on the system. This library has been tested with version 11.8 of CUDA. You can find more information about installing CUDA [here](https://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html)
+
+### Create environment
+
+Nerfstudio requires `python >= 3.8`. We recommend using conda to manage dependencies. Make sure to install [Conda](https://docs.conda.io/miniconda.html) before proceeding.
+
+```bash
+conda create --name nerfstudio -y python=3.8
+conda activate nerfstudio
+pip install --upgrade pip
+```
+
+### Dependencies
+
+Install PyTorch with CUDA (this repo has been tested with CUDA 11.7 and CUDA 11.8) and [tiny-cuda-nn](https://github.com/NVlabs/tiny-cuda-nn).
+`cuda-toolkit` is required for building `tiny-cuda-nn`.
+
+For CUDA 11.8:
+
+```bash
+pip install torch==2.1.2+cu118 torchvision==0.16.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
+
+conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit
+pip install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
+```
+
+See [Dependencies](https://github.com/nerfstudio-project/nerfstudio/blob/main/docs/quickstart/installation.md#dependencies)
+in the Installation documentation for more.
+
+### Installing nerfstudio
+
+Easy option:
+
+```bash
+pip install nerfstudio
+```
+
+**OR** if you want the latest and greatest:
+
+```bash
+git clone https://github.com/nerfstudio-project/nerfstudio.git
+cd nerfstudio
+pip install --upgrade pip setuptools
+pip install -e .
+```
+
+**OR** if you want to skip all installation steps and directly start using nerfstudio, use the docker image:
+
+See [Installation](https://github.com/nerfstudio-project/nerfstudio/blob/main/docs/quickstart/installation.md) - **Use docker image**.
+
+## 2. Training your first model!
+
+The following will train a _nerfacto_ model, our recommended model for real world scenes.
+
+```bash
+# Download some test data:
+ns-download-data nerfstudio --capture-name=poster
+# Train model
+ns-train nerfacto --data data/nerfstudio/poster
+```
+
+If everything works, you should see training progress like the following:
+
+
+
+
+
+Navigating to the link at the end of the terminal will load the webviewer. If you are running on a remote machine, you will need to port forward the websocket port (defaults to 7007).
+
+
+
+
+
+### Resume from checkpoint / visualize existing run
+
+It is possible to load a pretrained model by running
+
+```bash
+ns-train nerfacto --data data/nerfstudio/poster --load-dir {outputs/.../nerfstudio_models}
+```
+
+## Visualize existing run
+
+Given a pretrained model checkpoint, you can start the viewer by running
+
+```bash
+ns-viewer --load-config {outputs/.../config.yml}
+```
+
+## 3. Exporting Results
+
+Once you have a NeRF model you can either render out a video or export a point cloud.
+
+### Render Video
+
+First we must create a path for the camera to follow. This can be done in the viewer under the "RENDER" tab. Orient your 3D view to the location where you wish the video to start, then press "ADD CAMERA". This will set the first camera key frame. Continue to new viewpoints adding additional cameras to create the camera path. We provide other parameters to further refine your camera path. Once satisfied, press "RENDER" which will display a modal that contains the command needed to render the video. Kill the training job (or create a new terminal if you have lots of compute) and run the command to generate the video.
+
+Other video export options are available, learn more by running
+
+```bash
+ns-render --help
+```
+
+### Generate Point Cloud
+
+While NeRF models are not designed to generate point clouds, it is still possible. Navigate to the "EXPORT" tab in the 3D viewer and select "POINT CLOUD". If the crop option is selected, everything in the yellow square will be exported into a point cloud. Modify the settings as desired then run the command at the bottom of the panel in your command line.
+
+Alternatively you can use the CLI without the viewer. Learn about the export options by running
+
+```bash
+ns-export pointcloud --help
+```
+
+## 4. Using Custom Data
+
+Using an existing dataset is great, but likely you want to use your own data! We support various methods for using your own data. Before it can be used in nerfstudio, the camera location and orientations must be determined and then converted into our format using `ns-process-data`. We rely on external tools for this, instructions and information can be found in the documentation.
+
+| Data | Capture Device | Requirements | `ns-process-data` Speed |
+| --------------------------------------------------------------------------------------------- | -------------- | ----------------------------------------------------------------- | ----------------------- |
+| π· [Images](https://docs.nerf.studio/quickstart/custom_dataset.html#images-or-video) | Any | [COLMAP](https://colmap.github.io/install.html) | π’ |
+| πΉ [Video](https://docs.nerf.studio/quickstart/custom_dataset.html#images-or-video) | Any | [COLMAP](https://colmap.github.io/install.html) | π’ |
+| π [360 Data](https://docs.nerf.studio/quickstart/custom_dataset.html#data-equirectangular) | Any | [COLMAP](https://colmap.github.io/install.html) | π’ |
+| π± [Polycam](https://docs.nerf.studio/quickstart/custom_dataset.html#polycam-capture) | IOS with LiDAR | [Polycam App](https://poly.cam/) | π |
+| π± [KIRI Engine](https://docs.nerf.studio/quickstart/custom_dataset.html#kiri-engine-capture) | IOS or Android | [KIRI Engine App](https://www.kiriengine.com/) | π |
+| π± [Record3D](https://docs.nerf.studio/quickstart/custom_dataset.html#record3d-capture) | IOS with LiDAR | [Record3D app](https://record3d.app/) | π |
+| π± [Spectacular AI](https://docs.nerf.studio/quickstart/custom_dataset.html#spectacularai) | IOS, OAK, [others](https://www.spectacularai.com/mapping#supported-devices) | [App](https://apps.apple.com/us/app/spectacular-rec/id6473188128) / [`sai-cli`](https://www.spectacularai.com/mapping) | π |
+| π₯ [Metashape](https://docs.nerf.studio/quickstart/custom_dataset.html#metashape) | Any | [Metashape](https://www.agisoft.com/) | π |
+| π₯ [RealityCapture](https://docs.nerf.studio/quickstart/custom_dataset.html#realitycapture) | Any | [RealityCapture](https://www.capturingreality.com/realitycapture) | π |
+| π₯ [ODM](https://docs.nerf.studio/quickstart/custom_dataset.html#odm) | Any | [ODM](https://github.com/OpenDroneMap/ODM) | π |
+| π [Aria](https://docs.nerf.studio/quickstart/custom_dataset.html#aria) | Aria glasses | [Project Aria](https://projectaria.com/) | π |
+| π [Custom](https://docs.nerf.studio/quickstart/data_conventions.html) | Any | Camera Poses | π |
+
+
+## 5. Advanced Options
+
+### Training models other than nerfacto
+
+We provide other models than nerfacto, for example if you want to train the original nerf model, use the following command
+
+```bash
+ns-train vanilla-nerf --data DATA_PATH
+```
+
+For a full list of included models run `ns-train --help`.
+
+### Modify Configuration
+
+Each model contains many parameters that can be changed, too many to list here. Use the `--help` command to see the full list of configuration options.
+
+```bash
+ns-train nerfacto --help
+```
+
+### Tensorboard / WandB / Viewer
+
+We support four different methods to track training progress, using the viewer[tensorboard](https://www.tensorflow.org/tensorboard), [Weights and Biases](https://wandb.ai/site), and ,[Comet](https://comet.com/?utm_source=nerf&utm_medium=referral&utm_content=github). You can specify which visualizer to use by appending `--vis {viewer, tensorboard, wandb, comet viewer+wandb, viewer+tensorboard, viewer+comet}` to the training command. Simultaneously utilizing the viewer alongside wandb or tensorboard may cause stuttering issues during evaluation steps. The viewer only works for methods that are fast (ie. nerfacto, instant-ngp), for slower methods like NeRF, use the other loggers.
+
+# Learn More
+
+And that's it for getting started with the basics of nerfstudio.
+
+If you're interested in learning more on how to create your own pipelines, develop with the viewer, run benchmarks, and more, please check out some of the quicklinks below or visit our [documentation](https://docs.nerf.studio/) directly.
+
+| Section | Description |
+| ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| [Documentation](https://docs.nerf.studio/) | Full API documentation and tutorials |
+| [Viewer](https://viewer.nerf.studio/) | Home page for our web viewer |
+| π **Educational** |
+| [Model Descriptions](https://docs.nerf.studio/nerfology/methods/index.html) | Description of all the models supported by nerfstudio and explanations of component parts. |
+| [Component Descriptions](https://docs.nerf.studio/nerfology/model_components/index.html) | Interactive notebooks that explain notable/commonly used modules in various models. |
+| π **Tutorials** |
+| [Getting Started](https://docs.nerf.studio/quickstart/installation.html) | A more in-depth guide on how to get started with nerfstudio from installation to contributing. |
+| [Using the Viewer](https://docs.nerf.studio/quickstart/viewer_quickstart.html) | A quick demo video on how to navigate the viewer. |
+| [Using Record3D](https://www.youtube.com/watch?v=XwKq7qDQCQk) | Demo video on how to run nerfstudio without using COLMAP. |
+| π» **For Developers** |
+| [Creating pipelines](https://docs.nerf.studio/developer_guides/pipelines/index.html) | Learn how to easily build new neural rendering pipelines by using and/or implementing new modules. |
+| [Creating datasets](https://docs.nerf.studio/quickstart/custom_dataset.html) | Have a new dataset? Learn how to run it with nerfstudio. |
+| [Contributing](https://docs.nerf.studio/reference/contributing.html) | Walk-through for how you can start contributing now. |
+| π **Community** |
+| [Discord](https://discord.gg/uMbNqcraFc) | Join our community to discuss more. We would love to hear from you! |
+| [Twitter](https://twitter.com/nerfstudioteam) | Follow us on Twitter @nerfstudioteam to see cool updates and announcements |
+| [Feedback Form](TODO) | We welcome any feedback! This is our chance to learn what you all are using Nerfstudio for. |
+
+# Supported Features
+
+We provide the following support structures to make life easier for getting started with NeRFs.
+
+**If you are looking for a feature that is not currently supported, please do not hesitate to contact the Nerfstudio Team on [Discord](https://discord.gg/uMbNqcraFc)!**
+
+- :mag_right: Web-based visualizer that allows you to:
+ - Visualize training in real-time + interact with the scene
+ - Create and render out scenes with custom camera trajectories
+ - View different output types
+ - And more!
+- :pencil2: Support for multiple logging interfaces (Tensorboard, Wandb), code profiling, and other built-in debugging tools
+- :chart_with_upwards_trend: Easy-to-use benchmarking scripts on the Blender dataset
+- :iphone: Full pipeline support (w/ Colmap, Polycam, or Record3D) for going from a video on your phone to a full 3D render.
+
+# Built On
+
+
+
+
+
+
+
+
+
+
+
+
+- Easy-to-use config system
+- Developed by [Brent Yi](https://brentyi.com/)
+
+
+
+
+
+
+
+
+
+
+
+
+- Library for accelerating NeRF renders
+- Developed by [Ruilong Li](https://www.liruilong.cn/)
+
+# Citation
+
+You can find a paper writeup of the framework on [arXiv](https://arxiv.org/abs/2302.04264).
+
+If you use this library or find the documentation useful for your research, please consider citing:
+
+```
+@inproceedings{nerfstudio,
+ title = {Nerfstudio: A Modular Framework for Neural Radiance Field Development},
+ author = {
+ Tancik, Matthew and Weber, Ethan and Ng, Evonne and Li, Ruilong and Yi, Brent
+ and Kerr, Justin and Wang, Terrance and Kristoffersen, Alexander and Austin,
+ Jake and Salahi, Kamyar and Ahuja, Abhik and McAllister, David and Kanazawa,
+ Angjoo
+ },
+ year = 2023,
+ booktitle = {ACM SIGGRAPH 2023 Conference Proceedings},
+ series = {SIGGRAPH '23}
+}
+```
+
+# Contributors
+
+
+
+
diff --git a/colab/demo.ipynb b/nerfstudio/colab/demo.ipynb
similarity index 100%
rename from colab/demo.ipynb
rename to nerfstudio/colab/demo.ipynb
diff --git a/docs/Makefile b/nerfstudio/docs/Makefile
similarity index 100%
rename from docs/Makefile
rename to nerfstudio/docs/Makefile
diff --git a/docs/_pygments/style.py b/nerfstudio/docs/_pygments/style.py
similarity index 100%
rename from docs/_pygments/style.py
rename to nerfstudio/docs/_pygments/style.py
diff --git a/docs/_static/custom.js b/nerfstudio/docs/_static/custom.js
similarity index 100%
rename from docs/_static/custom.js
rename to nerfstudio/docs/_static/custom.js
diff --git a/docs/_static/imgs/bair_dark.png b/nerfstudio/docs/_static/imgs/bair_dark.png
similarity index 100%
rename from docs/_static/imgs/bair_dark.png
rename to nerfstudio/docs/_static/imgs/bair_dark.png
diff --git a/docs/_static/imgs/bair_light.png b/nerfstudio/docs/_static/imgs/bair_light.png
similarity index 100%
rename from docs/_static/imgs/bair_light.png
rename to nerfstudio/docs/_static/imgs/bair_light.png
diff --git a/docs/_static/imgs/logo-dark.png b/nerfstudio/docs/_static/imgs/logo-dark.png
similarity index 100%
rename from docs/_static/imgs/logo-dark.png
rename to nerfstudio/docs/_static/imgs/logo-dark.png
diff --git a/docs/_static/imgs/logo.png b/nerfstudio/docs/_static/imgs/logo.png
similarity index 100%
rename from docs/_static/imgs/logo.png
rename to nerfstudio/docs/_static/imgs/logo.png
diff --git a/docs/_static/imgs/luma_dark.png b/nerfstudio/docs/_static/imgs/luma_dark.png
similarity index 100%
rename from docs/_static/imgs/luma_dark.png
rename to nerfstudio/docs/_static/imgs/luma_dark.png
diff --git a/docs/_static/imgs/luma_light.png b/nerfstudio/docs/_static/imgs/luma_light.png
similarity index 100%
rename from docs/_static/imgs/luma_light.png
rename to nerfstudio/docs/_static/imgs/luma_light.png
diff --git a/docs/_static/imgs/readme_colab.png b/nerfstudio/docs/_static/imgs/readme_colab.png
similarity index 100%
rename from docs/_static/imgs/readme_colab.png
rename to nerfstudio/docs/_static/imgs/readme_colab.png
diff --git a/docs/_static/imgs/readme_documentation.png b/nerfstudio/docs/_static/imgs/readme_documentation.png
similarity index 100%
rename from docs/_static/imgs/readme_documentation.png
rename to nerfstudio/docs/_static/imgs/readme_documentation.png
diff --git a/docs/_static/imgs/readme_viewer.png b/nerfstudio/docs/_static/imgs/readme_viewer.png
similarity index 100%
rename from docs/_static/imgs/readme_viewer.png
rename to nerfstudio/docs/_static/imgs/readme_viewer.png
diff --git a/docs/_static/require.min.js b/nerfstudio/docs/_static/require.min.js
similarity index 100%
rename from docs/_static/require.min.js
rename to nerfstudio/docs/_static/require.min.js
diff --git a/docs/_templates/base.html b/nerfstudio/docs/_templates/base.html
similarity index 100%
rename from docs/_templates/base.html
rename to nerfstudio/docs/_templates/base.html
diff --git a/docs/_templates/sidebar/brand.html b/nerfstudio/docs/_templates/sidebar/brand.html
similarity index 100%
rename from docs/_templates/sidebar/brand.html
rename to nerfstudio/docs/_templates/sidebar/brand.html
diff --git a/docs/conf.py b/nerfstudio/docs/conf.py
similarity index 100%
rename from docs/conf.py
rename to nerfstudio/docs/conf.py
diff --git a/docs/developer_guides/config.md b/nerfstudio/docs/developer_guides/config.md
similarity index 100%
rename from docs/developer_guides/config.md
rename to nerfstudio/docs/developer_guides/config.md
diff --git a/docs/developer_guides/debugging_tools/benchmarking.md b/nerfstudio/docs/developer_guides/debugging_tools/benchmarking.md
similarity index 100%
rename from docs/developer_guides/debugging_tools/benchmarking.md
rename to nerfstudio/docs/developer_guides/debugging_tools/benchmarking.md
diff --git a/docs/developer_guides/debugging_tools/index.rst b/nerfstudio/docs/developer_guides/debugging_tools/index.rst
similarity index 100%
rename from docs/developer_guides/debugging_tools/index.rst
rename to nerfstudio/docs/developer_guides/debugging_tools/index.rst
diff --git a/docs/developer_guides/debugging_tools/local_logger.md b/nerfstudio/docs/developer_guides/debugging_tools/local_logger.md
similarity index 100%
rename from docs/developer_guides/debugging_tools/local_logger.md
rename to nerfstudio/docs/developer_guides/debugging_tools/local_logger.md
diff --git a/docs/developer_guides/debugging_tools/profiling.md b/nerfstudio/docs/developer_guides/debugging_tools/profiling.md
similarity index 100%
rename from docs/developer_guides/debugging_tools/profiling.md
rename to nerfstudio/docs/developer_guides/debugging_tools/profiling.md
diff --git a/docs/developer_guides/new_methods.md b/nerfstudio/docs/developer_guides/new_methods.md
similarity index 100%
rename from docs/developer_guides/new_methods.md
rename to nerfstudio/docs/developer_guides/new_methods.md
diff --git a/docs/developer_guides/pipelines/datamanagers.md b/nerfstudio/docs/developer_guides/pipelines/datamanagers.md
similarity index 100%
rename from docs/developer_guides/pipelines/datamanagers.md
rename to nerfstudio/docs/developer_guides/pipelines/datamanagers.md
diff --git a/docs/developer_guides/pipelines/dataparsers.md b/nerfstudio/docs/developer_guides/pipelines/dataparsers.md
similarity index 100%
rename from docs/developer_guides/pipelines/dataparsers.md
rename to nerfstudio/docs/developer_guides/pipelines/dataparsers.md
diff --git a/docs/developer_guides/pipelines/fields.md b/nerfstudio/docs/developer_guides/pipelines/fields.md
similarity index 100%
rename from docs/developer_guides/pipelines/fields.md
rename to nerfstudio/docs/developer_guides/pipelines/fields.md
diff --git a/docs/developer_guides/pipelines/imgs/DatamanagerGuide-Large3DGS-dark.png b/nerfstudio/docs/developer_guides/pipelines/imgs/DatamanagerGuide-Large3DGS-dark.png
similarity index 100%
rename from docs/developer_guides/pipelines/imgs/DatamanagerGuide-Large3DGS-dark.png
rename to nerfstudio/docs/developer_guides/pipelines/imgs/DatamanagerGuide-Large3DGS-dark.png
diff --git a/docs/developer_guides/pipelines/imgs/DatamanagerGuide-Large3DGS-light.png b/nerfstudio/docs/developer_guides/pipelines/imgs/DatamanagerGuide-Large3DGS-light.png
similarity index 100%
rename from docs/developer_guides/pipelines/imgs/DatamanagerGuide-Large3DGS-light.png
rename to nerfstudio/docs/developer_guides/pipelines/imgs/DatamanagerGuide-Large3DGS-light.png
diff --git a/docs/developer_guides/pipelines/imgs/DatamanagerGuide-LargeNeRF-dark.png b/nerfstudio/docs/developer_guides/pipelines/imgs/DatamanagerGuide-LargeNeRF-dark.png
similarity index 100%
rename from docs/developer_guides/pipelines/imgs/DatamanagerGuide-LargeNeRF-dark.png
rename to nerfstudio/docs/developer_guides/pipelines/imgs/DatamanagerGuide-LargeNeRF-dark.png
diff --git a/docs/developer_guides/pipelines/imgs/DatamanagerGuide-LargeNeRF-light.png b/nerfstudio/docs/developer_guides/pipelines/imgs/DatamanagerGuide-LargeNeRF-light.png
similarity index 100%
rename from docs/developer_guides/pipelines/imgs/DatamanagerGuide-LargeNeRF-light.png
rename to nerfstudio/docs/developer_guides/pipelines/imgs/DatamanagerGuide-LargeNeRF-light.png
diff --git a/docs/developer_guides/pipelines/imgs/pipeline_datamanager-dark.png b/nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_datamanager-dark.png
similarity index 100%
rename from docs/developer_guides/pipelines/imgs/pipeline_datamanager-dark.png
rename to nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_datamanager-dark.png
diff --git a/docs/developer_guides/pipelines/imgs/pipeline_datamanager-light.png b/nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_datamanager-light.png
similarity index 100%
rename from docs/developer_guides/pipelines/imgs/pipeline_datamanager-light.png
rename to nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_datamanager-light.png
diff --git a/docs/developer_guides/pipelines/imgs/pipeline_field-dark.png b/nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_field-dark.png
similarity index 100%
rename from docs/developer_guides/pipelines/imgs/pipeline_field-dark.png
rename to nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_field-dark.png
diff --git a/docs/developer_guides/pipelines/imgs/pipeline_field-light.png b/nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_field-light.png
similarity index 100%
rename from docs/developer_guides/pipelines/imgs/pipeline_field-light.png
rename to nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_field-light.png
diff --git a/docs/developer_guides/pipelines/imgs/pipeline_model-dark.png b/nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_model-dark.png
similarity index 100%
rename from docs/developer_guides/pipelines/imgs/pipeline_model-dark.png
rename to nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_model-dark.png
diff --git a/docs/developer_guides/pipelines/imgs/pipeline_model-light.png b/nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_model-light.png
similarity index 100%
rename from docs/developer_guides/pipelines/imgs/pipeline_model-light.png
rename to nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_model-light.png
diff --git a/docs/developer_guides/pipelines/imgs/pipeline_overview-dark.png b/nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_overview-dark.png
similarity index 100%
rename from docs/developer_guides/pipelines/imgs/pipeline_overview-dark.png
rename to nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_overview-dark.png
diff --git a/docs/developer_guides/pipelines/imgs/pipeline_overview-light.png b/nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_overview-light.png
similarity index 100%
rename from docs/developer_guides/pipelines/imgs/pipeline_overview-light.png
rename to nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_overview-light.png
diff --git a/docs/developer_guides/pipelines/imgs/pipeline_parser-dark.png b/nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_parser-dark.png
similarity index 100%
rename from docs/developer_guides/pipelines/imgs/pipeline_parser-dark.png
rename to nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_parser-dark.png
diff --git a/docs/developer_guides/pipelines/imgs/pipeline_parser-light.png b/nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_parser-light.png
similarity index 100%
rename from docs/developer_guides/pipelines/imgs/pipeline_parser-light.png
rename to nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_parser-light.png
diff --git a/docs/developer_guides/pipelines/imgs/pipeline_pipeline-dark.png b/nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_pipeline-dark.png
similarity index 100%
rename from docs/developer_guides/pipelines/imgs/pipeline_pipeline-dark.png
rename to nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_pipeline-dark.png
diff --git a/docs/developer_guides/pipelines/imgs/pipeline_pipeline-light.png b/nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_pipeline-light.png
similarity index 100%
rename from docs/developer_guides/pipelines/imgs/pipeline_pipeline-light.png
rename to nerfstudio/docs/developer_guides/pipelines/imgs/pipeline_pipeline-light.png
diff --git a/docs/developer_guides/pipelines/index.rst b/nerfstudio/docs/developer_guides/pipelines/index.rst
similarity index 100%
rename from docs/developer_guides/pipelines/index.rst
rename to nerfstudio/docs/developer_guides/pipelines/index.rst
diff --git a/docs/developer_guides/pipelines/models.md b/nerfstudio/docs/developer_guides/pipelines/models.md
similarity index 100%
rename from docs/developer_guides/pipelines/models.md
rename to nerfstudio/docs/developer_guides/pipelines/models.md
diff --git a/docs/developer_guides/pipelines/pipelines.md b/nerfstudio/docs/developer_guides/pipelines/pipelines.md
similarity index 100%
rename from docs/developer_guides/pipelines/pipelines.md
rename to nerfstudio/docs/developer_guides/pipelines/pipelines.md
diff --git a/docs/developer_guides/viewer/custom_gui.md b/nerfstudio/docs/developer_guides/viewer/custom_gui.md
similarity index 100%
rename from docs/developer_guides/viewer/custom_gui.md
rename to nerfstudio/docs/developer_guides/viewer/custom_gui.md
diff --git a/docs/developer_guides/viewer/imgs/custom_controls.png b/nerfstudio/docs/developer_guides/viewer/imgs/custom_controls.png
similarity index 100%
rename from docs/developer_guides/viewer/imgs/custom_controls.png
rename to nerfstudio/docs/developer_guides/viewer/imgs/custom_controls.png
diff --git a/docs/developer_guides/viewer/index.md b/nerfstudio/docs/developer_guides/viewer/index.md
similarity index 100%
rename from docs/developer_guides/viewer/index.md
rename to nerfstudio/docs/developer_guides/viewer/index.md
diff --git a/docs/developer_guides/viewer/local_viewer.md b/nerfstudio/docs/developer_guides/viewer/local_viewer.md
similarity index 100%
rename from docs/developer_guides/viewer/local_viewer.md
rename to nerfstudio/docs/developer_guides/viewer/local_viewer.md
diff --git a/docs/developer_guides/viewer/viewer_control.md b/nerfstudio/docs/developer_guides/viewer/viewer_control.md
similarity index 100%
rename from docs/developer_guides/viewer/viewer_control.md
rename to nerfstudio/docs/developer_guides/viewer/viewer_control.md
diff --git a/docs/extensions/blender_addon.md b/nerfstudio/docs/extensions/blender_addon.md
similarity index 100%
rename from docs/extensions/blender_addon.md
rename to nerfstudio/docs/extensions/blender_addon.md
diff --git a/docs/extensions/imgs/desolation_unreal.png b/nerfstudio/docs/extensions/imgs/desolation_unreal.png
similarity index 100%
rename from docs/extensions/imgs/desolation_unreal.png
rename to nerfstudio/docs/extensions/imgs/desolation_unreal.png
diff --git a/docs/extensions/imgs/export_nvol.png b/nerfstudio/docs/extensions/imgs/export_nvol.png
similarity index 100%
rename from docs/extensions/imgs/export_nvol.png
rename to nerfstudio/docs/extensions/imgs/export_nvol.png
diff --git a/docs/extensions/imgs/nvol_ready.png b/nerfstudio/docs/extensions/imgs/nvol_ready.png
similarity index 100%
rename from docs/extensions/imgs/nvol_ready.png
rename to nerfstudio/docs/extensions/imgs/nvol_ready.png
diff --git a/docs/extensions/imgs/sdfstudio_overview.svg b/nerfstudio/docs/extensions/imgs/sdfstudio_overview.svg
similarity index 100%
rename from docs/extensions/imgs/sdfstudio_overview.svg
rename to nerfstudio/docs/extensions/imgs/sdfstudio_overview.svg
diff --git a/docs/extensions/maya_plugin.md b/nerfstudio/docs/extensions/maya_plugin.md
similarity index 100%
rename from docs/extensions/maya_plugin.md
rename to nerfstudio/docs/extensions/maya_plugin.md
diff --git a/docs/extensions/sdfstudio.md b/nerfstudio/docs/extensions/sdfstudio.md
similarity index 100%
rename from docs/extensions/sdfstudio.md
rename to nerfstudio/docs/extensions/sdfstudio.md
diff --git a/docs/extensions/unreal_engine.md b/nerfstudio/docs/extensions/unreal_engine.md
similarity index 100%
rename from docs/extensions/unreal_engine.md
rename to nerfstudio/docs/extensions/unreal_engine.md
diff --git a/docs/index.md b/nerfstudio/docs/index.md
similarity index 100%
rename from docs/index.md
rename to nerfstudio/docs/index.md
diff --git a/docs/make.bat b/nerfstudio/docs/make.bat
similarity index 100%
rename from docs/make.bat
rename to nerfstudio/docs/make.bat
diff --git a/docs/nerfology/methods/bionerf.md b/nerfstudio/docs/nerfology/methods/bionerf.md
similarity index 100%
rename from docs/nerfology/methods/bionerf.md
rename to nerfstudio/docs/nerfology/methods/bionerf.md
diff --git a/docs/nerfology/methods/feature_splatting.md b/nerfstudio/docs/nerfology/methods/feature_splatting.md
similarity index 100%
rename from docs/nerfology/methods/feature_splatting.md
rename to nerfstudio/docs/nerfology/methods/feature_splatting.md
diff --git a/docs/nerfology/methods/generfacto.md b/nerfstudio/docs/nerfology/methods/generfacto.md
similarity index 100%
rename from docs/nerfology/methods/generfacto.md
rename to nerfstudio/docs/nerfology/methods/generfacto.md
diff --git a/docs/nerfology/methods/igs2gs.md b/nerfstudio/docs/nerfology/methods/igs2gs.md
similarity index 100%
rename from docs/nerfology/methods/igs2gs.md
rename to nerfstudio/docs/nerfology/methods/igs2gs.md
diff --git a/docs/nerfology/methods/imgs/ingp/hash_figure.png b/nerfstudio/docs/nerfology/methods/imgs/ingp/hash_figure.png
similarity index 100%
rename from docs/nerfology/methods/imgs/ingp/hash_figure.png
rename to nerfstudio/docs/nerfology/methods/imgs/ingp/hash_figure.png
diff --git a/docs/nerfology/methods/imgs/mipnerf/models_mipnerf_field-dark.png b/nerfstudio/docs/nerfology/methods/imgs/mipnerf/models_mipnerf_field-dark.png
similarity index 100%
rename from docs/nerfology/methods/imgs/mipnerf/models_mipnerf_field-dark.png
rename to nerfstudio/docs/nerfology/methods/imgs/mipnerf/models_mipnerf_field-dark.png
diff --git a/docs/nerfology/methods/imgs/mipnerf/models_mipnerf_field-light.png b/nerfstudio/docs/nerfology/methods/imgs/mipnerf/models_mipnerf_field-light.png
similarity index 100%
rename from docs/nerfology/methods/imgs/mipnerf/models_mipnerf_field-light.png
rename to nerfstudio/docs/nerfology/methods/imgs/mipnerf/models_mipnerf_field-light.png
diff --git a/docs/nerfology/methods/imgs/mipnerf/models_mipnerf_pipeline-dark.png b/nerfstudio/docs/nerfology/methods/imgs/mipnerf/models_mipnerf_pipeline-dark.png
similarity index 100%
rename from docs/nerfology/methods/imgs/mipnerf/models_mipnerf_pipeline-dark.png
rename to nerfstudio/docs/nerfology/methods/imgs/mipnerf/models_mipnerf_pipeline-dark.png
diff --git a/docs/nerfology/methods/imgs/mipnerf/models_mipnerf_pipeline-light.png b/nerfstudio/docs/nerfology/methods/imgs/mipnerf/models_mipnerf_pipeline-light.png
similarity index 100%
rename from docs/nerfology/methods/imgs/mipnerf/models_mipnerf_pipeline-light.png
rename to nerfstudio/docs/nerfology/methods/imgs/mipnerf/models_mipnerf_pipeline-light.png
diff --git a/docs/nerfology/methods/imgs/models_nerf-field-dark.png b/nerfstudio/docs/nerfology/methods/imgs/models_nerf-field-dark.png
similarity index 100%
rename from docs/nerfology/methods/imgs/models_nerf-field-dark.png
rename to nerfstudio/docs/nerfology/methods/imgs/models_nerf-field-dark.png
diff --git a/docs/nerfology/methods/imgs/models_nerf-field-light.png b/nerfstudio/docs/nerfology/methods/imgs/models_nerf-field-light.png
similarity index 100%
rename from docs/nerfology/methods/imgs/models_nerf-field-light.png
rename to nerfstudio/docs/nerfology/methods/imgs/models_nerf-field-light.png
diff --git a/docs/nerfology/methods/imgs/models_nerf-pipeline-dark.png b/nerfstudio/docs/nerfology/methods/imgs/models_nerf-pipeline-dark.png
similarity index 100%
rename from docs/nerfology/methods/imgs/models_nerf-pipeline-dark.png
rename to nerfstudio/docs/nerfology/methods/imgs/models_nerf-pipeline-dark.png
diff --git a/docs/nerfology/methods/imgs/models_nerf-pipeline-field-dark.png b/nerfstudio/docs/nerfology/methods/imgs/models_nerf-pipeline-field-dark.png
similarity index 100%
rename from docs/nerfology/methods/imgs/models_nerf-pipeline-field-dark.png
rename to nerfstudio/docs/nerfology/methods/imgs/models_nerf-pipeline-field-dark.png
diff --git a/docs/nerfology/methods/imgs/models_nerf-pipeline-field-light.png b/nerfstudio/docs/nerfology/methods/imgs/models_nerf-pipeline-field-light.png
similarity index 100%
rename from docs/nerfology/methods/imgs/models_nerf-pipeline-field-light.png
rename to nerfstudio/docs/nerfology/methods/imgs/models_nerf-pipeline-field-light.png
diff --git a/docs/nerfology/methods/imgs/models_nerf-pipeline-light.png b/nerfstudio/docs/nerfology/methods/imgs/models_nerf-pipeline-light.png
similarity index 100%
rename from docs/nerfology/methods/imgs/models_nerf-pipeline-light.png
rename to nerfstudio/docs/nerfology/methods/imgs/models_nerf-pipeline-light.png
diff --git a/docs/nerfology/methods/imgs/models_nerf-pipeline-renderer-dark.png b/nerfstudio/docs/nerfology/methods/imgs/models_nerf-pipeline-renderer-dark.png
similarity index 100%
rename from docs/nerfology/methods/imgs/models_nerf-pipeline-renderer-dark.png
rename to nerfstudio/docs/nerfology/methods/imgs/models_nerf-pipeline-renderer-dark.png
diff --git a/docs/nerfology/methods/imgs/models_nerf-pipeline-renderer-light.png b/nerfstudio/docs/nerfology/methods/imgs/models_nerf-pipeline-renderer-light.png
similarity index 100%
rename from docs/nerfology/methods/imgs/models_nerf-pipeline-renderer-light.png
rename to nerfstudio/docs/nerfology/methods/imgs/models_nerf-pipeline-renderer-light.png
diff --git a/docs/nerfology/methods/imgs/models_nerf-pipeline-sampler-dark.png b/nerfstudio/docs/nerfology/methods/imgs/models_nerf-pipeline-sampler-dark.png
similarity index 100%
rename from docs/nerfology/methods/imgs/models_nerf-pipeline-sampler-dark.png
rename to nerfstudio/docs/nerfology/methods/imgs/models_nerf-pipeline-sampler-dark.png
diff --git a/docs/nerfology/methods/imgs/models_nerf-pipeline-sampler-light.png b/nerfstudio/docs/nerfology/methods/imgs/models_nerf-pipeline-sampler-light.png
similarity index 100%
rename from docs/nerfology/methods/imgs/models_nerf-pipeline-sampler-light.png
rename to nerfstudio/docs/nerfology/methods/imgs/models_nerf-pipeline-sampler-light.png
diff --git a/docs/nerfology/methods/imgs/nerfacto/models_nerfacto_field-dark.png b/nerfstudio/docs/nerfology/methods/imgs/nerfacto/models_nerfacto_field-dark.png
similarity index 100%
rename from docs/nerfology/methods/imgs/nerfacto/models_nerfacto_field-dark.png
rename to nerfstudio/docs/nerfology/methods/imgs/nerfacto/models_nerfacto_field-dark.png
diff --git a/docs/nerfology/methods/imgs/nerfacto/models_nerfacto_field-light.png b/nerfstudio/docs/nerfology/methods/imgs/nerfacto/models_nerfacto_field-light.png
similarity index 100%
rename from docs/nerfology/methods/imgs/nerfacto/models_nerfacto_field-light.png
rename to nerfstudio/docs/nerfology/methods/imgs/nerfacto/models_nerfacto_field-light.png
diff --git a/docs/nerfology/methods/imgs/nerfacto/models_nerfacto_pipeline-dark.png b/nerfstudio/docs/nerfology/methods/imgs/nerfacto/models_nerfacto_pipeline-dark.png
similarity index 100%
rename from docs/nerfology/methods/imgs/nerfacto/models_nerfacto_pipeline-dark.png
rename to nerfstudio/docs/nerfology/methods/imgs/nerfacto/models_nerfacto_pipeline-dark.png
diff --git a/docs/nerfology/methods/imgs/nerfacto/models_nerfacto_pipeline-light.png b/nerfstudio/docs/nerfology/methods/imgs/nerfacto/models_nerfacto_pipeline-light.png
similarity index 100%
rename from docs/nerfology/methods/imgs/nerfacto/models_nerfacto_pipeline-light.png
rename to nerfstudio/docs/nerfology/methods/imgs/nerfacto/models_nerfacto_pipeline-light.png
diff --git a/docs/nerfology/methods/imgs/tensorf/models_tensorf_factorization.png b/nerfstudio/docs/nerfology/methods/imgs/tensorf/models_tensorf_factorization.png
similarity index 100%
rename from docs/nerfology/methods/imgs/tensorf/models_tensorf_factorization.png
rename to nerfstudio/docs/nerfology/methods/imgs/tensorf/models_tensorf_factorization.png
diff --git a/docs/nerfology/methods/imgs/tensorf/models_tensorf_pipeline.png b/nerfstudio/docs/nerfology/methods/imgs/tensorf/models_tensorf_pipeline.png
similarity index 100%
rename from docs/nerfology/methods/imgs/tensorf/models_tensorf_pipeline.png
rename to nerfstudio/docs/nerfology/methods/imgs/tensorf/models_tensorf_pipeline.png
diff --git a/docs/nerfology/methods/in2n.md b/nerfstudio/docs/nerfology/methods/in2n.md
similarity index 100%
rename from docs/nerfology/methods/in2n.md
rename to nerfstudio/docs/nerfology/methods/in2n.md
diff --git a/docs/nerfology/methods/index.md b/nerfstudio/docs/nerfology/methods/index.md
similarity index 100%
rename from docs/nerfology/methods/index.md
rename to nerfstudio/docs/nerfology/methods/index.md
diff --git a/docs/nerfology/methods/instant_ngp.md b/nerfstudio/docs/nerfology/methods/instant_ngp.md
similarity index 100%
rename from docs/nerfology/methods/instant_ngp.md
rename to nerfstudio/docs/nerfology/methods/instant_ngp.md
diff --git a/docs/nerfology/methods/kplanes.md b/nerfstudio/docs/nerfology/methods/kplanes.md
similarity index 100%
rename from docs/nerfology/methods/kplanes.md
rename to nerfstudio/docs/nerfology/methods/kplanes.md
diff --git a/docs/nerfology/methods/lerf.md b/nerfstudio/docs/nerfology/methods/lerf.md
similarity index 100%
rename from docs/nerfology/methods/lerf.md
rename to nerfstudio/docs/nerfology/methods/lerf.md
diff --git a/docs/nerfology/methods/mipnerf.md b/nerfstudio/docs/nerfology/methods/mipnerf.md
similarity index 100%
rename from docs/nerfology/methods/mipnerf.md
rename to nerfstudio/docs/nerfology/methods/mipnerf.md
diff --git a/docs/nerfology/methods/nerf.md b/nerfstudio/docs/nerfology/methods/nerf.md
similarity index 100%
rename from docs/nerfology/methods/nerf.md
rename to nerfstudio/docs/nerfology/methods/nerf.md
diff --git a/docs/nerfology/methods/nerf2gs2nerf.md b/nerfstudio/docs/nerfology/methods/nerf2gs2nerf.md
similarity index 100%
rename from docs/nerfology/methods/nerf2gs2nerf.md
rename to nerfstudio/docs/nerfology/methods/nerf2gs2nerf.md
diff --git a/docs/nerfology/methods/nerfacto.md b/nerfstudio/docs/nerfology/methods/nerfacto.md
similarity index 100%
rename from docs/nerfology/methods/nerfacto.md
rename to nerfstudio/docs/nerfology/methods/nerfacto.md
diff --git a/docs/nerfology/methods/nerfbusters.md b/nerfstudio/docs/nerfology/methods/nerfbusters.md
similarity index 100%
rename from docs/nerfology/methods/nerfbusters.md
rename to nerfstudio/docs/nerfology/methods/nerfbusters.md
diff --git a/docs/nerfology/methods/nerfplayer.md b/nerfstudio/docs/nerfology/methods/nerfplayer.md
similarity index 100%
rename from docs/nerfology/methods/nerfplayer.md
rename to nerfstudio/docs/nerfology/methods/nerfplayer.md
diff --git a/docs/nerfology/methods/opennerf.md b/nerfstudio/docs/nerfology/methods/opennerf.md
similarity index 100%
rename from docs/nerfology/methods/opennerf.md
rename to nerfstudio/docs/nerfology/methods/opennerf.md
diff --git a/docs/nerfology/methods/pynerf.md b/nerfstudio/docs/nerfology/methods/pynerf.md
similarity index 100%
rename from docs/nerfology/methods/pynerf.md
rename to nerfstudio/docs/nerfology/methods/pynerf.md
diff --git a/docs/nerfology/methods/seathru_nerf.md b/nerfstudio/docs/nerfology/methods/seathru_nerf.md
similarity index 100%
rename from docs/nerfology/methods/seathru_nerf.md
rename to nerfstudio/docs/nerfology/methods/seathru_nerf.md
diff --git a/docs/nerfology/methods/signerf.md b/nerfstudio/docs/nerfology/methods/signerf.md
similarity index 100%
rename from docs/nerfology/methods/signerf.md
rename to nerfstudio/docs/nerfology/methods/signerf.md
diff --git a/docs/nerfology/methods/splat.md b/nerfstudio/docs/nerfology/methods/splat.md
similarity index 100%
rename from docs/nerfology/methods/splat.md
rename to nerfstudio/docs/nerfology/methods/splat.md
diff --git a/docs/nerfology/methods/splatw.md b/nerfstudio/docs/nerfology/methods/splatw.md
similarity index 100%
rename from docs/nerfology/methods/splatw.md
rename to nerfstudio/docs/nerfology/methods/splatw.md
diff --git a/docs/nerfology/methods/tensorf.md b/nerfstudio/docs/nerfology/methods/tensorf.md
similarity index 100%
rename from docs/nerfology/methods/tensorf.md
rename to nerfstudio/docs/nerfology/methods/tensorf.md
diff --git a/docs/nerfology/methods/tetranerf.md b/nerfstudio/docs/nerfology/methods/tetranerf.md
similarity index 100%
rename from docs/nerfology/methods/tetranerf.md
rename to nerfstudio/docs/nerfology/methods/tetranerf.md
diff --git a/docs/nerfology/methods/zipnerf.md b/nerfstudio/docs/nerfology/methods/zipnerf.md
similarity index 100%
rename from docs/nerfology/methods/zipnerf.md
rename to nerfstudio/docs/nerfology/methods/zipnerf.md
diff --git a/docs/nerfology/model_components/imgs/frustums-dark.png b/nerfstudio/docs/nerfology/model_components/imgs/frustums-dark.png
similarity index 100%
rename from docs/nerfology/model_components/imgs/frustums-dark.png
rename to nerfstudio/docs/nerfology/model_components/imgs/frustums-dark.png
diff --git a/docs/nerfology/model_components/imgs/frustums.png b/nerfstudio/docs/nerfology/model_components/imgs/frustums.png
similarity index 100%
rename from docs/nerfology/model_components/imgs/frustums.png
rename to nerfstudio/docs/nerfology/model_components/imgs/frustums.png
diff --git a/docs/nerfology/model_components/imgs/samplers_stratified-dark.png b/nerfstudio/docs/nerfology/model_components/imgs/samplers_stratified-dark.png
similarity index 100%
rename from docs/nerfology/model_components/imgs/samplers_stratified-dark.png
rename to nerfstudio/docs/nerfology/model_components/imgs/samplers_stratified-dark.png
diff --git a/docs/nerfology/model_components/imgs/samplers_stratified-light.png b/nerfstudio/docs/nerfology/model_components/imgs/samplers_stratified-light.png
similarity index 100%
rename from docs/nerfology/model_components/imgs/samplers_stratified-light.png
rename to nerfstudio/docs/nerfology/model_components/imgs/samplers_stratified-light.png
diff --git a/docs/nerfology/model_components/imgs/samplers_type-dark.png b/nerfstudio/docs/nerfology/model_components/imgs/samplers_type-dark.png
similarity index 100%
rename from docs/nerfology/model_components/imgs/samplers_type-dark.png
rename to nerfstudio/docs/nerfology/model_components/imgs/samplers_type-dark.png
diff --git a/docs/nerfology/model_components/imgs/samplers_type-light.png b/nerfstudio/docs/nerfology/model_components/imgs/samplers_type-light.png
similarity index 100%
rename from docs/nerfology/model_components/imgs/samplers_type-light.png
rename to nerfstudio/docs/nerfology/model_components/imgs/samplers_type-light.png
diff --git a/docs/nerfology/model_components/index.md b/nerfstudio/docs/nerfology/model_components/index.md
similarity index 100%
rename from docs/nerfology/model_components/index.md
rename to nerfstudio/docs/nerfology/model_components/index.md
diff --git a/docs/nerfology/model_components/visualize_cameras.ipynb b/nerfstudio/docs/nerfology/model_components/visualize_cameras.ipynb
similarity index 100%
rename from docs/nerfology/model_components/visualize_cameras.ipynb
rename to nerfstudio/docs/nerfology/model_components/visualize_cameras.ipynb
diff --git a/docs/nerfology/model_components/visualize_encoders.ipynb b/nerfstudio/docs/nerfology/model_components/visualize_encoders.ipynb
similarity index 100%
rename from docs/nerfology/model_components/visualize_encoders.ipynb
rename to nerfstudio/docs/nerfology/model_components/visualize_encoders.ipynb
diff --git a/docs/nerfology/model_components/visualize_samplers.ipynb b/nerfstudio/docs/nerfology/model_components/visualize_samplers.ipynb
similarity index 100%
rename from docs/nerfology/model_components/visualize_samplers.ipynb
rename to nerfstudio/docs/nerfology/model_components/visualize_samplers.ipynb
diff --git a/docs/nerfology/model_components/visualize_samples.ipynb b/nerfstudio/docs/nerfology/model_components/visualize_samples.ipynb
similarity index 100%
rename from docs/nerfology/model_components/visualize_samples.ipynb
rename to nerfstudio/docs/nerfology/model_components/visualize_samples.ipynb
diff --git a/docs/nerfology/model_components/visualize_spatial_distortions.ipynb b/nerfstudio/docs/nerfology/model_components/visualize_spatial_distortions.ipynb
similarity index 100%
rename from docs/nerfology/model_components/visualize_spatial_distortions.ipynb
rename to nerfstudio/docs/nerfology/model_components/visualize_spatial_distortions.ipynb
diff --git a/docs/quickstart/custom_dataset.md b/nerfstudio/docs/quickstart/custom_dataset.md
similarity index 100%
rename from docs/quickstart/custom_dataset.md
rename to nerfstudio/docs/quickstart/custom_dataset.md
diff --git a/docs/quickstart/data_conventions.md b/nerfstudio/docs/quickstart/data_conventions.md
similarity index 100%
rename from docs/quickstart/data_conventions.md
rename to nerfstudio/docs/quickstart/data_conventions.md
diff --git a/docs/quickstart/existing_dataset.md b/nerfstudio/docs/quickstart/existing_dataset.md
similarity index 100%
rename from docs/quickstart/existing_dataset.md
rename to nerfstudio/docs/quickstart/existing_dataset.md
diff --git a/docs/quickstart/export_geometry.md b/nerfstudio/docs/quickstart/export_geometry.md
similarity index 100%
rename from docs/quickstart/export_geometry.md
rename to nerfstudio/docs/quickstart/export_geometry.md
diff --git a/docs/quickstart/first_nerf.md b/nerfstudio/docs/quickstart/first_nerf.md
similarity index 100%
rename from docs/quickstart/first_nerf.md
rename to nerfstudio/docs/quickstart/first_nerf.md
diff --git a/docs/quickstart/imgs/equirect_crop.jpg b/nerfstudio/docs/quickstart/imgs/equirect_crop.jpg
similarity index 100%
rename from docs/quickstart/imgs/equirect_crop.jpg
rename to nerfstudio/docs/quickstart/imgs/equirect_crop.jpg
diff --git a/docs/quickstart/imgs/kiri_capture.png b/nerfstudio/docs/quickstart/imgs/kiri_capture.png
similarity index 100%
rename from docs/quickstart/imgs/kiri_capture.png
rename to nerfstudio/docs/quickstart/imgs/kiri_capture.png
diff --git a/docs/quickstart/imgs/kiri_setup.png b/nerfstudio/docs/quickstart/imgs/kiri_setup.png
similarity index 100%
rename from docs/quickstart/imgs/kiri_setup.png
rename to nerfstudio/docs/quickstart/imgs/kiri_setup.png
diff --git a/docs/quickstart/imgs/polycam_export.png b/nerfstudio/docs/quickstart/imgs/polycam_export.png
similarity index 100%
rename from docs/quickstart/imgs/polycam_export.png
rename to nerfstudio/docs/quickstart/imgs/polycam_export.png
diff --git a/docs/quickstart/imgs/polycam_settings.png b/nerfstudio/docs/quickstart/imgs/polycam_settings.png
similarity index 100%
rename from docs/quickstart/imgs/polycam_settings.png
rename to nerfstudio/docs/quickstart/imgs/polycam_settings.png
diff --git a/docs/quickstart/imgs/record3d_promo.png b/nerfstudio/docs/quickstart/imgs/record3d_promo.png
similarity index 100%
rename from docs/quickstart/imgs/record3d_promo.png
rename to nerfstudio/docs/quickstart/imgs/record3d_promo.png
diff --git a/docs/quickstart/imgs/record_3d_export_button.png b/nerfstudio/docs/quickstart/imgs/record_3d_export_button.png
similarity index 100%
rename from docs/quickstart/imgs/record_3d_export_button.png
rename to nerfstudio/docs/quickstart/imgs/record_3d_export_button.png
diff --git a/docs/quickstart/imgs/record_3d_export_selection.png b/nerfstudio/docs/quickstart/imgs/record_3d_export_selection.png
similarity index 100%
rename from docs/quickstart/imgs/record_3d_export_selection.png
rename to nerfstudio/docs/quickstart/imgs/record_3d_export_selection.png
diff --git a/docs/quickstart/imgs/record_3d_ply_selection.png b/nerfstudio/docs/quickstart/imgs/record_3d_ply_selection.png
similarity index 100%
rename from docs/quickstart/imgs/record_3d_ply_selection.png
rename to nerfstudio/docs/quickstart/imgs/record_3d_ply_selection.png
diff --git a/docs/quickstart/imgs/record_3d_video_example.png b/nerfstudio/docs/quickstart/imgs/record_3d_video_example.png
similarity index 100%
rename from docs/quickstart/imgs/record_3d_video_example.png
rename to nerfstudio/docs/quickstart/imgs/record_3d_video_example.png
diff --git a/docs/quickstart/imgs/record_3d_video_selection.png b/nerfstudio/docs/quickstart/imgs/record_3d_video_selection.png
similarity index 100%
rename from docs/quickstart/imgs/record_3d_video_selection.png
rename to nerfstudio/docs/quickstart/imgs/record_3d_video_selection.png
diff --git a/docs/quickstart/imgs/viewer_link.png b/nerfstudio/docs/quickstart/imgs/viewer_link.png
similarity index 100%
rename from docs/quickstart/imgs/viewer_link.png
rename to nerfstudio/docs/quickstart/imgs/viewer_link.png
diff --git a/docs/quickstart/installation.md b/nerfstudio/docs/quickstart/installation.md
similarity index 100%
rename from docs/quickstart/installation.md
rename to nerfstudio/docs/quickstart/installation.md
diff --git a/docs/quickstart/viewer_quickstart.rst b/nerfstudio/docs/quickstart/viewer_quickstart.rst
similarity index 100%
rename from docs/quickstart/viewer_quickstart.rst
rename to nerfstudio/docs/quickstart/viewer_quickstart.rst
diff --git a/docs/reference/api/cameras.rst b/nerfstudio/docs/reference/api/cameras.rst
similarity index 100%
rename from docs/reference/api/cameras.rst
rename to nerfstudio/docs/reference/api/cameras.rst
diff --git a/docs/reference/api/config.rst b/nerfstudio/docs/reference/api/config.rst
similarity index 100%
rename from docs/reference/api/config.rst
rename to nerfstudio/docs/reference/api/config.rst
diff --git a/docs/reference/api/data/datamanagers.rst b/nerfstudio/docs/reference/api/data/datamanagers.rst
similarity index 100%
rename from docs/reference/api/data/datamanagers.rst
rename to nerfstudio/docs/reference/api/data/datamanagers.rst
diff --git a/docs/reference/api/data/dataparsers.rst b/nerfstudio/docs/reference/api/data/dataparsers.rst
similarity index 100%
rename from docs/reference/api/data/dataparsers.rst
rename to nerfstudio/docs/reference/api/data/dataparsers.rst
diff --git a/docs/reference/api/data/datasets.rst b/nerfstudio/docs/reference/api/data/datasets.rst
similarity index 100%
rename from docs/reference/api/data/datasets.rst
rename to nerfstudio/docs/reference/api/data/datasets.rst
diff --git a/docs/reference/api/data/index.rst b/nerfstudio/docs/reference/api/data/index.rst
similarity index 100%
rename from docs/reference/api/data/index.rst
rename to nerfstudio/docs/reference/api/data/index.rst
diff --git a/docs/reference/api/data/utils.rst b/nerfstudio/docs/reference/api/data/utils.rst
similarity index 100%
rename from docs/reference/api/data/utils.rst
rename to nerfstudio/docs/reference/api/data/utils.rst
diff --git a/docs/reference/api/field_components/embeddings.rst b/nerfstudio/docs/reference/api/field_components/embeddings.rst
similarity index 100%
rename from docs/reference/api/field_components/embeddings.rst
rename to nerfstudio/docs/reference/api/field_components/embeddings.rst
diff --git a/docs/reference/api/field_components/encodings.rst b/nerfstudio/docs/reference/api/field_components/encodings.rst
similarity index 100%
rename from docs/reference/api/field_components/encodings.rst
rename to nerfstudio/docs/reference/api/field_components/encodings.rst
diff --git a/docs/reference/api/field_components/field_heads.rst b/nerfstudio/docs/reference/api/field_components/field_heads.rst
similarity index 100%
rename from docs/reference/api/field_components/field_heads.rst
rename to nerfstudio/docs/reference/api/field_components/field_heads.rst
diff --git a/docs/reference/api/field_components/index.rst b/nerfstudio/docs/reference/api/field_components/index.rst
similarity index 100%
rename from docs/reference/api/field_components/index.rst
rename to nerfstudio/docs/reference/api/field_components/index.rst
diff --git a/docs/reference/api/field_components/mlp.rst b/nerfstudio/docs/reference/api/field_components/mlp.rst
similarity index 100%
rename from docs/reference/api/field_components/mlp.rst
rename to nerfstudio/docs/reference/api/field_components/mlp.rst
diff --git a/docs/reference/api/field_components/spatial_distortions.rst b/nerfstudio/docs/reference/api/field_components/spatial_distortions.rst
similarity index 100%
rename from docs/reference/api/field_components/spatial_distortions.rst
rename to nerfstudio/docs/reference/api/field_components/spatial_distortions.rst
diff --git a/docs/reference/api/fields.rst b/nerfstudio/docs/reference/api/fields.rst
similarity index 100%
rename from docs/reference/api/fields.rst
rename to nerfstudio/docs/reference/api/fields.rst
diff --git a/docs/reference/api/index.rst b/nerfstudio/docs/reference/api/index.rst
similarity index 100%
rename from docs/reference/api/index.rst
rename to nerfstudio/docs/reference/api/index.rst
diff --git a/docs/reference/api/model_components/index.rst b/nerfstudio/docs/reference/api/model_components/index.rst
similarity index 100%
rename from docs/reference/api/model_components/index.rst
rename to nerfstudio/docs/reference/api/model_components/index.rst
diff --git a/docs/reference/api/model_components/losses.rst b/nerfstudio/docs/reference/api/model_components/losses.rst
similarity index 100%
rename from docs/reference/api/model_components/losses.rst
rename to nerfstudio/docs/reference/api/model_components/losses.rst
diff --git a/docs/reference/api/model_components/ray_sampler.rst b/nerfstudio/docs/reference/api/model_components/ray_sampler.rst
similarity index 100%
rename from docs/reference/api/model_components/ray_sampler.rst
rename to nerfstudio/docs/reference/api/model_components/ray_sampler.rst
diff --git a/docs/reference/api/model_components/renderers.rst b/nerfstudio/docs/reference/api/model_components/renderers.rst
similarity index 100%
rename from docs/reference/api/model_components/renderers.rst
rename to nerfstudio/docs/reference/api/model_components/renderers.rst
diff --git a/docs/reference/api/models.rst b/nerfstudio/docs/reference/api/models.rst
similarity index 100%
rename from docs/reference/api/models.rst
rename to nerfstudio/docs/reference/api/models.rst
diff --git a/docs/reference/api/optimizers.rst b/nerfstudio/docs/reference/api/optimizers.rst
similarity index 100%
rename from docs/reference/api/optimizers.rst
rename to nerfstudio/docs/reference/api/optimizers.rst
diff --git a/docs/reference/api/plugins.rst b/nerfstudio/docs/reference/api/plugins.rst
similarity index 100%
rename from docs/reference/api/plugins.rst
rename to nerfstudio/docs/reference/api/plugins.rst
diff --git a/docs/reference/api/utils/colormaps.rst b/nerfstudio/docs/reference/api/utils/colormaps.rst
similarity index 100%
rename from docs/reference/api/utils/colormaps.rst
rename to nerfstudio/docs/reference/api/utils/colormaps.rst
diff --git a/docs/reference/api/utils/colors.rst b/nerfstudio/docs/reference/api/utils/colors.rst
similarity index 100%
rename from docs/reference/api/utils/colors.rst
rename to nerfstudio/docs/reference/api/utils/colors.rst
diff --git a/docs/reference/api/utils/index.rst b/nerfstudio/docs/reference/api/utils/index.rst
similarity index 100%
rename from docs/reference/api/utils/index.rst
rename to nerfstudio/docs/reference/api/utils/index.rst
diff --git a/docs/reference/api/utils/math.rst b/nerfstudio/docs/reference/api/utils/math.rst
similarity index 100%
rename from docs/reference/api/utils/math.rst
rename to nerfstudio/docs/reference/api/utils/math.rst
diff --git a/docs/reference/api/utils/tensor_dataclass.rst b/nerfstudio/docs/reference/api/utils/tensor_dataclass.rst
similarity index 100%
rename from docs/reference/api/utils/tensor_dataclass.rst
rename to nerfstudio/docs/reference/api/utils/tensor_dataclass.rst
diff --git a/docs/reference/api/viewer.rst b/nerfstudio/docs/reference/api/viewer.rst
similarity index 100%
rename from docs/reference/api/viewer.rst
rename to nerfstudio/docs/reference/api/viewer.rst
diff --git a/docs/reference/cli/index.md b/nerfstudio/docs/reference/cli/index.md
similarity index 100%
rename from docs/reference/cli/index.md
rename to nerfstudio/docs/reference/cli/index.md
diff --git a/docs/reference/cli/ns_download_data.md b/nerfstudio/docs/reference/cli/ns_download_data.md
similarity index 100%
rename from docs/reference/cli/ns_download_data.md
rename to nerfstudio/docs/reference/cli/ns_download_data.md
diff --git a/docs/reference/cli/ns_eval.md b/nerfstudio/docs/reference/cli/ns_eval.md
similarity index 100%
rename from docs/reference/cli/ns_eval.md
rename to nerfstudio/docs/reference/cli/ns_eval.md
diff --git a/docs/reference/cli/ns_export.md b/nerfstudio/docs/reference/cli/ns_export.md
similarity index 100%
rename from docs/reference/cli/ns_export.md
rename to nerfstudio/docs/reference/cli/ns_export.md
diff --git a/docs/reference/cli/ns_install_cli.md b/nerfstudio/docs/reference/cli/ns_install_cli.md
similarity index 100%
rename from docs/reference/cli/ns_install_cli.md
rename to nerfstudio/docs/reference/cli/ns_install_cli.md
diff --git a/docs/reference/cli/ns_process_data.md b/nerfstudio/docs/reference/cli/ns_process_data.md
similarity index 100%
rename from docs/reference/cli/ns_process_data.md
rename to nerfstudio/docs/reference/cli/ns_process_data.md
diff --git a/docs/reference/cli/ns_render.md b/nerfstudio/docs/reference/cli/ns_render.md
similarity index 100%
rename from docs/reference/cli/ns_render.md
rename to nerfstudio/docs/reference/cli/ns_render.md
diff --git a/docs/reference/cli/ns_train.md b/nerfstudio/docs/reference/cli/ns_train.md
similarity index 100%
rename from docs/reference/cli/ns_train.md
rename to nerfstudio/docs/reference/cli/ns_train.md
diff --git a/docs/reference/cli/ns_viewer.md b/nerfstudio/docs/reference/cli/ns_viewer.md
similarity index 100%
rename from docs/reference/cli/ns_viewer.md
rename to nerfstudio/docs/reference/cli/ns_viewer.md
diff --git a/docs/reference/contributing.md b/nerfstudio/docs/reference/contributing.md
similarity index 100%
rename from docs/reference/contributing.md
rename to nerfstudio/docs/reference/contributing.md
diff --git a/nerfstudio/__init__.py b/nerfstudio/nerfstudio/__init__.py
similarity index 100%
rename from nerfstudio/__init__.py
rename to nerfstudio/nerfstudio/__init__.py
diff --git a/nerfstudio/cameras/__init__.py b/nerfstudio/nerfstudio/cameras/__init__.py
similarity index 100%
rename from nerfstudio/cameras/__init__.py
rename to nerfstudio/nerfstudio/cameras/__init__.py
diff --git a/nerfstudio/cameras/camera_optimizers.py b/nerfstudio/nerfstudio/cameras/camera_optimizers.py
similarity index 100%
rename from nerfstudio/cameras/camera_optimizers.py
rename to nerfstudio/nerfstudio/cameras/camera_optimizers.py
diff --git a/nerfstudio/cameras/camera_paths.py b/nerfstudio/nerfstudio/cameras/camera_paths.py
similarity index 100%
rename from nerfstudio/cameras/camera_paths.py
rename to nerfstudio/nerfstudio/cameras/camera_paths.py
diff --git a/nerfstudio/cameras/camera_utils.py b/nerfstudio/nerfstudio/cameras/camera_utils.py
similarity index 100%
rename from nerfstudio/cameras/camera_utils.py
rename to nerfstudio/nerfstudio/cameras/camera_utils.py
diff --git a/nerfstudio/cameras/cameras.py b/nerfstudio/nerfstudio/cameras/cameras.py
similarity index 100%
rename from nerfstudio/cameras/cameras.py
rename to nerfstudio/nerfstudio/cameras/cameras.py
diff --git a/nerfstudio/cameras/lie_groups.py b/nerfstudio/nerfstudio/cameras/lie_groups.py
similarity index 100%
rename from nerfstudio/cameras/lie_groups.py
rename to nerfstudio/nerfstudio/cameras/lie_groups.py
diff --git a/nerfstudio/cameras/rays.py b/nerfstudio/nerfstudio/cameras/rays.py
similarity index 100%
rename from nerfstudio/cameras/rays.py
rename to nerfstudio/nerfstudio/cameras/rays.py
diff --git a/nerfstudio/configs/__init__.py b/nerfstudio/nerfstudio/configs/__init__.py
similarity index 100%
rename from nerfstudio/configs/__init__.py
rename to nerfstudio/nerfstudio/configs/__init__.py
diff --git a/nerfstudio/configs/base_config.py b/nerfstudio/nerfstudio/configs/base_config.py
similarity index 100%
rename from nerfstudio/configs/base_config.py
rename to nerfstudio/nerfstudio/configs/base_config.py
diff --git a/nerfstudio/configs/config_utils.py b/nerfstudio/nerfstudio/configs/config_utils.py
similarity index 100%
rename from nerfstudio/configs/config_utils.py
rename to nerfstudio/nerfstudio/configs/config_utils.py
diff --git a/nerfstudio/configs/dataparser_configs.py b/nerfstudio/nerfstudio/configs/dataparser_configs.py
similarity index 100%
rename from nerfstudio/configs/dataparser_configs.py
rename to nerfstudio/nerfstudio/configs/dataparser_configs.py
diff --git a/nerfstudio/configs/experiment_config.py b/nerfstudio/nerfstudio/configs/experiment_config.py
similarity index 100%
rename from nerfstudio/configs/experiment_config.py
rename to nerfstudio/nerfstudio/configs/experiment_config.py
diff --git a/nerfstudio/configs/external_methods.py b/nerfstudio/nerfstudio/configs/external_methods.py
similarity index 100%
rename from nerfstudio/configs/external_methods.py
rename to nerfstudio/nerfstudio/configs/external_methods.py
diff --git a/nerfstudio/configs/method_configs.py b/nerfstudio/nerfstudio/configs/method_configs.py
similarity index 100%
rename from nerfstudio/configs/method_configs.py
rename to nerfstudio/nerfstudio/configs/method_configs.py
diff --git a/nerfstudio/data/__init__.py b/nerfstudio/nerfstudio/data/__init__.py
similarity index 100%
rename from nerfstudio/data/__init__.py
rename to nerfstudio/nerfstudio/data/__init__.py
diff --git a/nerfstudio/data/datamanagers/__init__.py b/nerfstudio/nerfstudio/data/datamanagers/__init__.py
similarity index 100%
rename from nerfstudio/data/datamanagers/__init__.py
rename to nerfstudio/nerfstudio/data/datamanagers/__init__.py
diff --git a/nerfstudio/data/datamanagers/base_datamanager.py b/nerfstudio/nerfstudio/data/datamanagers/base_datamanager.py
similarity index 100%
rename from nerfstudio/data/datamanagers/base_datamanager.py
rename to nerfstudio/nerfstudio/data/datamanagers/base_datamanager.py
diff --git a/nerfstudio/data/datamanagers/full_images_datamanager.py b/nerfstudio/nerfstudio/data/datamanagers/full_images_datamanager.py
similarity index 100%
rename from nerfstudio/data/datamanagers/full_images_datamanager.py
rename to nerfstudio/nerfstudio/data/datamanagers/full_images_datamanager.py
diff --git a/nerfstudio/data/datamanagers/parallel_datamanager.py b/nerfstudio/nerfstudio/data/datamanagers/parallel_datamanager.py
similarity index 100%
rename from nerfstudio/data/datamanagers/parallel_datamanager.py
rename to nerfstudio/nerfstudio/data/datamanagers/parallel_datamanager.py
diff --git a/nerfstudio/data/datamanagers/random_cameras_datamanager.py b/nerfstudio/nerfstudio/data/datamanagers/random_cameras_datamanager.py
similarity index 100%
rename from nerfstudio/data/datamanagers/random_cameras_datamanager.py
rename to nerfstudio/nerfstudio/data/datamanagers/random_cameras_datamanager.py
diff --git a/nerfstudio/data/dataparsers/__init__.py b/nerfstudio/nerfstudio/data/dataparsers/__init__.py
similarity index 100%
rename from nerfstudio/data/dataparsers/__init__.py
rename to nerfstudio/nerfstudio/data/dataparsers/__init__.py
diff --git a/nerfstudio/data/dataparsers/arkitscenes_dataparser.py b/nerfstudio/nerfstudio/data/dataparsers/arkitscenes_dataparser.py
similarity index 100%
rename from nerfstudio/data/dataparsers/arkitscenes_dataparser.py
rename to nerfstudio/nerfstudio/data/dataparsers/arkitscenes_dataparser.py
diff --git a/nerfstudio/data/dataparsers/base_dataparser.py b/nerfstudio/nerfstudio/data/dataparsers/base_dataparser.py
similarity index 100%
rename from nerfstudio/data/dataparsers/base_dataparser.py
rename to nerfstudio/nerfstudio/data/dataparsers/base_dataparser.py
diff --git a/nerfstudio/data/dataparsers/blender_dataparser.py b/nerfstudio/nerfstudio/data/dataparsers/blender_dataparser.py
similarity index 100%
rename from nerfstudio/data/dataparsers/blender_dataparser.py
rename to nerfstudio/nerfstudio/data/dataparsers/blender_dataparser.py
diff --git a/nerfstudio/data/dataparsers/colmap_dataparser.py b/nerfstudio/nerfstudio/data/dataparsers/colmap_dataparser.py
similarity index 100%
rename from nerfstudio/data/dataparsers/colmap_dataparser.py
rename to nerfstudio/nerfstudio/data/dataparsers/colmap_dataparser.py
diff --git a/nerfstudio/data/dataparsers/dnerf_dataparser.py b/nerfstudio/nerfstudio/data/dataparsers/dnerf_dataparser.py
similarity index 100%
rename from nerfstudio/data/dataparsers/dnerf_dataparser.py
rename to nerfstudio/nerfstudio/data/dataparsers/dnerf_dataparser.py
diff --git a/nerfstudio/data/dataparsers/dycheck_dataparser.py b/nerfstudio/nerfstudio/data/dataparsers/dycheck_dataparser.py
similarity index 100%
rename from nerfstudio/data/dataparsers/dycheck_dataparser.py
rename to nerfstudio/nerfstudio/data/dataparsers/dycheck_dataparser.py
diff --git a/nerfstudio/data/dataparsers/instant_ngp_dataparser.py b/nerfstudio/nerfstudio/data/dataparsers/instant_ngp_dataparser.py
similarity index 100%
rename from nerfstudio/data/dataparsers/instant_ngp_dataparser.py
rename to nerfstudio/nerfstudio/data/dataparsers/instant_ngp_dataparser.py
diff --git a/nerfstudio/data/dataparsers/minimal_dataparser.py b/nerfstudio/nerfstudio/data/dataparsers/minimal_dataparser.py
similarity index 100%
rename from nerfstudio/data/dataparsers/minimal_dataparser.py
rename to nerfstudio/nerfstudio/data/dataparsers/minimal_dataparser.py
diff --git a/nerfstudio/data/dataparsers/nerfosr_dataparser.py b/nerfstudio/nerfstudio/data/dataparsers/nerfosr_dataparser.py
similarity index 100%
rename from nerfstudio/data/dataparsers/nerfosr_dataparser.py
rename to nerfstudio/nerfstudio/data/dataparsers/nerfosr_dataparser.py
diff --git a/nerfstudio/data/dataparsers/nerfstudio_dataparser.py b/nerfstudio/nerfstudio/data/dataparsers/nerfstudio_dataparser.py
similarity index 100%
rename from nerfstudio/data/dataparsers/nerfstudio_dataparser.py
rename to nerfstudio/nerfstudio/data/dataparsers/nerfstudio_dataparser.py
diff --git a/nerfstudio/data/dataparsers/nuscenes_dataparser.py b/nerfstudio/nerfstudio/data/dataparsers/nuscenes_dataparser.py
similarity index 100%
rename from nerfstudio/data/dataparsers/nuscenes_dataparser.py
rename to nerfstudio/nerfstudio/data/dataparsers/nuscenes_dataparser.py
diff --git a/nerfstudio/data/dataparsers/phototourism_dataparser.py b/nerfstudio/nerfstudio/data/dataparsers/phototourism_dataparser.py
similarity index 100%
rename from nerfstudio/data/dataparsers/phototourism_dataparser.py
rename to nerfstudio/nerfstudio/data/dataparsers/phototourism_dataparser.py
diff --git a/nerfstudio/data/dataparsers/scannet_dataparser.py b/nerfstudio/nerfstudio/data/dataparsers/scannet_dataparser.py
similarity index 100%
rename from nerfstudio/data/dataparsers/scannet_dataparser.py
rename to nerfstudio/nerfstudio/data/dataparsers/scannet_dataparser.py
diff --git a/nerfstudio/data/dataparsers/scannetpp_dataparser.py b/nerfstudio/nerfstudio/data/dataparsers/scannetpp_dataparser.py
similarity index 100%
rename from nerfstudio/data/dataparsers/scannetpp_dataparser.py
rename to nerfstudio/nerfstudio/data/dataparsers/scannetpp_dataparser.py
diff --git a/nerfstudio/data/dataparsers/sdfstudio_dataparser.py b/nerfstudio/nerfstudio/data/dataparsers/sdfstudio_dataparser.py
similarity index 100%
rename from nerfstudio/data/dataparsers/sdfstudio_dataparser.py
rename to nerfstudio/nerfstudio/data/dataparsers/sdfstudio_dataparser.py
diff --git a/nerfstudio/data/dataparsers/sitcoms3d_dataparser.py b/nerfstudio/nerfstudio/data/dataparsers/sitcoms3d_dataparser.py
similarity index 100%
rename from nerfstudio/data/dataparsers/sitcoms3d_dataparser.py
rename to nerfstudio/nerfstudio/data/dataparsers/sitcoms3d_dataparser.py
diff --git a/nerfstudio/data/datasets/__init__.py b/nerfstudio/nerfstudio/data/datasets/__init__.py
similarity index 100%
rename from nerfstudio/data/datasets/__init__.py
rename to nerfstudio/nerfstudio/data/datasets/__init__.py
diff --git a/nerfstudio/data/datasets/base_dataset.py b/nerfstudio/nerfstudio/data/datasets/base_dataset.py
similarity index 100%
rename from nerfstudio/data/datasets/base_dataset.py
rename to nerfstudio/nerfstudio/data/datasets/base_dataset.py
diff --git a/nerfstudio/data/datasets/depth_dataset.py b/nerfstudio/nerfstudio/data/datasets/depth_dataset.py
similarity index 100%
rename from nerfstudio/data/datasets/depth_dataset.py
rename to nerfstudio/nerfstudio/data/datasets/depth_dataset.py
diff --git a/nerfstudio/data/datasets/sdf_dataset.py b/nerfstudio/nerfstudio/data/datasets/sdf_dataset.py
similarity index 100%
rename from nerfstudio/data/datasets/sdf_dataset.py
rename to nerfstudio/nerfstudio/data/datasets/sdf_dataset.py
diff --git a/nerfstudio/data/datasets/semantic_dataset.py b/nerfstudio/nerfstudio/data/datasets/semantic_dataset.py
similarity index 100%
rename from nerfstudio/data/datasets/semantic_dataset.py
rename to nerfstudio/nerfstudio/data/datasets/semantic_dataset.py
diff --git a/nerfstudio/data/pixel_samplers.py b/nerfstudio/nerfstudio/data/pixel_samplers.py
similarity index 100%
rename from nerfstudio/data/pixel_samplers.py
rename to nerfstudio/nerfstudio/data/pixel_samplers.py
diff --git a/nerfstudio/data/scene_box.py b/nerfstudio/nerfstudio/data/scene_box.py
similarity index 100%
rename from nerfstudio/data/scene_box.py
rename to nerfstudio/nerfstudio/data/scene_box.py
diff --git a/nerfstudio/data/utils/__init__.py b/nerfstudio/nerfstudio/data/utils/__init__.py
similarity index 100%
rename from nerfstudio/data/utils/__init__.py
rename to nerfstudio/nerfstudio/data/utils/__init__.py
diff --git a/nerfstudio/data/utils/colmap_parsing_utils.py b/nerfstudio/nerfstudio/data/utils/colmap_parsing_utils.py
similarity index 100%
rename from nerfstudio/data/utils/colmap_parsing_utils.py
rename to nerfstudio/nerfstudio/data/utils/colmap_parsing_utils.py
diff --git a/nerfstudio/data/utils/data_utils.py b/nerfstudio/nerfstudio/data/utils/data_utils.py
similarity index 100%
rename from nerfstudio/data/utils/data_utils.py
rename to nerfstudio/nerfstudio/data/utils/data_utils.py
diff --git a/nerfstudio/data/utils/dataloaders.py b/nerfstudio/nerfstudio/data/utils/dataloaders.py
similarity index 100%
rename from nerfstudio/data/utils/dataloaders.py
rename to nerfstudio/nerfstudio/data/utils/dataloaders.py
diff --git a/nerfstudio/data/utils/dataparsers_utils.py b/nerfstudio/nerfstudio/data/utils/dataparsers_utils.py
similarity index 100%
rename from nerfstudio/data/utils/dataparsers_utils.py
rename to nerfstudio/nerfstudio/data/utils/dataparsers_utils.py
diff --git a/nerfstudio/data/utils/nerfstudio_collate.py b/nerfstudio/nerfstudio/data/utils/nerfstudio_collate.py
similarity index 100%
rename from nerfstudio/data/utils/nerfstudio_collate.py
rename to nerfstudio/nerfstudio/data/utils/nerfstudio_collate.py
diff --git a/nerfstudio/data/utils/pixel_sampling_utils.py b/nerfstudio/nerfstudio/data/utils/pixel_sampling_utils.py
similarity index 100%
rename from nerfstudio/data/utils/pixel_sampling_utils.py
rename to nerfstudio/nerfstudio/data/utils/pixel_sampling_utils.py
diff --git a/nerfstudio/engine/__init__.py b/nerfstudio/nerfstudio/engine/__init__.py
similarity index 100%
rename from nerfstudio/engine/__init__.py
rename to nerfstudio/nerfstudio/engine/__init__.py
diff --git a/nerfstudio/engine/callbacks.py b/nerfstudio/nerfstudio/engine/callbacks.py
similarity index 100%
rename from nerfstudio/engine/callbacks.py
rename to nerfstudio/nerfstudio/engine/callbacks.py
diff --git a/nerfstudio/engine/optimizers.py b/nerfstudio/nerfstudio/engine/optimizers.py
similarity index 100%
rename from nerfstudio/engine/optimizers.py
rename to nerfstudio/nerfstudio/engine/optimizers.py
diff --git a/nerfstudio/engine/schedulers.py b/nerfstudio/nerfstudio/engine/schedulers.py
similarity index 100%
rename from nerfstudio/engine/schedulers.py
rename to nerfstudio/nerfstudio/engine/schedulers.py
diff --git a/nerfstudio/engine/trainer.py b/nerfstudio/nerfstudio/engine/trainer.py
similarity index 100%
rename from nerfstudio/engine/trainer.py
rename to nerfstudio/nerfstudio/engine/trainer.py
diff --git a/nerfstudio/exporter/__init__.py b/nerfstudio/nerfstudio/exporter/__init__.py
similarity index 100%
rename from nerfstudio/exporter/__init__.py
rename to nerfstudio/nerfstudio/exporter/__init__.py
diff --git a/nerfstudio/exporter/exporter_utils.py b/nerfstudio/nerfstudio/exporter/exporter_utils.py
similarity index 100%
rename from nerfstudio/exporter/exporter_utils.py
rename to nerfstudio/nerfstudio/exporter/exporter_utils.py
diff --git a/nerfstudio/exporter/marching_cubes.py b/nerfstudio/nerfstudio/exporter/marching_cubes.py
similarity index 100%
rename from nerfstudio/exporter/marching_cubes.py
rename to nerfstudio/nerfstudio/exporter/marching_cubes.py
diff --git a/nerfstudio/exporter/texture_utils.py b/nerfstudio/nerfstudio/exporter/texture_utils.py
similarity index 100%
rename from nerfstudio/exporter/texture_utils.py
rename to nerfstudio/nerfstudio/exporter/texture_utils.py
diff --git a/nerfstudio/exporter/tsdf_utils.py b/nerfstudio/nerfstudio/exporter/tsdf_utils.py
similarity index 100%
rename from nerfstudio/exporter/tsdf_utils.py
rename to nerfstudio/nerfstudio/exporter/tsdf_utils.py
diff --git a/nerfstudio/field_components/__init__.py b/nerfstudio/nerfstudio/field_components/__init__.py
similarity index 100%
rename from nerfstudio/field_components/__init__.py
rename to nerfstudio/nerfstudio/field_components/__init__.py
diff --git a/nerfstudio/field_components/activations.py b/nerfstudio/nerfstudio/field_components/activations.py
similarity index 100%
rename from nerfstudio/field_components/activations.py
rename to nerfstudio/nerfstudio/field_components/activations.py
diff --git a/nerfstudio/field_components/base_field_component.py b/nerfstudio/nerfstudio/field_components/base_field_component.py
similarity index 100%
rename from nerfstudio/field_components/base_field_component.py
rename to nerfstudio/nerfstudio/field_components/base_field_component.py
diff --git a/nerfstudio/field_components/embedding.py b/nerfstudio/nerfstudio/field_components/embedding.py
similarity index 100%
rename from nerfstudio/field_components/embedding.py
rename to nerfstudio/nerfstudio/field_components/embedding.py
diff --git a/nerfstudio/field_components/encodings.py b/nerfstudio/nerfstudio/field_components/encodings.py
similarity index 100%
rename from nerfstudio/field_components/encodings.py
rename to nerfstudio/nerfstudio/field_components/encodings.py
diff --git a/nerfstudio/field_components/field_heads.py b/nerfstudio/nerfstudio/field_components/field_heads.py
similarity index 100%
rename from nerfstudio/field_components/field_heads.py
rename to nerfstudio/nerfstudio/field_components/field_heads.py
diff --git a/nerfstudio/field_components/mlp.py b/nerfstudio/nerfstudio/field_components/mlp.py
similarity index 100%
rename from nerfstudio/field_components/mlp.py
rename to nerfstudio/nerfstudio/field_components/mlp.py
diff --git a/nerfstudio/field_components/spatial_distortions.py b/nerfstudio/nerfstudio/field_components/spatial_distortions.py
similarity index 100%
rename from nerfstudio/field_components/spatial_distortions.py
rename to nerfstudio/nerfstudio/field_components/spatial_distortions.py
diff --git a/nerfstudio/field_components/temporal_distortions.py b/nerfstudio/nerfstudio/field_components/temporal_distortions.py
similarity index 100%
rename from nerfstudio/field_components/temporal_distortions.py
rename to nerfstudio/nerfstudio/field_components/temporal_distortions.py
diff --git a/nerfstudio/fields/__init__.py b/nerfstudio/nerfstudio/fields/__init__.py
similarity index 100%
rename from nerfstudio/fields/__init__.py
rename to nerfstudio/nerfstudio/fields/__init__.py
diff --git a/nerfstudio/fields/base_field.py b/nerfstudio/nerfstudio/fields/base_field.py
similarity index 100%
rename from nerfstudio/fields/base_field.py
rename to nerfstudio/nerfstudio/fields/base_field.py
diff --git a/nerfstudio/fields/density_fields.py b/nerfstudio/nerfstudio/fields/density_fields.py
similarity index 100%
rename from nerfstudio/fields/density_fields.py
rename to nerfstudio/nerfstudio/fields/density_fields.py
diff --git a/nerfstudio/fields/generfacto_field.py b/nerfstudio/nerfstudio/fields/generfacto_field.py
similarity index 100%
rename from nerfstudio/fields/generfacto_field.py
rename to nerfstudio/nerfstudio/fields/generfacto_field.py
diff --git a/nerfstudio/fields/nerfacto_field.py b/nerfstudio/nerfstudio/fields/nerfacto_field.py
similarity index 100%
rename from nerfstudio/fields/nerfacto_field.py
rename to nerfstudio/nerfstudio/fields/nerfacto_field.py
diff --git a/nerfstudio/fields/nerfw_field.py b/nerfstudio/nerfstudio/fields/nerfw_field.py
similarity index 100%
rename from nerfstudio/fields/nerfw_field.py
rename to nerfstudio/nerfstudio/fields/nerfw_field.py
diff --git a/nerfstudio/fields/sdf_field.py b/nerfstudio/nerfstudio/fields/sdf_field.py
similarity index 100%
rename from nerfstudio/fields/sdf_field.py
rename to nerfstudio/nerfstudio/fields/sdf_field.py
diff --git a/nerfstudio/fields/semantic_nerf_field.py b/nerfstudio/nerfstudio/fields/semantic_nerf_field.py
similarity index 100%
rename from nerfstudio/fields/semantic_nerf_field.py
rename to nerfstudio/nerfstudio/fields/semantic_nerf_field.py
diff --git a/nerfstudio/fields/tensorf_field.py b/nerfstudio/nerfstudio/fields/tensorf_field.py
similarity index 100%
rename from nerfstudio/fields/tensorf_field.py
rename to nerfstudio/nerfstudio/fields/tensorf_field.py
diff --git a/nerfstudio/fields/vanilla_nerf_field.py b/nerfstudio/nerfstudio/fields/vanilla_nerf_field.py
similarity index 100%
rename from nerfstudio/fields/vanilla_nerf_field.py
rename to nerfstudio/nerfstudio/fields/vanilla_nerf_field.py
diff --git a/nerfstudio/generative/__init__.py b/nerfstudio/nerfstudio/generative/__init__.py
similarity index 100%
rename from nerfstudio/generative/__init__.py
rename to nerfstudio/nerfstudio/generative/__init__.py
diff --git a/nerfstudio/generative/deepfloyd.py b/nerfstudio/nerfstudio/generative/deepfloyd.py
similarity index 100%
rename from nerfstudio/generative/deepfloyd.py
rename to nerfstudio/nerfstudio/generative/deepfloyd.py
diff --git a/nerfstudio/generative/positional_text_embeddings.py b/nerfstudio/nerfstudio/generative/positional_text_embeddings.py
similarity index 100%
rename from nerfstudio/generative/positional_text_embeddings.py
rename to nerfstudio/nerfstudio/generative/positional_text_embeddings.py
diff --git a/nerfstudio/generative/stable_diffusion.py b/nerfstudio/nerfstudio/generative/stable_diffusion.py
similarity index 100%
rename from nerfstudio/generative/stable_diffusion.py
rename to nerfstudio/nerfstudio/generative/stable_diffusion.py
diff --git a/nerfstudio/model_components/__init__.py b/nerfstudio/nerfstudio/model_components/__init__.py
similarity index 100%
rename from nerfstudio/model_components/__init__.py
rename to nerfstudio/nerfstudio/model_components/__init__.py
diff --git a/nerfstudio/model_components/lib_bilagrid.py b/nerfstudio/nerfstudio/model_components/lib_bilagrid.py
similarity index 100%
rename from nerfstudio/model_components/lib_bilagrid.py
rename to nerfstudio/nerfstudio/model_components/lib_bilagrid.py
diff --git a/nerfstudio/model_components/losses.py b/nerfstudio/nerfstudio/model_components/losses.py
similarity index 100%
rename from nerfstudio/model_components/losses.py
rename to nerfstudio/nerfstudio/model_components/losses.py
diff --git a/nerfstudio/model_components/ray_generators.py b/nerfstudio/nerfstudio/model_components/ray_generators.py
similarity index 100%
rename from nerfstudio/model_components/ray_generators.py
rename to nerfstudio/nerfstudio/model_components/ray_generators.py
diff --git a/nerfstudio/model_components/ray_samplers.py b/nerfstudio/nerfstudio/model_components/ray_samplers.py
similarity index 100%
rename from nerfstudio/model_components/ray_samplers.py
rename to nerfstudio/nerfstudio/model_components/ray_samplers.py
diff --git a/nerfstudio/model_components/renderers.py b/nerfstudio/nerfstudio/model_components/renderers.py
similarity index 100%
rename from nerfstudio/model_components/renderers.py
rename to nerfstudio/nerfstudio/model_components/renderers.py
diff --git a/nerfstudio/model_components/scene_colliders.py b/nerfstudio/nerfstudio/model_components/scene_colliders.py
similarity index 100%
rename from nerfstudio/model_components/scene_colliders.py
rename to nerfstudio/nerfstudio/model_components/scene_colliders.py
diff --git a/nerfstudio/model_components/shaders.py b/nerfstudio/nerfstudio/model_components/shaders.py
similarity index 100%
rename from nerfstudio/model_components/shaders.py
rename to nerfstudio/nerfstudio/model_components/shaders.py
diff --git a/nerfstudio/models/__init__.py b/nerfstudio/nerfstudio/models/__init__.py
similarity index 100%
rename from nerfstudio/models/__init__.py
rename to nerfstudio/nerfstudio/models/__init__.py
diff --git a/nerfstudio/models/base_model.py b/nerfstudio/nerfstudio/models/base_model.py
similarity index 100%
rename from nerfstudio/models/base_model.py
rename to nerfstudio/nerfstudio/models/base_model.py
diff --git a/nerfstudio/models/base_surface_model.py b/nerfstudio/nerfstudio/models/base_surface_model.py
similarity index 100%
rename from nerfstudio/models/base_surface_model.py
rename to nerfstudio/nerfstudio/models/base_surface_model.py
diff --git a/nerfstudio/models/depth_nerfacto.py b/nerfstudio/nerfstudio/models/depth_nerfacto.py
similarity index 100%
rename from nerfstudio/models/depth_nerfacto.py
rename to nerfstudio/nerfstudio/models/depth_nerfacto.py
diff --git a/nerfstudio/models/generfacto.py b/nerfstudio/nerfstudio/models/generfacto.py
similarity index 100%
rename from nerfstudio/models/generfacto.py
rename to nerfstudio/nerfstudio/models/generfacto.py
diff --git a/nerfstudio/models/instant_ngp.py b/nerfstudio/nerfstudio/models/instant_ngp.py
similarity index 100%
rename from nerfstudio/models/instant_ngp.py
rename to nerfstudio/nerfstudio/models/instant_ngp.py
diff --git a/nerfstudio/models/mipnerf.py b/nerfstudio/nerfstudio/models/mipnerf.py
similarity index 100%
rename from nerfstudio/models/mipnerf.py
rename to nerfstudio/nerfstudio/models/mipnerf.py
diff --git a/nerfstudio/models/nerfacto.py b/nerfstudio/nerfstudio/models/nerfacto.py
similarity index 100%
rename from nerfstudio/models/nerfacto.py
rename to nerfstudio/nerfstudio/models/nerfacto.py
diff --git a/nerfstudio/models/neus.py b/nerfstudio/nerfstudio/models/neus.py
similarity index 100%
rename from nerfstudio/models/neus.py
rename to nerfstudio/nerfstudio/models/neus.py
diff --git a/nerfstudio/models/neus_facto.py b/nerfstudio/nerfstudio/models/neus_facto.py
similarity index 100%
rename from nerfstudio/models/neus_facto.py
rename to nerfstudio/nerfstudio/models/neus_facto.py
diff --git a/nerfstudio/models/semantic_nerfw.py b/nerfstudio/nerfstudio/models/semantic_nerfw.py
similarity index 100%
rename from nerfstudio/models/semantic_nerfw.py
rename to nerfstudio/nerfstudio/models/semantic_nerfw.py
diff --git a/nerfstudio/models/splatfacto.py b/nerfstudio/nerfstudio/models/splatfacto.py
similarity index 100%
rename from nerfstudio/models/splatfacto.py
rename to nerfstudio/nerfstudio/models/splatfacto.py
diff --git a/nerfstudio/models/tensorf.py b/nerfstudio/nerfstudio/models/tensorf.py
similarity index 100%
rename from nerfstudio/models/tensorf.py
rename to nerfstudio/nerfstudio/models/tensorf.py
diff --git a/nerfstudio/models/vanilla_nerf.py b/nerfstudio/nerfstudio/models/vanilla_nerf.py
similarity index 100%
rename from nerfstudio/models/vanilla_nerf.py
rename to nerfstudio/nerfstudio/models/vanilla_nerf.py
diff --git a/nerfstudio/pipelines/__init__.py b/nerfstudio/nerfstudio/pipelines/__init__.py
similarity index 100%
rename from nerfstudio/pipelines/__init__.py
rename to nerfstudio/nerfstudio/pipelines/__init__.py
diff --git a/nerfstudio/pipelines/base_pipeline.py b/nerfstudio/nerfstudio/pipelines/base_pipeline.py
similarity index 100%
rename from nerfstudio/pipelines/base_pipeline.py
rename to nerfstudio/nerfstudio/pipelines/base_pipeline.py
diff --git a/nerfstudio/pipelines/dynamic_batch.py b/nerfstudio/nerfstudio/pipelines/dynamic_batch.py
similarity index 100%
rename from nerfstudio/pipelines/dynamic_batch.py
rename to nerfstudio/nerfstudio/pipelines/dynamic_batch.py
diff --git a/nerfstudio/plugins/__init__.py b/nerfstudio/nerfstudio/plugins/__init__.py
similarity index 100%
rename from nerfstudio/plugins/__init__.py
rename to nerfstudio/nerfstudio/plugins/__init__.py
diff --git a/nerfstudio/plugins/registry.py b/nerfstudio/nerfstudio/plugins/registry.py
similarity index 100%
rename from nerfstudio/plugins/registry.py
rename to nerfstudio/nerfstudio/plugins/registry.py
diff --git a/nerfstudio/plugins/registry_dataparser.py b/nerfstudio/nerfstudio/plugins/registry_dataparser.py
similarity index 100%
rename from nerfstudio/plugins/registry_dataparser.py
rename to nerfstudio/nerfstudio/plugins/registry_dataparser.py
diff --git a/nerfstudio/plugins/types.py b/nerfstudio/nerfstudio/plugins/types.py
similarity index 100%
rename from nerfstudio/plugins/types.py
rename to nerfstudio/nerfstudio/plugins/types.py
diff --git a/nerfstudio/process_data/__init__.py b/nerfstudio/nerfstudio/process_data/__init__.py
similarity index 100%
rename from nerfstudio/process_data/__init__.py
rename to nerfstudio/nerfstudio/process_data/__init__.py
diff --git a/nerfstudio/process_data/base_converter_to_nerfstudio_dataset.py b/nerfstudio/nerfstudio/process_data/base_converter_to_nerfstudio_dataset.py
similarity index 100%
rename from nerfstudio/process_data/base_converter_to_nerfstudio_dataset.py
rename to nerfstudio/nerfstudio/process_data/base_converter_to_nerfstudio_dataset.py
diff --git a/nerfstudio/process_data/colmap_converter_to_nerfstudio_dataset.py b/nerfstudio/nerfstudio/process_data/colmap_converter_to_nerfstudio_dataset.py
similarity index 100%
rename from nerfstudio/process_data/colmap_converter_to_nerfstudio_dataset.py
rename to nerfstudio/nerfstudio/process_data/colmap_converter_to_nerfstudio_dataset.py
diff --git a/nerfstudio/process_data/colmap_utils.py b/nerfstudio/nerfstudio/process_data/colmap_utils.py
similarity index 100%
rename from nerfstudio/process_data/colmap_utils.py
rename to nerfstudio/nerfstudio/process_data/colmap_utils.py
diff --git a/nerfstudio/process_data/equirect_utils.py b/nerfstudio/nerfstudio/process_data/equirect_utils.py
similarity index 100%
rename from nerfstudio/process_data/equirect_utils.py
rename to nerfstudio/nerfstudio/process_data/equirect_utils.py
diff --git a/nerfstudio/process_data/hloc_utils.py b/nerfstudio/nerfstudio/process_data/hloc_utils.py
similarity index 100%
rename from nerfstudio/process_data/hloc_utils.py
rename to nerfstudio/nerfstudio/process_data/hloc_utils.py
diff --git a/nerfstudio/process_data/images_to_nerfstudio_dataset.py b/nerfstudio/nerfstudio/process_data/images_to_nerfstudio_dataset.py
similarity index 100%
rename from nerfstudio/process_data/images_to_nerfstudio_dataset.py
rename to nerfstudio/nerfstudio/process_data/images_to_nerfstudio_dataset.py
diff --git a/nerfstudio/process_data/metashape_utils.py b/nerfstudio/nerfstudio/process_data/metashape_utils.py
similarity index 100%
rename from nerfstudio/process_data/metashape_utils.py
rename to nerfstudio/nerfstudio/process_data/metashape_utils.py
diff --git a/nerfstudio/process_data/odm_utils.py b/nerfstudio/nerfstudio/process_data/odm_utils.py
similarity index 100%
rename from nerfstudio/process_data/odm_utils.py
rename to nerfstudio/nerfstudio/process_data/odm_utils.py
diff --git a/nerfstudio/process_data/polycam_utils.py b/nerfstudio/nerfstudio/process_data/polycam_utils.py
similarity index 100%
rename from nerfstudio/process_data/polycam_utils.py
rename to nerfstudio/nerfstudio/process_data/polycam_utils.py
diff --git a/nerfstudio/process_data/process_data_utils.py b/nerfstudio/nerfstudio/process_data/process_data_utils.py
similarity index 100%
rename from nerfstudio/process_data/process_data_utils.py
rename to nerfstudio/nerfstudio/process_data/process_data_utils.py
diff --git a/nerfstudio/process_data/realitycapture_utils.py b/nerfstudio/nerfstudio/process_data/realitycapture_utils.py
similarity index 100%
rename from nerfstudio/process_data/realitycapture_utils.py
rename to nerfstudio/nerfstudio/process_data/realitycapture_utils.py
diff --git a/nerfstudio/process_data/record3d_utils.py b/nerfstudio/nerfstudio/process_data/record3d_utils.py
similarity index 100%
rename from nerfstudio/process_data/record3d_utils.py
rename to nerfstudio/nerfstudio/process_data/record3d_utils.py
diff --git a/nerfstudio/process_data/video_to_nerfstudio_dataset.py b/nerfstudio/nerfstudio/process_data/video_to_nerfstudio_dataset.py
similarity index 100%
rename from nerfstudio/process_data/video_to_nerfstudio_dataset.py
rename to nerfstudio/nerfstudio/process_data/video_to_nerfstudio_dataset.py
diff --git a/nerfstudio/py.typed b/nerfstudio/nerfstudio/py.typed
similarity index 100%
rename from nerfstudio/py.typed
rename to nerfstudio/nerfstudio/py.typed
diff --git a/nerfstudio/scripts/__init__.py b/nerfstudio/nerfstudio/scripts/__init__.py
similarity index 100%
rename from nerfstudio/scripts/__init__.py
rename to nerfstudio/nerfstudio/scripts/__init__.py
diff --git a/nerfstudio/scripts/benchmarking/launch_eval_blender.sh b/nerfstudio/nerfstudio/scripts/benchmarking/launch_eval_blender.sh
similarity index 100%
rename from nerfstudio/scripts/benchmarking/launch_eval_blender.sh
rename to nerfstudio/nerfstudio/scripts/benchmarking/launch_eval_blender.sh
diff --git a/nerfstudio/scripts/benchmarking/launch_train_blender.sh b/nerfstudio/nerfstudio/scripts/benchmarking/launch_train_blender.sh
similarity index 100%
rename from nerfstudio/scripts/benchmarking/launch_train_blender.sh
rename to nerfstudio/nerfstudio/scripts/benchmarking/launch_train_blender.sh
diff --git a/nerfstudio/scripts/blender/__init__.py b/nerfstudio/nerfstudio/scripts/blender/__init__.py
similarity index 100%
rename from nerfstudio/scripts/blender/__init__.py
rename to nerfstudio/nerfstudio/scripts/blender/__init__.py
diff --git a/nerfstudio/scripts/blender/nerfstudio_blender.py b/nerfstudio/nerfstudio/scripts/blender/nerfstudio_blender.py
similarity index 100%
rename from nerfstudio/scripts/blender/nerfstudio_blender.py
rename to nerfstudio/nerfstudio/scripts/blender/nerfstudio_blender.py
diff --git a/nerfstudio/scripts/completions/.gitignore b/nerfstudio/nerfstudio/scripts/completions/.gitignore
similarity index 100%
rename from nerfstudio/scripts/completions/.gitignore
rename to nerfstudio/nerfstudio/scripts/completions/.gitignore
diff --git a/nerfstudio/scripts/completions/__init__.py b/nerfstudio/nerfstudio/scripts/completions/__init__.py
similarity index 100%
rename from nerfstudio/scripts/completions/__init__.py
rename to nerfstudio/nerfstudio/scripts/completions/__init__.py
diff --git a/nerfstudio/scripts/completions/install.py b/nerfstudio/nerfstudio/scripts/completions/install.py
similarity index 100%
rename from nerfstudio/scripts/completions/install.py
rename to nerfstudio/nerfstudio/scripts/completions/install.py
diff --git a/nerfstudio/scripts/completions/setup.bash b/nerfstudio/nerfstudio/scripts/completions/setup.bash
similarity index 100%
rename from nerfstudio/scripts/completions/setup.bash
rename to nerfstudio/nerfstudio/scripts/completions/setup.bash
diff --git a/nerfstudio/scripts/completions/setup.zsh b/nerfstudio/nerfstudio/scripts/completions/setup.zsh
similarity index 100%
rename from nerfstudio/scripts/completions/setup.zsh
rename to nerfstudio/nerfstudio/scripts/completions/setup.zsh
diff --git a/nerfstudio/scripts/datasets/process_nuscenes_masks.py b/nerfstudio/nerfstudio/scripts/datasets/process_nuscenes_masks.py
similarity index 100%
rename from nerfstudio/scripts/datasets/process_nuscenes_masks.py
rename to nerfstudio/nerfstudio/scripts/datasets/process_nuscenes_masks.py
diff --git a/nerfstudio/scripts/datasets/process_project_aria.py b/nerfstudio/nerfstudio/scripts/datasets/process_project_aria.py
similarity index 100%
rename from nerfstudio/scripts/datasets/process_project_aria.py
rename to nerfstudio/nerfstudio/scripts/datasets/process_project_aria.py
diff --git a/nerfstudio/scripts/docs/__init__.py b/nerfstudio/nerfstudio/scripts/docs/__init__.py
similarity index 100%
rename from nerfstudio/scripts/docs/__init__.py
rename to nerfstudio/nerfstudio/scripts/docs/__init__.py
diff --git a/nerfstudio/scripts/docs/add_nb_tags.py b/nerfstudio/nerfstudio/scripts/docs/add_nb_tags.py
similarity index 100%
rename from nerfstudio/scripts/docs/add_nb_tags.py
rename to nerfstudio/nerfstudio/scripts/docs/add_nb_tags.py
diff --git a/nerfstudio/scripts/docs/build_docs.py b/nerfstudio/nerfstudio/scripts/docs/build_docs.py
similarity index 100%
rename from nerfstudio/scripts/docs/build_docs.py
rename to nerfstudio/nerfstudio/scripts/docs/build_docs.py
diff --git a/nerfstudio/scripts/eval.py b/nerfstudio/nerfstudio/scripts/eval.py
similarity index 100%
rename from nerfstudio/scripts/eval.py
rename to nerfstudio/nerfstudio/scripts/eval.py
diff --git a/nerfstudio/scripts/exporter.py b/nerfstudio/nerfstudio/scripts/exporter.py
similarity index 100%
rename from nerfstudio/scripts/exporter.py
rename to nerfstudio/nerfstudio/scripts/exporter.py
diff --git a/nerfstudio/scripts/downloads/__init__.py b/nerfstudio/nerfstudio/scripts/github/__init__.py
similarity index 100%
rename from nerfstudio/scripts/downloads/__init__.py
rename to nerfstudio/nerfstudio/scripts/github/__init__.py
diff --git a/nerfstudio/scripts/github/run_actions.py b/nerfstudio/nerfstudio/scripts/github/run_actions.py
similarity index 100%
rename from nerfstudio/scripts/github/run_actions.py
rename to nerfstudio/nerfstudio/scripts/github/run_actions.py
diff --git a/nerfstudio/scripts/licensing/copyright.txt b/nerfstudio/nerfstudio/scripts/licensing/copyright.txt
similarity index 100%
rename from nerfstudio/scripts/licensing/copyright.txt
rename to nerfstudio/nerfstudio/scripts/licensing/copyright.txt
diff --git a/nerfstudio/scripts/licensing/license_headers.sh b/nerfstudio/nerfstudio/scripts/licensing/license_headers.sh
similarity index 100%
rename from nerfstudio/scripts/licensing/license_headers.sh
rename to nerfstudio/nerfstudio/scripts/licensing/license_headers.sh
diff --git a/nerfstudio/scripts/maya/nerfplugin_maya.py b/nerfstudio/nerfstudio/scripts/maya/nerfplugin_maya.py
similarity index 100%
rename from nerfstudio/scripts/maya/nerfplugin_maya.py
rename to nerfstudio/nerfstudio/scripts/maya/nerfplugin_maya.py
diff --git a/nerfstudio/scripts/process_data.py b/nerfstudio/nerfstudio/scripts/process_data.py
similarity index 100%
rename from nerfstudio/scripts/process_data.py
rename to nerfstudio/nerfstudio/scripts/process_data.py
diff --git a/nerfstudio/scripts/render.py b/nerfstudio/nerfstudio/scripts/render.py
similarity index 100%
rename from nerfstudio/scripts/render.py
rename to nerfstudio/nerfstudio/scripts/render.py
diff --git a/nerfstudio/scripts/texture.py b/nerfstudio/nerfstudio/scripts/texture.py
similarity index 100%
rename from nerfstudio/scripts/texture.py
rename to nerfstudio/nerfstudio/scripts/texture.py
diff --git a/nerfstudio/scripts/train.py b/nerfstudio/nerfstudio/scripts/train.py
similarity index 100%
rename from nerfstudio/scripts/train.py
rename to nerfstudio/nerfstudio/scripts/train.py
diff --git a/nerfstudio/scripts/github/__init__.py b/nerfstudio/nerfstudio/scripts/viewer/__init__.py
similarity index 100%
rename from nerfstudio/scripts/github/__init__.py
rename to nerfstudio/nerfstudio/scripts/viewer/__init__.py
diff --git a/nerfstudio/scripts/viewer/run_viewer.py b/nerfstudio/nerfstudio/scripts/viewer/run_viewer.py
similarity index 100%
rename from nerfstudio/scripts/viewer/run_viewer.py
rename to nerfstudio/nerfstudio/scripts/viewer/run_viewer.py
diff --git a/nerfstudio/scripts/viewer/sync_viser_message_defs.py b/nerfstudio/nerfstudio/scripts/viewer/sync_viser_message_defs.py
similarity index 100%
rename from nerfstudio/scripts/viewer/sync_viser_message_defs.py
rename to nerfstudio/nerfstudio/scripts/viewer/sync_viser_message_defs.py
diff --git a/nerfstudio/scripts/viewer/__init__.py b/nerfstudio/nerfstudio/utils/__init__.py
similarity index 100%
rename from nerfstudio/scripts/viewer/__init__.py
rename to nerfstudio/nerfstudio/utils/__init__.py
diff --git a/nerfstudio/utils/available_devices.py b/nerfstudio/nerfstudio/utils/available_devices.py
similarity index 100%
rename from nerfstudio/utils/available_devices.py
rename to nerfstudio/nerfstudio/utils/available_devices.py
diff --git a/nerfstudio/utils/colormaps.py b/nerfstudio/nerfstudio/utils/colormaps.py
similarity index 100%
rename from nerfstudio/utils/colormaps.py
rename to nerfstudio/nerfstudio/utils/colormaps.py
diff --git a/nerfstudio/utils/colors.py b/nerfstudio/nerfstudio/utils/colors.py
similarity index 100%
rename from nerfstudio/utils/colors.py
rename to nerfstudio/nerfstudio/utils/colors.py
diff --git a/nerfstudio/utils/comms.py b/nerfstudio/nerfstudio/utils/comms.py
similarity index 100%
rename from nerfstudio/utils/comms.py
rename to nerfstudio/nerfstudio/utils/comms.py
diff --git a/nerfstudio/utils/decorators.py b/nerfstudio/nerfstudio/utils/decorators.py
similarity index 100%
rename from nerfstudio/utils/decorators.py
rename to nerfstudio/nerfstudio/utils/decorators.py
diff --git a/nerfstudio/utils/eval_utils.py b/nerfstudio/nerfstudio/utils/eval_utils.py
similarity index 100%
rename from nerfstudio/utils/eval_utils.py
rename to nerfstudio/nerfstudio/utils/eval_utils.py
diff --git a/nerfstudio/utils/external.py b/nerfstudio/nerfstudio/utils/external.py
similarity index 100%
rename from nerfstudio/utils/external.py
rename to nerfstudio/nerfstudio/utils/external.py
diff --git a/nerfstudio/utils/install_checks.py b/nerfstudio/nerfstudio/utils/install_checks.py
similarity index 100%
rename from nerfstudio/utils/install_checks.py
rename to nerfstudio/nerfstudio/utils/install_checks.py
diff --git a/nerfstudio/utils/io.py b/nerfstudio/nerfstudio/utils/io.py
similarity index 100%
rename from nerfstudio/utils/io.py
rename to nerfstudio/nerfstudio/utils/io.py
diff --git a/nerfstudio/utils/math.py b/nerfstudio/nerfstudio/utils/math.py
similarity index 100%
rename from nerfstudio/utils/math.py
rename to nerfstudio/nerfstudio/utils/math.py
diff --git a/nerfstudio/utils/misc.py b/nerfstudio/nerfstudio/utils/misc.py
similarity index 100%
rename from nerfstudio/utils/misc.py
rename to nerfstudio/nerfstudio/utils/misc.py
diff --git a/nerfstudio/utils/plotly_utils.py b/nerfstudio/nerfstudio/utils/plotly_utils.py
similarity index 100%
rename from nerfstudio/utils/plotly_utils.py
rename to nerfstudio/nerfstudio/utils/plotly_utils.py
diff --git a/nerfstudio/utils/poses.py b/nerfstudio/nerfstudio/utils/poses.py
similarity index 100%
rename from nerfstudio/utils/poses.py
rename to nerfstudio/nerfstudio/utils/poses.py
diff --git a/nerfstudio/utils/printing.py b/nerfstudio/nerfstudio/utils/printing.py
similarity index 100%
rename from nerfstudio/utils/printing.py
rename to nerfstudio/nerfstudio/utils/printing.py
diff --git a/nerfstudio/utils/profiler.py b/nerfstudio/nerfstudio/utils/profiler.py
similarity index 100%
rename from nerfstudio/utils/profiler.py
rename to nerfstudio/nerfstudio/utils/profiler.py
diff --git a/nerfstudio/utils/rich_utils.py b/nerfstudio/nerfstudio/utils/rich_utils.py
similarity index 100%
rename from nerfstudio/utils/rich_utils.py
rename to nerfstudio/nerfstudio/utils/rich_utils.py
diff --git a/nerfstudio/utils/scripts.py b/nerfstudio/nerfstudio/utils/scripts.py
similarity index 100%
rename from nerfstudio/utils/scripts.py
rename to nerfstudio/nerfstudio/utils/scripts.py
diff --git a/nerfstudio/utils/spherical_harmonics.py b/nerfstudio/nerfstudio/utils/spherical_harmonics.py
similarity index 100%
rename from nerfstudio/utils/spherical_harmonics.py
rename to nerfstudio/nerfstudio/utils/spherical_harmonics.py
diff --git a/nerfstudio/utils/tensor_dataclass.py b/nerfstudio/nerfstudio/utils/tensor_dataclass.py
similarity index 100%
rename from nerfstudio/utils/tensor_dataclass.py
rename to nerfstudio/nerfstudio/utils/tensor_dataclass.py
diff --git a/nerfstudio/utils/writer.py b/nerfstudio/nerfstudio/utils/writer.py
similarity index 100%
rename from nerfstudio/utils/writer.py
rename to nerfstudio/nerfstudio/utils/writer.py
diff --git a/nerfstudio/utils/__init__.py b/nerfstudio/nerfstudio/viewer/__init__.py
similarity index 100%
rename from nerfstudio/utils/__init__.py
rename to nerfstudio/nerfstudio/viewer/__init__.py
diff --git a/nerfstudio/viewer/control_panel.py b/nerfstudio/nerfstudio/viewer/control_panel.py
similarity index 100%
rename from nerfstudio/viewer/control_panel.py
rename to nerfstudio/nerfstudio/viewer/control_panel.py
diff --git a/nerfstudio/viewer/export_panel.py b/nerfstudio/nerfstudio/viewer/export_panel.py
similarity index 100%
rename from nerfstudio/viewer/export_panel.py
rename to nerfstudio/nerfstudio/viewer/export_panel.py
diff --git a/nerfstudio/viewer/render_panel.py b/nerfstudio/nerfstudio/viewer/render_panel.py
similarity index 100%
rename from nerfstudio/viewer/render_panel.py
rename to nerfstudio/nerfstudio/viewer/render_panel.py
diff --git a/nerfstudio/viewer/render_state_machine.py b/nerfstudio/nerfstudio/viewer/render_state_machine.py
similarity index 100%
rename from nerfstudio/viewer/render_state_machine.py
rename to nerfstudio/nerfstudio/viewer/render_state_machine.py
diff --git a/nerfstudio/viewer/server/__init__.py b/nerfstudio/nerfstudio/viewer/server/__init__.py
similarity index 100%
rename from nerfstudio/viewer/server/__init__.py
rename to nerfstudio/nerfstudio/viewer/server/__init__.py
diff --git a/nerfstudio/viewer/server/viewer_elements.py b/nerfstudio/nerfstudio/viewer/server/viewer_elements.py
similarity index 100%
rename from nerfstudio/viewer/server/viewer_elements.py
rename to nerfstudio/nerfstudio/viewer/server/viewer_elements.py
diff --git a/nerfstudio/viewer/utils.py b/nerfstudio/nerfstudio/viewer/utils.py
similarity index 100%
rename from nerfstudio/viewer/utils.py
rename to nerfstudio/nerfstudio/viewer/utils.py
diff --git a/nerfstudio/viewer/viewer.py b/nerfstudio/nerfstudio/viewer/viewer.py
similarity index 100%
rename from nerfstudio/viewer/viewer.py
rename to nerfstudio/nerfstudio/viewer/viewer.py
diff --git a/nerfstudio/viewer/viewer_elements.py b/nerfstudio/nerfstudio/viewer/viewer_elements.py
similarity index 100%
rename from nerfstudio/viewer/viewer_elements.py
rename to nerfstudio/nerfstudio/viewer/viewer_elements.py
diff --git a/nerfstudio/viewer/__init__.py b/nerfstudio/nerfstudio/viewer_legacy/__init__.py
similarity index 100%
rename from nerfstudio/viewer/__init__.py
rename to nerfstudio/nerfstudio/viewer_legacy/__init__.py
diff --git a/nerfstudio/viewer_legacy/app/.env.development b/nerfstudio/nerfstudio/viewer_legacy/app/.env.development
similarity index 100%
rename from nerfstudio/viewer_legacy/app/.env.development
rename to nerfstudio/nerfstudio/viewer_legacy/app/.env.development
diff --git a/nerfstudio/viewer_legacy/app/.eslintrc.json b/nerfstudio/nerfstudio/viewer_legacy/app/.eslintrc.json
similarity index 100%
rename from nerfstudio/viewer_legacy/app/.eslintrc.json
rename to nerfstudio/nerfstudio/viewer_legacy/app/.eslintrc.json
diff --git a/nerfstudio/viewer_legacy/app/.gitignore b/nerfstudio/nerfstudio/viewer_legacy/app/.gitignore
similarity index 100%
rename from nerfstudio/viewer_legacy/app/.gitignore
rename to nerfstudio/nerfstudio/viewer_legacy/app/.gitignore
diff --git a/nerfstudio/viewer_legacy/app/package.json b/nerfstudio/nerfstudio/viewer_legacy/app/package.json
similarity index 100%
rename from nerfstudio/viewer_legacy/app/package.json
rename to nerfstudio/nerfstudio/viewer_legacy/app/package.json
diff --git a/nerfstudio/viewer_legacy/app/public/electron.js b/nerfstudio/nerfstudio/viewer_legacy/app/public/electron.js
similarity index 100%
rename from nerfstudio/viewer_legacy/app/public/electron.js
rename to nerfstudio/nerfstudio/viewer_legacy/app/public/electron.js
diff --git a/nerfstudio/viewer_legacy/app/public/favicon.png b/nerfstudio/nerfstudio/viewer_legacy/app/public/favicon.png
similarity index 100%
rename from nerfstudio/viewer_legacy/app/public/favicon.png
rename to nerfstudio/nerfstudio/viewer_legacy/app/public/favicon.png
diff --git a/nerfstudio/viewer_legacy/app/public/index.html b/nerfstudio/nerfstudio/viewer_legacy/app/public/index.html
similarity index 100%
rename from nerfstudio/viewer_legacy/app/public/index.html
rename to nerfstudio/nerfstudio/viewer_legacy/app/public/index.html
diff --git a/nerfstudio/viewer_legacy/app/public/manifest.json b/nerfstudio/nerfstudio/viewer_legacy/app/public/manifest.json
similarity index 100%
rename from nerfstudio/viewer_legacy/app/public/manifest.json
rename to nerfstudio/nerfstudio/viewer_legacy/app/public/manifest.json
diff --git a/nerfstudio/viewer_legacy/app/public/robots.txt b/nerfstudio/nerfstudio/viewer_legacy/app/public/robots.txt
similarity index 100%
rename from nerfstudio/viewer_legacy/app/public/robots.txt
rename to nerfstudio/nerfstudio/viewer_legacy/app/public/robots.txt
diff --git a/nerfstudio/viewer_legacy/app/requirements.txt b/nerfstudio/nerfstudio/viewer_legacy/app/requirements.txt
similarity index 100%
rename from nerfstudio/viewer_legacy/app/requirements.txt
rename to nerfstudio/nerfstudio/viewer_legacy/app/requirements.txt
diff --git a/nerfstudio/viewer_legacy/app/run_deploy.py b/nerfstudio/nerfstudio/viewer_legacy/app/run_deploy.py
similarity index 100%
rename from nerfstudio/viewer_legacy/app/run_deploy.py
rename to nerfstudio/nerfstudio/viewer_legacy/app/run_deploy.py
diff --git a/nerfstudio/viewer_legacy/app/src/App.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/App.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/App.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/App.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/SceneNode.js b/nerfstudio/nerfstudio/viewer_legacy/app/src/SceneNode.js
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/SceneNode.js
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/SceneNode.js
diff --git a/nerfstudio/viewer_legacy/app/src/index.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/index.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/index.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/index.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/index.scss b/nerfstudio/nerfstudio/viewer_legacy/app/src/index.scss
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/index.scss
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/index.scss
diff --git a/nerfstudio/viewer_legacy/app/src/modules/Banner/Banner.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/Banner/Banner.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/Banner/Banner.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/Banner/Banner.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/Banner/index.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/Banner/index.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/Banner/index.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/Banner/index.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/ConfigPanel/ConfigPanel.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/ConfigPanel/ConfigPanel.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/ConfigPanel/ConfigPanel.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/ConfigPanel/ConfigPanel.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/LandingModal/LandingModal.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/LandingModal/LandingModal.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/LandingModal/LandingModal.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/LandingModal/LandingModal.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/LandingModal/index.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/LandingModal/index.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/LandingModal/index.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/LandingModal/index.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/LoadPathModal/LoadPathModal.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/LoadPathModal/LoadPathModal.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/LoadPathModal/LoadPathModal.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/LoadPathModal/LoadPathModal.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/LoadPathModal/index.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/LoadPathModal/index.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/LoadPathModal/index.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/LoadPathModal/index.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/RenderModal/RenderModal.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/RenderModal/RenderModal.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/RenderModal/RenderModal.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/RenderModal/RenderModal.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/RenderModal/index.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/RenderModal/index.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/RenderModal/index.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/RenderModal/index.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/Scene/Scene.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/Scene/Scene.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/Scene/Scene.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/Scene/Scene.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/Scene/drawing.js b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/Scene/drawing.js
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/Scene/drawing.js
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/Scene/drawing.js
diff --git a/nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/CameraHelper.js b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/CameraHelper.js
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/CameraHelper.js
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/CameraHelper.js
diff --git a/nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/CameraPanel.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/CameraPanel.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/CameraPanel.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/CameraPanel.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/CameraPropPanel.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/CameraPropPanel.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/CameraPropPanel.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/CameraPropPanel.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/curve.js b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/curve.js
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/curve.js
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/curve.js
diff --git a/nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/index.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/index.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/index.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/CameraPanel/index.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ExportPanel/ExportPanel.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ExportPanel/ExportPanel.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/SidePanel/ExportPanel/ExportPanel.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ExportPanel/ExportPanel.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ExportPanel/MeshSubPanel.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ExportPanel/MeshSubPanel.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/SidePanel/ExportPanel/MeshSubPanel.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ExportPanel/MeshSubPanel.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ExportPanel/PointcloudSubPanel.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ExportPanel/PointcloudSubPanel.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/SidePanel/ExportPanel/PointcloudSubPanel.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ExportPanel/PointcloudSubPanel.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ExportPanel/index.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ExportPanel/index.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/SidePanel/ExportPanel/index.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ExportPanel/index.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ScenePanel/ScenePanel.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ScenePanel/ScenePanel.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/SidePanel/ScenePanel/ScenePanel.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ScenePanel/ScenePanel.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ScenePanel/index.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ScenePanel/index.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/SidePanel/ScenePanel/index.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/ScenePanel/index.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/SidePanel/SidePanel.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/SidePanel.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/SidePanel/SidePanel.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/SidePanel.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/SidePanel/StatusPanel/StatusPanel.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/StatusPanel/StatusPanel.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/SidePanel/StatusPanel/StatusPanel.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/StatusPanel/StatusPanel.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/SidePanel/StatusPanel/index.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/StatusPanel/index.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/SidePanel/StatusPanel/index.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/SidePanel/StatusPanel/index.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/ViewerWindow/ViewerWindow.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/ViewerWindow/ViewerWindow.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/ViewerWindow/ViewerWindow.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/ViewerWindow/ViewerWindow.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/ViewerWindow/ViewerWindowSlice.js b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/ViewerWindow/ViewerWindowSlice.js
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/ViewerWindow/ViewerWindowSlice.js
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/ViewerWindow/ViewerWindowSlice.js
diff --git a/nerfstudio/viewer_legacy/app/src/modules/ViewportControlsModal/ViewportControlsModal.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/ViewportControlsModal/ViewportControlsModal.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/ViewportControlsModal/ViewportControlsModal.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/ViewportControlsModal/ViewportControlsModal.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/ViewportControlsModal/index.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/ViewportControlsModal/index.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/ViewportControlsModal/index.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/ViewportControlsModal/index.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/WebSocket/ViserMessages.tsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/WebSocket/ViserMessages.tsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/WebSocket/ViserMessages.tsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/WebSocket/ViserMessages.tsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/WebSocket/ViserWebSocket.tsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/WebSocket/ViserWebSocket.tsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/WebSocket/ViserWebSocket.tsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/WebSocket/ViserWebSocket.tsx
diff --git a/nerfstudio/viewer_legacy/app/src/modules/WebSocketUrlField.jsx b/nerfstudio/nerfstudio/viewer_legacy/app/src/modules/WebSocketUrlField.jsx
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/modules/WebSocketUrlField.jsx
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/modules/WebSocketUrlField.jsx
diff --git a/nerfstudio/viewer_legacy/app/src/reducer.js b/nerfstudio/nerfstudio/viewer_legacy/app/src/reducer.js
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/reducer.js
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/reducer.js
diff --git a/nerfstudio/viewer_legacy/app/src/setupTests.js b/nerfstudio/nerfstudio/viewer_legacy/app/src/setupTests.js
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/setupTests.js
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/setupTests.js
diff --git a/nerfstudio/viewer_legacy/app/src/store.js b/nerfstudio/nerfstudio/viewer_legacy/app/src/store.js
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/store.js
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/store.js
diff --git a/nerfstudio/viewer_legacy/app/src/subscriber.js b/nerfstudio/nerfstudio/viewer_legacy/app/src/subscriber.js
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/subscriber.js
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/subscriber.js
diff --git a/nerfstudio/viewer_legacy/app/src/themes/leva_theme.json b/nerfstudio/nerfstudio/viewer_legacy/app/src/themes/leva_theme.json
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/themes/leva_theme.json
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/themes/leva_theme.json
diff --git a/nerfstudio/viewer_legacy/app/src/themes/theme.ts b/nerfstudio/nerfstudio/viewer_legacy/app/src/themes/theme.ts
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/themes/theme.ts
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/themes/theme.ts
diff --git a/nerfstudio/viewer_legacy/app/src/utils.js b/nerfstudio/nerfstudio/viewer_legacy/app/src/utils.js
similarity index 100%
rename from nerfstudio/viewer_legacy/app/src/utils.js
rename to nerfstudio/nerfstudio/viewer_legacy/app/src/utils.js
diff --git a/nerfstudio/viewer_legacy/app/tsconfig.json b/nerfstudio/nerfstudio/viewer_legacy/app/tsconfig.json
similarity index 100%
rename from nerfstudio/viewer_legacy/app/tsconfig.json
rename to nerfstudio/nerfstudio/viewer_legacy/app/tsconfig.json
diff --git a/nerfstudio/viewer_legacy/app/yarn.lock b/nerfstudio/nerfstudio/viewer_legacy/app/yarn.lock
similarity index 100%
rename from nerfstudio/viewer_legacy/app/yarn.lock
rename to nerfstudio/nerfstudio/viewer_legacy/app/yarn.lock
diff --git a/nerfstudio/viewer_legacy/__init__.py b/nerfstudio/nerfstudio/viewer_legacy/server/__init__.py
similarity index 100%
rename from nerfstudio/viewer_legacy/__init__.py
rename to nerfstudio/nerfstudio/viewer_legacy/server/__init__.py
diff --git a/nerfstudio/viewer_legacy/server/control_panel.py b/nerfstudio/nerfstudio/viewer_legacy/server/control_panel.py
similarity index 100%
rename from nerfstudio/viewer_legacy/server/control_panel.py
rename to nerfstudio/nerfstudio/viewer_legacy/server/control_panel.py
diff --git a/nerfstudio/viewer_legacy/server/gui_utils.py b/nerfstudio/nerfstudio/viewer_legacy/server/gui_utils.py
similarity index 100%
rename from nerfstudio/viewer_legacy/server/gui_utils.py
rename to nerfstudio/nerfstudio/viewer_legacy/server/gui_utils.py
diff --git a/nerfstudio/viewer_legacy/server/path.py b/nerfstudio/nerfstudio/viewer_legacy/server/path.py
similarity index 100%
rename from nerfstudio/viewer_legacy/server/path.py
rename to nerfstudio/nerfstudio/viewer_legacy/server/path.py
diff --git a/nerfstudio/viewer_legacy/server/render_state_machine.py b/nerfstudio/nerfstudio/viewer_legacy/server/render_state_machine.py
similarity index 100%
rename from nerfstudio/viewer_legacy/server/render_state_machine.py
rename to nerfstudio/nerfstudio/viewer_legacy/server/render_state_machine.py
diff --git a/nerfstudio/viewer_legacy/server/state/node.py b/nerfstudio/nerfstudio/viewer_legacy/server/state/node.py
similarity index 100%
rename from nerfstudio/viewer_legacy/server/state/node.py
rename to nerfstudio/nerfstudio/viewer_legacy/server/state/node.py
diff --git a/nerfstudio/viewer_legacy/server/state/state_node.py b/nerfstudio/nerfstudio/viewer_legacy/server/state/state_node.py
similarity index 100%
rename from nerfstudio/viewer_legacy/server/state/state_node.py
rename to nerfstudio/nerfstudio/viewer_legacy/server/state/state_node.py
diff --git a/nerfstudio/viewer_legacy/server/utils.py b/nerfstudio/nerfstudio/viewer_legacy/server/utils.py
similarity index 100%
rename from nerfstudio/viewer_legacy/server/utils.py
rename to nerfstudio/nerfstudio/viewer_legacy/server/utils.py
diff --git a/nerfstudio/viewer_legacy/server/viewer_elements.py b/nerfstudio/nerfstudio/viewer_legacy/server/viewer_elements.py
similarity index 100%
rename from nerfstudio/viewer_legacy/server/viewer_elements.py
rename to nerfstudio/nerfstudio/viewer_legacy/server/viewer_elements.py
diff --git a/nerfstudio/viewer_legacy/server/viewer_state.py b/nerfstudio/nerfstudio/viewer_legacy/server/viewer_state.py
similarity index 100%
rename from nerfstudio/viewer_legacy/server/viewer_state.py
rename to nerfstudio/nerfstudio/viewer_legacy/server/viewer_state.py
diff --git a/nerfstudio/viewer_legacy/server/viewer_utils.py b/nerfstudio/nerfstudio/viewer_legacy/server/viewer_utils.py
similarity index 100%
rename from nerfstudio/viewer_legacy/server/viewer_utils.py
rename to nerfstudio/nerfstudio/viewer_legacy/server/viewer_utils.py
diff --git a/nerfstudio/viewer_legacy/viser/__init__.py b/nerfstudio/nerfstudio/viewer_legacy/viser/__init__.py
similarity index 100%
rename from nerfstudio/viewer_legacy/viser/__init__.py
rename to nerfstudio/nerfstudio/viewer_legacy/viser/__init__.py
diff --git a/nerfstudio/viewer_legacy/viser/gui.py b/nerfstudio/nerfstudio/viewer_legacy/viser/gui.py
similarity index 100%
rename from nerfstudio/viewer_legacy/viser/gui.py
rename to nerfstudio/nerfstudio/viewer_legacy/viser/gui.py
diff --git a/nerfstudio/viewer_legacy/viser/message_api.py b/nerfstudio/nerfstudio/viewer_legacy/viser/message_api.py
similarity index 100%
rename from nerfstudio/viewer_legacy/viser/message_api.py
rename to nerfstudio/nerfstudio/viewer_legacy/viser/message_api.py
diff --git a/nerfstudio/viewer_legacy/viser/messages.py b/nerfstudio/nerfstudio/viewer_legacy/viser/messages.py
similarity index 100%
rename from nerfstudio/viewer_legacy/viser/messages.py
rename to nerfstudio/nerfstudio/viewer_legacy/viser/messages.py
diff --git a/nerfstudio/viewer_legacy/viser/server.py b/nerfstudio/nerfstudio/viewer_legacy/viser/server.py
similarity index 100%
rename from nerfstudio/viewer_legacy/viser/server.py
rename to nerfstudio/nerfstudio/viewer_legacy/viser/server.py
diff --git a/pixi.lock b/nerfstudio/pixi.lock
similarity index 100%
rename from pixi.lock
rename to nerfstudio/pixi.lock
diff --git a/pixi.toml b/nerfstudio/pixi.toml
similarity index 100%
rename from pixi.toml
rename to nerfstudio/pixi.toml
diff --git a/pyproject.toml b/nerfstudio/pyproject.toml
similarity index 100%
rename from pyproject.toml
rename to nerfstudio/pyproject.toml
diff --git a/nerfstudio/scripts/downloads/download_data.py b/nerfstudio/scripts/downloads/download_data.py
deleted file mode 100644
index a2c9d27584..0000000000
--- a/nerfstudio/scripts/downloads/download_data.py
+++ /dev/null
@@ -1,611 +0,0 @@
-# Copyright 2022 the Regents of the University of California, Nerfstudio Team and contributors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Download datasets and specific captures from the datasets."""
-
-from __future__ import annotations
-
-import json
-import os
-import shutil
-import subprocess
-import tarfile
-import zipfile
-from dataclasses import dataclass
-from pathlib import Path
-from typing import TYPE_CHECKING, Union
-
-import gdown
-import torch
-import tyro
-from typing_extensions import Annotated
-
-from nerfstudio.process_data import process_data_utils
-from nerfstudio.scripts.downloads.utils import DatasetDownload
-from nerfstudio.utils import install_checks
-from nerfstudio.utils.scripts import run_command
-
-
-@dataclass
-class BlenderDownload(DatasetDownload):
- """Download the blender dataset."""
-
- def download(self, save_dir: Path):
- """Download the blender dataset."""
- # TODO: give this code the same structure as download_nerfstudio
-
- # https://drive.google.com/uc?id=18JxhpWD-4ZmuFKLzKlAw-w5PpzZxXOcG
- blender_file_id = "18JxhpWD-4ZmuFKLzKlAw-w5PpzZxXOcG"
-
- final_path = save_dir / Path("blender")
- if os.path.exists(final_path):
- shutil.rmtree(str(final_path))
- url = f"https://drive.google.com/uc?id={blender_file_id}"
- download_path = save_dir / "blender_data.zip"
- gdown.download(url, output=str(download_path))
- with zipfile.ZipFile(download_path, "r") as zip_ref:
- zip_ref.extractall(str(save_dir))
- unzip_path = save_dir / Path("nerf_synthetic")
- final_path = save_dir / Path("blender")
- unzip_path.rename(final_path)
- if download_path.exists():
- download_path.unlink()
-
-
-@dataclass
-class Sitcoms3DDownload(DatasetDownload):
- """Download the sitcoms3D dataset."""
-
- def download(self, save_dir: Path):
- """Download the sitcoms3D dataset."""
-
- # https://drive.google.com/file/d/1sgKr0ZO7BQC0FYinAnRSxobIWNucAST5/view?usp=sharing
- sitcoms3d_file_id = "1sgKr0ZO7BQC0FYinAnRSxobIWNucAST5"
-
- # Download the files
- url = f"https://drive.google.com/uc?id={sitcoms3d_file_id}"
- download_path = str(save_dir / "sitcoms3d.zip")
- gdown.download(url, output=download_path)
- with zipfile.ZipFile(download_path, "r") as zip_ref:
- zip_ref.extractall(str(save_dir))
- os.remove(download_path)
- # The folder name of the downloaded dataset is the previously using 'friends/'
- if os.path.exists(str(save_dir / "friends/")):
- os.rename(str(save_dir / "friends/"), str(save_dir / "sitcoms3d/"))
-
-
-def grab_file_id(zip_url: str) -> str:
- """Get the file id from the google drive zip url."""
- s = zip_url.split("/d/")[1]
- return s.split("/")[0]
-
-
-nerfstudio_dataset = [
- "Egypt",
- "person",
- "kitchen",
- "plane",
- "dozer",
- "floating-tree",
- "aspen",
- "stump",
- "sculpture",
- "Giannini-Hall",
-]
-nerfstudio_file_ids = {
- "bww_entrance": grab_file_id("https://drive.google.com/file/d/1ylkRHtfB3n3IRLf2wplpfxzPTq7nES9I/view?usp=sharing"),
- "campanile": grab_file_id("https://drive.google.com/file/d/13aOfGJRRH05pOOk9ikYGTwqFc2L1xskU/view?usp=sharing"),
- "desolation": grab_file_id("https://drive.google.com/file/d/14IzOOQm9KBJ3kPbunQbUTHPnXnmZus-f/view?usp=sharing"),
- "library": grab_file_id("https://drive.google.com/file/d/1Hjbh_-BuaWETQExn2x2qGD74UwrFugHx/view?usp=sharing"),
- "poster": grab_file_id("https://drive.google.com/file/d/1FceQ5DX7bbTbHeL26t0x6ku56cwsRs6t/view?usp=sharing"),
- "redwoods2": grab_file_id("https://drive.google.com/file/d/1rg-4NoXT8p6vkmbWxMOY6PSG4j3rfcJ8/view?usp=sharing"),
- "storefront": grab_file_id("https://drive.google.com/file/d/16b792AguPZWDA_YC4igKCwXJqW0Tb21o/view?usp=sharing"),
- "vegetation": grab_file_id("https://drive.google.com/file/d/1wBhLQ2odycrtU39y2akVurXEAt9SsVI3/view?usp=sharing"),
- "Egypt": grab_file_id("https://drive.google.com/file/d/1YktD85afw7uitC3nPamusk0vcBdAfjlF/view?view?usp=sharing"),
- "person": grab_file_id("https://drive.google.com/file/d/1HsGMwkPu-R7oU7ySMdoo6Eppq8pKhHF3/view?view?usp=sharing"),
- "kitchen": grab_file_id("https://drive.google.com/file/d/1IRmNyNZSNFidyj93Tt5DtaEU9h6eJdi1/view?view?usp=sharing"),
- "plane": grab_file_id("https://drive.google.com/file/d/1tnv2NC2Iwz4XRYNtziUWvLJjObkZNo2D/view?view?usp=sharing"),
- "dozer": grab_file_id("https://drive.google.com/file/d/1jQJPz5PhzTH--LOcCxvfzV_SDLEp1de3/view?view?usp=sharing"),
- "floating-tree": grab_file_id(
- "https://drive.google.com/file/d/1mVEHcO2ep13WPx92IPDvdQg66vLQwFSy/view?view?usp=sharing"
- ),
- "aspen": grab_file_id("https://drive.google.com/file/d/1X1PQcji_QpxGfMxbETKMeK8aOnWCkuSB/view?view?usp=sharing"),
- "stump": grab_file_id("https://drive.google.com/file/d/1yZFAAEvtw2hs4MXrrkvhVAzEliLLXPB7/view?view?usp=sharing"),
- "sculpture": grab_file_id(
- "https://drive.google.com/file/d/1CUU_k0Et2gysuBn_R5qenDMfYXEhNsd1/view?view?usp=sharing"
- ),
- "Giannini-Hall": grab_file_id(
- "https://drive.google.com/file/d/1UkjWXLN4qybq_a-j81FsTKghiXw39O8E/view?view?usp=sharing"
- ),
- "all": None,
- "nerfstudio-dataset": nerfstudio_dataset,
-}
-
-if TYPE_CHECKING:
- NerfstudioCaptureName = str
-else:
- NerfstudioCaptureName = tyro.extras.literal_type_from_choices(nerfstudio_file_ids.keys())
-
-
-def download_capture_name(save_dir: Path, dataset_name: str, capture_name: str, capture_name_to_file_id: dict):
- """Download specific captures a given dataset and capture name."""
-
- file_id_or_zip_url = capture_name_to_file_id[capture_name]
- if file_id_or_zip_url.endswith(".zip"):
- url = file_id_or_zip_url # zip url
- target_path = str(save_dir / dataset_name / capture_name)
- os.makedirs(target_path, exist_ok=True)
- download_path = Path(f"{target_path}.zip")
- tmp_path = str(save_dir / dataset_name / f".temp_{capture_name}")
- shutil.rmtree(tmp_path, ignore_errors=True)
- os.makedirs(tmp_path, exist_ok=True)
- try:
- os.remove(download_path)
- except OSError:
- pass
- run_command(f"wget {url} -O {download_path}", verbose=True)
- else:
- url = f"https://drive.google.com/uc?id={file_id_or_zip_url}" # file id
- target_path = str(save_dir / dataset_name / capture_name)
- os.makedirs(target_path, exist_ok=True)
- download_path = Path(f"{target_path}.zip")
- tmp_path = str(save_dir / dataset_name / f".temp_{capture_name}")
- shutil.rmtree(tmp_path, ignore_errors=True)
- os.makedirs(tmp_path, exist_ok=True)
- try:
- os.remove(download_path)
- except OSError:
- pass
- gdown.download(url, output=str(download_path))
- with zipfile.ZipFile(download_path, "r") as zip_ref:
- zip_ref.extractall(tmp_path)
- inner_folders = os.listdir(tmp_path)
- inner_folders = [folder for folder in inner_folders if folder != "__MACOSX"]
- assert len(inner_folders) == 1, f"There is more than one folder inside this zip file: {inner_folders}"
- folder = os.path.join(tmp_path, inner_folders[0])
- shutil.rmtree(target_path)
- shutil.move(folder, target_path)
- shutil.rmtree(tmp_path)
- os.remove(download_path)
-
-
-@dataclass
-class NerfstudioDownload(DatasetDownload):
- """
- Download data in the Nerfstudio format.
- If you are interested in the Nerfstudio Dataset subset from the SIGGRAPH 2023 paper,
- you can obtain that by using --capture-name nerfstudio-dataset or by visiting Google Drive directly at:
- https://drive.google.com/drive/folders/19TV6kdVGcmg3cGZ1bNIUnBBMD-iQjRbG?usp=drive_link.
- """
-
- capture_name: NerfstudioCaptureName = "bww_entrance"
-
- def download(self, save_dir: Path):
- """Download the nerfstudio dataset."""
- if self.capture_name == "all":
- for capture_name in nerfstudio_file_ids:
- if capture_name not in ("all", "nerfstudio-dataset"):
- download_capture_name(save_dir, "nerfstudio", capture_name, nerfstudio_file_ids)
- return
-
- if self.capture_name == "nerfstudio-dataset":
- for capture_name in nerfstudio_dataset:
- if capture_name not in ("all", "nerfstudio-dataset"):
- download_capture_name(save_dir, "nerfstudio", capture_name, nerfstudio_file_ids)
- return
-
- download_capture_name(save_dir, "nerfstudio", self.capture_name, capture_name_to_file_id=nerfstudio_file_ids)
-
-
-record3d_file_ids = {
- "bear": grab_file_id("https://drive.google.com/file/d/1WRZohWMRj0nNlYFIEBwkddDoGPvLTzkR/view?usp=sharing")
-}
-
-if TYPE_CHECKING:
- Record3dCaptureName = str
-else:
- Record3dCaptureName = tyro.extras.literal_type_from_choices(record3d_file_ids.keys())
-
-
-@dataclass
-class Record3dDownload(DatasetDownload):
- """Download the record3d dataset."""
-
- capture_name: Record3dCaptureName = "bear"
-
- def download(self, save_dir: Path):
- download_capture_name(save_dir, "record3d", self.capture_name, capture_name_to_file_id=record3d_file_ids)
-
-
-@dataclass
-class DNerfDownload(DatasetDownload):
- """Download the dnerf dataset."""
-
- def download(self, save_dir: Path):
- """Download the D-NeRF dataset (https://github.com/albertpumarola/D-NeRF)."""
- # TODO: give this code the same structure as download_nerfstudio
-
- install_checks.check_curl_installed()
- final_path = save_dir / Path("dnerf")
- if os.path.exists(final_path):
- shutil.rmtree(str(final_path))
- download_path = save_dir / "dnerf_data.zip"
- subprocess.run(
- ["curl", "-L", "https://www.dropbox.com/s/raw/0bf6fl0ye2vz3vr/data.zip", "-o", download_path], check=True
- )
- with zipfile.ZipFile(download_path, "r") as zip_ref:
- zip_ref.extractall(str(save_dir))
- unzip_path = save_dir / Path("data")
- final_path = save_dir / Path("dnerf")
- unzip_path.rename(final_path)
- if download_path.exists():
- download_path.unlink()
-
-
-phototourism_downloads = {
- "brandenburg-gate": "https://www.cs.ubc.ca/research/kmyi_data/imw2020/TrainingData/brandenburg_gate.tar.gz",
- "buckingham-palace": "https://www.cs.ubc.ca/research/kmyi_data/imw2020/TrainingData/buckingham_palace.tar.gz",
- "colosseum-exterior": "https://www.cs.ubc.ca/research/kmyi_data/imw2020/TrainingData/colosseum_exterior.tar.gz",
- "grand-palace-brussels": "https://www.cs.ubc.ca/research/kmyi_data/imw2020/TrainingData/grand_place_brussels.tar.gz",
- "notre-dame-facade": "https://www.cs.ubc.ca/research/kmyi_data/imw2020/TrainingData/notre_dame_front_facade.tar.gz",
- "westminster-palace": "https://www.cs.ubc.ca/research/kmyi_data/imw2020/TrainingData/palace_of_westminster.tar.gz",
- "pantheon-exterior": "https://www.cs.ubc.ca/research/kmyi_data/imw2020/TrainingData/pantheon_exterior.tar.gz",
- "taj-mahal": "https://www.cs.ubc.ca/research/kmyi_data/imw2020/TrainingData/taj_mahal.tar.gz",
- "temple-nara": "https://www.cs.ubc.ca/research/kmyi_data/imw2020/TrainingData/temple_nara_japan.tar.gz",
- "trevi-fountain": "https://www.cs.ubc.ca/research/kmyi_data/imw2020/TrainingData/trevi_fountain.tar.gz",
- "all": None,
-}
-
-if TYPE_CHECKING:
- PhototourismCaptureName = str
-else:
- PhototourismCaptureName = tyro.extras.literal_type_from_choices(phototourism_downloads.keys())
-
-
-@dataclass
-class PhototourismDownload(DatasetDownload):
- """Download the phototourism dataset."""
-
- capture_name: PhototourismCaptureName = "brandenburg-gate"
-
- def download(self, save_dir: Path):
- """Download a PhotoTourism dataset: https://www.cs.ubc.ca/~kmyi/imw2020/data.html"""
-
- install_checks.check_curl_installed()
- if self.capture_name == "all":
- for capture_name in phototourism_downloads:
- if capture_name != "all":
- PhototourismDownload(capture_name=capture_name).download(save_dir)
- return
-
- assert self.capture_name in phototourism_downloads, (
- f"Capture name {self.capture_name} not found in {phototourism_downloads.keys()}"
- )
- url = phototourism_downloads[self.capture_name]
- target_path = str(save_dir / "phototourism" / self.capture_name)
- os.makedirs(target_path, exist_ok=True)
- download_path = Path(f"{target_path}.tar.gz")
- tmp_path = str(save_dir / "phototourism" / f".temp_{self.capture_name}")
- shutil.rmtree(tmp_path, ignore_errors=True)
- os.makedirs(tmp_path, exist_ok=True)
-
- subprocess.run(["curl", "-L", url, "-o", download_path], check=True)
-
- with tarfile.open(download_path, "r:gz") as tar_ref:
- tar_ref.extractall(str(tmp_path))
-
- inner_folders = os.listdir(tmp_path)
- assert len(inner_folders) == 1, f"There is more than one folder inside this zip file: {inner_folders}"
- folder = os.path.join(tmp_path, inner_folders[0])
- shutil.rmtree(target_path)
- shutil.move(folder, target_path)
- shutil.rmtree(tmp_path)
- os.remove(download_path)
-
-
-# credit to https://autonomousvision.github.io/sdfstudio/
-
-sdfstudio_downloads = {
- "sdfstudio-demo-data": "https://s3.eu-central-1.amazonaws.com/avg-projects/monosdf/data/sdfstudio-demo-data.tar",
- "dtu": "https://s3.eu-central-1.amazonaws.com/avg-projects/monosdf/data/DTU.tar",
- "replica": "https://s3.eu-central-1.amazonaws.com/avg-projects/monosdf/data/Replica.tar",
- "scannet": "https://s3.eu-central-1.amazonaws.com/avg-projects/monosdf/data/scannet.tar",
- "tanks-and-temple": "https://s3.eu-central-1.amazonaws.com/avg-projects/monosdf/data/tnt_advanced.tar",
- "tanks-and-temple-highres": "https://s3.eu-central-1.amazonaws.com/avg-projects/monosdf/data/highresTNT.tar",
- "heritage": "https://s3.eu-central-1.amazonaws.com/avg-projects/monosdf/data/Heritage-Recon.tar",
- "neural-rgbd-data": "http://kaldir.vc.in.tum.de/neural_rgbd/neural_rgbd_data.zip",
- "all": None,
-}
-
-if TYPE_CHECKING:
- SDFstudioCaptureName = str
-else:
- SDFstudioCaptureName = tyro.extras.literal_type_from_choices(sdfstudio_downloads.keys())
-
-
-@dataclass
-class SDFstudioDemoDownload(DatasetDownload):
- """Download the sdfstudio dataset."""
-
- dataset_name: SDFstudioCaptureName = "sdfstudio-demo-data"
-
- def download(self, save_dir: Path):
- """Download the sdfstudio dataset (https://autonomousvision.github.io/sdfstudio/)."""
- # TODO: give this code the same structure as download_nerfstudio
-
- if self.dataset_name == "all":
- for dataset_name in sdfstudio_downloads:
- if dataset_name != "all":
- SDFstudioDemoDownload(dataset_name=dataset_name).download(save_dir)
- return
-
- assert self.dataset_name in sdfstudio_downloads, (
- f"Capture name {self.dataset_name} not found in {sdfstudio_downloads.keys()}"
- )
-
- url = sdfstudio_downloads[self.dataset_name]
-
- target_path = str(save_dir / "sdfstudio" / self.dataset_name)
- os.makedirs(target_path, exist_ok=True)
-
- file_format = url[-4:]
-
- download_path = Path(f"{target_path}{file_format}")
- tmp_path = str(save_dir / "sdfstudio" / f".temp_{self.dataset_name}")
- shutil.rmtree(tmp_path, ignore_errors=True)
- os.makedirs(tmp_path, exist_ok=True)
-
- subprocess.run(["curl", "-L", url, "-o", download_path], check=True)
- if file_format == ".tar":
- with tarfile.open(download_path, "r") as tar_ref:
- tar_ref.extractall(str(tmp_path))
- elif file_format == ".zip":
- with zipfile.ZipFile(download_path, "r") as zip_ref:
- zip_ref.extractall(str(target_path))
- return
- else:
- raise NotImplementedError
-
- inner_folders = os.listdir(tmp_path)
- assert len(inner_folders) == 1, f"There is more than one folder inside this zip file: {inner_folders}"
- folder = os.path.join(tmp_path, inner_folders[0])
- shutil.rmtree(target_path)
- shutil.move(folder, target_path)
- shutil.rmtree(tmp_path)
- os.remove(download_path)
-
-
-nerfosr_downloads = {
- "europa": "https://nextcloud.mpi-klsb.mpg.de/index.php/s/mGXYKpD8raQ8nMk/download?path=%2FData&files=europa&downloadStartSecret=0k2r95c1fdej",
- "lk2": "https://nextcloud.mpi-klsb.mpg.de/index.php/s/mGXYKpD8raQ8nMk/download?path=%2FData&files=lk2&downloadStartSecret=w8kuvjzmchc",
- "lwp": "https://nextcloud.mpi-klsb.mpg.de/index.php/s/mGXYKpD8raQ8nMk/download?path=%2FData&files=lwp&downloadStartSecret=gtnc4vmkcjq",
- "rathaus": "https://nextcloud.mpi-klsb.mpg.de/index.php/s/mGXYKpD8raQ8nMk/download?path=%2FData&files=rathaus&downloadStartSecret=7372aewy6rr",
- "schloss": "https://nextcloud.mpi-klsb.mpg.de/index.php/s/mGXYKpD8raQ8nMk/download?path=%2FData&files=schloss&downloadStartSecret=y8t00nqx0h",
- "st": "https://nextcloud.mpi-klsb.mpg.de/index.php/s/mGXYKpD8raQ8nMk/download?path=%2FData&files=st&downloadStartSecret=kl9ptuxe8v",
- "stjacob": "https://nextcloud.mpi-klsb.mpg.de/index.php/s/mGXYKpD8raQ8nMk/download?path=%2FData&files=stjacob&downloadStartSecret=sntsim6ebvm",
- "stjohann": "https://nextcloud.mpi-klsb.mpg.de/index.php/s/mGXYKpD8raQ8nMk/download?path=%2FData&files=stjohann&downloadStartSecret=g80ug1fsbmh",
- "trevi": "https://nextcloud.mpi-klsb.mpg.de/index.php/s/mGXYKpD8raQ8nMk/download?path=%2FData&files=trevi&downloadStartSecret=ot1483bigjm",
- "all": None,
-}
-
-
-if TYPE_CHECKING:
- NeRFOSRCaptureName = str
-else:
- NeRFOSRCaptureName = tyro.extras.literal_type_from_choices(nerfosr_downloads.keys())
-
-
-@dataclass
-class NeRFOSRDownload(DatasetDownload):
- """Download the NeRF-OSR dataset."""
-
- capture_name: NeRFOSRCaptureName = "europa"
-
- def download(self, save_dir: Path):
- """Download the NeRF-OSR dataset: https://nextcloud.mpi-klsb.mpg.de/index.php/s/mGXYKpD8raQ8nMk"""
-
- if self.capture_name == "all":
- for capture_name in nerfosr_downloads:
- if capture_name != "all":
- NeRFOSRDownload(capture_name=capture_name).download(save_dir)
- return
-
- assert self.capture_name in nerfosr_downloads, (
- f"Capture name {self.capture_name} not found in {nerfosr_downloads.keys()}"
- )
- url = nerfosr_downloads[self.capture_name]
- target_path = str(save_dir / "nerfosr" / self.capture_name)
- os.makedirs(target_path, exist_ok=True)
- download_path = Path(f"{target_path}.zip")
- tmp_path = str(save_dir / "nerfosr" / f".temp_{self.capture_name}")
- shutil.rmtree(tmp_path, ignore_errors=True)
- os.makedirs(tmp_path, exist_ok=True)
-
- subprocess.run(["curl", "-L", url, "-o", download_path], check=True)
-
- # Extract the zip file
- with zipfile.ZipFile(download_path, "r") as zip_ref:
- zip_ref.extractall(tmp_path)
-
- inner_folders = os.listdir(tmp_path)
- assert len(inner_folders) == 1, f"There is more than one folder inside this zip file: {inner_folders}"
- folder = os.path.join(tmp_path, inner_folders[0])
- shutil.rmtree(target_path)
- shutil.move(folder, target_path)
- shutil.rmtree(tmp_path)
- os.remove(download_path)
-
-
-mill19_downloads = {
- "building": "https://storage.cmusatyalab.org/mega-nerf-data/building-pixsfm.tgz",
- "rubble": "https://storage.cmusatyalab.org/mega-nerf-data/rubble-pixsfm.tgz",
- "all": None,
-}
-
-if TYPE_CHECKING:
- Mill19CaptureName = str
-else:
- Mill19CaptureName = tyro.extras.literal_type_from_choices(mill19_downloads.keys())
-
-
-@dataclass
-class Mill19Download(DatasetDownload):
- """Download the Mill 19 dataset."""
-
- capture_name: Mill19CaptureName = "building"
-
- def download(self, save_dir: Path) -> None:
- """Download a Mill 19 dataset: https://meganerf.cmusatyalab.org/#data"""
-
- install_checks.check_curl_installed()
- if self.capture_name == "all":
- for capture_name in mill19_downloads:
- if capture_name != "all":
- Mill19Download(capture_name=capture_name).download(save_dir)
- return
-
- assert self.capture_name in mill19_downloads, (
- f"Capture name {self.capture_name} not found in {mill19_downloads.keys()}"
- )
- url = mill19_downloads[self.capture_name]
- target_path = save_dir / "mill19" / self.capture_name
- target_path.mkdir(parents=True, exist_ok=True)
- download_path = Path(f"{target_path}.tgz")
- tmp_path = save_dir / "mill19" / f".temp_{self.capture_name}"
- shutil.rmtree(tmp_path, ignore_errors=True)
- tmp_path.mkdir(parents=True, exist_ok=True)
-
- subprocess.run(["curl", "-L", url, "-o", download_path], check=True)
-
- with tarfile.open(download_path, "r:gz") as tar_ref:
- tar_ref.extractall(tmp_path)
-
- inner_folders = list(tmp_path.iterdir())
- assert len(inner_folders) == 1, f"There is more than one folder inside this zip file: {inner_folders}"
- folder = inner_folders[0]
- shutil.rmtree(target_path)
- folder.rename(target_path)
- shutil.rmtree(tmp_path)
- download_path.unlink()
-
- # Convert data layout into what the nerfstudio dataparser expects
- meta = {"frames": []}
- for subdir, prefix in [("train", "train_"), ("val", "eval_")]:
- copied_images = process_data_utils.copy_images(
- target_path / subdir / "rgbs",
- image_dir=target_path / "images",
- image_prefix=prefix,
- num_downscales=3,
- verbose=True,
- keep_image_dir=True,
- )
-
- split_filepaths = []
- for image_path, new_image_path in copied_images.items():
- metadata_path = image_path.parent.parent / "metadata" / f"{image_path.stem}.pt"
- metadata = torch.load(metadata_path, map_location="cpu")
- c2w = torch.eye(4)
- c2w[:3] = metadata["c2w"]
- file_path = str(Path("images") / f"{new_image_path.name}")
- split_filepaths.append(file_path)
- meta["frames"].append(
- {
- "file_path": file_path,
- "fl_x": metadata["intrinsics"][0].item(),
- "fl_y": metadata["intrinsics"][1].item(),
- "cx": metadata["intrinsics"][2].item(),
- "cy": metadata["intrinsics"][3].item(),
- "w": metadata["W"],
- "h": metadata["H"],
- "transform_matrix": c2w.tolist(),
- }
- )
- meta[f"{subdir}_filenames"] = split_filepaths
-
- with (target_path / "transforms.json").open("w") as f:
- json.dump(meta, f, indent=4)
-
- shutil.rmtree(target_path / "train")
- shutil.rmtree(target_path / "val")
-
-
-Commands = Union[
- Annotated[BlenderDownload, tyro.conf.subcommand(name="blender")],
- Annotated[Sitcoms3DDownload, tyro.conf.subcommand(name="sitcoms3d")],
- Annotated[NerfstudioDownload, tyro.conf.subcommand(name="nerfstudio")],
- Annotated[Record3dDownload, tyro.conf.subcommand(name="record3d")],
- Annotated[DNerfDownload, tyro.conf.subcommand(name="dnerf")],
- Annotated[PhototourismDownload, tyro.conf.subcommand(name="phototourism")],
- Annotated[SDFstudioDemoDownload, tyro.conf.subcommand(name="sdfstudio")],
- Annotated[NeRFOSRDownload, tyro.conf.subcommand(name="nerfosr")],
- Annotated[Mill19Download, tyro.conf.subcommand(name="mill19")],
-]
-
-
-@dataclass
-class NotInstalled(DatasetDownload):
- def main(self) -> None: ...
-
-
-# Add eyefultower subcommand if awscli is installed.
-try:
- import awscli
-except ImportError:
- awscli = None
-
-if awscli is not None:
- from nerfstudio.scripts.downloads.eyeful_tower import EyefulTowerDownload
-
- Commands = Union[
- Commands,
- Annotated[EyefulTowerDownload, tyro.conf.subcommand(name="eyefultower")],
- ]
-else:
- Commands = Union[
- Commands,
- Annotated[
- NotInstalled,
- tyro.conf.subcommand(
- name="eyefultower",
- description="**Not installed.** Downloading EyefulTower data requires `pip install awscli`.",
- ),
- ],
- ]
-
-
-def main(
- dataset: DatasetDownload,
-):
- """Script to download existing datasets.
- We currently support the datasets listed above in the Commands.
-
- Args:
- dataset: The dataset to download (from).
- """
- dataset.save_dir.mkdir(parents=True, exist_ok=True)
-
- dataset.download(dataset.save_dir)
-
-
-def entrypoint():
- """Entrypoint for use with pyproject scripts."""
- tyro.extras.set_accent_color("bright_yellow")
- main(tyro.cli(Commands))
-
-
-if __name__ == "__main__":
- entrypoint()
-
-# For sphinx docs
-get_parser_fn = lambda: tyro.extras.get_parser(Commands) # noqa
diff --git a/nerfstudio/scripts/downloads/eyeful_tower.py b/nerfstudio/scripts/downloads/eyeful_tower.py
deleted file mode 100644
index b9d5d8c26e..0000000000
--- a/nerfstudio/scripts/downloads/eyeful_tower.py
+++ /dev/null
@@ -1,431 +0,0 @@
-# Copyright 2022 the Regents of the University of California, Nerfstudio Team and contributors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import collections
-import copy
-import json
-import sys
-import xml.etree.ElementTree as ET
-from dataclasses import dataclass
-from pathlib import Path
-from typing import TYPE_CHECKING, Tuple
-
-import numpy as np
-import tyro
-
-try:
- import awscli.clidriver
-except ImportError:
- print("awscli is required for EyefulTower download. Please install it with `pip install awscli`.")
- sys.exit(1)
-
-from nerfstudio.scripts.downloads.utils import DatasetDownload
-from nerfstudio.utils.rich_utils import CONSOLE
-
-eyefultower_downloads = [
- "all",
- "apartment",
- "kitchen",
- "office1a",
- "office1b",
- "office2",
- "office_view1",
- "office_view2",
- "riverview",
- "seating_area",
- "table",
- "workshop",
- "raf_emptyroom",
- "raf_furnishedroom",
-]
-
-# Crop radii empirically chosen to try to avoid hitting the rig base or go out of bounds
-eyefultower_fisheye_radii = {
- "office1a": 0.43,
- "office2": 0.45,
- "seating_area": 0.375, # could be .45 except for camera 2
- "table": 0.45,
- "workshop": 0.45,
-}
-
-
-@dataclass
-class EyefulTowerResolutionMetadata:
- folder_name: str
- width: int
- height: int
- extension: str
-
-
-eyefultower_resolutions = {
- "all": None,
- "jpeg_1k": EyefulTowerResolutionMetadata("images-jpeg-1k", 684, 1024, "jpg"),
- "jpeg_2k": EyefulTowerResolutionMetadata("images-jpeg-2k", 1368, 2048, "jpg"),
- "jpeg_4k": EyefulTowerResolutionMetadata("images-jpeg-4k", 2736, 4096, "jpg"),
- "jpeg_8k": EyefulTowerResolutionMetadata("images-jpeg", 5784, 8660, "jpg"),
- "exr_1k": EyefulTowerResolutionMetadata("images-1k", 684, 1024, "exr"),
- "exr_2k": EyefulTowerResolutionMetadata("images-2k", 1368, 2048, "exr"),
-}
-
-if TYPE_CHECKING:
- EyefulTowerCaptureName = str
- EyefulTowerResolution = str
-else:
- EyefulTowerCaptureName = tyro.extras.literal_type_from_choices(eyefultower_downloads)
- EyefulTowerResolution = tyro.extras.literal_type_from_choices(eyefultower_resolutions.keys())
-
-
-@dataclass
-class EyefulTowerDownload(DatasetDownload):
- """Download the EyefulTower dataset.
-
- Use the --help flag with the `eyefultower` subcommand to see all available datasets.
- Find more information about the dataset at https://github.com/facebookresearch/EyefulTower.
- """
-
- capture_name: Tuple[EyefulTowerCaptureName, ...] = ()
- resolution_name: Tuple[EyefulTowerResolution, ...] = ()
-
- @staticmethod
- def scale_metashape_transform(xml_tree: ET.ElementTree, target_width: int, target_height: int) -> ET.ElementTree:
- """Rescales parameters in metashape's cameras.xml format to match target width/height.
-
- The EyefulTower dataset provides images which have already been rescaled to smaller sizes from the original ~8K
- resolution. However, the cameras.xml file provided, which contains the camera intrinsics in metashape's format,
- only contains valid parameters for the original resolution. This function generates a new set of parameters
- corresponding to a smaller resolution dataset by scaling the original values from cameras.xml. Non-uniform
- scaling (different in X and Y) can be performed due to slight rounding differences.
-
- Args:
- xml_tree: XML tree loaded from Metashape's cameras.xml file
- target_width: Width of output images
- target_height: Height of output images
-
- Returns:
- Updated XML tree with scaled intrinsics and width/height parameters
- """
- transformed = copy.deepcopy(xml_tree)
-
- root = transformed.getroot()
- assert len(root) == 1
- chunk = root[0]
- sensors = chunk.find("sensors")
- assert sensors is not None
-
- for sensor in sensors:
- resolution = sensor.find("resolution")
- assert resolution is not None, "Resolution not found in EyefulTower camera.xml"
- original_width = int(resolution.get("width")) # type: ignore
- original_height = int(resolution.get("height")) # type: ignore
-
- if original_width > original_height:
- target_width, target_height = max(target_width, target_height), min(target_width, target_height)
- else:
- target_height, target_width = max(target_width, target_height), min(target_width, target_height)
-
- resolution.set("width", str(target_width))
- resolution.set("height", str(target_height))
-
- calib = sensor.find("calibration")
- assert calib is not None, "Calibration not found in EyefulTower sensor"
-
- calib_resolution = calib.find("resolution")
- assert calib_resolution is not None
- calib_resolution.set("width", str(target_width))
- calib_resolution.set("height", str(target_height))
-
- # Compute each scale individually and average for better rounding
- x_scale = target_width / original_width
- y_scale = target_height / original_height
- scale = (x_scale + y_scale) / 2.0
-
- f = calib.find("f")
- assert f is not None and f.text is not None, "f not found in calib"
- f.text = str(float(f.text) * scale)
-
- cx = calib.find("cx")
- assert cx is not None and cx.text is not None, "cx not found in calib"
- cx.text = str(float(cx.text) * x_scale)
-
- cy = calib.find("cy")
- assert cy is not None and cy.text is not None, "cy not found in calib"
- cy.text = str(float(cy.text) * y_scale)
-
- # TODO: Maybe update pixel_width / pixel_height / focal_length / layer_index?
-
- return transformed
-
- @staticmethod
- def convert_cameras_to_nerfstudio_transforms(
- capture_name: str, cameras: dict, splits: dict, target_width: int, target_height: int, extension: str
- ) -> dict:
- """Converts EyefulTower cameras.json format to Nerfstudio's transforms.json format
-
- The EyefulTower dataset provides a cameras.json file containing geometric calibration information for the
- original resolution ~8K images, similar to the cameras.xml file from Metashape. The main advantage is that data
- is provided for each individual image, rather than being structured hierarchically with rig constraints (as in
- the Metashape cameras.xml).
-
- This function takes the cameras.json file and converts it to the transforms.json Nerfstudio expects, with the
- necessary scaling of intrinsics parameters applied. This function also handles the EyefulTower splits.json file,
- describing the breakdown of training and validation images, and adds the appropriate fields to transforms.json.
- This function works for both fisheye (V1) and pinhole (V2) cameras. Scene-specific fisheye mask radii are added
- to the returned dictionary if needed.
-
- Args:
- capture_name: Which specific EyefulTower capture is being converted
- cameras: Data loaded from EyefulTower cameras.json
- splits: Data loaded from EyefulTower splits.json
- target_width: Width of output images
- target_height: Height of output images
- extension: Extension of output images
-
- Returns:
- Dict in the Nerfstudio transforms.json format, with scaled camera parameters, splits, and optional metadata.
- """
- output = {}
-
- distortion_models = [c["distortionModel"] for c in cameras["KRT"]]
- distortion_model = list(set(distortion_models))
- assert len(distortion_model) == 1
- distortion_model = distortion_model[0]
- if distortion_model == "RadialAndTangential":
- output["camera_model"] = "OPENCV"
- elif distortion_model == "Fisheye":
- output["camera_model"] = "OPENCV_FISHEYE"
- output["fisheye_crop_radius"] = eyefultower_fisheye_radii[capture_name]
- else:
- raise NotImplementedError(f"Camera model {distortion_model} not implemented")
-
- split_sets = {k: set(v) for k, v in splits.items()}
-
- frames = []
- split_filenames = collections.defaultdict(list)
- for camera in cameras["KRT"]:
- frame = {}
- # TODO EXR
- frame["file_path"] = camera["cameraId"] + f".{extension}"
- for split in split_sets:
- if camera["cameraId"] in split_sets[split]:
- split_filenames[split].append(frame["file_path"])
-
- original_width = camera["width"]
- original_height = camera["height"]
- if original_width > original_height:
- target_width, target_height = max(target_width, target_height), min(target_width, target_height)
- else:
- target_height, target_width = max(target_width, target_height), min(target_width, target_height)
- x_scale = target_width / original_width
- y_scale = target_height / original_height
-
- frame["w"] = target_width
- frame["h"] = target_height
- K = np.array(camera["K"]).T # Data stored as column-major
- frame["fl_x"] = K[0][0] * x_scale
- frame["fl_y"] = K[1][1] * y_scale
- frame["cx"] = K[0][2] * x_scale
- frame["cy"] = K[1][2] * y_scale
-
- if distortion_model == "RadialAndTangential":
- # pinhole: [k1, k2, p1, p2, k3]
- frame["k1"] = camera["distortion"][0]
- frame["k2"] = camera["distortion"][1]
- frame["k3"] = camera["distortion"][4]
- frame["k4"] = 0.0
- frame["p1"] = camera["distortion"][2]
- frame["p2"] = camera["distortion"][3]
- elif distortion_model == "Fisheye":
- # fisheye: [k1, k2, k3, _, _, _, p1, p2]
- frame["k1"] = camera["distortion"][0]
- frame["k2"] = camera["distortion"][1]
- frame["k3"] = camera["distortion"][2]
- frame["p1"] = camera["distortion"][6]
- frame["p2"] = camera["distortion"][7]
- else:
- raise NotImplementedError("This shouldn't happen")
-
- T = np.array(camera["T"]).T # Data stored as column-major
- T = np.linalg.inv(T)
- T = T[[2, 0, 1, 3], :]
- T[:, 1:3] *= -1
- frame["transform_matrix"] = T.tolist()
-
- frames.append(frame)
-
- frames = sorted(frames, key=lambda f: f["file_path"])
-
- output["frames"] = frames
- output["train_filenames"] = split_filenames["train"]
- output["val_filenames"] = split_filenames["test"]
- output["test_filenames"] = []
- return output
-
- @staticmethod
- def subsample_nerfstudio_transforms(transforms: dict, n: int):
- """Uniformly samples n frames from a Nerfstudio transforms.json dict.
-
- Args:
- transforms: Dictionary in Nerfstudio transforms.json format
- n: Number of frames to uniformly subsample
-
- Returns:
- New transforms.json dict with n frames. All other parameters are copied.
- """
- target = min(len(transforms["frames"]), n)
- indices = np.round(np.linspace(0, len(transforms["frames"]) - 1, target)).astype(int)
-
- frames = []
- for i in indices:
- frames.append(transforms["frames"][i])
-
- output = copy.deepcopy(transforms)
- output["frames"] = frames
-
- # Remove the unused files from the splits
- filenames = {f["file_path"] for f in frames}
- for key in ["train_filenames", "val_filenames"]:
- output[key] = sorted(list(set(transforms[key]) & filenames))
-
- return output
-
- def download(self, save_dir: Path) -> None:
- """Entrypoint to download the EyefulTower dataset.
-
- * Fetches the specified dataset(s) at the specified resolution(s) from the EyefulTower AWS S3 bucket. Redundant
- data is not downloaded, so this function can safely (and performantly) be called multiple times with
- increasing scope of datasets and resolutions.
- * Generates updated Metashape cameras.xml for lower resolution downloads.
- * Generates Nerfstudio transform.json for each resolution. Additionally generates transforms_300.json and
- transforms_half.json containing subsets (300 frames, half the frames) of the full set to help with iteration.
-
- Args:
- save_dir: Directory to save dataset. Output will be in save_dir/eyefultower/
- """
- if len(self.capture_name) == 0:
- self.capture_name = ("riverview",)
- CONSOLE.print(
- f"No capture specified, using {self.capture_name} by default.",
- "Add `--help` to this command to see all available captures.",
- )
-
- if len(self.resolution_name) == 0:
- self.resolution_name = ("jpeg_2k",)
- CONSOLE.print(
- f"No resolution specified, using {self.resolution_name} by default.",
- "Add `--help` to this command to see all available resolutions.",
- )
-
- captures = set()
- for capture in self.capture_name:
- if capture == "all":
- captures.update([c for c in eyefultower_downloads if c != "all"])
- else:
- captures.add(capture)
- captures = sorted(captures)
- if len(captures) == 0:
- CONSOLE.print("[bold yellow]WARNING: No EyefulTower captures specified. Nothing will be downloaded.")
-
- resolutions = set()
- for resolution in self.resolution_name:
- if resolution == "all":
- resolutions.update([r for r in eyefultower_resolutions.keys() if r != "all"])
- else:
- resolutions.add(resolution)
- resolutions = sorted(resolutions)
- if len(resolutions) == 0:
- CONSOLE.print("[bold yellow]WARNING: No EyefulTower resolutions specified. Nothing will be downloaded.")
-
- driver = awscli.clidriver.create_clidriver()
-
- for i, capture in enumerate(captures):
- base_url = f"s3://fb-baas-f32eacb9-8abb-11eb-b2b8-4857dd089e15/EyefulTower/{capture}/"
- output_path = save_dir / "eyefultower" / capture
- includes = []
- for resolution in resolutions:
- includes.extend(["--include", f"{eyefultower_resolutions[resolution].folder_name}/*"])
- command = (
- ["s3", "sync", "--no-sign-request", "--only-show-errors", "--exclude", "images*/*"]
- + includes
- + [base_url, str(output_path)]
- )
- CONSOLE.print(f"[EyefulTower Capture {i + 1: >2d}/{len(captures)}]: '{capture}'")
- print(
- f"\tDownloading resolutions {resolutions}",
- f"to '{output_path.resolve()}' with command `aws {' '.join(command)}` ...",
- end=" ",
- flush=True,
- )
- driver.main(command)
- print("done!")
-
- # After downloading, we'll insert an appropriate cameras.xml file into each directory. It's quick enough
- # that we can just redo it every time this is called, regardless of whether new data is downloaded.
- xml_input_path = output_path / "cameras.xml"
- if not xml_input_path.exists:
- CONSOLE.print(
- "\t[bold yellow]WARNING: cameras.xml not found. Scaled cameras.xml will not be generated."
- )
- else:
- tree = ET.parse(output_path / "cameras.xml")
-
- for resolution in resolutions:
- metadata = eyefultower_resolutions[resolution]
- xml_output_path = output_path / metadata.folder_name / "cameras.xml"
- print(
- f"\tGenerating cameras.xml for '{resolution}' to '{xml_output_path.resolve()}' ... ",
- end=" ",
- flush=True,
- )
- scaled_tree = self.scale_metashape_transform(tree, metadata.width, metadata.height)
- scaled_tree.write(xml_output_path)
- print("done!")
-
- json_input_path = output_path / "cameras.json"
- splits_input_path = output_path / "splits.json"
- if not json_input_path.exists:
- CONSOLE.print("\t[bold yellow]WARNING: cameras.json not found. transforms.json will not be generated.")
- elif not splits_input_path.exists:
- CONSOLE.print("\t[bold yellow]WARNING: splits.json not found. transforms.json will not be generated.")
- else:
- with open(json_input_path, "r") as f:
- cameras = json.load(f)
-
- with open(splits_input_path, "r") as f:
- splits = json.load(f)
-
- for resolution in resolutions:
- metadata = eyefultower_resolutions[resolution]
- json_output_path = output_path / metadata.folder_name / "transforms.json"
- print(
- f"\tGenerating transforms.json for '{resolution}' to '{json_output_path.resolve()}' ... ",
- end=" ",
- flush=True,
- )
- transforms = self.convert_cameras_to_nerfstudio_transforms(
- capture, cameras, splits, metadata.width, metadata.height, metadata.extension
- )
-
- with open(json_output_path, "w", encoding="utf8") as f:
- json.dump(transforms, f, indent=4)
-
- for count, name in [
- (300, "transforms_300.json"),
- (int(len(cameras["KRT"]) // 2), "transforms_half.json"),
- ]:
- subsampled = self.subsample_nerfstudio_transforms(transforms, count)
- with open(json_output_path.with_name(name), "w", encoding="utf8") as f:
- json.dump(subsampled, f, indent=4)
-
- print("done!")
diff --git a/nerfstudio/scripts/downloads/utils.py b/nerfstudio/scripts/downloads/utils.py
deleted file mode 100644
index 72054edb03..0000000000
--- a/nerfstudio/scripts/downloads/utils.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2022 the Regents of the University of California, Nerfstudio Team and contributors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from dataclasses import dataclass
-from pathlib import Path
-
-from nerfstudio.configs.base_config import PrintableConfig
-
-
-@dataclass
-class DatasetDownload(PrintableConfig):
- """Download a dataset"""
-
- capture_name = None
-
- save_dir: Path = Path("data/")
- """The directory to save the dataset to"""
-
- def download(self, save_dir: Path) -> None:
- """Download the dataset"""
- raise NotImplementedError
diff --git a/tests/cameras/test_cameras.py b/nerfstudio/tests/cameras/test_cameras.py
similarity index 100%
rename from tests/cameras/test_cameras.py
rename to nerfstudio/tests/cameras/test_cameras.py
diff --git a/tests/cameras/test_rays.py b/nerfstudio/tests/cameras/test_rays.py
similarity index 100%
rename from tests/cameras/test_rays.py
rename to nerfstudio/tests/cameras/test_rays.py
diff --git a/tests/data/configs/test_config1.yml b/nerfstudio/tests/data/configs/test_config1.yml
similarity index 100%
rename from tests/data/configs/test_config1.yml
rename to nerfstudio/tests/data/configs/test_config1.yml
diff --git a/tests/data/configs/test_config2.yml b/nerfstudio/tests/data/configs/test_config2.yml
similarity index 100%
rename from tests/data/configs/test_config2.yml
rename to nerfstudio/tests/data/configs/test_config2.yml
diff --git a/tests/data/lego_test/train/r_0.png b/nerfstudio/tests/data/lego_test/train/r_0.png
similarity index 100%
rename from tests/data/lego_test/train/r_0.png
rename to nerfstudio/tests/data/lego_test/train/r_0.png
diff --git a/tests/data/lego_test/transforms_train.json b/nerfstudio/tests/data/lego_test/transforms_train.json
similarity index 100%
rename from tests/data/lego_test/transforms_train.json
rename to nerfstudio/tests/data/lego_test/transforms_train.json
diff --git a/tests/data/lego_test/transforms_val.json b/nerfstudio/tests/data/lego_test/transforms_val.json
similarity index 100%
rename from tests/data/lego_test/transforms_val.json
rename to nerfstudio/tests/data/lego_test/transforms_val.json
diff --git a/tests/data/lego_test/val/r_0.png b/nerfstudio/tests/data/lego_test/val/r_0.png
similarity index 100%
rename from tests/data/lego_test/val/r_0.png
rename to nerfstudio/tests/data/lego_test/val/r_0.png
diff --git a/tests/data/minimal_parser/train.npz b/nerfstudio/tests/data/minimal_parser/train.npz
similarity index 100%
rename from tests/data/minimal_parser/train.npz
rename to nerfstudio/tests/data/minimal_parser/train.npz
diff --git a/tests/data/minimal_parser/val.npz b/nerfstudio/tests/data/minimal_parser/val.npz
similarity index 100%
rename from tests/data/minimal_parser/val.npz
rename to nerfstudio/tests/data/minimal_parser/val.npz
diff --git a/tests/data/test_datamanager.py b/nerfstudio/tests/data/test_datamanager.py
similarity index 100%
rename from tests/data/test_datamanager.py
rename to nerfstudio/tests/data/test_datamanager.py
diff --git a/tests/dataparsers/test_nerfstudio_dataparser.py b/nerfstudio/tests/dataparsers/test_nerfstudio_dataparser.py
similarity index 100%
rename from tests/dataparsers/test_nerfstudio_dataparser.py
rename to nerfstudio/tests/dataparsers/test_nerfstudio_dataparser.py
diff --git a/tests/field_components/test_embedding.py b/nerfstudio/tests/field_components/test_embedding.py
similarity index 100%
rename from tests/field_components/test_embedding.py
rename to nerfstudio/tests/field_components/test_embedding.py
diff --git a/tests/field_components/test_encodings.py b/nerfstudio/tests/field_components/test_encodings.py
similarity index 100%
rename from tests/field_components/test_encodings.py
rename to nerfstudio/tests/field_components/test_encodings.py
diff --git a/tests/field_components/test_field_outputs.py b/nerfstudio/tests/field_components/test_field_outputs.py
similarity index 100%
rename from tests/field_components/test_field_outputs.py
rename to nerfstudio/tests/field_components/test_field_outputs.py
diff --git a/tests/field_components/test_fields.py b/nerfstudio/tests/field_components/test_fields.py
similarity index 100%
rename from tests/field_components/test_fields.py
rename to nerfstudio/tests/field_components/test_fields.py
diff --git a/tests/field_components/test_mlp.py b/nerfstudio/tests/field_components/test_mlp.py
similarity index 100%
rename from tests/field_components/test_mlp.py
rename to nerfstudio/tests/field_components/test_mlp.py
diff --git a/tests/field_components/test_temporal_distortions.py b/nerfstudio/tests/field_components/test_temporal_distortions.py
similarity index 100%
rename from tests/field_components/test_temporal_distortions.py
rename to nerfstudio/tests/field_components/test_temporal_distortions.py
diff --git a/tests/model_components/test_losses.py b/nerfstudio/tests/model_components/test_losses.py
similarity index 100%
rename from tests/model_components/test_losses.py
rename to nerfstudio/tests/model_components/test_losses.py
diff --git a/tests/model_components/test_ray_sampler.py b/nerfstudio/tests/model_components/test_ray_sampler.py
similarity index 100%
rename from tests/model_components/test_ray_sampler.py
rename to nerfstudio/tests/model_components/test_ray_sampler.py
diff --git a/tests/model_components/test_renderers.py b/nerfstudio/tests/model_components/test_renderers.py
similarity index 100%
rename from tests/model_components/test_renderers.py
rename to nerfstudio/tests/model_components/test_renderers.py
diff --git a/tests/pipelines/test_vanilla_pipeline.py b/nerfstudio/tests/pipelines/test_vanilla_pipeline.py
similarity index 100%
rename from tests/pipelines/test_vanilla_pipeline.py
rename to nerfstudio/tests/pipelines/test_vanilla_pipeline.py
diff --git a/tests/plugins/test_registry.py b/nerfstudio/tests/plugins/test_registry.py
similarity index 100%
rename from tests/plugins/test_registry.py
rename to nerfstudio/tests/plugins/test_registry.py
diff --git a/tests/process_data/test_misc.py b/nerfstudio/tests/process_data/test_misc.py
similarity index 100%
rename from tests/process_data/test_misc.py
rename to nerfstudio/tests/process_data/test_misc.py
diff --git a/tests/process_data/test_process_images.py b/nerfstudio/tests/process_data/test_process_images.py
similarity index 100%
rename from tests/process_data/test_process_images.py
rename to nerfstudio/tests/process_data/test_process_images.py
diff --git a/tests/scripts/test_exporter.py b/nerfstudio/tests/scripts/test_exporter.py
similarity index 100%
rename from tests/scripts/test_exporter.py
rename to nerfstudio/tests/scripts/test_exporter.py
diff --git a/tests/test_nerfacto_integration.py b/nerfstudio/tests/test_nerfacto_integration.py
similarity index 100%
rename from tests/test_nerfacto_integration.py
rename to nerfstudio/tests/test_nerfacto_integration.py
diff --git a/tests/test_splatfacto_integration.py b/nerfstudio/tests/test_splatfacto_integration.py
similarity index 100%
rename from tests/test_splatfacto_integration.py
rename to nerfstudio/tests/test_splatfacto_integration.py
diff --git a/tests/test_train.py b/nerfstudio/tests/test_train.py
similarity index 100%
rename from tests/test_train.py
rename to nerfstudio/tests/test_train.py
diff --git a/tests/utils/test_aabb_intersection.py b/nerfstudio/tests/utils/test_aabb_intersection.py
similarity index 100%
rename from tests/utils/test_aabb_intersection.py
rename to nerfstudio/tests/utils/test_aabb_intersection.py
diff --git a/tests/utils/test_poses.py b/nerfstudio/tests/utils/test_poses.py
similarity index 100%
rename from tests/utils/test_poses.py
rename to nerfstudio/tests/utils/test_poses.py
diff --git a/tests/utils/test_spherical_harmonics.py b/nerfstudio/tests/utils/test_spherical_harmonics.py
similarity index 100%
rename from tests/utils/test_spherical_harmonics.py
rename to nerfstudio/tests/utils/test_spherical_harmonics.py
diff --git a/tests/utils/test_tensor_dataclass.py b/nerfstudio/tests/utils/test_tensor_dataclass.py
similarity index 100%
rename from tests/utils/test_tensor_dataclass.py
rename to nerfstudio/tests/utils/test_tensor_dataclass.py
diff --git a/tests/utils/test_visualization.py b/nerfstudio/tests/utils/test_visualization.py
similarity index 100%
rename from tests/utils/test_visualization.py
rename to nerfstudio/tests/utils/test_visualization.py
diff --git a/nerfstudio/viewer_legacy/server/__init__.py b/nerfstudio/viewer_legacy/server/__init__.py
deleted file mode 100644
index 21acafa240..0000000000
--- a/nerfstudio/viewer_legacy/server/__init__.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright 2022 the Regents of the University of California, Nerfstudio Team and contributors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.