Task 1.1¶
Generate 360 views of a mesh
Output of task 1:

Task 1.2¶
Dolly Zoom

Task 2.1¶
Contructing a tetrahedron
Output of task 2.1:

The tetrahedron has 4 vertices and 4 faces.
Task 2.2¶
Generating a Cube Mesh
Output of task 2.2:

The tetrahedron has 8 vertices and 12 faces.
Task 3.1¶
Output of task 3.1:

color1 is Blue, and color2 is Red
Task 4¶
Part A

For part A, we need a transformation to rotate the camera along the Z-axis in a clockwise fashion. As pytorch3D reqiures a world to camera matrix, we will need to transpose the matrix with R.T.
Part B

For part B, we need a transformation to translate the camera in the negative Z direction. We can specify t = [0, 0, 3] in the camera to world form and compute T_relative = -Rt to get the relative translation.
Part C

For part C, we need to create a transformation that moves the camera to the left (negative X direcction) and up (positive Y direction). We can specify t = [-0.5, 0.5, 0] in the camera to world form and compute T_relative = -Rt to get the relative translation.
Part D

For part D, we need to create a transformation that translates the camera by -3 in the Z direction (move it to the origin) then -3 in the X direction (move it to the right of the cow). Thus t = [-3, 0, -3] We also need to rotate the camera 90 degrees anti-clockwise along the Y-axis to face the cow.
We then compute R_relative = R.T and T_relative = -Rt to get the world to camera convention taken in by pytorch3D.
Task 5.1¶

Left: Point cloud from image 1
Middle: Point cloud from image 2
Right: Union of point clouds from images 1 and 2
Task 5.2¶
Render of torus:

Render of object of choice:

Task 5.3¶
Render of torus:

Comparing Rendering a Mesh vs point cloud:
rendering speed: Rasterizing triangles can be more efficient than rendering points as GPUs currently have specialized compute for rasterizing triangles.
rendering quality: The quality of rendering a triangle is better than that of rendering points as point coluds are often spare and do not cover the mesh well.
ease of use: Point clouds are generally easier to use since connectivity does not need to be considered when performing transformations.
memory usage: Point clouds require less memory as they do not need to store the vertex associations required for faces in meshes.
Render of custom object of choice:

Task 6¶
To have fun
Generating an animated robot gif with custom meshes:

Task 7 (Extra credit)¶
Mesh (Left most) and point clouds generated by sampling mesh with 10, 100, 1000, 10000 points respectively from left to right.
