一种基于VR的导板3D打印模型建立方法与流程

文档序号:18902484发布日期:2019-10-18 22:08阅读:246来源:国知局
一种基于VR的导板3D打印模型建立方法与流程

本发明涉及3d技术领域,尤其涉及一种基于vr的导板3d打印模型建立方法。



背景技术:

3d打印技术相对于传统的削材及铸造技术,不仅能根据个性化需求定制,例如,在医疗领域方面可以实现材料与病变部位的完全匹配,进行骨缺损部位的原位打印,还能打印一些通过传统的方法难以制造的自由复杂结构。目前,3d打印已经成功规模化应用于骨科和口腔科领域,一批基于3d打印的患者定制化截骨导板、骨科植入物、种植牙等已经获得欧盟认证(europeanconformity,简称ce)与美国食品和药物管理局(foodanddrugadministration,简称fda)批准用于临床。

手术导板全称为“手术导航实物模板”,是第一批3d打印技术在医疗中的主要应用成果之一,主要作用是帮助骨折精准复位、辅助螺钉等植入物或器械达到预定的位置、辅助手术刀精准切割,在提高手术操作便利性的同时,使手术操作的准确性明显提高。采用3d打印导板辅助手术准确率高、术中风险降低、手术安全性高、临床疗效满意,是一种有效可行和值得推广的技术。但是需要将病变部位打印出实物才能进行观测,不仅浪费打印材料和打印时间,而且打印出来的模型进行一次切割演练后便无法复原,需要再次打印。

可见,现有技术存在3d打印在手术规划和术前演练期打印材料损耗大、打印时间长等问题。

上述缺陷是本领域技术人员期望克服的。



技术实现要素:

(一)要解决的技术问题

为了解决现有技术的上述问题,本发明提供一种基于vr的导板3d打印模型建立方法,解决现有技术中3d打印在手术规划和术前演练期打印材料损耗大、打印时间长等问题。

(二)技术方案

为了达到上述目的,本发明采用的主要技术方案包括:

本发明一实施例提供一种基于vr的导板3d打印模型建立方法,其包括:

在虚拟现实vr场景中,基于对被切割模型的平面切割得到切割位置和切割目标模型;

根据所述切割目标模型的网格信息进行表面网格提取,在所述切割目标模型的表面生成具有预设厚度的薄膜;

利用矩形板在所述切割位置对所述薄膜的表面进行切割,得到导板卡槽位置以及形成导板表面;

根据所述导板卡槽位置和所述导板平面构建所述vr场景下的导板3d打印模型。

本发明的一个实施例中,所述基于对被切割模型的平面切割得到切割位置和切割目标模型包括:

根据切割工具的位置确定针对所述被切割模型的切割位置和切割平面;

根据所述被切割模型的网格顶点与所述切割平面的相对位置对所述被切割模型进行分割,产生模型切口,其中所述被切割模型由多个三角面组成,且所述三角面由三个所述网格顶点组成;

对所述模型切口通过添加三角网格进行填充,形成所述切割目标模型。

本发明的一个实施例中,所述根据所述被切割模型的网格顶点与所述切割平面的相对位置对所述被切割模型进行分割包括:

根据所述网格顶点建立网格顶点数组、标签数组、用于存放所述网格顶点的第一顶点集合和第二顶点集合,并建立代表旧顶点数组索引与新顶点集合索引映射关系的整数数组;

将所述被切割模型的网格顶点以及在所述切割平面上选取的一点从空间坐标转换到局部坐标,得到网格顶点的局部坐标和切面上一点的局部坐标;

将所述切割平面的法向量从空间坐标转换到局部坐标,得到局部坐标法向量;

根据所述网格顶点的局部坐标与所述切面上一点的局部坐标形成的向量与所述局部坐标法向量的点积进行判断,如果所述点积大于或等于0,则将所述网格顶点添加到所述第一顶点集合中,并在所述标签数组中设置对应的标签值为1;如果所述点积小于0,则将所述网格顶点添加到所述第二顶点集合中,并在所述标签数组中设置对应的标签值为0。

本发明的一个实施例中,所述根据所述被切割模型的网格顶点与所述切割平面的相对位置对所述被切割模型进行分割还包括:

针对所述三角面建立用于存放所述三角面的第一三角面集合与第二三角面集合;

当所述三角面的三个网格顶点均位于所述切割平面的一侧时,将所述三角面的所述三个网格顶点划分到所述第一三角面集合或所述第二三角面集合中;

当所述三角面的三个网格顶点分别位于所述切割平面的两侧时,按照所述三角面的顶点索引对应的标签值对所述三角面进行切割,将切割后的三角面分别添加到所述第一三角面集合和所述第二三角面集合中。

本发明的一个实施例中,所述按照所述三角面的顶点索引对应的标签值对所述三角面进行切割包括:

根据所述切割平面与所述三角面相交形成两个切割点,得到两个切割点的坐标位置,所述两个切割点连接形成所述模型切口的边界;

