16-825 Assignment 1: Rendering Basics with PyTorch3D

Name: Abhishek Mathur

Andrew ID: armathur

1. Practicing with Cameras

1.1 360-degree Renders

1.2 Dolly Zoom

2. Practicing with Meshes

2.1 Tetrahedron

Vertices: 5 | Faces: 4

2.2 Cube

Vertices: 8 | Faces: 12

3. Re-texturing a Mesh

Chosen Colors: color1 = [0.5, 0.5, 1], color2 = [1, 0.5, 0.5]

4. Camera Transformations

Camera Transformations

1. Camera Rotated 90° Leftward (around z-axis)

The camera is rotated counterclockwise in the xy-plane.
R1:

          [ cos(90°)   -sin(90°)   0 ]
          [ sin(90°)    cos(90°)   0 ]
          [    0           0       1 ]
                
T1:
          [ 0, 0, 0 ]
                

2. Camera Translated Backward Along z-axis

The camera is pushed away from the mesh, increasing its z-translation.
R2:

          [ 1  0  0 ]
          [ 0  1  0 ]
          [ 0  0  1 ]
                
T2:
          [ 0, 0, +3 ]
                

3. Camera translated to the right

The camera moves to the right, making the mesh move left in the image
R3:

           [ 1  0  0 ]
          [ 0  1  0 ]
          [ 0  0  1 ]
                
T3:
          [ 0, 0, 3 ]
                

4. Camera Rotated 90° Around y-axis (side view)

The camera moves to the right side of the mesh, looking back toward the origin.
R4:

          [  cos(90°)   0   sin(90°) ]
          [     0       1      0     ]
          [ -sin(90°)   0   cos(90°) ]
                
T4:
          [ 3, 0, 0 ]
                

5. Rendering Generic 3D Representations

5.1 RGB-D Point Clouds

Point Cloud 1
Point Cloud 2
Point Cloud 3 - Combined

5.2 Parametric Functions

Torus

Additional Object: Ellipsoid

5.3 Implicit Surfaces

Mesh of Torus

Some of the tradeoffs for mesh vs point cloud can be summarized as follows:

Rendering Speed
Point clouds are faster to render, because points are primitives that don't have any well defined features which need complex rasterization methods. So if a GPU is used, then large point clouds can be rendered easily. Meshes on the other hand need polygon rasterization, shading and texture mapping which can slow down overall rendering.
Rendering Quality
Point clouds lack explicit surfaces and so the rendering quality is limited by the density of points. Holes can appear in sparse point clouds, and surface interpolation can only improve the density but cannot provide photorealism. Meshes can provide high quality rendering with smooth surfaces, detailed textures and realistic lighting effects.
Memory Usage
Point clouds use lesser memory for sparse data, but for highly dense clouds, memory usage can grow exponentially. Meshes provide the connectivity factor between edges and so they capture more area with encoded connectivity, which can be more efficient.
Ease of Usage
LIDARs or depth cameras directly render point clouds, so they are very good for quick visualization. Meshes need to be reconstructed from point clouds and will always need some preprocessing steps before they can be used.
Applications
Point clouds are used for 3D monitoring, sensor data and especially SLAM methods. Mehses are used for graphics, gaming, simulations and photorealistic rendering.

Mesh of Mobius Strip

6. Do Something Fun

Here's who the Avengers fear: Dr. Doom himself!!!