mirror of
https://github.com/facebookresearch/pytorch3d.git
synced 2025-08-01 11:22:49 +08:00
small website updates
Summary: Small fixes to website rendering Reviewed By: jcjohnson Differential Revision: D23281746 fbshipit-source-id: c9dc8edd5e52f39d4e0e19f10ecc7e035b39feda
This commit is contained in:
parent
9aeb88b48e
commit
c25fd83694
@ -1,3 +1,8 @@
|
||||
---
|
||||
hide_title: true
|
||||
sidebar_label: Cameras
|
||||
---
|
||||
|
||||
# Cameras
|
||||
|
||||
## Camera Coordinate Systems
|
||||
@ -6,7 +11,7 @@ When working with 3D data, there are 4 coordinate systems users need to know
|
||||
* **World coordinate system**
|
||||
This is the system the object/scene lives - the world.
|
||||
* **Camera view coordinate system**
|
||||
This is the system that has its origin on the image plane and the `Z`-axis perpendicular to the image plane. In PyTorch3D, we assume that `+X` points left, and `+Y` points up and `+Z` points out from the image plane. The transformation from world to view happens after applying a rotation (`R`) and translation (`T`).
|
||||
This is the system that has its origin on the image plane and the `Z`-axis perpendicular to the image plane. In PyTorch3D, we assume that `+X` points left, and `+Y` points up and `+Z` points out from the image plane. The transformation from world to view happens after applying a rotation (`R`) and translation (`T`).
|
||||
* **NDC coordinate system**
|
||||
This is the normalized coordinate system that confines in a volume the renderered part of the object/scene. Also known as view volume. Under the PyTorch3D convention, `(+1, +1, znear)` is the top left near corner, and `(-1, -1, zfar)` is the bottom right far corner of the volume. The transformation from view to NDC happens after applying the camera projection matrix (`P`).
|
||||
* **Screen coordinate system**
|
||||
@ -19,7 +24,7 @@ An illustration of the 4 coordinate systems is shown below
|
||||
|
||||
Cameras in PyTorch3D transform an object/scene from world to NDC by first transforming the object/scene to view (via transforms `R` and `T`) and then projecting the 3D object/scene to NDC (via the projection matrix `P`, else known as camera matrix). Thus, the camera parameters in `P` are assumed to be in NDC space. If the user has camera parameters in screen space, which is a common use case, the parameters should transformed to NDC (see below for an example)
|
||||
|
||||
We describe the camera types in PyTorch3D and the convention for the camera parameters provided at construction time.
|
||||
We describe the camera types in PyTorch3D and the convention for the camera parameters provided at construction time.
|
||||
|
||||
### Camera Types
|
||||
|
||||
@ -28,12 +33,12 @@ All cameras inherit from `CamerasBase` which is a base class for all cameras. Py
|
||||
* `get_world_to_view_transform` which returns a 3D transform from world coordinates to the camera view coordinates (R, T)
|
||||
* `get_full_projection_transform` which composes the projection transform (P) with the world-to-view transform (R, T)
|
||||
* `transform_points` which takes a set of input points in world coordinates and projects to NDC coordinates ranging from [-1, -1, znear] to [+1, +1, zfar].
|
||||
* `transform_points_screen` which takes a set of input points in world coordinates and projects them to the screen coordinates ranging from [0, 0, znear] to [W-1, H-1, zfar]
|
||||
* `transform_points_screen` which takes a set of input points in world coordinates and projects them to the screen coordinates ranging from [0, 0, znear] to [W-1, H-1, zfar]
|
||||
|
||||
Users can easily customize their own cameras. For each new camera, users should implement the `get_projection_transform` routine that returns the mapping `P` from camera view coordinates to NDC coordinates.
|
||||
|
||||
#### FoVPerspectiveCameras, FoVOrthographicCameras
|
||||
These two cameras follow the OpenGL convention for perspective and orthographic cameras respectively. The user provides the near `znear` and far `zfar` field which confines the view volume in the `Z` axis. The view volume in the `XY` plane is defined by field of view angle (`fov`) in the case of `FoVPerspectiveCameras` and by `min_x, min_y, max_x, max_y` in the case of `FoVOrthographicCameras`.
|
||||
These two cameras follow the OpenGL convention for perspective and orthographic cameras respectively. The user provides the near `znear` and far `zfar` field which confines the view volume in the `Z` axis. The view volume in the `XY` plane is defined by field of view angle (`fov`) in the case of `FoVPerspectiveCameras` and by `min_x, min_y, max_x, max_y` in the case of `FoVOrthographicCameras`.
|
||||
|
||||
#### PerspectiveCameras, OrthographicCameras
|
||||
These two cameras follow the Multi-View Geometry convention for cameras. The user provides the focal length (`fx`, `fy`) and the principal point (`px`, `py`). For example, `camera = PerspectiveCameras(focal_length=((fx, fy),), principal_point=((px, py),))`
|
||||
|
@ -1,3 +1,8 @@
|
||||
---
|
||||
hide_title: true
|
||||
sidebar_label: Cubify
|
||||
---
|
||||
|
||||
# Cubify
|
||||
|
||||
The [cubify operator](https://github.com/facebookresearch/pytorch3d/blob/master/pytorch3d/ops/cubify.py) converts an 3D occupancy grid of shape `BxDxHxW`, where `B` is the batch size, into a mesh instantiated as a [Meshes](https://github.com/facebookresearch/pytorch3d/blob/master/pytorch3d/structures/meshes.py) data structure of `B` elements. The operator replaces every occupied voxel (if its occupancy probability is greater than a user defined threshold) with a cuboid of 12 faces and 8 vertices. Shared vertices are merged, and internal faces are removed resulting in a **watertight** mesh.
|
||||
|
@ -1,3 +1,8 @@
|
||||
---
|
||||
hide_title: true
|
||||
sidebar_label: Data loaders
|
||||
---
|
||||
|
||||
# Data loaders for common 3D Datasets
|
||||
|
||||
### ShapetNetCore
|
||||
|
@ -41,7 +41,7 @@ Rendering requires transformations between several different coordinate frames:
|
||||
|
||||
For example, given a teapot mesh, the world coordinate frame, camera coordiante frame and image are show in the figure below. Note that the world and camera coordinate frames have the +z direction pointing in to the page.
|
||||
|
||||
<img src="assets/world_camera_image.png" width="1000">
|
||||
<img src="assets/world_camera_image.jpg" width="1000">
|
||||
|
||||
---
|
||||
|
||||
|
@ -131,10 +131,7 @@ loss_chamfer, _ = chamfer_distance(sample_sphere, sample_test)
|
||||
<Container>
|
||||
<ol>
|
||||
<li>
|
||||
<strong>Install PyTorch3D:</strong>
|
||||
<p>See the instructions
|
||||
<a href="https://github.com/facebookresearch/pytorch3d/blob/master/INSTALL.md">here</a>.
|
||||
</p>
|
||||
<strong>Install PyTorch3D </strong> (following the instructions <a href="https://github.com/facebookresearch/pytorch3d/blob/master/INSTALL.md">here</a>)
|
||||
</li>
|
||||
<li>
|
||||
<strong>Try a few 3D operators </strong>
|
||||
|
Loading…
x
Reference in New Issue
Block a user