System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及手术导航系统的模型渲染和可视化,尤其涉及一种基于并行计算的实时三角形网格到距离场转化方法及系统。
技术介绍
1、随着科学技术的发展,三角形网格模型在计算机图形学、虚拟现实、计算机辅助设计技术、医学图像系统等领域得到了广泛应用。在手术导航系统中,也常使用三角形网格来表示器官与手术工具等各种几何体。但是在许多手术应用中,往往需要计算器械到目标病灶的距离或是切割深度,因此要求大量空间距离的计算。在这种应用中,采用基于体素表示的距离场模型,可使得空间距离计算和可视化交互结果时更为方便。所谓距离场(sdf),记录的是空间中每一点到几何体的最短距离,几何体的表面位置可以视为距离场为0的位置。因此,通过距离场数据可以准确还原出物体表面模型,并可通过光线追踪渲染器将其可视化。距离场的应用虽然简单,但是构造非常复杂,高精度的距离场需要大量的计算,并生成大量的数据,而现有技术难以满足术中对大数据实时计算及存储的要求。
2、因此,本专利技术针对手术导航系统应用,提出一种实时的距离场构造方法。在手术导航应用中,无需术前准备距离场,只要求提供传统的三角形网格数据即可。在术中,可即时利用gpu将三角形网络数据转化成距离场,实现实时高效的距离计算。
技术实现思路
1、有鉴于此,本公开实施例提供一种基于并行计算的实时三角形网格到距离场转化方法及系统,以至少部分解决现有技术中存在的问题。
2、第一方面,本公开实施例提供了一种基于并行计算的实时三角形网格到距离场转化方法,包括:
>3、根据模型数据,创建顶点数组v、面索引数组f以及边索引数组e;
4、基于顶点数组v、面索引数组f以及边索引数组e,创建顶点法线数组vn,面法线数组fn以及边法线数组en;
5、通过顶点法线数组vn,面法线数组fn以及边法线数组en,计算得到距离场sdf;
6、对多个sdf交互的结果进行渲染,得到多模型交互的实时渲染图像。
7、根据本公开实施例的一种具体实现方式,所述创建顶点数组v、面索引数组f以及边索引数组e,包括:
8、并行遍历模型顶点数组;
9、将顶点位置保存到gpu顶点数组v中。
10、根据本公开实施例的一种具体实现方式,所述创建顶点数组v、面索引数组f以及边索引数组e,还包括:
11、并行遍历模型面片数组,获取面片索引;
12、将面片三个顶点的索引保存到gpu面索引数组f中。
13、根据本公开实施例的一种具体实现方式,所述创建顶点数组v、面索引数组f以及边索引数组e,还包括:
14、创建边哈希表;
15、串行遍历模型面片数组,获取面片索引;
16、通过对边的顶点索引创建边哈希值,根据边哈希表判断边是否已存在;
17、如果不存在,则创建一个哈希表项,并将边索引保存到gpu边索引数组e中,如果存在则索引下一条边。
18、根据本公开实施例的一种具体实现方式,所述创建顶点法线数组vn,面法线数组fn以及边法线数组en,包括:
19、并行遍历面索引数组f;
20、计算面片其中两边的向量,叉乘,得到面片法向量,并保存到面法线数组fn;
21、并行遍历边索引数组e;
22、从面法线数组fn中获取边邻接两个面的法向量,相加,得到边法向量,并保存到边法线数组en。
23、根据本公开实施例的一种具体实现方式,所述创建顶点法线数组vn,面法线数组fn以及边法线数组en,还包括:
24、并行遍历面索引数组f;
25、计算面片顶点在该面片所在角的弧度值;
26、从面法线数组fn中获取该面片法向量,与弧度值相乘;
27、将顶点所属所有面片的弧度值和法向量的乘积相加,得到点法向量,并保存到点法线数组vn。
28、根据本公开实施例的一种具体实现方式,所述通过顶点法线数组vn,面法线数组fn以及边法线数组en,计算得到距离场sdf,包括:
29、并行遍历面索引数组f;
30、根据体素距离阈值和模型面片,计算包围盒;
31、串行遍历包围盒中的体素;
32、计算体素到面片的最短距离与最短距离所处点;
33、判断最短距离所处点在模型的顶点、边或面上;
34、根据所处位置,从vn、en或fn中选择使用的法向量。
35、根据本公开实施例的一种具体实现方式,所述通过顶点法线数组vn,面法线数组fn以及边法线数组en,计算得到距离场sdf,还包括:
36、计算最短距离所处点到体素中心的方向向量;
37、将方向向量与vn、en或fn中选择使用的法向量点乘,获得结果;
38、通过点乘结果的sign函数结果,获得sdf值的正负号;
39、若sdf值为正,则在模型内部;反之,若sdf值为负,则在模型外部。
40、根据本公开实施例的一种具体实现方式,所述通过顶点法线数组vn,面法线数组fn以及边法线数组en,计算得到距离场sdf,还包括:
41、创建新的链表节点保存到链表节点数组,该链表节点指向链表头指针数组中该体素节点的地址;
42、通过gpu原子操作符更新链表结点数组与链表头指针数组中该体素节点;
43、并行遍历链表头指针数组,求出绝对值最小的sdf值,作为最后体素的sdf值。
44、第二方面,本公开实施例提供了一种基于并行计算的实时三角形网格到距离场转化系统,包括:
45、第一创建模块,用于根据模型数据,创建顶点数组v、面索引数组f以及边索引数组e;
46、第二创建模块,用于基于顶点数组v、面索引数组f以及边索引数组e,创建顶点法线数组vn,面法线数组fn以及边法线数组en;
47、计算模块,用于通过顶点法线数组vn,面法线数组fn以及边法线数组en,计算得到距离场sdf;
48、渲染模块,用于对多个sdf交互的结果进行渲染,得到多模型交互的实时渲染图像。
49、第三方面,本公开实施例还提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使该计算机执行前述第一方面或第一方面的任一实现方式中的基于并行计算的实时三角形网格到距离场转化方法。
50、第四方面,本公开实施例还提供了一种计算机程序产品,该计算机程序产品包括存储在非暂态计算机可读存储介质上的计算程序,该计算机程序包括程序指令,当该程序指令被计算机执行时,使该计算机执行前述第一方面或第一方面的任一实现方式中的基于并行计算的实时三角形网格到距离场转化方法。
51、本公开实施例中的基于并行计算的实时三角形网格到距离场转化方案,包括:根据模型数据,创建顶点数组v、面索引数组f以及边索引数组e;基于顶点数组v、面索引数本文档来自技高网...
【技术保护点】
1.一种基于并行计算的实时三角形网格到距离场转化方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述创建顶点数组V、面索引数组F以及边索引数组E,包括:
3.根据权利要求2所述的方法,其特征在于,所述创建顶点数组V、面索引数组F以及边索引数组E,还包括:
4.根据权利要求3所述的方法,其特征在于,所述创建顶点数组V、面索引数组F以及边索引数组E,还包括:
5.根据权利要求4所述的方法,其特征在于,所述创建顶点法线数组Vn,面法线数组Fn以及边法线数组En,包括:
6.根据权利要求5所述的方法,其特征在于,所述创建顶点法线数组Vn,面法线数组Fn以及边法线数组En,还包括:
7.根据权利要求6所述的方法,其特征在于,所述通过顶点法线数组Vn,面法线数组Fn以及边法线数组En,计算得到距离场SDF,包括:
8.根据权利要求7所述的方法,其特征在于,所述通过顶点法线数组Vn,面法线数组Fn以及边法线数组En,计算得到距离场SDF,还包括:
9.根据权利要求8所述的方法,其
10.一种基于并行计算的实时三角形网格到距离场转化系统,其特征在于,包括:
...【技术特征摘要】
1.一种基于并行计算的实时三角形网格到距离场转化方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述创建顶点数组v、面索引数组f以及边索引数组e,包括:
3.根据权利要求2所述的方法,其特征在于,所述创建顶点数组v、面索引数组f以及边索引数组e,还包括:
4.根据权利要求3所述的方法,其特征在于,所述创建顶点数组v、面索引数组f以及边索引数组e,还包括:
5.根据权利要求4所述的方法,其特征在于,所述创建顶点法线数组vn,面法线数组fn以及边法线数组en,包括:
6.根据权利要求5所述的方法,其特征在于,所...
【专利技术属性】
技术研发人员:李子沛,刘芳德,刘悦,
申请(专利权)人:杭州湖西云百生科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。