Theoretical and Empirical Analysis of a Fast Algorithm for Extracting Polygons from Signed Distance Bounds
Nenad Markuš, Mirko Sužnjević
TL;DR
The paper tackles efficient conversion of signed distance bounds into polygon meshes by introducing gridhopping, a fast variant of sphere tracing that guides isosurface extraction with $O(N^2\log N)$ complexity on a grid of $N^3$ cells. The method casts $N^2$ rays, advances along each ray using the bound $|f_S|$, and polygonizes the first intersecting cell, enabling reliable mesh generation from SDBs with simple implementation. Theoretical analysis decomposes the complexity across planes, boxes, and general shapes, all supporting the $O(N^2\log N)$ bound, and empirical results on primitives and neural SDBs confirm both speed and accuracy. The approach is practical for modelling and shape compression, with public code available, though it relies on Lipschitz conditions and is most suited to abstract shapes rather than raw point clouds.
Abstract
Recently there has been renewed interest in signed distance bound representations due to their unique properties for 3D shape modelling. This is especially the case for deep learning-based bounds. However, it is beneficial to work with polygons in most computer-graphics applications. Thus, in this paper we introduce and investigate an asymptotically fast method for transforming signed distance bounds into polygon meshes. This is achieved by combining the principles of sphere tracing (or ray marching) with traditional polygonization techniques, such as Marching Cubes. We provide theoretical and experimental evidence that this approach is of the $O(N^2\log N)$ computational complexity for a polygonization grid with $N^3$ cells. The algorithm is tested on both a set of primitive shapes as well as signed distance bounds generated from point clouds by machine learning (and represented as neural networks). Given its speed, implementation simplicity and portability, we argue that it could prove useful during the modelling stage as well as in shape compression for storage. The code is available here: https://github.com/nenadmarkus/gridhopping
