diff --git a/mattport/nerf/cameras.py b/mattport/nerf/cameras.py new file mode 100644 index 000000000..51dd72a62 --- /dev/null +++ b/mattport/nerf/cameras.py @@ -0,0 +1,41 @@ +""" +Camera Models +""" +from dataclasses import dataclass +from torchtyping import TensorType + + +@dataclass +class Rays: + """Camera rays. Can be arbitrary dimension""" + + origin: TensorType[..., 3] + direction: TensorType[..., 3] + + +class Camera: + """Base Camera. Intended to be subclassed""" + + def __init__(self, height, width, camera_to_world) -> None: + self.height = height + self.width = width + self.camera_to_world = camera_to_world + + def get_rays(self, coords: TensorType[..., 2]) -> Rays: + """Encodes an input tensor. + + Args: + coords (TensorType[..., 2]): Input tensor to be encoded + + Returns: + TensorType[..., "output_dim"]: A encoded input tensor + """ + raise NotImplementedError + + def get_all_rays(self) -> Rays: + """Generate rays for entire camera + + Returns: + Rays: Camera rays of shape [height, width] + """ + raise NotImplementedError diff --git a/mattport/nerf/loss.py b/mattport/nerf/loss.py new file mode 100644 index 000000000..e69de29bb diff --git a/mattport/nerf/renderer.py b/mattport/nerf/renderer.py new file mode 100644 index 000000000..e69de29bb diff --git a/mattport/nerf/sampler.py b/mattport/nerf/sampler.py new file mode 100644 index 000000000..e69de29bb diff --git a/mattport/nerf/trainer.py b/mattport/nerf/trainer.py new file mode 100644 index 000000000..e69de29bb diff --git a/mattport/structures/__init__.py b/mattport/structures/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/mattport/utils/__init__.py b/mattport/utils/__init__.py new file mode 100644 index 000000000..e69de29bb