Assignment 1¶

1. Practicing with Cameras (15 Points)¶

1.1. 360-degree Renders (5 points)¶

360 renders cow

1.2 Re-creating the Dolly Zoom (10 points)¶

dolly zoom

2. Practicing with Meshes (10 Points)¶

2.1 Constructing a Tetrahedron (5 points)¶

tetrahedron

vertices = [[0.0,0.0,0.0], [-1.0,-1.0,-1.0], [-1.0,-1.0,1.0], [1.0,-1.0,0.0]]
faces = [[0, 1, 2], [0, 2, 3], [1, 2, 3], [0, 1, 3]]

Number of vertices = 4
Number of faces = 4

2.2 Constructing a Cube (5 points)¶

cube mesh

vertices = [[0.0,0.0,0.0], [1.0,0.0,0.0], [1.0,0.0,1.0], [0.0,0.0,1.0], [0.0,-1.0,0.0], [1.0,-1.0,0.0], [1.0,-1.0,1.0], [0.0,-1.0,1.0]]
faces = [[0, 1, 2], [0, 2, 3], [4, 5, 6], [4, 6, 7], [0, 4, 5], [0, 1, 5], [1, 5, 6], [1, 2, 6], [2, 6, 7], [2, 3, 7], [3, 7, 4], [3, 1, 4]]

Number of vertices = 8
Number of faces = 12

3. Re-texturing a mesh (10 points)¶

color cow

color1 = [0,0,1] (blue)
color2 = [1,0,0] (red)

4. Camera Transformations (10 points)¶

4a

R_relative is the rotation matrix for rotating it counterclockwise by 270 degrees along the z axis (R_z(270)). There is no translation here so T_relative is all 0s

R_relative=[[0, 1, 0], [-1, 0, 0], [0, 0, 1]]
T_relative=[0, 0, 0]

4b

R_relative is the identity matrix as there is no rotation here. T_relative is now changed on the z as there is a z translation here (camera is moved back)

R_relative=[[1, 0, 0], [0, 1, 0], [0, 0, 1]]
T_relative=[0, 0, 3]

4c

R_relative is the identity matrix as there is no rotation here as well. T_relative is now changed with the x translation being 1 as the camera is shifted to the right.

R_relative=[[1, 0, 0], [0, 1, 0], [0, 0, 1]]
T_relative=[1, 0, 0]

4c

R_relative is the rotation matrix for rotating it counterclockwise by 90 degrees along the y axis (R_y(90)). In order to move the camera so that is looks at the cow model rather than look at nothing, it is moved along the x and z directions.

R_relative=[[0, 0, 1], [0, 1, 0], [-1, 0, 0]] T_relative=[-3, 0, 3]

5. Rendering Generic 3D Representations (45 Points)¶

5.1 Rendering Point Clouds from RGB-D Images (10 points)¶

5a 5a 5a

5.2 Parametric Functions (10 + 5 points)¶

Torus
5a

Trefoil Knot
5a

5.3 Implicit Surfaces (15 + 5 points)¶

Torus
5a

Tradeoffs:

  • Speed: it is a lot faster to render a pointcloud than it is to render a mesh as a 2D grid of points can be directly used with parametric equations to get x,y,z points and then rendered at pointclouds, rather than having to first get voxels, then marching cubes to get a mesh.
  • Rendering Quality: The quality of the mesh is not as smooth as the point cloud because it has first been converted to voxels which is more descrete and less continuous. (This would vary based on the number of points in the point cloud. If the point cloud had only a few points, then holes become apparent and the mesh representation allows to full up those holes which might be a better representation)
  • Ease of use: It is easier to define point clouds than meshes as we do not have to worry about getting faces and sampling vertices.
  • Memory usage: Point clouds use less memory than meshes.

Cone
5a

6. Do Something Fun (10 points)¶

Changing texture over time

5a

(Extra Credit) 7. Sampling Points on Meshes (10 points)¶

7