Which filter is the perfect match for gum deformation used in dental solution

Hi everyone,

I am very new to vtk, I am looking for an algorithm for geometric deformation, specifically applicable to dental treatment. The problem is that I have an upper teeth in the form of a 3D model (.STL or .PLY format). When I move a tooth, I want the areas around the tooth to be transformed accordingly. You can see this video link Smile.web | Web viewer for clear aligners treatment plans - YouTube for more information.

I tried using vtkDeformPointSet, vtkWarpVector algorithms but it doesn’t work as expected.
Could anyone give me some advice or steps to do this. Thanks in advance!

Any response are highly appreciate. Many thanks!

1 Like

Welcome to the support forum

In the video, it seems like teeth disappear with the motion of the geometry? If that is something you wanted, there might not be an easy way to do that in VTK. Could you elaborate on what didn’t work as expected?

EDIT: Also, other tools like Blender may be more appropriate for your use case, such as the mesh deform operation … mostly because of the convenience of using a mouse to grab control nodes.

Thanks @rexthor for your reply. Here is the another video illuminating what I’m going to be expected.

As demonstration at the [Maxillary Setup] in the video, after selecting a certain tooth, the user will move/translate it a little, then the surrounding gum will be deformed together.

Below is the detailed steps of my current approach:

  1. Load a jaw from an .obj file
  2. Segmentation to have a separated tooths.
  3. Tried to apply vtkWarpVector filter on a selected tooth when moving it around, but not as expected.

And here is the result

As you can see in the above figure, the result in the green circle does not look nature/smooth like Align Studio has done.

I’m also looking for other vtk filters but currently not found a suitable method yet. Hope you can give me a right filter or just keyword for this problem, so I can focus and trying on a limited technique.

Thanks for taking the time to support me!

Ok - I see what you mean. I think what is likely happening is that the tooth surface remains undistorted and the gum surface gets distorted, so the polygons that are on the boundary between the surfaces end up getting “strained-looking” like you showed. You might have to increase the subdivision level of your mesh somehow, or I think that there might be some filters in VTK that might smooth your surface after the fact - but the issue seems to be that the polygons are getting stretched out too far for a realistic representation.

I did not spend much time reading this class description, but perhaps vtkWindowedSincFilter might help?
https://vtk.org/doc/nightly/html/classvtkWindowedSincPolyDataFilter.html#details