王增波 向海兰 贺丹 熊湘林
摘要:针对隐形牙套矫治技术开发了一套虚拟牙齿矫正仿真系统,利用Vc++和OpenGL作为开发平台,实现了模型导入显示、交互操作、面片拾取、牙齿分割和矫正路径规划等功能,生成的三维牙颌组织模型帮助医生模拟牙齿矫正的过程,并且直观地向患者展示手术治疗的效果。
关键词:仿真系统;牙齿矫正;交互式操作;拾取面片;分割
中图分类号:TP39 文献标识码:A
文章编号:1009-3044(201 9133-0272-03
1概述
目前由于金属矫正器治疗存在着诸多的不足,新兴了一种新型的用于错颌畸形矫正的虚拟手术技术
隐形牙套矫治技术,该技术采用一种隐形牙齿矫正手术对患者进行牙齿矫正,文献【1】中指出这种无托槽隐形矫治技术是通过计算机辅助制作出一套透明的弹性材料矫正牙套装置,通过在小范围不断移动牙齿达到矫正牙齿的目的,因为这种牙套装置外形美观、佩带舒适,在临床中受到广大患者的欢迎。文献【1】中通过对比传统矫治技术和无托槽隐形矫治技术,分析了无托槽隐形矫治技术的效果及临床优势。这类手术是通过对患者的牙颌数字模型进行交互式操作,再通过计算机仿真为患者量身定制一系列近乎无法察觉的透明牙托来完成整个矫正疗程。这种牙齿矫正方法能让医生在牙齿矫正手术前通过对牙颌数字模型进行交互式操作定制疗程,也能让用户在术前体验未来的矫正过程,因此开发一套虚拟牙齿矫正仿真系统就具有非常重要的现实意义。整个虚拟仿真过程要经历三维牙齿模型数字化扫描處理、三维拓扑结构重构、牙颌组织分割、牙齿交互重排、牙齿移动路径规划等诸多过程。下面就该系统的设计与实现效果进行介绍。
2矫正仿真系统的功能设计
牙齿矫正是个复杂的过程,牙齿矫正传真系统主要是通过模型的三维直观显示和交互操作,帮助正畸医生制定牙齿矫正计划,系统的主要功能有:
(1)STL文件导入模块。系统操作的数据来源于事先扫描好的三维数据,数据格式为常用的快速原型系统所应用的标准文件类型STL文件格式,系统需要实现从二进制和纯文本两种格式的STL文件里提取三角面片信息,并建立合理的数据结构对三角面片信息进行拓扑重构。
(2)控制显示模块。通过鼠标动作或工具按钮操作实现三维牙齿模型的多方位的观察,并能实现对模型任意地缩放和任意角度的旋转。
(3)快速拾取模块。通过鼠标对三维牙齿模型的交互式操作,并在工具栏上设置为牙齿标记组合框,用于对牙龈和牙齿进行标记区分。
(4)数据测量模块。利用快速拾取模块可以测量出牙齿模型上的任意两点的距离等信息。
(5)模型分割模块。采用交互标记扩展分割法对牙齿进行分割,对单个牙齿分别进行保存,并设计单齿运动的数据存储结构,存储单齿运动的状态参数。
(6)分割后交互式操作模块。对分割的各部件可实现获取、平移、旋转等各种交互式操作。
(7)牙弓线生成模块。在通过交互式操作获取牙齿模型的各项关键数据参数的基础上,采用合理的数学模型生成理想牙弓曲线,作为牙齿重排的依据。
(8)动画生成模块。采用关键帧技术,利用路径规划方法,依据理想牙弓曲线,生成符合生物医学和口腔正畸学的理想牙列,并记录牙齿移动的关键帧运动参数,插值生成牙齿移动过程的动画序列。
3矫正仿真系统的实现
根据前面的功能需求,为了实现较好的交互和可视化效果,系统开发采用Vc++的MFC进行编程实现,利用OpenGL三维图形库实现三维模型的显示和交互式操作,系统通过设置合理的菜单和工具栏按钮,完成的主界面如图1所示,菜单栏和工具栏实现了所有的功能,如图2所示,其中有些菜单项和按钮是灰色的不能操作是因为前面的工作还未完成这些功能是不能操作的,当前面所需的工作完成了灰色的状态就会取消变成可操作,这样可避免使用者的不规范操作或错误操作。
3.1模型文件导入及显示模块
通过鼠标单击导入按钮,实现响应函数OnFileOpenf)的功能模块,该功能模块显示打开文件对话框,并进行一些变量初始化的工作;通过使用ImportSTLO函数载人数据,建立拓扑关系并建立模型的显示列表供显示使用;并判断是否已存在分割文件,若存在通过调用OnShowDentition()函数显示分割后的模型。模型被导入后会自动调用拓扑结构生成算法,生成面片间的拓扑结构,并调用显示模块显示出三维牙齿模型,并可以通过工具栏上的相应按钮实现实体模型显示、网格模型显示、点云显示、平移、放大、缩小、旋转、自动旋转、坐标轴显示、模型信息显示、模型重置、材质渲染、数据测量等交互功能,按钮位置按顺序见图2加框部分。
3.2拾取模块
通过鼠标单击拾取按钮回响应函数OnPickup()的功能模块,该功能模块首先初始化区域划分数组m_tag大小为面片数,该数组值表示该面片所属牙齿的编号;在响应鼠标左键单击按下调用拾取函数GetSelectionRay(),通过拾取算法找到一个距离最近的相交三角形作为拾取面片,并把拾取的面片索引保存在数组IntersectFlag中,交点坐标保存在数组PickPointion中,同时对拾取的面片作上分类标记,拾取效果如下图3所示。拾取过程中通过鼠标左键单击不同牙齿或牙龈上的特征点作为分割模块的种子点,工具栏上有一个下拉列表框会自动切换牙齿的名称,也可以自己先确定牙齿名称再进行拾取,如果某个牙齿分割效果不太理想,可以在这颗牙齿上再多选一到两个点,再进行分割。
3.3分割模块
分割模块通过菜单“分割方法”的下拉菜单项目中选择交互式标识分割、自动域值分割和域值设定分割三种方法,满足使用者的不同需求。三种不同的分割方法会自动调用对应的分割算法,根据拾取模块确定的种子点进行牙齿和牙龈的分割,分割后用不同颜色的渲染对各颗牙齿和牙龈进行渲染显示,如图4所示。
3.4分割后牙齿的交互操作
牙齿被分割后需要对牙齿和牙龈以独立对象进行显示,并通过鼠标能够对单颗牙齿进行交互式操作,具体的这些功能在工具栏和菜单栏上有相应的按钮和菜单项可以调用。
(1)显示牙列模块
打开“交互排牙”菜单中的相应菜单项或工具栏中相应图标按钮实现牙列渲染和绘制牙弓曲线,实现牙颌模型的真实感渲染效果以及牙弓线的绘制辅助矫正后牙齿的定位。通过单击工具栏上按钮囹调用响应函数onshowdentitionO建立各牙齿显示列表,分开显示各颗牙齿,按牙齿白和牙龈红两色方式显示牙齿模型,如图5所示。
4结论
该仿真系统利用vc++和0penGL开发平台,研制出一套基于隐形牙套矫治技术的虚拟牙齿矫正系统,通过对患者牙齿的三维牙颌数字模型进行三维重构、交互式操作、牙齿分割和路径规划等模块功能的实现,完成了牙齿矫正过程的可视化,并为后期的治疗提供了大量的数据。