Assignment 1 — Rendering Basics with PyTorch3D
| Course | 16‑825 (Learning for 3D Vision) |
|---|---|
| Student | Kunwoo 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.
1.2 Dolly Zoom
Explain the change of FOV vs camera distance and how the subject size was kept constant.
2. Practicing with Meshes
2.1 Tetrahedron
State vertex/face counts and any texture choices.
- Vertices: 4
- Triangle faces: 4
2.2 Cube
State vertex/face counts and triangulation method (two tris per face).
- Vertices: 8
- Triangle faces: 12
3. Re‑texturing a Mesh (Cow)
Chosen colors: color1 = red → color2 = blue. Interpolation along z using alpha = (z - z_min)/(z_max - z_min).
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.
R_relative = R.from_euler('z', -90, degrees=True)
T_relative = [0, 0, 0]
R_relative = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
T_relative = [0, 0, 2].
R_relative = R.from_euler('y', 2, degrees=True)
T_relative = [0.5, 0, 0].
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
5.2 Parametric Functions
Parametric torus
5.3 Implicit Surfaces
Define implicit torus F(x,y,z)=0
Mesh vs Point Cloud — Quick Notes
- Quality: Mesh rasterization gives crisp silhouettes & shading; point size limits edge fidelity.
- Speed: Point rendering is often simpler; high‑res marching cubes + meshes can be heavier.
- Memory: Dense voxels ⮕ high memory; points can be streamed/sampled.
- Ease: Points are trivial to build; watertight meshes require extraction or authoring.
6. Do Something Fun
Human mesh rendering via 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.