Combined Distance Fields - ProkopHapala/FireCore GitHub Wiki
Motivation
Often we want to express some complex shape as implicit surface. Generally efficient way is to express it as distance field as it allows to do efficient algorithms for root finding which is useful for many things (rendering, collision detection, non-covalent interactions evaluation). Furthermore it is often convenient to express this distance field using linear combination of some radial functions $\rho(r)=\sum_i f(|r-r_i|)$. Optimally radial distance functions $f(|r-r_i|)$ should have finite supor so we can easily design linear-scaling algorithm for evaluation of this distance field for arbitrary number of points.
We want to describe signed distance field if following form $$\rho(r) = f^{-1}[ \sum_i f(\rho_i(r)) ]$$ resp. $$\rho(r) = f^{-1}[ \sum_i f(|r-r_i|) ]$$
- see Google Colab
- see Gemmini
Particularily interesting set of functions
- $$f(r)=1/r$$
- $$\rho(r) = 1/\sum_i 1/|r-r_i|$$
- $$f(r)=\exp(r)$$
- $$\rho(r) = \log( \sum_i exp(-|r-r_i|) )$$
- $$f(r)=\max(0,(R_i-r)^n)$$
- $$\rho(r) = 1/\sum_i 1/|r-r_i|$$
Quit interesting method of this kind is
- Implicit Blending Revisited
- Kazhdan et al. (2006): Poisson Surface Reconstruction
- Kazhdan & Hoppe (2013): Screened Poisson Reconstruction — adds screening term to better control surface fitting
- Open3D Documentation
- DeepSDF: Learning Continuous Signed Distance Functions for Shape Representation
Relation to Morse Potential
Morse Potential has formula
$$V(r) = E_0 ( 1-\exp(-k(r-r_0)) )^2$$
$$V(r) = E_0 ( 1-\exp(-kr)\exp(kr_0) )^2$$
$$V(r) = E_0 \exp(2kr_0) ( \exp(-kr_0)-\exp(-kr) )^2$$
$$V(r) = A ( e - \exp(-kr) )^2 $$
where $e=\exp(-kr_0)$ and $A=E_0/e^2 = E_0 \exp(2kr_0)$ and