1

Implementation: We initialize the currenet position of points as origins. We pass the points to the sdf function and take a step along the ray direction with a step size equal to its sdf. We also mantain a mask whose values become 1 for points with sdf < eps (1e-5). After this, we again pass the points to sdf value until either mask=1 for all points i.e. all current points are very close to surface or if the number iterations exceeds cfg.max_iters

2

Implementation: We use the default model configurations, as also listed below

  n_harmonic_functions_xyz: 6

  n_layers_distance: 6
  n_hidden_neurons_distance: 128
  append_distance: []

After passing the PE of points through this MLP, we map it to 1 dim vector using another MLP and then apply tanh activation function as suggested by deepsdf paper.

We implement the eikonal loss in the following way:

((gradients.norm(2, dim=-1) - 1) ** 2).mean()

3

Beta mainly controls the smoothness/sharpness, with sharpness inversely propotional to beta.

3.1 High beta would mean that there is lesser clear distinction between surface points and points outside the surface. With high beta, both the points outside and inside would tend to have value alpha, while with low beta the value of the surface points would be very high while points outside with have value alpha. Hence low beta would produce sharper rendering.

3.2 Low beta would probably be easier to train because of the better distinction between the surface and the exterior points. However, I would suspect that extreme values (very low beta, or very high beta) would tend to unstable training.

3.3. Low beta, because of the better distinction between the surface and the exterior points.

By default beta=0.05, alpha=10.0 Changing beta:

Beta = 0.5

Beta = 0.05

Beta = 0.005

Alpha = 10.0

Alpha = 5.0

Alpha = 15.0

Lower values of beta and higher value of alpha seems to work best as expected and explained above for beta. Alpha can be though of as representing constant density, and thus higher values of it helps produce less spreading of the surface points

4.1

|

4.2

Left: VOlSDF; Right: Nerfs

Number of views: 100

Number of views: 20

Number of views: 10

Number of views: 5

NERF's output seems to be better when number of views are high like 100, 20. But with very few views like 5 or 10, VolSDF's output is much better

4.3

We implemented "naive" solution from NEUS paper choosing value of s as 100. The results are as follows:

Left: Color, Right: Geometry

While the color seems ok, the geometry seems to miss details

Late Days