<div dir="ltr">FYI here is an example of discrete marching cubes at work. From Bill:<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="font-size:16px">Here is the SPLBrainAtlas;</span><br style="font-size:16px"><a href="https://github.com/lorensen/SPLBrainAtlas/wiki/Atlas-Summary" rel="noreferrer" target="_blank" style="font-size:16px">https://github.com/lorensen/<wbr>SPLBrainAtlas/wiki/Atlas-<wbr>Summary</a><br style="font-size:16px"><br style="font-size:16px"><span style="font-size:16px">The two-paned images show Discrete on left, Cube's Model (also</span><br style="font-size:16px"><span style="font-size:16px">undersold) on right. STL files created using discrete followed by</span><br style="font-size:16px"><span style="font-size:16px">non-manifold joint smoothing.</span><br></blockquote></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Dec 23, 2017 at 8:30 AM, Will Schroeder <span dir="ltr"><<a href="mailto:will.schroeder@kitware.com" target="_blank">will.schroeder@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">FYI- Back in the day (2004) Jim Miller and Bill Lorensen added the vtkDiscreteMarchingCubes class. This is used to generate contours for label masks (as you would find in segmentation). The key here is that the labels are non-continuous (i.e., scalar field is not smooth) so the regular edge interpolation of something like marching cubes doesn't work. Long story short, this class interpolates on the mid-edge point between regions, and it generates different regions (i.e., meshes) for each label.<div><br></div><div>This class and approach is woefully underappreciated and underused.</div><div><br></div><div>I am just adding flying edges versions (2D and 3D) of this functionality (MR 3739). These are of course much faster and scalable across multiple cores. They also produce slightly different results. Principally they do not merge coincident points belonging to different regions (since flying edges does not use a point locator) -- this is both good and bad depending on the application. Also normals are generated by the flying edges algorithm, not by vtkDiscreteMarchingCubes.</div><div><br></div><div>See the docs for more info.</div><div><br></div><div>Best,</div><div>W<span class="HOEnZb"><font color="#888888"><br><div><div><br></div>-- <br><div class="m_6735543747838568164gmail_signature"><div dir="ltr"><div>William J. Schroeder, PhD<br>Kitware, Inc. - Building the World's Technical Computing Software<br>28 Corporate Drive<br>Clifton Park, NY 12065<br><a href="mailto:will.schroeder@kitware.com" target="_blank">will.schroeder@kitware.com</a><br><a href="http://www.kitware.com" target="_blank">http://www.kitware.com</a><br><a href="tel:(518)%20881-4902" value="+15188814902" target="_blank">(518) 881-4902</a></div></div></div>
</div></font></span></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>William J. Schroeder, PhD<br>Kitware, Inc. - Building the World's Technical Computing Software<br>28 Corporate Drive<br>Clifton Park, NY 12065<br><a href="mailto:will.schroeder@kitware.com" target="_blank">will.schroeder@kitware.com</a><br><a href="http://www.kitware.com" target="_blank">http://www.kitware.com</a><br>(518) 881-4902</div></div></div>
</div>