TEMPLATE
Final Year Project
DentalViewer

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

 
Curvature Analysis
Here the transition from dental mesh with a gum-tooth boundary to separate gum and tooth objects can be seen, along with the output for this operation occuring (the ‘sub-object’ being the tooth shown).
 
Curvature Analysis
Applying the curvature analysis to the dental scan highlights the gum-tooth boundary
 
Tooth nodes being used
Nodes being used to define a path around a tooth