一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于三维网格模型的数据测量方法和相关设备与流程

2022-10-26 20:24:10 来源:中国专利 TAG:


1.本发明涉及数据处理技术领域,特别涉及一种基于三维网格模型的数据测量方法和相关设备。


背景技术:

2.三维测绘是采用点、线、面等地物信息对空间信息进行直观化表达的手段。随着技术的发展,用户希望三维测绘不仅能够得到大致的外形轮廓,还能够通过数字化的三维模型获取目标的三维数据。因此通过三维扫描对物体进行非接触式数据测量的应用日益增多。以采用网格形式的三维模型为例,三维测绘后得到的三维模型由三维网格和纹理图片组成。一个三维网格一般包含三或四个空间点,即三角形网格或四边形网格。其中三角形网格更加常见,以下以三角形网格为例。空间点按照被扫描目标的表面形状离散分布在三维空间当中,每三个顶点构成一片三角网格。若干三角网格组成一个三维网格模型。纹理贴图为二维图片,按照网格的纹理坐标,网格顶点一一对应于纹理像素坐标,进行仿射变换后贴合在一起,构成一个带有纹理信息的三维网格模型。
3.在网格模型上选网格顶点,一般通过彩色纹理的特征选择一个点,这个点可对应纹理信息找到其唯一点,但却无法直接找到唯一的网格顶点。因为三角网格模型原本就是一种以离散的网格模型来趋近真实的目标体的数据方法,每个三角网格越小,即采样率越高,就越趋近真实目标体,因此精度越高。但超高精度模型同时对扫描设备和算法要求高,数据量也越大,对数据的处理传输和存储都产生较大的挑战。因此在实际应用中,模型的精度和网格采样大小有一个折中处理,每一个三角网格大小适中,既不明显影响整体模型精度,也不至于数据量过大。
4.基于此,在三维网格模型上进行数据测量,一般不会考虑网格顶点的位置,而是直接在三角网格上选点或线。以计算距离为例,目前常用的做法是以三角网格为最小单位的数据测量方法。当用户选择起点和终点时,以起点或终点最近邻点的点替代原先用户选择的点,然后基于替换的点计算点与点之间的距离。而选择三角网格时,会按照特定规则来判断整个三角网格是否被选中,然后根据三角网格计算距离。依照这种规则,数据测量精度会受三角网格的密度影响,密度越大,精确度越高,成本和测量难度越高,而密度越低,精确度越低,成本和测量难度越低。


技术实现要素:

