# Dental models orientation

**URL:** https://discourse.vtk.org/t/dental-models-orientation/16311
**Category:** Support
**Tags:** code, proposal
**Created:** [March 3, 2026, 9:52am UTC](https://discourse.vtk.org/t/dental-models-orientation/16311 "2026-03-03T09:52:01Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![bassfaye](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/b/ba9def/32.png) [@bassfaye](https://discourse.vtk.org/u/bassfaye)
#### Post date: [March 3, 2026, 9:52am UTC](https://discourse.vtk.org/t/dental-models-orientation/16311/1 "2026-03-03T09:52:02Z")

</div>

I have two dental models (upper and lower model). They are randomly oriented (see image 1). I want to orient dental models like image 2 (Y axis to anterior teeth face a consistent direction, Z axis to occlusal). How can I proceed to do that?

 ![Image 1](https://discourse.vtk.org/uploads/default/original/2X/4/461ffb1c62ce8ce06d026056184d264268dfb430.jpeg)

 ![Image 2](https://discourse.vtk.org/uploads/default/original/2X/d/d21cd7073977fa40a5c63eab1f0af2a2a832cd90.jpeg)

---

<div class="post-metadata">

### Author: ![mau\_igna\_06](https://discourse.vtk.org/user_avatar/discourse.vtk.org/mau_igna_06/32/8064_2.png) [@mau\_igna\_06](https://discourse.vtk.org/u/mau_igna_06)
#### Post date: [March 3, 2026, 11:17pm UTC](https://discourse.vtk.org/t/dental-models-orientation/16311/2 "2026-03-03T23:17:23Z")

</div>

The no-code solution is to load the 3D models into 3D Slicer and use the interactive transform handles to do the rotation (or any other motion you want to achieve a realistic occlusal positioning between both models)

---

<div class="post-metadata">

### Author: ![bassfaye](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/b/ba9def/32.png) [@bassfaye](https://discourse.vtk.org/u/bassfaye)
#### Post date: [March 4, 2026, 8:18am UTC](https://discourse.vtk.org/t/dental-models-orientation/16311/3 "2026-03-04T08:18:38Z")

</div>

Thanks for your reply. I use the no-code method to orient models one by one. However, I have a large number of models. I want a code solution in C++ to auto orient models to the dental standard orientation.

---

<div class="post-metadata">

### Author: ![Paulo\_Carvalho](https://discourse.vtk.org/user_avatar/discourse.vtk.org/paulo_carvalho/32/370_2.png) [@Paulo\_Carvalho](https://discourse.vtk.org/u/Paulo_Carvalho)
#### Post date: [March 4, 2026, 2:06pm UTC](https://discourse.vtk.org/t/dental-models-orientation/16311/4 "2026-03-04T14:06:22Z")

</div>

Hello,

You can try using the ICP algorithm ([https://examples.vtk.org/site/Cxx/Filtering/IterativeClosestPointsTransform/](https://examples.vtk.org/site/Cxx/Filtering/IterativeClosestPointsTransform/)) to do a rigid (I suppose you don’t want the models to deform) registration against a reference model. The reference model could be the dental model shown in Fig. 2. ICP registration finds which rigid transform (only translation and rotation; no scaling, no shear) is needed so a model closely matches a reference model.

best,

PC

---

<div class="post-metadata">

### Author: ![Dakom](https://discourse.vtk.org/user_avatar/discourse.vtk.org/dakom/32/10380_2.png) [@Dakom](https://discourse.vtk.org/u/Dakom)
#### Post date: [March 4, 2026, 4:18pm UTC](https://discourse.vtk.org/t/dental-models-orientation/16311/5 "2026-03-04T16:18:05Z")

</div>

Hello,

In my experience, using directly the vtk ICP algorithm will only work if the models are almost already aligned. So I was thinking first use trimesh to do the “global registration”. Then vtk’s ICP should work. More detail on the global registration here :

> **[Global registration — Open3D latest (664eff5) documentation](https://www.open3d.org/docs/latest/tutorial/Advanced/global_registration.html)**

It’s something that I have to do with other objects. I didn’t fully test this method so there might be some problems along the way.
