Week 4 -
Hey everyone, super excited that I finally have something to show!
About what all was done in the previous week
- Added support for viewing each face of tet separately for better visualization. The tets are scaled down by a factor so that the quality of tetrahedralization can be evaluated. (In code that is enabled by the variable oneFacePerTet)
- Added BVH tree building and ray casting to remove exterior tets, we check if the center of the tet lies inside the surface mesh before adding it in the final result
- Floating point error handling was added which solved some of the errors and the code seems to be more stable yet not entirely. It is still breaking in some cases which is exactly what I’m also working on right now.
I also wanted to specify some terminology for those wanting to look at the code:
- Violating tet - one which fails the Delaunay condition (a point lies inside the circumsphere of the tet)
- Boundary face - for a violating tet, a boundary face is one that is shared by a non-violating tet. The idea is that all violating tets when put together will form a convex structure and we connect the faces of this structure to the new point when forming tets.
As it stands, the code is still not entirely stable and in my testing is breaking when internal resolution is added. Even in the cases that internal resolution is not breaking the code, the result seems to be inaccurate which is what I’m looking into right now.
Now that I have some working code as well (pushed the latest code to my branch, please use Weld modifier to try out the tetrahedralization, it’s just used as a placeholder since it wasn’t in the original plan to build it as a standalone tool which would require some time. I can certainly do that once the objectives of the project are completed since most of the code would remain the same), I’m also opening up the discussion forum(link in first post) for any suggestions or feedback or observations you might have to share, would love to hear from everyone!