5.本发明要解决的技术问题在于低成本的基于网格模型的数据测量精确度低,针对现有技术的不足,提供一种基于三维网格模型的数据测量方法和相关设备。
6.为了解决上述技术问题,本发明所采用的技术方案如下:
7.一种基于三维网格模型的数据测量方法,所述方法包括:
8.获取测量指令;
9.对所述测量指令进行解析,得到若干个测量点;
10.针对每一个所述测量点,根据该测量点对应的屏幕位置坐标,计算与该测量点对应的目标射线;
11.基于预设的初始模型的网格片,对所述目标射线进行相交检测,确定与所述屏幕位置坐标对应目标空间点;
12.基于所述目标空间点,计算所述测量指令对应的测量结果。
13.所述基于三维网格模型的数据测量方法,其中,当所述测量指令为表面距离测量指令时,所述测量指令包括指定路径或路径端点,其中,所述路径端点包括路径起点和路径终点;所述对所述测量指令进行解析,得到若干个测量点包括:
14.当所述测量指令包括指定端点时,根据所述路径起点和所述路径终点,生成与所述测量指令对应的路径曲线;
15.当所述测量指定包括指定路径时,将所述指定路径作为路径曲线;
16.根据预设的离散规则,对所述路径曲线进行离散,得到所述测量点。
17.所述基于三维网格模型的数据测量方法,其中,所述根据预设的离散规则,对所述路径曲线进行离散,得到所述测量点包括:
18.对所述初始模型进行平面映射,得到所述初始模型中每一个立体网格对应的平面网格;
19.根据所述平面网格的屏幕位置坐标,计算所述路径曲线与所述平面网格之间的交点,得到第一离散点;
20.根据所述第一离散点,计算所述路径曲线中的方向拐点,得到第二离散点;
21.将所述第一离散点、所述第二离散点、所述路径起点和所述路径终点作为测量点。
22.所述基于三维网格模型的数据测量方法,其中,所述对所述测量指令进行解析,得到若干个测量点包括:
23.当所述测量指令为表面积测量指令时,所述测量指令包括第一指定区域,其中,所述指定区域包括若干个第一区域边;
24.对所述初始模型进行平面映射,得到所述初始模型中每一个立体网格对应的平面网格;
25.根据所述平面网格和所述第一区域边,确定所述平面中的选区交叉网格和选区内网格;
26.将所述选区交叉网格的顶点,和所述选区交叉网格与所述区域边的交点作为所述测量指令对应的测量点。
27.所述基于三维网格模型的数据测量方法,其中,所述对所述测量指令进行解析,得到若干个测量点之前,还包括:
28.根据所述网格层的空间顺序,确定每一个所述网格层对应的连接层;
29.针对每一个所述网格层,将所述网格层中的每一个立体网格与所述连接层的立体网格连接,得到五面体;
30.对所述五面体进行拆分,得到与所述初始模型对应的目标模型。
31.所述基于三维网格模型的数据测量方法,其中,所述针对每一个所述网格层,将所述网格层中的每一个立体网格与所述连接层的立体网格连接,得到五面体包括:
32.根据该网格层中的每一个网格顶点的空间关系,生成与该网格层对应的第一顶点
数组,以及该网格层对应的连接层中的每一个网格顶点的空间关系,生成与该连接层对应的第二顶点数组,其中,所述第一顶点数组包括所述网格层中的第一顶点,所述第二顶点数组包括所述连接层的第二顶点;
33.针对每一个所述第一顶点数组中的第一顶点,依次计算该顶点与所述第二顶点中的非连接点之间的连接距离,并将所述连接距离最小的非连接点作为该顶点对应的连接点,其中,当第一次计算时,非连接的数量为零;
34.将每一个所述第一顶点数据中的顶点与对应的连接点连接,得到五面体。
35.所述基于三维网格模型的数据测量方法,其中,所述对所述测量指令进行解析,得到若干个测量点包括:
36.当所述测量指令为体积测量指令时,所述测量指令包括指定第二指定区域,其中,所述第二指定区域包括若干个第二区域边;
37.对所述目标模型进行平面映射,得到所述目标模型对应的屏幕网格信息,其中,所述屏幕网格信息包括每一个所述网格对应的屏幕网格坐标和连接线;
38.根据所述屏幕网格信息和所述第二区域边,确定所述网格中的选区交叉网格和选区内网格;
39.将所述选区交叉网格和所述选区内网格中位于所述第二指定区域中的顶点,和所述选区交叉网格与所述第二区域边交叉的顶点,作为所述测量指令对应的测量点。
40.一种基于三维网格模型的数据测量装置,该装置包括:
41.获取模块,用于获取测量指令;
42.解析模块,用于对所述测量指令进行解析,得到若干个测量点;
43.第一计算模块,用于针对每一个所述测量点,根据该测量点对应的屏幕位置坐标,计算与该测量点对应的目标射线;
44.确定模块,用于基于预设的初始模型的网格片,对所述目标射线进行相交检测,确定与所述屏幕位置坐标对应目标空间点;
45.第二计算模块,用于基于所述目标空间点,计算所述测量指令对应的测量结果。
46.其中,当所述测量指令为表面距离测量指令时,所述测量指令包括指定路径或路径端点,其中,所述路径端点包括路径起点和路径终点;所述解析模块包括:
47.生成单元,用于当所述测量指令包括指定端点时,根据所述路径起点和所述路径终点,生成与所述测量指令对应的路径曲线;
48.指定路径单元,用于当所述测量指定包括指定路径时,将所述指定路径作为路径曲线;
49.离散单元,用于根据预设的离散规则,对所述路径曲线进行离散,得到所述测量点。
50.其中,所述离散单元具体用于:
51.对所述初始模型进行平面映射,得到所述初始模型中每一个立体网格对应的平面网格;
52.根据所述平面网格的屏幕位置坐标,计算所述路径曲线与所述平面网格之间的交点,得到第一离散点;
53.根据所述第一离散点,计算所述路径曲线中的方向拐点,得到第二离散点;
54.将所述第一离散点、所述第二离散点、所述路径起点和所述路径终点作为测量点。
55.其中,所述解析模块还用于:
56.对所述初始模型进行平面映射,得到所述初始模型中每一个立体网格对应的平面网格;
57.根据所述平面网格和所述第一区域边,确定所述平面中的选区交叉网格和选区内网格;
58.将所述选区交叉网格的顶点,和所述选区交叉网格与所述区域边的交点作为所述测量指令对应的测量点。
59.其中,该装置还包括预处理模块,所述预处理模块包括:
60.确定单元,用于根据所述网格层的空间顺序,确定每一个所述网格层对应的连接层;
61.连接单元,用于针对每一个所述网格层,将所述网格层中的每一个立体网格与所述连接层的立体网格连接,得到五面体;
62.拆分单元,用于对所述五面体进行拆分,得到与所述初始模型对应的目标模型。
63.其中,所述连接单元具体用于:
64.根据该网格层中的每一个网格顶点的空间关系,生成与该网格层对应的第一顶点数组,以及该网格层对应的连接层中的每一个网格顶点的空间关系,生成与该连接层对应的第二顶点数组,其中,所述第一顶点数组包括所述网格层中的第一顶点,所述第二顶点数组包括所述连接层的第二顶点;
65.针对每一个所述第一顶点数组中的第一顶点,依次计算该顶点与所述第二顶点中的非连接点之间的连接距离,并将所述连接距离最小的非连接点作为该顶点对应的连接点,其中,当第一次计算时,非连接的数量为零;
66.将每一个所述第一顶点数据中的顶点与对应的连接点连接,得到五面体。
67.其中,所述解析模块还用于:
68.当所述测量指令为体积测量指令时,所述测量指令包括指定第二指定区域,其中,所述第二指定区域包括若干个第二区域边;
69.对所述目标模型进行平面映射,得到所述目标模型对应的屏幕网格信息,其中,所述屏幕网格信息包括每一个所述网格对应的屏幕网格坐标和连接线;
70.根据所述屏幕网格信息和所述第二区域边,确定所述网格中的选区交叉网格和选区内网格;
71.将所述选区交叉网格和所述选区内网格中位于所述第二指定区域中的顶点,和所述选区交叉网格与所述第二区域边交叉的顶点,作为所述测量指令对应的测量点。
72.一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上任一所述的基于三维网格模型的数据测量方法中的步骤。
73.一种终端设备,其包括:处理器、存储器及通信总线;所述存储器上存储有可被所述处理器执行的计算机可读程序;
74.所述通信总线实现处理器和存储器之间的连接通信;
75.所述处理器执行所述计算机可读程序时实现如上任一所述的基于三维网格模型
的数据测量方法中的步骤。
76.有益效果:本发明提供一种基于三维网格模型的数据测量方法,首先获取用户的测量指令,确定用户想要测量的内容,对测量内容进行解析,将其拆分为在屏幕上的测量点,三维网格模型的内容都是网格,用户需要测量的内容并非都落于网格的顶点,更多的是网格边或内部的点,因此测量点也包括位于网格边或内部的点。然后根据测量点,对其进行屏幕空间-模型空间的转换,得到目标射线。然后将初始模型中的网格片与目标射线做相交检测,得到交点,即目标空间点。目标空间点也就是测量点在模型空间中对应的点,可能位于网格的边上或内部,因此基于该目标空间点进行后续的测量,能够得到更为精确的结果。
附图说明
77.图1为本发明提供的基于三维网格模型的数据测量方法的流程图。
78.图2为本发明提供的基于三维网格模型的数据测量方法中测量表面距离的示意图。
79.图3为本发明提供的基于三维网格模型的数据测量方法中测量表面积的示意图。
80.图4为本发明提供的基于三维网格模型的数据测量方法中测量体积的目标模型的示意图,其中,虚框为第二指定区域。
81.图5为图4中虚框部分的放大图。
82.图6为本发明提供的基于三维网格模型的数据测量方法的连接网格片的示意图。
83.图7为本发明提供的基于三维网格模型的数据测量装置的结构示意图。
84.图8为本发明提供的终端设备的结构原理图。
具体实施方式
85.本发明提供一种基于三维网格模型的数据测量方法,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
86.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
87.本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
88.如图1所示,本实施提供了一种基于三维网格模型的数据测量方法,为方便说明,以常见的数据处理软件作为执行主体进行描述,此处的服务器可替换为平板、电脑等具有
数据处理功能的设备,基于三维网格模型的数据测量方法包括以下步骤:
89.s10、获取测量指令。
90.具体地,用户在处理三维网格模型时,需要测量某一些参数时,例如两个点之间的距离,需要下发测量指令。测量指令包括所要测量的类型以及测量参数。本实施例中以常见的测量直线距离、测量表面距离、测量表面积和测量体积为例,测量指令可分为直线距离测量指令、表面距离测量指令、表面积测量指令和体积测量指令。而根据测量指令的类型的不同,测量指令中的测量参数也不同,当所述测量指令为直线距离测量指令时,测量参数包括测量起点和测量终点;当所述测量指令为表面距离测量指令时,测量参数包括指定路径或路径端点;当测量指令为表面积测量指令时,所述测量指令包括第一指定区域;当测量指令为体积测量指令时,所述测量指令包括指定第二指定区域。
91.s20、对所述测量指令进行解析,得到若干个测量点。
92.具体地,测量点是指位于屏幕上且用于指导数据测量的点。
93.部分测量指令中的测量参数直接包括测量点,例如测量指令为直线距离测量指令时,测量点为测量起点和测量终点,再例如,测量指令为表面距离测量指令时,测量参数包括路径端点,则测量点为路径端点。而对于其他测量指令,例如测量参数为指定路径,则测量点需要结合当前屏幕上显示的初始模型的二维图像,确定,例如指定路径为一个圆,那么这个圆上的若干个点击为测量点。
94.当所述测量指令为直线距离测量指令时,所述测量点包括测量起点和测量终点,因此测量点即为测量起点和测量终点。
95.当所述测量指令为表面距离测量指令时,所述测量指令包括指定路径或路径端点,其中,所述路径端点包括路径起点和路径终点。对于路径端点类型的测量指令,首先要生成该测量指令对应的路径曲线,最常见的类型为用户需要知道路径端点之间最短的路径。在二维平面上,直接连接路径端点得到的直线线段为测量指令对应的路径曲线。对于指定路径,直接将指定路径作为路径曲线。
96.由于两个点之间的路径并非像直线距离测量指令一般为直线距离,存在弧度、角度等,因此对于表面距离测量指令,一种确定测量点的方式是将路径曲线中大量的点作为测量点,但此方案测量点多,计算难度大。因此在另一种测量点的确定方式中,预先设置一离散规则,并基于离散规则,提取路径曲线中的若干个点,实现对路径曲线的离散,将提取的这些点作为测量点。
97.在一种离散规则中,预先设定测量点的数量,然后根据该数量,平均地提取路径曲线的测量点,但此方案对于路径曲线较为复杂的情形,后续计算的精确度低。在第二种离散规则中,预先设定测量点之间的长度距离,根据长度距离对路径曲线进行提取,例如每间隔3个像素单位对路径曲线进行提取。对于较长的路径曲线,此方案计算量也较大,且容易遗失关键点。
98.在第三种离散规则中,首先对初始模型进行屏幕映射,即将模型空间中的网格映射到屏幕空间,将立体的模型转为屏幕上的二维图像。屏幕映射后,原先立体的网格转换为平面形态的网格,为将两者区分,将前者成为立体网格,本实施例将映射后的网格成为平面网格,而每一个平面网格包含了平面顶点。根据所述平面网格的屏幕位置坐标,计算所述路径曲线与所述平面网格之间的交点,得到第一离散点。同时,根据所述第一离散点,计算所
述路径曲线中的方向拐点,得到第二离散点。
99.如图2所示,路径曲线m为测量起点和测量终点之间的路径曲线m,也就是表面距离测量所需要的路径曲线m。值得注意的是,虽然用“路径曲线”一词,直线可作为特殊的曲线。由于该路径曲线m经过若干个网格,每经过网格时都会与网格的边进行相交,因此,路径曲线m可离散为若干个相交的第一离散点(b1,b2,b4,b6,b8,b9)。而路径曲线m发生方向变化时会有凸点和凹点,例如以b1到b2的方向作为第一方向,b2到b4的方向作为第二方向,第一方向和第二方向存在交叉,说明路径曲线m发生了方向变化,即存在方向拐点。因此寻找从第一方向转换为第二方向过程中的凸点或凹点作为第二离散点,在图2中即点b4。基于该规则,后续找到点b3、b5和b7。最后就将第一离散点、第二离散点以及路径起点和路径终点作为该测量指令对应的测量点。
100.当所述测量指令为表面积测量指令时,所述测量指令包括第一指定区域。指定区域包括若干个第一区域边,例如指定区域为圆,则指定区域为圆所包围的面;如图3所示,指定区域的边为四条线段,其形状为矩形,则指定区域为矩形所包围的面,第一区域边即矩形的四条边。
101.与测量指令为表面距离测量指令类似,先对所述初始模型进行平面映射,得到所述初始模型中每一个立体网格对应的平面网格。此步骤在前文已详细描述,故在此不再赘述。平面网格可分为选区内网格、选区外网格和选区交叉网格。因此根据所述平面网格的坐标和所述第一区域边坐标,可确定所述平面中的选区交叉网格和选区内网格。如图3所示,顶点为c0、c1和c2的平面网格为选区交叉网格,顶点为c2、c3和c4的网格为选区内网格。将所述选区交叉网格的顶点,和所述选区交叉网格与所述区域边的交点作为所述测量指令对应的测量点,例如点c5和c6。
102.此外,若指定区域为圆包围的面,则测量点包括均匀在该圆的外围线上的点,若指定区域为椭圆,则测量点包括该椭圆的顶点。
103.当所述测量指令为体积测量指令时,所述测量指令包括指定第二指定区域。所述第二指定区域由若干个第二区域边组成。如图4所示,第二区域边可为矩形,还可为圆等。初始模型包括开放模型和封闭模型,开放模型为没有形成封闭空间的模型,封闭模型为形成封闭空间的模型。在一个立体的初始模型中,若干个网格片可组成不同的层,由多个立体网格组成的层称为网格层。包含多层网格的初始模型只有形成自封闭才能测量体积。因此针对体积测量,若初始模型为开放模型,则难以计算其对应的体积。
104.因此,若初始模型为开放模型,则在确定测量点之前需要将开放模型封闭化。本实施例提供一种快速方便的封闭方式,其过程如下:
105.a10、根据所述网格层的空间顺序,确定每一个所述网格层对应的连接层。
106.具体地,由于初始模型包括多个网格层,在封闭时需要确定每个网格层连接形成封闭空间的连接层。以图4为例,初始模型仅包含两个网格层,分别为sa和sb。若空间存在上中下三个网格层,则上方的网格层对应的连接层为中间的网格层,中间的网格层对应的连接层包含位于上方的网格层和位于下方的网格层,位于下方的网格层对应的连接层为位于中间的网格层。
107.a20、针对每一个所述网格层,将所述网格层中的每一个立体网格与所述连接层的立体网格连接,得到五面体。
108.具体地,每一个网格层包含多个立体网格,针对网格层中的每一个立体网格,将其与连接层的立体网格连接。由于单个立体网格为一个平面三角形,因此连接后得到五面体。
109.若一个网格层包含的立体网格数量为一,则可直接将立体网格进行连接。但是对于存在如图4所示的多个立体网格的情形下,针对每一个立体网格都需要多次判断,以确定最合适连接的立体网格。本实施例提供一种将网格层和连接层的立体网格连接的方法,具体包括:
110.a31、根据该网格层中的每一个网格顶点的空间关系,生成与该网格层对应的第一顶点数组,以及该网格层对应的连接层中的每一个网格顶点的空间关系,生成与该连接层对应的第二顶点数组。
111.具体地,以位于网格层的边缘网格为例,如图5所示,将网格层sa作为待连接的网格层,将网格层sb作为待连接的连接层。网格层的边缘网格的顶点分别为d0、d1、d2、d3和d4,连接层的边缘网格的顶点分别为d5、d6、d7和d8。值得注意的是,为了方便描述,将立体网格中远离相机的顶点略去。
112.按照空间关系,依次排列这些顶点,可将网格层的顶点按照从左到右的顺序依次排列为d0、d1、d2、d3和d4,得到第一层顶点数组,其中的顶点为第一顶点;连接层按照同样的顺序,排列为d5、d6、d7和d8,得到第二层顶点数组,其中的顶点为第二顶点。
113.a32、针对每一个所述第一顶点数组中的第一顶点,依次计算该顶点与所述第二顶点中的非连接点之间的连接距离,并将所述连接距离最小的非连接点作为该顶点对应的连接点。
114.具体地,针对每一个第一顶点数组中的第一顶点,依次计算该第一顶点与第二顶点中的非连接点之间的距离,得到顶点距离。当第一次计算时,非连接点的数量为0。选择顶点距离最小的顶点作为该顶点对应的连接点。例如确定d0对应的连接点为d5,则d5就作为连接点排除。
115.a33、将每一个所述第一顶点数据中的顶点与对应的连接点连接,得到五面体。
116.具体地,然后将该顶点与其对应的连接点进行连接,得到两两网格片之间的连接面,形成五面体。
117.当单层网格存在多个网格片且数量不一致时,可采用上述形成五面体的方法,从外向内依次形成五面体,数量不够时,例如图6所示,网格层a1的网格片的数量为1,连接层a2的网格片的数量为2,可选择网格数量多的那层网格层中任意选择一个网格作为独立网格,针对立体网格中的任意一个顶点,计算该顶点与所述独立网格中的每一个所述顶点之间的距离之和,并将距离之和最小的顶点作为多重顶点,将独立网格中的所有的顶点作为该多重顶点对应的连接点。
118.a30、对所述五面体进行拆分,得到与所述初始模型对应的目标模型。
119.具体地,以五面体中的三角面中的任意一条边的两个顶点为拆分起点,将另一个三角面中与拆分起点距离最远的顶点作为拆分终点,连接拆分起点和拆分终点,可将五面体拆分为两个四面体,从而将网格层和连接层用三角网格连接,形成了封闭状态的目标模型。
120.得到封闭的目标模型后,再根据测量指令,确定测量点。当所述测量指令为体积测量指令时,所述测量指令包括指定第二指定区域,第二指定区域包括若干个第二区域边与
前两个类型的确定测量点的方式类似,先对所述目标模型进行平面映射,得到所述目标模型中每一个立体网格对应的平面网格。然后根据所述屏幕网格信息和所述第二区域边,确定所述网格中的选区交叉网格和选区内网格。最后将所述选区交叉网格和所述选区内网格中位于所述第二指定区域中的顶点,和所述选区交叉网格与所述第二区域边交叉的顶点,作为所述测量指令对应的测量点。
121.s30、针对每一个所述测量点,根据该测量点对应的屏幕位置坐标,计算与该测量点对应的目标射线。
122.具体地,针对每一个测量点,根据其在屏幕空间上的坐标,即屏幕位置坐标,可对测量点进行转换,转换为模型空间中的点。由于屏幕为二维空间,因此测量点不具备深度,计算后的结果为以测量点为起点的射线。
123.模型空间的初始模型在屏幕空间展示时,初始模型中的点依次经过模型矩阵、视图矩阵、投影矩阵转换到裁剪空间,然后采用透视除法,将裁剪空间的顶点转换为ndc(normalize device coordinates,归一化的设备坐标)空间,ndc空间为长宽高范围为[-1,1]的立方体,将模型中的顶点坐标转换为ndc空间中的坐标后再进行映射,就可得到该顶点在屏幕空间中的位置坐标。
[0124]
由于屏幕相当于一个二维坐标系,因此其中的每一个点只拥有二维坐标系中的横纵坐标,因此,假设当前存在一个相机照射该模型时,根据模型中每一个点的相对于相机的深度,能推测相机与模型的相对位置关系,也就是投射方向,屏幕位置坐标对应的点位于相机与模型之间,因此以屏幕位置坐标为起点,以投射方向为射线方向,可得到与该屏幕位置坐标对应的目标射线。
[0125]
生成目标射线的方式可采用将初始模型投影到屏幕空间的逆运算的方式。先将屏幕位置坐标转换为ndc坐标。屏幕位置坐标是一个二维的平面,而ndc空间为三维空间,因此需要深度值(即z)。z值任取[-1,1]一点,即得到ndc空间与屏幕位置坐标对应的ndc空间坐标。得到ndc空间坐标后,需要将ndc空间坐标转换为裁剪空间中的裁剪空间坐标,此时加上一个w=1作为齐次坐标即可。然后基于预设的mvp转换矩阵(model matrix、view matrix、projection matrix),将裁剪空间坐标转换为多个位于模型中间中的点的集合,即目标射线。其中,此处的mvp矩阵为将模型上的点转换为屏幕空间的点的矩阵。
[0126]
除了上述计算目标射线的方法,还可基于预设的深度缓冲区,对屏幕位置坐标进行逆变换,得到在模型空间与屏幕位置坐标对应的空间位置坐标。深度缓冲区包括渲染管线,渲染管线能够对模型空间中的点进行转换,得到与每一个点对应的在视口空间中的视口位置坐标。
[0127]
s40、基于预设的初始模型的网格片,对所述目标射线进行相交检测,确定与所述屏幕位置坐标对应目标空间点。
[0128]
具体地,用户在下发测量指令时,数据处理软件正显示有初始模型,该初始模型即为用户希望进行测量的模型。相交检测就是将初始模型中物体的空间坐标(例如网格的坐标)与目标射线做相交计算,确定两者是否存在交点。若存在交点,则该交点即为屏幕位置坐标对应的目标空间点。
[0129]
对于网格组成的初始模型,根据网格的类型,初始模型可分为三角网格模型和四角网格模型。三角网格模型即由三角网格组成的初始模型,四角网格模型即由四角网格组
成的初始模型。在进行相交检测时,由于四角网格的空间稳定性较差,因此采用四角网格进行相交检测计算更为复杂,因此,为了方便计算,本实施例中,当初始模型为三角网格模型时,直接基于该初始模型,对目标射线进行相交检测;当初始模型为四角网格模型时,先对四角网格中的每一个四角网格进行拆分,得到三角网格组成的初始模型。此处的拆分可选择将四角网格的对角进行连接,将四角网格转换为由两个三角网格组成。
[0130]
可将三角网格作为一个三角形,则三角形的三个顶点分别表示为a、b和c,那么该三角形可用公式δs=(1-u-v)*a u*b v*c表示,其中,u和v为变化参数,满足u≥0,v≥0,u v≤1。而三角形上的任意一点可以用点p表示。目标射线l的参数方程为l=o dt,其中,o为射线起点,即测量点,d为方向,即相机向初始模型投影的方向,t为变化参数,用于指示射线的长度。因此,当三角形和目标射线l相交时,应当满足:
[0131]
p=(1-u-v)*a u*b v*c=o dt;
[0132]
求解方程可得
[0133][0134]
其中,m=o
×
(c-a),n=(o-a)
×
(b-a),因此可得p=o dt。在目标射线的计算过程中,已知测量点的坐标和方向,因此可轻松计算得到与目标射线对应的目标空间点。在初始模型中存在多个网格,因此在目标射线的方向上可能存在多个网格与目标射线相交,本实施例仅将最早与目标射线相交的网格作为包含目标空间点的网格,即变量t最小的交点p为目标空间点。
[0135]
s50、基于所述目标空间点,计算所述测量指令对应的测量结果。
[0136]
具体地,得到目标空间点后,数据处理软件可确定用户所指示的点在模型空间中的位置坐标,从而以该目标空间点为计算对象,根据测量指令中的测量类型进行测量。
[0137]
针对不同测量类型的测量指令,数据处理软件采用不同的计算方式。
[0138]
当所述测量指令为直线距离测量指令时,将测量起点对应的目标空间点作为空间起点,将所述测量终点对应的目标空间点作为空间终点,计算所述空间起点和所述空间终点之间的直线距离。最后将所述直线距离作为所述测量指令对应的测量结果。例如目标起点为a1,目标终点为a2,则两点之间的直线距离da=|a
1-a2|。
[0139]
当所述测量指令为表面距离测量指令时,根据所述路径曲线,计算相邻的所述目标空间点之间的线段距离,最后计算所有所述线段距离之和,得到所述测量指令对应的测量结果。例如图2中,根据路径曲线,目标空间点对应的测量点依次为b0,b1,

