Rendering Basics with PyTorch3D
16-825 Learning for 3D: Assignment 1
1. Practicing with Cameras (15 Points)
1.1. 360-degree Renders (5 points)
python -m starter.render_mesh --gif 
1.2 Re-creating the Dolly Zoom (10 points)
python -m starter.dolly_zoom
2. Practicing with Meshes (10 Points)
2.1 Constructing a Tetrahedron (5 points)
python -m starter.render_mesh --cow_path data/tetrahedron.obj --gif --gif_path images/tetrahedron.gif
The tetrahedron mesh should have 4 vertices and 4 faces.
2.2 Constructing a Cube (5 points)
python -m starter.render_mesh --cow_path data/cube.obj --gif --gif_path images/cube.gif
The cube mesh should have 8 vertices and 12 faces.
3. Re-texturing a mesh (10 points)
python -m starter.render_mesh --gif --gif_path images/retexture.gif --retexture
In this case, color1 = [0.0, 1.0, 1.0] and color2 = [1.0, 1.0, 0.0].
4. Camera Transformations (10 points)
python -m starter.camera_transformsOriginal render

Transformation 1 (left): Rotate the camera –90° around Z axis
Transformation 2 (right): Translate by [0.0, 0.0, 2.0]

Transformation 3 (left): Translate by [0.5, -0.5, 0.0]
Transformation 4 (right): Rotate the camera 90° around Y axis and translate by [-3.0, 0.0, 3.0]

5. Rendering Generic 3D Representations (45 Points)
5.1 Rendering Point Clouds from RGB-D Images (10 points)
python -m starter.render_generic --render rgbd --num_views 48- The point cloud corresponding to the first image.
- The point cloud corresponding to the second image.
- The point cloud formed by the union of the first 2 point clouds.

5.2 Parametric Functions (10 + 5 points)
python -m starter.render_generic --render parametric_torus --num_samples 1000
python -m starter.render_generic --render parametric_mobius_strip --num_samples 1000

Left: Torus, Right: Möbius Strip
5.3 Implicit Surfaces (15 + 5 points)
python -m starter.render_generic --render implicit_torus
python -m starter.render_generic --render implicit_ellipsoid

- In addition, discuss some of the tradeoffs between rendering as a mesh vs a point cloud. Things to consider might include rendering speed, rendering quality, ease of use, memory usage, etc. (5 points)
Mesh: slower to render because of rasterization, but higher quality rendering with smooth and well-defined geometry. More complex to set up and use because it requires defining the mesh topology. Higher memory usage because it stores not only vertices but also faces and textures.
Point Cloud: faster to render because it can be done in a single pass without rasterization. Easier to set up and use because it only requires point positions and colors. Lower memory usage because it only stores vertices and colors.
6. Do Something Fun (10 points)
python -m starter.render_generic --render textured_mesh --image_size 512
I used a cottage model from here, and simulated a day-night cycle by changing the light color and location.
(Extra Credit) 7. Sampling Points on Meshes (10 points)
python -m starter.render_pc_from_meshBelow are the original mesh rendering and the sampled points rendering for different number of points.
| Original Mesh | 10 points | 100 points | 1,000 points | 10,000 points |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |




