16-889 Assignment 1
Ben Eisner
This is my first assignment. It is being submitted 1 day late (unless we use AoE in this course...). No CSS because
it's late and I'm tired.
1. Practicing with Cameras
1.1. 360-degree Renders (5 points)
We orbit the cow.
1.2 Re-creating the Dolly Zoom (10 points)
I made sure that the cow ends up being the same relative size across frames.
2. Practicing with Meshes
2.1 Constructing a Tetrahedron (5 points)
I built a tetrahedron. It has 4 vertices and 4 faces.
2.2 Constructing a Cube (5 points)
I made a cube. It has 6 vertices, and 12 faces (since each square face consists of 2 triangles, and there are 6
square faces).
3. Re-texturing a mesh (10 points)
I chose to use color 1 as a nice yellow, and color 2 a red. It creates a nice gradient.
4. Camera Transformations (20 points)
Image 1
This transform involved rotating the camera around its z axis.
Image 2
Move the camera back in the z direction.
Image 3
Move the camera in the positive y direction, and in the negative x direction.
Image 4
First, rotate the camera 90 degrees. Since we started with an offset, we have to compensate for that offset in the x
direction in the camera frame, and apply another z offset to be able to see the object at the same distance.
5. Rendering Generic 3D Representations
5.1 Rendering Point Clouds from RGB-D Images (10 points)
5.2 Parametric Functions (10 points)
This is my torus. There are many like it, but this one is mine.
5.3 Implicit Surfaces (15 points)
A weirder torus made of triangles. Tradeoffs of rendering meshes vs. pointclouds:
- Rendering speed: if a surface is relatively simple/smooth, a mesh with fewer triangles can accurately
represent it. It's way faster to render triangles (especially ray-traced triangles) than it is to render a bunch
of tiny points which approximate the surface. Torus is smooth so much easier to render as a mesh.
- Rendering quality: render quality is usually better with meshes; however, using the marching cubes yields
after voxelization yields some non-smooth artifacts. I think my point cloud torus looks smoother and more
accurate (makes sense, since the level-set is exact for point cloud, as we parameterized it).
- Ease of use: definitely easier to use point clouds to render a torus, since the equation is so simple.
Probably would be much harder to define a clean parameterized function for many other types of objects.
- Memory usage: using marching cubes is cubic in memory usage, which is terrible. With parametric
representations of surfaces, you only increase memory with the number of samples on the surface.
6. Do Something Fun (10 points)
The person doing a bridge created a perfectly good table on which to place the plant.
This work required some scaling, shifing, and outlier filtering.