根据所述两个切割点的坐标位置和所述三角面的原三个网格顶点形成三个新的三角面,将三个所述新的三角面添加到所述第一三角面集合和所述第二三角面集合中,并将所述两个切割点分别添加到所述第一顶点集合和所述第二顶点集合中。

本发明的一个实施例中,所述根据所述切割目标模型的网格信息进行表面网格提取,在所述切割目标模型的表面生成具有预设厚度的薄膜,包括:

基于球形区域网格提取方法对所述切割目标模型的网格信息进行提取,得到薄膜的下表面;

对所述薄膜的下表面按照所述薄膜的下表面的法向量的方向进行所述预设厚度的位移,并对位移后的网格顶点查找重复点;

计算所述重复点位移后的坐标,基于所述坐标对位移后的重复点进行修正,到薄膜的上表面;

对所述薄膜的上表面和所述薄膜的下表面的边缘上的切割点逐对连接成三角面,得到所述薄膜。

本发明的一个实施例中,所述基于球形区域网格提取方法对所述切割目标模型的网格信息进行提取,包括:

将所述切割目标模型的网格顶点和所述切割平面上选取的点由局部坐标转换为世界坐标,并在所述世界坐标下计算所述切割模型上的网格顶点与所述切割平面上选取的点之间的距离;

根据所述切割目标模型的网格顶点与所述切割平面之间的距离与预设的球形区域的半径进行比较,得到所述球形区域内的网格顶点;

根据所述切割目标模型的三角面的三个顶点索引,如果所述三个顶点索引均在所述球形区域内,则所述三角面位于所述球形区域内;

如果所述三个顶点索引不是全部在所述球形区域内,则根据所述切割平面对所述三角面进行切割,得到两个切割点,将位于所述三个顶点索引与所述两个切割点因切割产生以及切割后划分产生的新三角面,划分为所述球形区域内;

根据所述球形区域内的网格顶点和三角面进行提取,得到所述球形区域内的表面网格。

本发明的一个实施例中,所述利用矩形板在所述切割位置对所述薄膜的表面进行切割,得到导板卡槽位置以及形成导板表面,包括:

利用所述矩形板坐标构建4个平面,基于所述4个平面分别对所述薄膜的上表面和所述薄膜的下表面进行切割,切割的位置即为所述导板卡槽位置;

根据所述矩形板的顶点坐标生成导板的网格顶点,并根据所述导板的网格顶点与所述薄膜上的切割点相连构成三角面网格,形成所述导板表面。

本发明的一个实施例中,所述利用所述矩形板坐标构建4个平面包括:

利用所述矩形板的左右两面作为切割所述薄膜的下表面两端的平面,得到所述4个平面中的2个平面;

将所述矩形板平移所述预设厚度距离后,作为切割所述薄膜的上表面两端的平面,得到所述4个平面中的剩余2个平面。

本发明的一个实施例中,所述根据所述导板的网格顶点与所述薄膜上的切割点相连构成三角面网格,形成所述导板表面,包括:

根据所述矩形板的上下两个顶点坐标得到切割方向;

结合所述切割方向按照所述4个平面对所述薄膜进行4次切割,得到上半圈切割点和下半圈切割点;

所述导板的网格顶点中的上半部分网格顶点与所述上半圈切割点相连形成三角面网格,得到导板上表面;

所述导板的网格顶点中的下半部分网格顶点与所述下半圈切割点相连形成三角面网格,得到导板下表面;

根据所述导板上表面和所述导板下表面形成所述导板表面。

(三)有益效果

本发明的有益效果是:本发明实施例提供的基于vr的导板3d打印模型建立方法,一方面,通过在vr场景中对被切割模型的切割位置、导板等进行建模,从而可以在虚拟现实中无限制地对真实的手术对象重复进行多次切割操作,在切割位置生成3d导板打印模型。另一方面,利用虚拟现实的真实感和立体感的优势,在虚拟现实中构建3d导板打印模型,比传统的直接3d打印导板模型可以减少操作难度和制作时长。

附图说明

图1为本发明一实施例提供的一种基于vr的导板3d打印模型建立方法的流程图;

图2为本发明一实施例中提供的普通ui交互界面示意图;

图3为本发明一实施例中提供的vr场景ui交互界面示意图;

图4为本发明一实施例图3中ui界面的示意图;

图5为本公开一实例中对图4所示的工具进行设置的界面示意图;

图6为本发明一实施例图1中步骤s110的流程图;

图7为本发明一实施例中模型切割算法的流程图;

图8为本公开一实施例图1中步骤s120的流程图;

图9为本发明一实施例中三角面分割示意图;

图10为本发明一实施例中在vr场景中构建的切割目标模型的示意图;

图11为本发明一实施例中利用手柄锁定导板模型时的示意图;

图12为本发明一实施例中利用手柄锁定卡槽模型时的示意图;

图13为本发明一实施例中利用手柄移动导板模型时的示意图;

图14为本发明一实施例中生成双导板模型的示意图;

图15为本发明一实施例中生成半导板模型的示意图。

具体实施方式

为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。

本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。

