{"id":423,"date":"2024-08-06T17:12:09","date_gmt":"2024-08-06T17:12:09","guid":{"rendered":"https:\/\/summergeometry.org\/sgi2024\/?p=423"},"modified":"2024-08-07T00:38:27","modified_gmt":"2024-08-07T00:38:27","slug":"a-study-on-surface-reconstruction-from-signed-distance-data-part-1","status":"publish","type":"post","link":"https:\/\/summergeometry.org\/sgi2024\/a-study-on-surface-reconstruction-from-signed-distance-data-part-1\/","title":{"rendered":"A Study on Surface Reconstruction from Signed Distance Data Part 1: SDFs"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Primary mentors<\/strong>:\u00a0 Silvia Sell\u00e1n, University of Toronto and Oded Stein, University of Southern California<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Volunteer assistant<\/strong>:\u00a0 Andrew Rodriguez<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fellows<\/strong>: Johan Azambou, Megan Grosse, Eleanor Wiesler, Anthony Hong, Artur, Sara\u00a0\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The definition of SDFs using ducks<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Suppose that you took a piece of <em>metal wire,<\/em> twisted into some shape you like, let&#8217;s make it a flat duck, and then put it on a little pond. The splash of water made by said wire would propagate as a wave all across the pond, inside and outside the wire. If the speed of the wave were \\(1 m\/s \\), you\u2019d have, at every instant, a <em>wavefront<\/em> telling you <em>exactly how far away<\/em> a given point is from the wire.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"881\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/SDFduck-1024x881.png\" alt=\"\" class=\"wp-image-873\" style=\"width:488px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/SDFduck-1024x881.png 1024w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/SDFduck-300x258.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/SDFduck-768x661.png 768w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/SDFduck-1200x1032.png 1200w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/SDFduck.png 1368w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">This is the principle behind a <em>distance field<\/em>, a scalar valued field \\( d(\\mathbf{x}) \\) whose value at any given point \\(\\mathbf{x}\\) is given by<em> <\/em>\\( d(\\mathbf{x}, S) = \\min_{\\mathbf{y}}d(\\mathbf{x}, \\mathbf{y})\\), where \\( S \\)<em> <\/em>is a simpled closed curve. To make this a <em>signed <\/em>distance field, we can distinguish between the <em>interior and exterior <\/em>of the shape by adding a minus sign in the interior region.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Suppose we were to define sdf without knowing the boundary \\(S\\); given a region \\( \\Omega \\) and a surface \\( S \\), whose inside is defined as the closure of \\( \\overline{\\Omega} = A \\). A function \\( f : \\mathbb{R}^n \\rightarrow \\mathbb{R} \\) is said to be a <em><strong>signed distance function<\/strong><\/em> if for every point \\( \\mathbf{x} \\in \\Omega \\) , we have  <em><strong>eikonality<\/strong><\/em> \\( | \\nabla f | = 1 \\) and <strong><em>closest point condition<\/em><\/strong>:<br>\\[ f( \\mathbf{x} &#8211; f(\\mathbf{x}) \\nabla f(\\mathbf{x})) = 0 \\]<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"500\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/SDFdefinition-1024x500.png\" alt=\"\" class=\"wp-image-872\" style=\"width:601px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/SDFdefinition-1024x500.png 1024w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/SDFdefinition-300x147.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/SDFdefinition-768x375.png 768w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/SDFdefinition-1200x586.png 1200w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/SDFdefinition.png 1244w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">The statement reads very simply: if we have a point \\( \\mathbf{x} \\), and take the difference vector to the normal of the level set at hand times the distance, it should take us to the point \\( \\mathbf{x} \\) closest to the zero level set.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This second definition is equivalent to the first one by an observation that eikonality implies \\(1\\)-Lipschitz property of the function \\(f\\) and it is also used for the last step of the following derivation: \\(\\exists q \\in S:=f^{-1}(0)\\)<br>$$<br>p-f(p) \\nabla f(p)=q \\Longrightarrow p-q=f(p) \\nabla f(p) \\Longrightarrow|p-q|=|f(p)|<br>$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This combined with \\(1\\)-Lipschitz property gives a proof of contradiction for characterization of sdf by eikonality and closest point condition.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our project was focused on the <em>SDF-to-Surface<\/em> reconstruction methods, which is, given a SDF, how can we make a surface out of it? I&#8217;ll first tell you about the much simpler problem, which is <em>Surface-to-SDF<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Our SDFs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To lay the foundation, we started with the 2D case: SDFs in the plane from which we can extract <em>polylines. <\/em>Before performing any tests, we needed a database of SDFs to work with. We created our SDFs using two different skillsets: art and math.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first of our SDFs were hand-drawn, using an algorithm that determined the closest perpendicular distance to a drawn image at the number of points in a grid specified by the resolution. This grid of distance values was then converted into a visual representation of these distance values &#8211; a two-dimensional SDF. Here are some of our hand-drawn SDFs!<\/p>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-8f761849 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"706\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.30.40\u202fAM.png\" alt=\"\" class=\"wp-image-958\" style=\"width:357px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.30.40\u202fAM.png 700w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.30.40\u202fAM-297x300.png 297w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.30.40\u202fAM-150x150.png 150w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"787\" height=\"773\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.31.17\u202fAM-1.png\" alt=\"\" class=\"wp-image-961\" style=\"width:364px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.31.17\u202fAM-1.png 787w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.31.17\u202fAM-1-300x295.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.31.17\u202fAM-1-768x754.png 768w\" sizes=\"auto, (max-width: 787px) 100vw, 787px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-8f761849 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"878\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.43.06\u202fAM.png\" alt=\"\" class=\"wp-image-982\" style=\"width:359px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.43.06\u202fAM.png 840w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.43.06\u202fAM-287x300.png 287w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.43.06\u202fAM-768x803.png 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"920\" height=\"902\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.43.39\u202fAM.png\" alt=\"\" class=\"wp-image-983\" style=\"width:382px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.43.39\u202fAM.png 920w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.43.39\u202fAM-300x294.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.43.39\u202fAM-768x753.png 768w\" sizes=\"auto, (max-width: 920px) 100vw, 920px\" \/><\/figure>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The second of our SDFs were drawn using math! Known as exact SDFs, we determined these distances by splitting the plane into regions with inequalities and many AND\/OR statements. Each of these regions was then assigned an individual distance function corresponding to the geometry of that space. Here are some of our exact SDF functions and their extracted polylines!<\/p>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-8f761849 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"808\" height=\"755\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.40.12\u202fAM.png\" alt=\"\" class=\"wp-image-977\" style=\"width:362px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.40.12\u202fAM.png 808w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.40.12\u202fAM-300x280.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.40.12\u202fAM-768x718.png 768w\" sizes=\"auto, (max-width: 808px) 100vw, 808px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"861\" height=\"723\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.39.11\u202fAM.png\" alt=\"\" class=\"wp-image-978\" style=\"width:403px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.39.11\u202fAM.png 861w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.39.11\u202fAM-300x252.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.39.11\u202fAM-768x645.png 768w\" sizes=\"auto, (max-width: 861px) 100vw, 861px\" \/><\/figure>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Exact vs. Drawn<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Exact Signed Distance Functions (SDFs) provide precise, mathematically rigorous measurements of the shortest distance from any point to the nearest surface of a shape, derived analytically for simple forms and through more complex calculations for intricate geometries. These are ideal for applications demanding high precision but can be computationally intensive. Conversely, drawn or approximate SDFs are numerically estimated and stored in discretized formats such as grids or textures, offering faster computation at the cost of exact accuracy. These are typically used in digital graphics and real-time applications where speed is crucial and minor inaccuracies in distance measurements are acceptable. The choice between them depends on the specific requirements of precision versus performance in the application.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Operations on SDFs<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For two SDFs, \\(f_1(x)\\) and \\(f_2(x)\\), representing two shapes, we can define the following operations from constructive geometry:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Union<\/strong><br>$$<br>f_{\\cup}(x) = \\min(f_1(x), f_2(x))<br>$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Intersection<\/strong><br>$$<br>f_{\\cap}(x) = \\max(f_1(x), f_2(x))<br>$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Difference<\/strong><br>$$<br>f_{\\setminus}(x) = \\max(f_1(x), -f_2(x))<br>$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We used these operations to create the following new sdfs: a cat and a tessellation by hexagons.<\/p>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-8f761849 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"777\" height=\"619\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.35.02\u202fAM.png\" alt=\"\" class=\"wp-image-968\" style=\"width:394px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.35.02\u202fAM.png 777w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.35.02\u202fAM-300x239.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.35.02\u202fAM-768x612.png 768w\" sizes=\"auto, (max-width: 777px) 100vw, 777px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"475\" height=\"402\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.36.27\u202fAM.png\" alt=\"\" class=\"wp-image-971\" style=\"width:370px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.36.27\u202fAM.png 475w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-12.36.27\u202fAM-300x254.png 300w\" sizes=\"auto, (max-width: 475px) 100vw, 475px\" \/><\/figure>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Marching Squares Reconstructions with Multiple Resolutions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/gpytoolbox.org\/latest\/marching_squares\/\" data-type=\"link\" data-id=\"https:\/\/gpytoolbox.org\/latest\/marching_squares\/\"><strong>marching_squares<\/strong> algorithm<\/a> is a contouring method used to extract contour lines (isocontours) or curves from a two-dimensional scalar field (grid). It&#8217;s the 2D analogue of the 3D Marching Cubes algorithm, widely used for surface reconstruction in volumetric data. When applied to Signed Distance Functions (SDFs), marching_squares provides a way to visualize the zero level set (the exact boundary) of the function, which represents the shape defined by the SDF. Below are visualizations of various SDFs which we passed into marching squares with varied resolutions in order to test how well it reconstructs the original shape.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>SDF \/ Resolution<\/td><td>100&#215;100<\/td><td>30&#215;30<\/td><td>8&#215;8<\/td><\/tr><tr><td>leaf<\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"130\" height=\"105\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdWoKIPqRHmrbMnFcuAiaMyVoIcm0u_yInGFrZCsb5JdODEMUeUxqQTiIw8JVWQpzJzFLlJNO30K8FTJRI8k9DnCwJoTfrL0upkFYGnHNf8bdvw8fESdMZXDEd8y_8ZdvSRKLGXD4W1IMFIJbnmTNzNz7rJ?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"136\" height=\"104\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXeMGS94e-X67pYXEHmPIzhtQJ4kIgbkm3FZyUjM7bvA9t2TWxjoRpzXQiFR_gB1O26yFEvsCg46imw1h_-GC2KLcizZ_8XLUeT_pK92swBw-0DuAME6jYvZ3TzRZallvO4h_yPKN50RsiiXnh4WPvGjnvnZ?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"135\" height=\"104\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdnoRtfrL5Wjw3xgzitR8bwg50WMVJHsC7zigC6LEXyVmLxo8Gfrwc5JPERdgoheQzFUmb-lfQtqZuG-l9kbo6MisWczX4611ScI8lVrtvc8pe6VUXiC4cYcFtX2Nr2NvPRF6TkGA4J4nRN33csWTyl_CN-?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><\/tr><tr><td>leaf<br>marching_squares<br><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"103\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXeyXpiB_VMh0BImx3gB1E54NtobmuHM-UYr7A6_LR_CHvuihnOvJh-OjmgYpZyuIip-K8fLnElJgnMxSUBZKObKsmW73GkH_zFuHCaUiK75dr4maX0iwWuLC_SEEOPtKBsT7hNs1-9DvNCS4jq_Kq4ek0ZN?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"99\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdIJgLeX3-nFAjyJEasFIK9q6JXva1o5uYGICVKpN1PjaJSUYd--kr7vjJCBfUL-4nPhQV5GgAHqGYmzmoIjtfz2jkowai0SjRvE0HdLVbD4DSyNtSOG_vwhXr9Je4oIZ9k1lgzvH9r6kyWNVnifusFdCnb?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"100\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfemW9-Fl9Mv6qLmZJDFO3r028Mw7-B6aVIhyg3BK0LpJ3xQSwDmWmUPUNctwtnUGMux6bGlo6BEvsnZ5JonSEQuju6pYpfSlXpC_7DmZ8HkTxGdJYLT5fvB0aiNP13iH6YOQrTBcIWDQhY3P0oUHxoW_I_?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><\/tr><tr><td>uneven capsule<\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"171\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXeAOEylUmAS4qgEzcvNdf26JBJ2h9vhKxdoZhrMLgT_hqObdz1Nczd2poFhXdQtJhZ_nTwuGwq19TJw3DGLHqywdh8qbzrfvO42lJU7PSfFkQjBREtDwPbDIMXeUXa3ZqpYjjT7EerNz9bxVIuTeQGAYZE?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"171\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdk8W5A3vIubT8-e3JUJV2qFwOJt9K5dwWyLafEk63tghzClFPIu43TxcjCfMC_zg-AwNjqzcNo3TwlwltWSQLLf-KXN2eWzKgDG_KDrZLEOflK7KfFi-1wkplJFm3qSQdG0SqZk46mSOXQqRn3HDTzPsA?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"167\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXeeffQAdEen2J8p-yLYNcyUTAXJyXsobjdo6GdEPfL6L2coqsi6i9snzd-3bnNmKnXnLGWbNeYgpYoSvwfYATtWIXq87dQIqo0GoJhmG4x3_bfQTh-LQRSA6PbZqHtbphaJVHVuaSI-SANaxRGNjCgLC8wx?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><\/tr><tr><td>uneven capsule marching_squares<\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"139\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXeZAozWeAGQ0SEX368-6VC0uLhrRkRZfxIrwmf9-qd5zo7ze9bNIs9tCHBCQM6h2rLkXG000ww9GHfQC-4KYC9DeFELI8AI6yDcSqxh1UCgBoAKhy1cG2CBMqQTjkM8S3ejJ7HjXN5BpSyE8irgVdzRhE2C?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"139\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcfhw7EiBS4pTNUCzUUuZ8ZQoUUU8Y8kwMtnH3_mdpipSDfW8eJIFf1dU_yHdOabHla011LvWZA1y3h5GFo0deVmkABxW4Me7roZqm1R6MExnm_VlLOxFRLZkFXl1kFpDL6Mg0JiK3aIDJIP2dx0WcjLUM?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"139\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdFM49ThQJLgoAvm8kISZ5flGM01LkCrsOF7xgpmm08b-RbZC8JaL1O4dtB3eMq8lJi06An0scuLNeb6QFr1fwy7in_2zULgM8YNuETszXhY83cThzrifSoklihmaExHakXcxlNvIV4_Ii_dTbGHIXU9_XS?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><\/tr><tr><td>snowman<\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"111\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXes-lBKzHrb9_Epq_tl_oSNBIG8vDjfd4AffEyVTUApu_W8b2yaBtIc5rDVhcuCoaiKE2mmBHmlax7URzheUuvL3i-1O82_CeFE6LkEvTwFjh1qFNqNEe7Ly8OA_tSrcxzYvu1CZ7fFJ5TcjXuxqG0koeiR?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"107\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcaqLmrFFOsdo6G8gxIAmlJxcMP7j3Yfw94AHrxConznE-7jiOY6tEKFfIuVGnaoPtRJAZaSdUpvFJAsEMrwDPzST5R5B3breGQI8gQJmt2BjZ6j0P2zQFbCGKjKsxpDYZkbsObUnMtLyLkDwn1SqE4Zkk4?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"107\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcc_DHFDjGHn6mttmTeJDY5bH5GuY2Jjr1J5ABNi1V-sZSfwOeadHDeKqCFLo6903TXYP7MvApnWtsmI5aINL6oGj85mq1vXwS-nWFhxtR-6CIn-_tURsbjuFPUqRdASjLnGN6EJriDPSKAQ1LCDaDOIAc?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><\/tr><tr><td>snowman marching_squares<\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"104\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdMMrGI5O5GOdZl-S5oGpShIspGJpoqwMEyeYnWdVzL49oN5aR3KY9Geb67d27m_Owxfidm8BMer2niHPwdGr28WC7u1hg5zRf7NUi3V2_gO5rf5AryJW9OOFmIOuoPm3pZr27aWMs1_vkI2rutw_TfvFk?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"105\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXebClpyRmwFhzKfRzb42fp5oXf_6xJYUJwoo91p69JTaea0lxHhoJuo0YG2pRbVQCZNFGyoB4OUhgeVaTxP5jqHk44ZzCwY8ba1z1xqffEgo03cj-3xghWoIrRGn9_AXRlO1YYfql9Kwa0sgF-RFpZdae4?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"99\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdnlfvuMbTvMfcVMCuHXb4rrJRYSRZX-tgTNHRXtINKem6OUIJJ4y3WDWLsFSclb5fW2cYQEKpeM9R7g9eGVf5xdQ9c8J7a6p4VVfPJXH990yeNCE0Shq5ffAbdpNML_oNplr4vandtPwrKoIa73ZN4CM8?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><\/tr><tr><td>square<\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"107\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcny8BvTd8pZiBSYTqVM9qrH-9XgLqMIrGYyN1AXTumjSkUe7HnpIkyow8h4gnAl95XzcFkJcnb7PApHzvmQckXDbb4BA7hupwnvAYThKY2WkTE0gILI5GJmAASMPjKJh2iOsra757hSzZln2F6qLYt_mBO?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"104\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXetzkMbpJ3ft1ac8LXiG2hVleiduZue6swfHSFezjd_g5D6NPhsoWR6LD8zCu5Jmuu46GBWXLAQqM-NuK299lEgF0WCy07B6Xg82jNnt-eoWxBcClDIxFo6Z_yb182p2aa2vGJLy9hGb5Z5Rfu08XV79QcZ?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"109\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdfuQXPS7ER5KCaW3Z-6tzF05RbxozaVST4pLxlAm73PuVT5RvlC6DBo_RW9cVmrtW0N3B6xxmKXO0_d24APWfq8ZxFwhrJL0yRI7xpALytUsm1bmb7ExNHuPGDB_1Xa08uOY67njdbCBd249CS9NUICLW3?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><\/tr><tr><td>square<br>marching_squares<br><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"103\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcBgRGxa1vGzVXWGszFELWhZwfIqT8c_yDi8rybvX3c-n94fYHCyUzi4SMLOdWH6eQlAzX8QnZvYsiPPTZhJbFKUKssNacxaWGQQtigL56-if9d_qWfU27eAOD2Q7XBu3lq2jL0An5reJ3VykFIYsp8ZRA?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"103\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXeGwJeqzHOcSKRv1zg2hE4B5zTGo18Ye5mjXAuyUMd80mhDa6OzOQOj-enKlxyOCbIKYhGMaGIh-1hJ2JWUZ4h4JJE4ljtT2sm1XtvQTkfve3zcV-Mtu1MJ85out-v6FXV4GM0U7kAQAJlYgMC1-BOGNFM?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"142\" height=\"99\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXeL-LD71gxJVGs-uNLVTA3fCGBAgk5SOGalpZkR7vvpwOVnsfn-EzwSHFFCom7tc9b2z_Jp4zEqQEdleYLC72EonTrdhwbbcLsfH_NolW81P4byPAb6j80-mXJjlI2JackAhxpmEBJ7_c_2LP2G7KOOb4-_?key=9KV-mwkgHxGNd8l0R62cNg\"><\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">sdfs and reconstructions in three different resolutions.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">SDFs in 3D Geometry Processing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">While the work we have done has been 2D in our project, signed-distance functions can be applied to 3D geometry meshes in the same way. Below are various examples from recent papers that use signed distance functions in the 3D setting. Take for example marching cubes, a method for surface reconstruction in volumetric data developed by Lorensen and Cline in 1987 that was originally motivated by medical imaging. If we start with an implicit function, then the marching cubes algorithm works by \u201cmarching\u201d over a uniform grid of cubes and then locating the surface of interest by seeing where the surface intersects with the cubes, and adding triangles with each iteration such that a triangle mesh can ultimately be formed via the union of each triangle. A helpful visualization of this algorithm can be found <a href=\"https:\/\/www.youtube.com\/watch?v=B_xk71YopsA\">here<\/a>.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Take for example our mentors Silvia Sell\u00e1n and Oded Stein\u2019s recent paper \u201c<a href=\"https:\/\/arxiv.org\/abs\/2308.09813\"><em>Reach For the Spheres<\/em>:Tangency-Aware Surface Reconstruction of SDFs<\/a>\u201d with C. Batty which introduces a new method for reconstructing an explicit triangle mesh surface corresponding to an SDF, an algorithm that uses tangency information to improve reconstructions, and they compare their improved 3D surface reconstructions to marching cubes and an algorithm called Neural Dual Contouring. We can see from their figure below that their SDF and tangency-aware and reconstruction algorithm is more accurate than marching cubes or NDCx.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"265\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-1.00.08\u202fAM-5-1024x265.png\" alt=\"\" class=\"wp-image-996\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-1.00.08\u202fAM-5-1024x265.png 1024w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-1.00.08\u202fAM-5-300x78.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-1.00.08\u202fAM-5-768x199.png 768w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-1.00.08\u202fAM-5-1536x397.png 1536w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-1.00.08\u202fAM-5-1200x310.png 1200w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-1.00.08\u202fAM-5.png 1663w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>(<\/em>From Sellan et al, 2024) The Reach for the Spheres method that using tagency information for more accurate surface reconstructions can be seen on both 10^3 and 50^3 SDF grids as being more accurate than competing methods of marching cubes and NDCx. They used features of SDF and the idea of tangency constraints for this novel algorithm.<\/figcaption><\/figure>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Another SGI mentor, Professor Keenan Crane, also works with signed distance functions. Below you can see in his recent paper \u201c<a href=\"https:\/\/dl.acm.org\/doi\/abs\/10.1145\/3658220\">A Heat Method for Generalized Signed Distance<\/a>\u201d with Nicole Feng, they introduce a novel method for SDF approximation that completes a shape if the geometric structure of interest has a corrupted region like a hole.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"901\" height=\"833\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-1.03.54\u202fAM.png\" alt=\"\" class=\"wp-image-999\" style=\"width:820px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-1.03.54\u202fAM.png 901w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-1.03.54\u202fAM-300x277.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-07-at-1.03.54\u202fAM-768x710.png 768w\" sizes=\"auto, (max-width: 901px) 100vw, 901px\" \/><figcaption class=\"wp-element-caption\">(From Feng and Crane, 2024): In this figure, you can see that the inputted curves in magenta are broken, and the new method introduced by Feng and Crane works by computing signed distances from the broken curves, allowing them to ultimately generate an approximated SDF for the corrupted geometry where other methods fail to do this.<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Clearly, SDFs are beautiful and extremely useful functions for both 2D and 3D geometry tasks. We hope this introduction to SDFs inspires you to study or apply these functions in your future geometry-related research.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\"><strong>References<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Sell\u00e1n, Silvia, Christopher Batty, and Oded Stein. &#8220;Reach For the Spheres: Tangency-aware surface reconstruction of SDFs.&#8221;&nbsp;<em>SIGGRAPH Asia 2023 Conference Papers<\/em>. 2023.<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Feng, Nicole, and Keenan Crane. &#8220;A Heat Method for Generalized Signed Distance.&#8221;&nbsp;<em>ACM Transactions on Graphics (TOG)<\/em>&nbsp;43.4 (2024): 1-19.<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Marschner, Zo\u00eb, et al. &#8220;Constructive solid geometry on neural signed distance fields.&#8221;\u00a0<em>SIGGRAPH Asia 2023 Conference Papers<\/em>. 2023.<span id=\"docs-internal-guid-a6ce3450-7fff-b7fc-84ca-3679ac66d24a\"><div><span style=\"font-size: 13pt;font-family: Arial, sans-serif;vertical-align: baseline\"><\/span><\/div><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Primary mentors:\u00a0 Silvia Sell\u00e1n, University of Toronto and Oded Stein, University of Southern California Volunteer assistant:\u00a0 Andrew Rodriguez Fellows: Johan Azambou, Megan Grosse, Eleanor Wiesler, Anthony Hong, Artur, Sara\u00a0\u00a0 The definition of SDFs using ducks Suppose that you took a piece of metal wire, twisted into some shape you like, let&#8217;s make it a flat [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[37],"tags":[],"ppma_author":[24,15,31,16,12],"class_list":["post-423","post","type-post","status-publish","format-standard","hentry","category-research"],"authors":[{"term_id":24,"user_id":0,"is_guest":1,"slug":"cap-ar-bb","display_name":"ar.bb","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","author_category":"","first_name":"","last_name":"","user_url":"","job_title":"","description":""},{"term_id":15,"user_id":0,"is_guest":1,"slug":"cap-hong-x","display_name":"hong.x","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","author_category":"","first_name":"","last_name":"","user_url":"","job_title":"","description":""},{"term_id":31,"user_id":0,"is_guest":1,"slug":"cap-megan-e-grosse","display_name":"megan.e.grosse","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","author_category":"","first_name":"","last_name":"","user_url":"","job_title":"","description":""},{"term_id":16,"user_id":0,"is_guest":1,"slug":"cap-jjohanar","display_name":"jjohanar","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","author_category":"","first_name":"","last_name":"","user_url":"","job_title":"","description":""},{"term_id":12,"user_id":0,"is_guest":1,"slug":"cap-ewiesler","display_name":"ewiesler","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","author_category":"","first_name":"","last_name":"","user_url":"","job_title":"","description":""}],"_links":{"self":[{"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/posts\/423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/comments?post=423"}],"version-history":[{"count":10,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/posts\/423\/revisions"}],"predecessor-version":[{"id":1009,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/posts\/423\/revisions\/1009"}],"wp:attachment":[{"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/media?parent=423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/categories?post=423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/tags?post=423"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/ppma_author?post=423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}