Company: Hypergiant
Role: Creative Technologist
Tools: Python3+, Unity, Electrical Engineering


May 28, 2019

Anatomotion was a proof of technology for pioneering of deploying sensors directly on the teeth, enabling a new level of precision and measurment that will revolutionize the treatment of several conditions, of which include Obstructive Sleep Apnea (OSA) and Temporomandibular disorder (TMJ). The initial product is the world's first 6-axis jaw tracking solution.

Despite advances across dental technology, the majority of bite diagnosis today still happens with stone models, and in some cases radiation and X-ray. These methods are complicated, often imprecise, and can be incredibly costly — well over $50,000. All of these methods create inefficiencies in workflow by breaking up the digital log of a patient’s dental history, and none manage to model motion.

The proof of technology was completely written from scratch in Unity, demanding an initial design phase as well as thinking ahead for the future where the system's architecture would be geared toward Artificial Intelligence modeling based on the data being collected. The reinforced treatment would allow for intelligent data-driven insights and recommendations for dental practitioners. The main functionality allows dental practicioners the ability to view 3D scans in realtime with the ability to record, playback, and capture states to identify the optimal bite registration to export and send off to a third-party mouthguard manufacturer.

Knowing that it was required to have a localized database for client information for this proof of technology a separate background service was needed to handle for any database queries, sensor connection handling, and any mesh operations. The background service, named AnatoService, was set up as an ASGI Web API server using API Star 0.5.x. This framework allowed the interaction for making simple REST queries (GET, POST) to handle for all background services.

The process starts with dentists scanning the clients maxillary (upper) and mandible (lower) teeth. This file is standardized across all dental scanning applications as an .STL file. Because of this, a custom importer was created to handle importing and exporting STL meshes into unity at runtime. However one issue that was discovered was that these files needed to be aligned properly since the maxillary and mandible meshes are exported in separate files. The mesh alignment was solved using a python-based Iterative Closest Point algorithm, later to be discovered full-bite meshes were exportable through the scanning applications to have the mesh operation simplified to splitting the individual STL files into separate Maxillary and Mandible meshes based on a modified KDTree approach from Trimesh.

Once the clients teeth are scanned, either a new patient session is created or current patient file is opened to upload and append new jaw data to patient file. Then patients have the two sensor setup attatched to their upper and lower teeth. This process requires a connectivity and calibration step specifically to identify the full range of motion of the jaw. From there, the 3D view comes into play where the patient and dentist can watch in realtime the jaw moving around allowing the realtime feedback and data-driven information to help give insigts for diagnosis.

Orthographic view of real time jaw tracking