
Context
Dentists will sometimes need to steadily adjust the shape of a patient’s teeth within the mouth. This is often done with a series of retainers, each one slightly different so that the teeth are moved very gradually until the desired orientation has been defined.
To be able to create the series of retainers for a patient, 3D data is created from the patient’s teeth, and this data is used to choose how to make the retainers form the teeth over time. The 3D data is provided as an STL file, which contains all the geometry data of the scan.
The 3D data is loaded into a program which can then distinguish between gum and tooth, then once separated, the dentist can configure the teeth into their desired orientation. The program then produces a set of prescriptions based off of the dentists changes.
My project
For my final year project, I set out to create a prototype of a tool which would be able to differentiate between gums and teeth in a given 3D dental model. I managed to load in the STL data and convert it into a new format, VPR, so that the individual vertex data within the STL could be traversed and have algorithms ran against it.
This new VPR data could then have nodes positioned around the area defining a tooth, and a combination of curvature analysis and path finding was used to define the tooth-gum boundary. The program could then separate the defined teeth into their own objects, leaving behind a mesh defining the gums.
Goals Achieved
Creating a OpenGL application using the Windows Template Library (WTL) with appropriate user interaction
Loading STL binary data and converting it into a Vertex Polygon Relational (VPR) format to render and preform algorithms against
Research and construct algorithms to run against the VPR model to calculate mean curvature across the surface of the mesh
Create user interaction to allow a user to place nodes to define the boundary between a tooth and the gum. this would use an A* pathfinding algorithm, using the curvature data as a heuristic, to define this boundary
Separation of one mesh into two along the gum-tooth boundary, reconstructing the mesh data structures


