Assignment 3 : Neural Volume Rendering and Surface Rendering
0. Transmittance Calculation (10 points)

1. Differentiable Volume Rendering
1.3. Ray sampling (5 points) - xy_grid and rays_3d

1.4. Point sampling (5 points)

1.5. Volume rendering (20 points)

2. Optimizing a basic implicit volume
2.2. Loss and training (5 points)
Box center: (0.25, 0.25, 0.00)
Box side lengths: (2.00, 1.49, 1.54)
2.3. Visualization

3. Optimizing a Neural Radiance Field (NeRF) (20 points)

4. NeRF Extras
4.1 View Dependence (10 points)
Adding view dependence to NeRF makes it more realistic by allowing the emitted color to vary with the viewing direction which helps capture specular reflections and glossy materials. However, this cause overfitting to the training viewpoints- reducing generalization to unseen angles. It also increases computational cost and requires more diverse data for learning.
Low Resolution

High Resolution (did not train for as long due to lack of compute resources)

5. Sphere Tracing (10 points)

My implementation of sphere tracing iteratively marches each ray forward through the scene using the signed distance value predicted by the implicit SDF function. Starting from the ray origin, the algorithm repeatedly updates the sample point by stepping along the ray direction by the current SDF magnitude, which guarantees convergence near the surface while avoiding overshooting. e^-4 threshold is used to mark a ray as having hit the surface and a boolean mask tracks which rays intersect the geometry.
6. Optimizing a Neural SDF (15 points)

MLP: I encode 3D points with a harmonic embedding and pass them through an MLP with a mid-layer skip connection. The network outputs an unconstrained signed distance value from a linear head and a per-point RGB color from a separate linear head followed by a sigmoid.
Eikonal loss: implemented by computing the gradient of the predicted SDF with respect to the input points, measuring its L2 norm, and penalizing deviations from 1- ensuring the network learns a valid signed distance field with unit gradient magnitude.
7. VolSDF (15 points)
| Beta | gif | geometry gif |
|---|---|---|
| 0.01 | ![]() |
![]() |
| 0.05 | ![]() |
![]() |
| 0.5 (best result) | ![]() |
![]() |
In VolSDF, alpha controls the overall scale of density- determining how opaque/transparent the surface appears and beta controls the smoothness of the SDF to density conversion- defining the thickness of the surface band. A higher beta produces smoother, blurrier density transitions that make optimization easier but yield less precise surfaces whereas a lower beta sharpens the surface boundary and improves accuracy at the cost of harder training.
8. Neural Surface Extras
8.3 Alternate SDF to Density Conversions (10 points)
This implementation follows the naive NeuS mapping- SDF is converted to density using the derivative of a sigmoid function. It produces a bell-shaped density centered around the surface but unlike VolSDF, it tends to bias the density distribution and can blur surface boundaries, it is also noisier.
| Method | gif | geometry gif |
|---|---|---|
| VolSDF | ![]() |
![]() |
| naive | ![]() |
![]() |







