Assignment 1 - Rendering Basics

Nanaki Singh

1.1 - 360 degree renders Cow mesh with 360*

Cow with 360* render

2.1 - Constructing a Tetrahedron

Number of vertices: 4 Number of faces: 4

360* animation of tetrahedron

2.2 - Constructing a Cube

Number of vertices: 6 Number of faces: 12

360* animation of cube

3 - Re-texturing a mesh

Color 1: [0, 0, 1] = pure blue Color 2: [1, 0, 0] = pure red

Color interpolation on a cow's surface based on z-coordinate

4 - Camera Transformations

R_relative is a rotation matrix (3x3) that is applied ontop of the original rotation (nothing - [[1, 0, 0], [0, 1, 0], [0, 0, 1]]). Changing its paramaters effectively act to rotate the image along the x, y, and z-axis as defined by generic rotation matrices. T_relative is a translation matric that simply shifts the camera in the x,y, and z-coordinate frame. The old T is first rotated by R_relative and then the T_relative change is applied on top.

  • R_relative: [[0, -0.866, 0.5], [-1, 0, 0], [0, 0.5, 0.866]]
  • T_relative: [-0.2, 0, 1.2]

Rotation using own choice of R_relative and T_relative

5.1 - Rendering Point Clouds from RGB-D Images

side-by-side gif of 2 singular (middle and far right) and 1 combined point cloud (far left)

5.2 - Parametric Functions

Both points clouds were down sampled to reduce computation time

Torus

360* gif of torus shape

Mobius strip half (my choice)

360* gif of half a Mobius strip shape

5.3 - Implicit Surfaces

Trade off of rendering a mesh vs a point cloud:

  • Rendering speed: faster for point cloud because it only involves plotting points in 3D space. Meshes are composed on vertices and faces and requires rasterizing each triangular mesh which is time consuming and computational more expensive.
  • Rendering quality: Meshes are of higher quality because theire faces are smoother surfaces and are typically rendered with some definable texture and lighting conditions (with a surface that is able to capture shadows and bright spots). Points are lower quality and depending on the number of sampled points/resolution, you could see holes in the data.
  • Ease of use: Point clouds - preferable for model training tasks because their raw data is easy to process/is structured. Meshes - benefitilal if you are hoping to analyze/visualize a 3D object because you can extract surface normal and depth information, augment texture and gain a better understanding of how the 3D object interacts with its surroundings.
  • Memory usage: Mesh storage is significantly greater because we store vertex points, face coordinates and texture information per vertex. Storage consumption is also based on resolution of object.

Both Mesh and Point Cloud representations serve different purposes. For high resolution, detailed representations where there is little concern for storage and computation costs, meshes are preferred. To understand the general structure and store minimal, uncorrelated information about point information that can be easily processed by a machine learning model, a point cloud is preferred.

Torus Mesh

360* gif of torus mesh

Mobius strip (my choice)

360* gif of a Mobius strip mesh

6 - Something fun

I manually outlined the vertices and faces for an octahedron shape and used interpolation with 2 base colors to create a two-toned texture. The colors changed from red to blue based on the y-axis value of the 3D object.

Something fun!

7 - Sampling points on a mesh

Triangular mesh vs point cloud: 10 points

Triangular mesh vs point cloud: 100 points

Triangular mesh vs point cloud: 1000 points

Triangular mesh vs point cloud: 10000 points