Surface Normal Calculation Issue Using SurfaceNets

Dear community,

I’m writing to report an issue that showed up on my project regarding normal calculations when exporting models based on my segmentations. Basically when I export the models while SurfaceNets rendering is enabled under “Show 3D” on Segment Editor, the newly generated surface appears with intercalating rows of flipped normals.

I made a test scene that contains: 1. the segmentation; 2. models generated using default 3D rendering and SurfaceNets; 3. Models showing the effect of trying to fix the normals via the SurfaceToolbox module. The images below show the surface of the model exported with SurfaceNets (first), and the results after trying to fix with SurfaceToolbox (second). The other models exported with SurfaceNets disabled turned out fine (third).

Best regards,
Leonardo

I have observed similar patterns myself with the mouse skulls during the course. I will try to create a small reproducible dataset.

@lassoan can you take a look? Particularly if we are going to make the surface nets the default method for model creation.

I also noticed surface normals behaving as strangely with vtk surfacenets just when they were released. If it is the same issue, I would see patches of the surface flip orientation. Is that the same as you are seeing?

Surface normals are a little bit tricky to handle in surfacenets because all interfaces between adjacent segments are handled at once. Backside and front side lose their natural meaning.

The vtk surfacenets algorithm also keeps track of the labels on either side of the polygons of the surface (the front side and the back side based on the surface normal). It would be interesting to see if those values get flipped as well. If they do, then they would be an easy way to detect and correct the problem.

2 Likes