Assignment 1 — Rendering Basics with PyTorch3D

Course16‑825 (Learning for 3D Vision)
StudentKunwoo Lee (kunwool@andrew.cmu.edu)

1. Practicing with Cameras

1.1 360° Turntable (Cow)

Your first task is to create a 360-degree gif video that shows many continuous views of the provided cow mesh. For many of your results this semester, you will be expected to show full turntable views of your outputs.

360° cow turntable
Cow — 360° GIF.

1.2 Dolly Zoom

Explain the change of FOV vs camera distance and how the subject size was kept constant.

Dolly zoom effect
Dolly Zoom — focal length & translation animation.

2. Practicing with Meshes

2.1 Tetrahedron

State vertex/face counts and any texture choices.

Tetrahedron 360°
Tetrahedron — 360° GIF.

2.2 Cube

State vertex/face counts and triangulation method (two tris per face).

Cube 360°
Cube — 360° GIF.

3. Re‑texturing a Mesh (Cow)

Chosen colors: color1 = redcolor2 = blue. Interpolation along z using alpha = (z - z_min)/(z_max - z_min).

Cow retextured gradient
Front‑to‑back gradient retexture result.

4. Camera Transformations

Describe R_relative and T_relative R_relative tells us the relative rotation of camera w.r.t the object, defined in camera coordinate. T tells us the position of object w.r.t the object, defined in camera coordinate system. Thus this never has to change with rotational matrix, where it was defined to change so, making it a bit complicated. I think we can simply patch the code to "T = T_relative + torch.tensor([0.0, 0, 3])" instead of "T = R_relative @ torch.tensor([0.0, 0, 3]) + T_relative to make it simpler.
NOTE: I used "R.from_euler(...).as_matrix()" from scipy to get rotation matrix from euler angles.

Transform 1
Transform 1
R_relative = R.from_euler('z', -90, degrees=True)
T_relative = [0, 0, 0]
Transform 2
Transform 2
R_relative = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
T_relative = [0, 0, 2].
Transform 3
Transform 3
R_relative = R.from_euler('y', 2, degrees=True)
T_relative = [0.5, 0, 0].
Transform 4
Transform 4
R_relative = R.from_euler('y', 90, degrees=True)
T_relative = [-3, 0, 3].

5. Rendering Generic 3D Representations

5.1 Point Clouds from RGB‑D

Point cloud 1
View 1 cloud.
Point cloud 2
View 2 cloud.
Merged point cloud
Merged cloud.

5.2 Parametric Functions

Parametric torus

Parametric torus
Parametric Torus — 360° GIF.
Additional parametric object
Extra parametric object.

5.3 Implicit Surfaces

Define implicit torus F(x,y,z)=0

Implicit torus mesh
Implicit Torus Mesh — 360° GIF.

Mesh vs Point Cloud — Quick Notes

Extra implicit object
Extra implicit object.

6. Do Something Fun

Human mesh rendering via SMPL model

Fun experiment
SMPL model

Extra Credit — Sampling Points on Meshes

Briefly describe stratified sampling by area, barycentric sampling, and show results for 10/100/1k/10k samples.

10 samples
10 points
100 samples
100 points
1000 samples
1000 points
10000 samples
10000 points