,b
10
,因此按照路径曲线,计算b0与b1对应的目标空间点的距离、计算b1与b2对应的目标空间点的距离,最后求和,得到测量结果。
[0140]
当所述测量指令为表面积测量指令时,针对所述选区内网格,根据所述选区内网格对应的立体网格,计算第一表面积。例如图3中的平面网格(c2,c3,c4)对应的立体网格,可直接根据这三个顶点在模型空间的坐标计算表面积,该平面网格对应的第一表面积为g3。针对所述选区交叉网格,根据所述选区交叉网格对应的目标空间点,计算第二表面积。例如选区交叉网格与第一区域边交叉可形成新的三角形(c2,c6,c8)和新的四边形(c2,c6,c5,c7)。对于三角形,根据三角形的顶点对应的目标空间距离,计算第二表面积,对于新的四边
形,将四边形拆分为两个三角形,然后在分别计算两个三角形的面积之和,得到第二表面积,即四边形的第二表面积g=g1 g2。最后将第一表面积和第二表面积求和,得到测量结果。
[0141]
当所述测量指令为体积测量指令时,根据所述测量点,将所述目标模型拆分为若干个多面体。计算所有所述多面体的体积之和,得到所述测量指令对应的测量结果。四面体的体积的计算公式为:
[0142][0143]
其中,所述p
ei
为四面体的顶点,e为[1,4],i为四面体的编号。
[0144]
计算所有的四面体的体积之和,其中,n为四面体的总数。
[0145]
基于上述基于三维网格模型的数据测量方法,如图7所示,本发明还提供了一种基于三维网格模型的数据测量装置100,该装置包括:
[0146]
获取模块110,用于获取测量指令;
[0147]
解析模块120,用于对所述测量指令进行解析,得到若干个测量点;
[0148]
第一计算模块130,用于针对每一个所述测量点,根据该测量点对应的屏幕位置坐标,计算与该测量点对应的目标射线;
[0149]
确定模块140,用于基于预设的初始模型的网格片,对所述目标射线进行相交检测,确定与所述屏幕位置坐标对应目标空间点;
[0150]
第二计算模块150,用于基于所述目标空间点,计算所述测量指令对应的测量结果。
[0151]
其中,当所述测量指令为表面距离测量指令时,所述测量指令包括指定路径或路径端点,其中,所述路径端点包括路径起点和路径终点;所述解析模块120包括:
[0152]
生成单元,用于当所述测量指令包括指定端点时,根据所述路径起点和所述路径终点,生成与所述测量指令对应的路径曲线;
[0153]
指定路径单元,用于当所述测量指定包括指定路径时,将所述指定路径作为路径曲线;
[0154]
离散单元,用于根据预设的离散规则,对所述路径曲线进行离散,得到所述测量点。
[0155]
其中,所述离散单元具体用于:
[0156]
对所述初始模型进行平面映射,得到所述初始模型中每一个立体网格对应的平面网格;
[0157]
根据所述平面网格的屏幕位置坐标,计算所述路径曲线与所述平面网格之间的交点,得到第一离散点;
[0158]
根据所述第一离散点,计算所述路径曲线中的方向拐点,得到第二离散点;
[0159]
将所述第一离散点、所述第二离散点、所述路径起点和所述路径终点作为测量点。
[0160]
其中,所述解析模块120还用于:
[0161]
对所述初始模型进行平面映射,得到所述初始模型中每一个立体网格对应的平面网格;
[0162]
根据所述平面网格和所述第一区域边,确定所述平面中的选区交叉网格和选区内网格;
[0163]
将所述选区交叉网格的顶点,和所述选区交叉网格与所述区域边的交点作为所述测量指令对应的测量点。
[0164]
其中,该装置还包括预处理模块,所述预处理模块包括:
[0165]
确定单元,用于根据所述网格层的空间顺序,确定每一个所述网格层对应的连接层;
[0166]
连接单元,用于针对每一个所述网格层,将所述网格层中的每一个立体网格与所述连接层的立体网格连接,得到五面体;
[0167]
拆分单元,用于对所述五面体进行拆分,得到与所述初始模型对应的目标模型。
[0168]
其中,所述连接单元具体用于:
[0169]
根据该网格层中的每一个网格顶点的空间关系,生成与该网格层对应的第一顶点数组,以及该网格层对应的连接层中的每一个网格顶点的空间关系,生成与该连接层对应的第二顶点数组,其中,所述第一顶点数组包括所述网格层中的第一顶点,所述第二顶点数组包括所述连接层的第二顶点;
[0170]
针对每一个所述第一顶点数组中的第一顶点,依次计算该顶点与所述第二顶点中的非连接点之间的连接距离,并将所述连接距离最小的非连接点作为该顶点对应的连接点,其中,当第一次计算时,非连接的数量为零;
[0171]
将每一个所述第一顶点数据中的顶点与对应的连接点连接,得到五面体。
[0172]
其中,所述解析模块120还用于:
[0173]
当所述测量指令为体积测量指令时,所述测量指令包括指定第二指定区域,其中,所述第二指定区域包括若干个第二区域边;
[0174]
对所述目标模型进行平面映射,得到所述目标模型对应的屏幕网格信息,其中,所述屏幕网格信息包括每一个所述网格对应的屏幕网格坐标和连接线;
[0175]
根据所述屏幕网格信息和所述第二区域边,确定所述网格中的选区交叉网格和选区内网格;
[0176]
将所述选区交叉网格和所述选区内网格中位于所述第二指定区域中的顶点,和所述选区交叉网格与所述第二区域边交叉的顶点,作为所述测量指令对应的测量点。
[0177]
基于上述基于三维网格模型的数据测量方法,本发明还提供了一种终端设备,如图8所示,其包括至少一个处理器(processor)20;显示屏21;以及存储器(memory)22,还可以包括通信接口(communications interface)23和总线24。其中,处理器20、显示屏21、存储器22和通信接口23可以通过总线24完成相互间的通信。显示屏21设置为显示初始设置模式中预设的用户引导界面。通信接口23可以传输信息。处理器20可以调用存储器22中的逻辑命令,以执行上述实施例中的方法。
[0178]
此外,上述的存储器22中的逻辑命令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取计算机可读存储介质中。
[0179]
存储器22作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序命令或模块。处理器20通过运行存储在存储器22中的软件程序、命令或模块,从而执行功能应用以及数据处理,即实现上述实施例中的方
法。
[0180]
存储器22可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器。例如,u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态计算机可读存储介质。
[0181]
此外,上述计算机可读存储介质以及终端设备中的多条命令处理器加载并执行的具体过程在上述方法中已经详细说明,在这里就不再一一陈述。
[0182]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献