Task 1.1¶

Generate 360 views of a mesh

Output of task 1:
rotating_cow

Task 1.2¶

Dolly Zoom

dolly

Task 2.1¶

Contructing a tetrahedron

Output of task 2.1:

rotating_tetrahedron

The tetrahedron has 4 vertices and 4 faces.

Task 2.2¶

Generating a Cube Mesh

Output of task 2.2:

rotating_cube

The tetrahedron has 8 vertices and 12 faces.

Task 3.1¶

Output of task 3.1:

rotating_recolored_cow

color1 is Blue, and color2 is Red

Task 4¶

Part A

transformations1

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

transformations2

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

transformations3

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

transformations4

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¶

point_cloud1

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:
torus

Render of object of choice:
droplet

Task 5.3¶

Render of torus:
torus_mesh

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:
droplet_mesh

Task 6¶

To have fun

Generating an animated robot gif with custom meshes:
fun

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.
sampled_cow