在本发明相关实施例中,虚拟现实作为近年来应用于医疗领域的新兴技术,其与传统医疗结合的应用也存在巨大的潜力。在虚拟现实中对与真实患者人体骨头组织的三维模型进行观察,将复杂的骨质情况更直观地展示在临床医生面前,有利于为手术提供明确的手术方案,避免了通过二维影像观察不到的手术陷阱,对手术中可能遇到的困难提取做好相应的准备,更有利于手术部位的确定及相应的导板设计方案确定。由于单纯采用3d打印不仅浪费打印材料和打印时间,而且打印出来的模型进行一次切割演练后便无法复原,需要再次打印。而在虚拟现实中可以无限制地对真实人体组织器官模型进行重复多次切割操作,直到找到最优的模型方案为止,充分体现虚拟现实的优势。

图1为本发明一实施例提供的一种基于vr的导板3d打印模型建立方法的流程图,如图1所示,该方法包括以下步骤:

如图1所示,在步骤s110中,在虚拟现实vr场景中,基于对被切割模型的平面切割得到切割位置和切割目标模型;

如图1所示,在步骤s120中,根据所述切割目标模型的网格信息进行表面网格提取,在所述切割目标模型的表面生成具有预设厚度的薄膜;

如图1所示,在步骤s130中,利用矩形板在所述切割位置对所述薄膜的表面进行切割,得到导板卡槽位置以及形成导板表面;

如图1所示,在步骤s140中,根据所述导板卡槽位置和所述导板平面构建所述vr场景下的导板3d打印模型。

基于上述,本发明提供一种基于vr的3d打印模型建立方法及软件系统,与传统3d打印模型设计软件相比,本发明的创新在于结合了虚拟现实技术,利用虚拟现实真实感、立体感的优势,对与真实的人体组织(如骨头)1:1重建的三维模型进行观察和虚拟手术切割,不仅有效解决3d打印在手术规划和术前演练期打印材料损耗大、打印时间长等问题,而且还能在虚拟现实中对手术部位自动生成3d导板模型,也可手动进行个性化设计,比普通3d打印设计软件用电脑屏幕鼠标的操作更具有立体感、沉浸感和便捷性,减少操作难度和制作时长。

本发明在具体实现中主要包括以下三步:

第一步,构建虚拟工作台场景:构建手术室工作台环境,并实现模型的实时导入与导出;

第二步,分别设计适用于电脑显示屏的ui界面和虚拟现实中的虚拟交互界面;

第三步,构建各种切割工具、导板生成工具并设计对应的切割算法和导板自动生成算法。

下面对上述三个步骤进行详细描述:

第一步:构建虚拟工作台场景

在场景设计方面,针对不同的操作需求应该设计不同的场景去实现。在用户进行3d模型设计时,需要合适的工作室、工作台、操作工具等场景设计,利用unity的功能模块对场景进行光照渲染,并在场景中加入vr组件,结合unity的物理引擎与人体组织器官模型进行交互。而在需要导入导出模型文件时,则需要设计常规的电脑桌面界面场景,去掉vr相关组件,利用电脑键盘鼠标进行操作,这是因为导入模型文件需要对电脑的文件资源管理器进行操作,而vr手柄在这方面的操作不如普通的键盘鼠标输入设备的操作快速便捷,因此本发明的系统设计普通场景和vr场景,以满足不同的操作需求,例如,用户可以在普通场景下进行文件导入,在vr场景下进行导板3d打印模型的构建。

第二步:设计用于虚拟交互的用户界面(userinterface,简称ui)

在ui交互方面,本发明设计的系统针对普通场景和vr场景设计两套ui界面。图2为本发明一实施例中提供的普通ui交互界面示意图,如图2所示,在普通场景ui界面中包括菜单选项列表和对应不同功能的按钮,例如菜单选项列表下包含加载模型、重置和导入模型。针对每个选项设计用于响应鼠标点击事件的按钮,并且调用文件资源管理器,能实时导入模型文件到系统中。通过点击“加载模型”按钮,可以弹出文件资源管理器,选中模型文件后导入系统,模型显示在界面中央,还包括对于模型的旋转操作,例如可通过勾选的方式选择模型上下旋转还是左右旋转。通过点击“重置”按钮,可以取消导入模型,回到初始状态;通过点击“导入模型”按钮,确定导入模型,载入vr场景。

图3为本发明一实施例中提供的vr场景ui交互界面示意图,vr场景ui由于输入输出设备vr头盔和手柄的独特性,需要设计特殊的交互界面。在非vr端产品里,可放置界面的范围通常由硬件(手机、电脑屏幕)的尺寸决定,而在虚拟世界中具有360°的视野,任何一个地方都可以放置界面,如果界面位置固定则用户很可能需要频繁转身才能与界面进行交互。如果界面位置不固定,则界面移动时容易嵌入到vr场景中的物体里面,影响用户的体验。

因此本发明的系统设计界面由用户点击手柄菜单按钮召出,界面放置位置由用户使用手柄指定,当界面被场景物体遮挡时,用户可重复点击菜单键重新放置界面位置。这样的设计操作简单易用,用户可自由调整界面的位置。

如图3所示,包括位于前景中的操作台和位于后景中的ui界面,在与界面的交互方式上,目前主流的交互方式是通过手柄发射射线与悬停在场景中的虚拟界面进行交互,虽然这样用户无需走动,也不需要伸手去触碰ui界面,避免现实中碰到墙壁等问题。但缺点是界面位置需要离用户较远,容易被场景中的物体遮挡,射线操作也不符合用户的行为习惯。因此考虑到本发明的系统界面按钮简单并由手柄弹出距离较近,仍采取直接触碰的交互方式,更加简单易用,符合现实中的行为习惯。

虚拟现实ui界面各个元素功能介绍:

(1)工具栏菜单,点击手柄的菜单键后打开工具栏,图4为本发明一实施例图3中ui界面的示意图,如图4所示,界面中提供5种操作工具供用户使用,使用手柄选择键点击“创”建时生成对应工具在界面前,点击“清除”时按顺序删除场景中的对应工具,5种操作工具分别包括:

①切割工具:用来对导入系统的模型和系统生成的模型整体进行平面切割;

②局部切割工具:用来对导入系统的模型和系统生成的模型局部网格进行切割;

③单导板生成工具:生成一块矩形板供用户使用,使用矩形板可在切割部位生成对应大小的导板;

④双导板生成工具:生成两块矩形板供用户使用,使用矩形板可在切割部位生成对应大小的共享一个网格的两个导板;

⑤半导板生成工具:生成一块矩形板供用户使用,使用矩形板可在切割部位生成对应大小的单面导板。

(2)模型操作菜单,选中要进行操作的物体按住手柄选择键同时点击手柄菜单键后打开相关设置菜单:

图5为本公开一实例中对图4所示的工具进行设置的界面示意图,如图5所示,可以做如下设置:

①设置大小:可以通关手柄拖动界面中的长条更改物体的长宽高,右侧文本框显示对应的数值,点击文本框可以手动输入精确的数值。

②设置颜色:提供多种颜色按钮,点击按钮将物体更改为该按钮对应的颜色,点击更多更换界面中的按钮的颜色。

③复制物体:对该物体进行复制。

④导出模型:将模型导出到本发明的系统文件夹下。

⑤删除物体:将选中的物体在场景中删除,并关闭该菜单界面。

本发明中导板3d打印模型建立的方法主要在第三步中实现,接下来对图1所示各个步骤的具体实现进行详细阐述:

在步骤s110中,在虚拟现实vr场景中,基于对被切割模型的平面切割得到切割位置和切割目标模型。

本实施例中的切割工具是用来对导入系统的模型和系统生成的模型整体进行平面切割的手术刀工具,不仅能对导入到系统中的人体组织模型进行切割,还能对系统自动生成的导板进行修剪。

图6为本发明一实施例图1中步骤s110的流程图,具体包括以下步骤:

在步骤s601中,根据切割工具的位置确定针对所述被切割模型的切割位置和切割平面。

在步骤s602中,根据所述被切割模型的网格顶点与所述切割平面的相对位置对所述被切割模型进行分割,产生模型切口,其中所述被切割模型由多个三角面组成,且所述三角面由三个所述网格顶点组成。

本发明的一个实施例中,该步骤包括对网格顶点的分割,具体包括:

1)根据所述网格顶点建立网格顶点数组、标签数组、用于存放所述网格顶点的第一顶点集合和第二顶点集合,并建立代表旧顶点数组索引与新顶点集合索引映射关系的整数数组;2)将所述被切割模型的网格顶点以及在所述切割平面上选取的一点从空间坐标转换到局部坐标,得到网格顶点的局部坐标和切面上一点的局部坐标;3)将所述切割平面的法向量从空间坐标转换到局部坐标,得到局部坐标法向量;4)根据所述网格顶点的局部坐标与所述切面上一点的局部坐标形成的向量与所述局部坐标法向量的点积进行判断,如果所述点积大于或等于0,则将所述网格顶点添加到所述第一顶点集合中,并在所述标签数组中设置对应的标签值为1;5)如果所述点积小于0,则将所述网格顶点添加到所述第二顶点集合中,并在所述标签数组中设置对应的标签值为0。

本发明的一个实施例中,该步骤还包括对三角面的分割,具体包括:

1)针对所述三角面建立用于存放所述三角面的第一三角面集合与第二三角面集合;2)当所述三角面的三个网格顶点均位于所述切割平面的一侧时,将所述三角面的所述三个网格顶点划分到所述第一三角面集合或所述第二三角面集合中;3)当所述三角面的三个网格顶点分别位于所述切割平面的两侧时,按照所述三角面的顶点索引对应的标签值对所述三角面进行切割,将切割后的三角面分别添加到所述第一三角面集合和所述第二三角面集合中。

本发明的一个实施例中,3)中按照所述三角面的顶点索引对应的标签值对所述三角面进行切割进一步包括:

首先,根据所述切割平面与所述三角面相交形成两个切割点,得到两个切割点的坐标位置,所述两个切割点连接形成所述模型切口的边界;其次,根据所述两个切割点的坐标位置和所述三角面的原三个网格顶点形成三个新的三角面,将三个所述新的三角面添加到所述第一三角面集合和所述第二三角面集合中,并将所述两个切割点分别添加到所述第一顶点集合和所述第二顶点集合中。

在步骤s603中,对所述模型切口通过添加三角网格进行填充,形成所述切割目标模型。

基于上述,步骤s120中采用的模型切割算法的原理是根据手术刀的位置确定一个空间坐标中的平面,然后计算被切割模型的每一个网格顶点与平面的相对位置,建立两个新的顶点数组分别映射左边和右边的网格顶点。将3个顶点全在一侧的三角面根据映射关系分配到左右的三角面数组,而顶点不全在一侧的三角面与切割平面相交,计算出交点后对这些三角面进行分割并记录下分割点添加到对应的顶点数组,最后对两侧的分割点相连缝合三角面,补上被切割物体暴露的孔洞。

图7为本发明一实施例中模型切割算法的流程图,具体包括以下步骤:

步骤s701,将切面左侧的网格顶点分为a组,右侧的网格顶点分为b组;

步骤s702,遍历三角面数组;

步骤s703,判断三个网格顶点是否都在a组,如果是,则加入到a组,如果否则转至步骤s704;

步骤s704,判断三个网格顶点是否都在b组,如果是,则加入到b组,如果否则转至步骤s705;

步骤s705,对三角面进行切割;

步骤s706,分别将网格顶点加入到a组或b组中;

步骤s707,根据切割点缝合三角面。

以下结合实例分别对步骤s602中网格顶点和三角面的分割进行介绍:

(1)对于网格顶点的分割

首先确定一个世界坐标中的切面,由于被切割模型网格顶点的坐标是以自身为参考系的(即局部坐标系),如果利用该切面去区分网格顶点则必须在同一坐标系上,因此需要得到切面在局部坐标中的位置信息,获取一个在切面上的点通过空间变换得到局部坐标下的该点p,将切面的法向量经过空间变换得到局部坐标下的法向量n,设局部坐标下任意一点q(x,y,z),pq·n=0为该平面的点法式方程。下面是对网格顶点进行区分的具体实现步骤:

(11)对于网格顶点数组r[count],建立一个对应的标签数组b[count],建立两个用来放置左右两边顶点的空集合r1、r2,建立一个代表旧顶点数组索引与新顶点集合索引映射关系的整数数组oldtonewmap[count]。

(12)每个网格顶点坐标r[i],若(r[i]-p)·n>=0,则r[i]在切面法向量朝向的那一面,b[i]设置为1,添加到集合r1中,并且oldtonewmap[i]=r1.count-1;若(r[i]-p)·n<0,则r[i]在切面法向量朝向的那一面的反面,b[i]设置为0,添加到集合r2中,并且oldtonewmap[i]=r2.count–1,从而完成对网格顶点的分割。

(2)对于三角面的分割

(21)对于网格三角面数组t,新建两个用来放置左右两边三角面的空集合t1、t2。

(22)遍历三角面数组t,每次取出3个顶点索引xi,yi,zi。若b[xi]=1,b[yi]=1,b[zi]=1,则将三个旧顶点索引经过映射转换到新顶点索引添加到t1中,即:oldtonewmap[xi],oldtonewmap[yi],oldtonewmap[zi];若b[xi]=0,b[yi]=0,b[zi]=0,则将三个旧顶点索引经过映射转换到新顶点索引添加到t2中,即:oldtonewmap[xi],oldtonewmap[yi],oldtonewmap[zi];若b[xi]、b[yi]、b[zi]不全为1或不全为0,则需要用切面对该三角面进行切割,并将切割后的三角面分别添加到t1、t2中。

(23)分割三角面的关键是要计算出切面与三角面的切割点m1和m2的空间坐标,设b[xi]=1,b[yi]=0,b[zi]=0,m1为边r[xi]r[yi]上的切割点,m2为边r[xi]r[zi]上的切割点,则计算公式如下:

m1=r[xi]+(r[yi]-r[xi])×scalar1(公式2)

其中scalar1为m1到r[xi]的距离与r[yi]到r[xi]的距离的比,m2以同样的方式计算可得。

(24)将被分割得到的新三角面r[xi]、m1、m2添加到t1中,m1、m2、r[yi]和r[yi]、m2、r[zi]这两个三角面添加到t2中,切割点m1、m2都添加到新顶点集合r1、r2中,至此三角面都已经分割完毕。

经过上面的分割后,原物体模型网格被分成了两半,但由于模型网格都是表面网格,内部是空的不存在网格,因此当模型被切开后,网格内部就暴露出来,形成有空洞,带有空洞的模型不满足3d打印的封闭性要求,因此还需要对模型切口添加三角网格进行缝补,具体如下:

首先要找到模型切口边界的顶点,而由上面切割网格顶点的步骤可知,所有被切割三角面产生的m1、m2切割点连起来组成模型切口边界,因此只需要在切割步骤中额外建立一个新顶点集合m,把所有的切割点成对放入新顶点集合m中,然后取集合m中第一对切割点中的第一个切割点为基准,遍历剩下的切割点对,每一对切割点与第一个切割点相连成三角面,遍历结束后完成三角网格对空洞的填充。

上述步骤之后,进行手术导板的模型构建,该部分是根据人体组织模型被切割部位的网格信息,沿着组织模型的表面自动生成一定范围的具有一定厚度的薄膜,由于该薄膜与目标表面完全贴合,在3d打印后可作为手术辅助器材在手术中起到支撑固定、精准定位等作用,并且医生在vr场景中对患者组织器官模型进行多次切割演练,确定手术中的切割部位后,该技术还能在目标切割部位生成与切割方向完全一致的多样化导板,在手术的辅助切割中有着关键的作用。

在步骤s120中,根据所述切割目标模型的网格信息进行表面网格提取,在所述切割目标模型的表面生成具有预设厚度的薄膜。

为了生成对称、厚度均匀、卡槽长度宽度高度可设定的导板,本发明的系统采用unity中一个标准矩形板来模拟导板卡槽,通过设定该矩形板的长宽高即可得到对应大小的导板。该步骤中对切割目标模型提取一定范围的表面网格,经过复制、反转、位移、边缘缝合后得到具有预设厚度的薄膜。

图8为本公开一实施例图1中步骤s120的流程图,具体包括以下步骤:

在步骤s801中,基于球形区域网格提取方法对所述切割目标模型的网格信息进行提取,得到薄膜的下表面。

在步骤s802中,对所述薄膜的下表面按照所述薄膜的下表面的法向量的方向进行所述预设厚度的位移,并对位移后的网格顶点查找重复点。

在步骤s803中,计算所述重复点位移后的坐标,基于所述坐标对位移后的重复点进行修正,到薄膜的上表面。

在步骤s804中,对所述薄膜的上表面和所述薄膜的下表面的边缘上的切割点逐对连接成三角面,得到所述薄膜。

本发明的一个实施例中,表面网格的提取范围就是薄膜的范围,由于实际手术多种多样,手术部位差异大,对薄膜的范围大小、形状有着不一样的需求,无论设计何种提取规则都难以普遍适用于不同的手术部位,因此本发明的系统采用统一的球形区域网格提取法,并且提供给医生切割工具,让医生手动对生成后的薄膜导板进行自定义调整修改,使其形状和大小能够满足手术的多样化需求。

上述步骤s801中基于球形区域网格提取方法对所述切割目标模型的网格信息进行提取包括:

(1)将所述切割目标模型的网格顶点和所述切割平面上选取的点由局部坐标转换为世界坐标,并在所述世界坐标下计算所述切割模型上的网格顶点与所述切割平面上选取的点之间的距离;

(2)根据所述切割目标模型的网格顶点与所述切割平面之间的距离与预设的球形区域的半径进行比较,得到所述球形区域内的网格顶点;

(3)根据所述切割目标模型的三角面的三个顶点索引,如果所述三个顶点索引均在所述球形区域内,则所述三角面位于所述球形区域内;

(4)如果所述三个顶点索引不是全部在所述球形区域内,则根据所述切割平面对所述三角面进行切割,得到两个切割点,将位于所述三个顶点索引与所述两个切割点因切割产生以及切割后划分产生的新三角面,划分为所述球形区域内;

(5)根据所述球形区域内的网格顶点和三角面进行提取,得到所述球形区域内的表面网格。

由于不同模型的长度单位不一致,有些模型长度单位为毫米,而unity默认单位为米,因此在导入模型时会自动对模型进行缩放,而模型网格顶点坐标信息却不会因缩放而改变,因此提取网格时需要将顶点的坐标信息转化为统一的世界坐标信息。本发明的系统的球形区域网格提取法具体实现过程如下:

(1)获取切割板的中心点世界坐标p,对于每个网格顶点的局部坐标ei,经过空间坐标变换得到对应的世界坐标qi,若|p-qi|<radius(radius为球形区域半径),则设置qi对应标签为1,否则为0。当标签为1时,把ei放入新顶点数组v,设数组e的第i个顶点是新数组v的第j个顶点,创建一个数组oldtonewmap记录索引映射关系ei=vj,网格顶点法向量同理。

(2)遍历三角面数组,对于每个三角面的三个顶点索引top、l、r,若三个顶点对应标签全为1,则该三角面在球形区域内,将该三角面的索引经过oldtonewmap映射转换到新网格顶点索引后装入新三角数组t;若三个顶点标签全为0,则在提取范围外,不做任何操作;若有的顶点为1而有的顶点为0,说明该三角面处在提取边界,如果简单的舍弃或装入,会导致薄膜边缘出现锯齿形状,不利于3d打印和实际使用,因此下一步需要用球形区域边界对三角面进行分割。

(3)标签不全为1的情况分为以下两种:1)当有一个顶点标签为1,两个顶点标签为0,说明该三角网格的一个角在提取区域内,添加该角被横切后的三角面即可;2)当两个顶点标签为1,一个顶点标签为0,则在提取区域内的是一个不规则矩形,需要对角相连后得到两个三角面(ls,r,l)(r,ls,rs)添加到新三角面数组。图9为本发明一实施例中三角面分割示意图,如图9所示,设在区域内的单个顶点为top,区域外的为l、r,切割产生的切割点为ls、rs,进一步通过求解下列方程组来计算ls的坐标值,rs同理,以ls为例,计算公式如下:

ls=l+(top-l)·x(公式3)

|ls-p|=radius(公式4)

(4)把切割产生的新的顶点和三角面添加到新网格后,成功提取了球形区域内的表面网格。

经过上一步提取出表面网格后,还需要将表面网格复制处理产生具有预设厚度的薄膜,没有厚度的网格模型是无法3d打印的。生成薄膜的实现步骤具体如下:

(1)对上面步骤获得的新顶点数组v和顶点法向量数组n的每一个元素进行计算得到对应的新顶点坐标和法向量:

v=vi+ni·thickness(公式5)

n=ni(公式6)

其中thickness为薄膜的厚度,可以看作将网格每个顶点向自己法向量方向位移thickness单位后得到新的一层网格,新的这层网格将作为薄膜的上表面,原来的网格作为薄膜的下表面。

需要说明的是,模型网格中经常会出现一种类型的顶点,这些顶点的坐标相同,法向量却不同,这种顶点的出现是为了拟合物体表面凹凸不平的尖锐部位,例如正方体的角点实际上有3个顶点在同一位置,分别具有3个不同的法向量,当用步骤(1)的方法对这些顶点进行平移会导致原来在同一位置的顶点分离,造成模型网格破裂,因此需要对这种重复点进行特殊处理。具体处理方式为:首先要找出重复点,由于重复点的个数不互相一致,因此采用集合arraylist结构来存储重复点;然后再把每一个重复点集合嵌套装入记录有多少组重复点的arraylist集合中,最后计算每一组重复点位移后的坐标:

其中count为重复点个数,rate为重复点平均法向量与新点法向量的比,vi为重复点中任意一个点的坐标,用计算出来的坐标v对位移后的重复点进行修正,以解决上表面网格破裂的问题。

还需要说明的是,步骤(1)把原来的网格作为下表面网格还需要进行法向量和三角面索引顺序的反转,把原来网格顶点的法向量逐个取反,并反转三角面数据即可。

(2)得到上下两层网格表面后,还需要把两层表面的边缘缝合起来,薄膜形成一个封闭的模型,满足3d打印的必要条件。缝合需要记录提取网格时所有对边界三角面进行过切割的切割点,这些切割点构成两层网格表面的边缘,找到上下层表面边缘切割点逐对连接成三角面,即可完成缝合,得到薄膜。

在步骤s130中,利用矩形板在所述切割位置对所述薄膜的表面进行切割,得到导板卡槽位置以及形成导板表面。

本发明的一个实施例中,该步骤具体包括:

首先,利用所述矩形板坐标构建4个平面,基于所述4个平面分别对所述薄膜的上表面和所述薄膜的下表面进行切割,切割的位置即为所述导板卡槽位置。其中得到4个平面的方式为利用所述矩形板的左右两面作为切割所述薄膜的下表面两端的平面,得到所述4个平面中的2个平面;将所述矩形板平移所述预设厚度距离后,作为切割所述薄膜的上表面两端的平面,得到所述4个平面中的剩余2个平面。

其次,根据所述矩形板的顶点坐标生成导板的网格顶点,并根据所述导板的网格顶点与所述薄膜上的切割点相连构成三角面网格,形成所述导板表面。

基于上述,该步骤中利用矩形板的坐标信息构建4个平面,分别对薄膜的上下表面进行两次切割,去除中间部分的网格,空出来的部分即是卡槽的位置,最后根据矩形板的顶点坐标生成导板的网格顶点与被切割薄膜的切割点相连构造三角面网格,形成导板表面。该步骤包括:1)根据所述矩形板的上下两个顶点坐标得到切割方向;结合所述切割方向按照所述4个平面对所述薄膜进行4次切割,得到上半圈切割点和下半圈切割点;2)所述导板的网格顶点中的上半部分网格顶点与所述上半圈切割点相连形成三角面网格,得到导板上表面;3)所述导板的网格顶点中的下半部分网格顶点与所述下半圈切割点相连形成三角面网格,得到导板下表面;4)根据所述导板上表面和所述导板下表面形成所述导板表面。

因此该步骤中为了在薄膜上生成导板的网格,首先需要对薄膜中间部位进行切割以空出导板的位置,导板的内表面与薄膜的下表面相连,导板的外表面与薄膜的上表面相连,由于导板本身也具有厚度,即内外表面需要错开位置,因此本发明的系统选用矩形板的左右两面作为切割薄膜下表面两端的平面,将这两面向左右平移thickness的距离后作为切割薄膜上表面两端的平面。切割的原理与上面的模型切割算法基本一致,此处不再复述关于切割的部分。

该步骤中首先分别生成对上下表面网格的两端进行切割的4个平面,具体步骤如下:

