Assignment 1: Rendering Basics with PyTorch3D¶

Name: Xinyu Liu¶

1. Practicing with Cameras¶

1.1. 360-degree Renders¶

Funny GIF

1.2 Re-creating the Dolly Zoom¶

Funny GIF

2. Practicing with Meshes¶

2.1 Constructing a Tetrahedron¶

There are in total 4 vertices and 4 faces (4 triangles).

Funny GIF

2.2 Constructing a Cube¶

The are in total 8 vertices and 6 faces (represented by 12 triangles).

Funny GIF

3. Re-texturing a mesh¶

My color1 is [0, 1, 0] (Green), color2 is [1, 0, 1] (Magenta).

Funny GIF

4. Camera Transformations¶

  1. R_relative=[[0, 1, 0], [-1, 0, 0], [0, 0, 1]], T_relative=[0, 0, 0]: The camera rotates +90 around Z-axis, and now X-axis points to the previous Y-axis. The camera is still at origin, so no changes for T_relative.

    My Image

  2. R_relative=[[1, 0, 0], [0, 1, 0], [0, 0, 1]], T_relative=[0, 0, 2]: There is no rotation occurs, so R_relative remains the same. And the camera translates +2 along Z-axis

    My Image

  3. R_relative=[[1, 0, 0], [0, 1, 0], [0, 0, 1]], T_relative=[0.5, -0.5, 0]: There is no rotation, so R_relative remains the same. And the camera translates +0.5 along X-axis and -0.5 among Y-axis.

    My Image

  4. R_relative=[[0, 0, 1], [0, 1, 0], [-1, 0, 0]], T_relative=[-3, 0, 3]: The camera rotates +90 around Y-axis, and now X-axis points to the previous Z-axis. The camera then translates -3 along X-axis and +3 among Z-axis.

    My Image

5. Rendering Generic 3D Representations¶

5.1 Rendering Point Clouds from RGB-D Images¶

Funny GIF Funny GIF Funny GIF

5.2 Parametric Functions¶

My choice of 3d shape is mobius strip.

Funny GIF Funny GIF

5.3 Implicit Surfaces¶

My choice of 3d shape is gyroid surface.

Funny GIF Funny GIF

Rendering a mesh vs. point cloud¶
  1. Rendering speed: Generally, it is faster to render a point cloud than a mesh, because rendering a mesh requires not only vertices but also the surface connectivity between them. In contrast, rendering a point cloud only involves independent points.
  2. Rendering quality: While rendering a mesh usually takes longer, it captures more information about surface connectivity and fine details, which may be lost in a point cloud.
  3. Ease of use: A point cloud is easier to generate from depth sensors or LiDAR data, whereas a mesh requires more detailed information about faces or surface connectivity, which can be harder to obtain.
  4. Memory usage: Point clouds require less memory, since only point information needs to be stored. In contrast, a mesh requires storing both vertices and faces.

In conclusion, if you want more detailed face or surface information (better rendering quality), you should render a mesh, which comes with slower rendering speed, higher memory usage, and more complexity. On the other hand, if you want faster rendering, lower memory usage, and easier generation, you should choose a point cloud.

6. Do Something Fun¶

Trying to create some interesting symmetric 3d shape.

Funny GIF

7. Sampling Points on Meshes¶

Here is the mesh for the cow.

Funny GIF

Here is the sampled point clouds for the cow.

Funny GIF Funny GIF Funny GIF Funny GIF