New Isocontouring filter for discrete, labled volumetric data: vtkSurfaceNets3D

Derk I’m very happy that you tried this out and have had some success. We are in the middle of tuning this class etc. and all feedback is welcome. LIkely there will be some blood on the floor before we get it right, but we are pretty excited with the possibilities and will keep at it. It’s interesting, we are now working with several groups acquiring data in similar fashion using a variety of imaging modalities, and this seems to be an increasingly important visualization algorithm. Anyway, let me try to answer some of your questions in the following.

  1. The datasets in VTK consist of a geometric component (e.g., points GetPoints()) and a topological component polygons (e.g., GetPolys()). Then associated with points and polygons are point data (e.g., polydata.GetPointData()) and cell data (polydata.GetCellData()). which is basically an array of data arrays associated with the points or cells. I believe you want (polydata.GetCellData().GetArray(“BoundaryLabels”)). There is a 1-to-1 association between the nth triangle and the nth 2-tuple cell data. If you need help getting at the data in the boundary labels data array let us know and we’ll help.

  2. I agree that this is an inefficient interface. Just today I was conferring with some colleagues on how to efficiently extract labeled “objects” from the output. We have some ideas and are going to try and implement a “vtkAtlasModeller” filter to do so shortly. I’m behind the times with STL / 3MF, maybe someone else on this list can help. However, you probably noticed the STL writer etc so there is a way, albeit an inefficient one. We’re coming to realize that there are some auxiliary classes to write. We’re already using vtkPackLabels to manipulate the label maps, and it’s clear there are more to add. Anyway, if you are willing to bleed on the edge, when we have a prototype vtkAtlasModeller to try out, I’ll point you to a branch and you can provide feedback.

As far as the VTK building process, I am just amazed how well the community keeps this going. I just try to stay out of their way and throw an algorithm over the fence now and then :slight_smile: I’m curious, are you running with TBB enabled? or using a different SMPTools backend.

Did you try hitting the “e” key in the window? By default this works for me.

Finally, we have a SurfaceNets publication under review that we have selectively shared with researchers. I can’t say more at this point on a public forum until the review process is complete, but if you want to take a look and promise to keep it within your organization I can share it. Contact me at my email will.schroeder@kitware.com if you are interested.