(1)选中矩形板左面的3个坐标不同的顶点a1、a2、a3;

(2)构造向量a1a2、a1a3,则该平面法向量n=a1a2×a1a3,由a1、n得到平面的点法式方程,右平面的构造方法同理;

(3)左侧上表面的切割平面可由下表面切割平面平移获得,即取点b1=a1+n·thickness,法向量同为n,则可得到左侧切割上表面的平面方程,右侧同理可得。

其次,寻找每次切割的上、下半圈切割点,经过上述步骤4个面对薄膜的切割后,薄膜网格中间空出了一段,要进行关键的导板网格生成,还需要分别找出4次切割的上、下半圈切割点,具体步骤如下:

(1)首先计算导板辅助切割的切割方向cutvector,切割方向可由矩形板的上下两个顶点坐标a1、a2得到:cutvector=a2-a1;

(2)获取对薄膜网格进行切割的平面的法向量n,然后创建一个向量thwartwisenormal=cutvector×n,用该向量来寻找所有切割点中的最左点和最右点,对于每个切割点ci,计算其对应的值

value[i]=(ci-point)·thwartwisenormal(公式8)

其中point是切割平面中的任意一个点,value[i]最小值对应的ci为最右边的切割点,value[i]最大值对应的ci为最左边的切割点;

(3)找到左右两个边缘点后,通过顺时针找相邻切割点的方式,分别从两个点出发,找到对方停止,即可找出上下半圈切割点,放入对应的集合中。由于每个三角面被分割时都会产生两个切割点,作为一对切割点放入新顶点数组中,因此每个三角面的一对切割点中有一个与相邻三角面的切割点坐标一致,根据此原理,从最左点出发遍历切割点队数组,若找到与自身匹配的切割点,则将该切割点队的另一个点放进数组并继续寻找该点的匹配点,直到找到最右点终止循环,则数组中保存的切割点为上半圈切割点,下半圈切割点同理可得。

(4)计算导板顶点,上半部分导板顶点与上半圈切割点相连,下半部分导板顶点与下半圈切割点相连。

在步骤s140中,根据所述导板卡槽位置和所述导板平面构建所述vr场景下的导板3d打印模型。

本实施例中以单导板且被切割的人体组织为骨头建立模型为例,利用切割工具和多种导板生成工具对该模型进行模拟切割,得到对应切割位置的手术辅助导板,图10为本发明一实施例中在vr场景中构建的切割目标模型的示意图,图11~图13为本发明一实施例中在vr场景中自动生成单导板模型过程的示意图,其中图11为本发明一实施例中利用手柄锁定导板模型时的示意图,图12为本发明一实施例中利用手柄锁定卡槽模型时的示意图,图13为本发明一实施例中利用手柄移动导板模型时的示意图。

需要说明的是,在不同的手术场景中对导板的形状存在多样化的需求,除了普通的卡槽闭合的单个导板外,有些部位需要卡槽不闭合的半导板,有些部位需要两个卡槽闭合的导板相连在同一个薄膜上,因此本发明的系统在单导板基础上提供多种样式的导板生成方法,封装在导板生成工具中供用户选择使用。下面简单介绍不同样式导板对上面算法的改变部分:

(1)双导板样式:本发明的系统提供两个矩形板给用户使用,分别代表了两次切割的导板所在部位,在一次导板生成后,只需把第一次导板生成的网格、上下表面网格等信息传递给第二个导板,第二个导板在第一次生成的薄膜基础上再执行一次导板生成方法即可,图14为本发明一实施例中生成双导板模型的示意图。

(2)半导板样式:半导板生成在表面网格提取和薄膜生成步骤与普通导板一样,但在薄膜网格切割时不再是用4个平面进行切割,而是用2个平面切割单侧的网格,另外一侧的网格直接舍弃,因此在生成导板顶点和导板顶点与切割点的相连中与单导板有一些细节上的差异,将单导板两侧的网格顶点相连形成三角面,形成只有其中一侧的导板,即得到半导板,图15为本发明一实施例中生成半导板模型的示意图。

还需要说明的是,除了对导板的形状有着多样化的需求,对导板插槽的宽度、长度、高度和插槽导向切割的角度都有着不同的要求,为了满足个性化导板的设计,所有导板的插槽的长宽高以及角度都由相应的导板生成工具决定,因此可以通过选定工具打开物体操作菜单,在菜单的设置大小中对导板生成工具进行自定义设置来改变生成的导板的相关数值,而插槽导向切割的角度则由用户放置工具的角度决定。导板生成后,还可以使用切割工具对导板进行修剪以去除多余的部分,以方便导出导板模型进行3d打印后能够直接使用。

综上所述,本发明实施例提供的上述方法,一方面,通过在vr场景中对被切割模型的切割位置、导板等进行建模,从而可以在虚拟现实中无限制地对真实的手术对象重复进行多次切割操作,在切割位置生成3d导板打印模型。另一方面,利用虚拟现实的真实感和立体感的优势,在虚拟现实中构建3d导板打印模型,比传统的直接3d打印导板模型可以减少操作难度和制作时长。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1