一种三角网格快速绘制曲线的方法、系统、介质及计算机与流程

文档序号:32798107发布日期:2023-01-03 22:54阅读:36来源:国知局
一种三角网格快速绘制曲线的方法、系统、介质及计算机与流程

1.本发明涉3维制图技术领域,更具体地说,它涉及一种三角网格快速绘制曲线的方法、系统、介质及计算机。


背景技术:

2.现有3d软件中的曲线绘制或者曲面绘制,通常都需要先确定基础的立体三角网格,然后通过缩小立体三角网格的面积,提高三角网格的分辨率,来提高图像的精细程度,当图像上的三角网格的尺寸足够精细之后,便可以由平化曲,将多个小平面近似看成曲面。
3.针对分辨率较高的大型3d三角网格绘制曲线,现有的3d软件通常都不会对3d网格进行预处理,这样就会导致生成对应的曲线计算量过大,曲线的生成速度慢。


技术实现要素:

4.针对现有技术存在的不足,本发明的目的在于提供一种三角网格快速绘制曲线的方法,以解决现有的3d软件绘制曲线的时候存在的需要的计算量较大、耗费时间长的缺陷。
5.本发明的上述技术目的是通过以下技术方案得以实现的:一种三角网格快速绘制曲线的方法,包括:
6.s1、构建三角网格模型,并对所述三角网格模型进行预处理,所述预处理包括:对所述三角网格模型上的每一个三角面片分别计算生成对应的包围盒;
7.s2、在所述三角网格模型上确定若干初始点,根据预定轨迹,连接若干所述初始点,对应生成至少一线段;
8.s3、根据预设分辨率,在所述线段上设置若干等分采样点,确定距离各个等分采样点最近的三角网格模型的网格顶点,并计算各个所述等分采样点与对应的最近的网格顶点之间的第一距离;
9.s4、分别计算各个等分采样点与所有的包围盒之间的距离,得到各个等分采样点对应的距离集合;将各个等分采样点对应的第一距离与该等分采样点对应的距离集合中的所有距离进行一一比对,确定所述距离集合中小于第一距离的若干第二距离,将若干第二距离对应的包围盒所对应的若干三角面片,记为三角面片集;
10.s5、分别计算各个等分采样点与对应的三角面片集中各个三角面片之间的第一坐标点集合,并筛选出与各个等分采样点对应的第一坐标点集合中距离最近的第一坐标点,记为第二坐标点;
11.s6、按照所述线段上的若干等分采样点的顺序,对应地将若干所述第二坐标点依次连接,生成对应的预定分辨率的曲线。
12.可选的,所述对所述三角网格模型进行预处理,还包括:遍历所述三角网格模型上的所有顶点,获取所有顶点对应的三维坐标,以所有的三维坐标为节点建立三维kd树。
13.可选的,所述确定距离各个等分采样点最近的三角网格模型的网格顶点,包括:遍历所有等分采样点,获取所有的等分采样点对应的三维坐标,对每一个等分采样点分别进
行kd树检索,以确定与每一个等分采样点距离最近的网格顶点。
14.可选的,所述在所述三角网格模型上确定若干初始点,包括:
15.s21、确定观察点;
16.s22、根据预定曲线轨迹确定鼠标拾取点;
17.s23、连接所述观察点以及所述鼠标拾取点,对应生成射线;
18.s24、记录所述射线与三角网格模型之间的交点,记为初始点。
19.可选的,所述对所述三角网格模型进行预处理,还包括:
20.对所有的包围盒建立层次包围盒树;
21.所述分别计算各个等分采样点与所有的包围盒之间的距离,包括:
22.使用所述层次包围盒树分别对每一个等分采样点进行筛选,计算所述等分采样点与所述层次包围盒树上的包围盒之间的距离。
23.可选的,分别计算各个等分采样点与所有的包围盒之间的距离,包括:
24.s41、获取任一包围盒对应的坐标(xmin,ymin,zmin,xmax,ymax,zmax),获取任一所述等分采样点的坐标(x,y,z);
25.s42、获取x轴方向距离dx,在x小于xmin的情况下,dx=xmin-x;在x大于xmin且x小于xmax的情况下,dx=0;在x大于xmax的情况下,dx=x-xmax;
26.s43、获取y轴方向距离dy,在y小于ymin的情况下,dy=ymin-y;在y大于ymin且y小于ymax的情况下,dy=0;在y大于ymax的情况下,dy=y-ymax;
27.s44、获取z轴方向距离dz,在z小于zmin的情况下,dz=zmin-z;在z大于zmin且z小于zmax的情况下,dz=0;在z大于zmax的情况下,dz=z-zmax;
28.s45、根据x轴方向距离dx、y轴方向距离dy以及z轴方向距离dz,计算任一包围盒与任一等分采样点之间的距离
29.s46、根据各个等分采样点与所有的包围盒之间的距离,得到所有各个等分采样点对应的距离集合。
30.可选的,所述分别计算各个等分采样点与对应的三角面片集中各个三角面片之间的第一坐标点集合,包括:
31.s51、确定各个三角面片所在的平面;
32.s52、获取各个等分采样点在对应的各个平面上的投影点;
33.s53、判断各个平面上的投影点是否位于该平面上的三角面片的内部,若是,则将该投影点作为对应的第一坐标点;若否,则以所述三角面片上的距离所述等分采样点最近的点作为第一坐标点。
34.一种三角网格快速绘制曲线系统,包括:
35.三角网格模型生成模块,用于生成三角网格模型;
36.kd树生成模块,用于根据所述三角网格模型上的顶点坐标对应生成kd书树模型;
37.包围盒生成模块:根据所述三角网格模型上的三角面片对应生成包围盒;
38.层次包围盒树生成模块:根据三角网格模型上的三角面片的包围盒对应生成层次包围盒树。
39.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理
器执行所述计算机程序时实现上述的方法的步骤。
40.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。
41.综上所述,本发明具有以下有益效果:
42.1、对三角网格模型上的三角面片计算包围盒,可以通过计算等分采样点与包围盒之间的距离,替代计算等分采样点与三角面片之间的距离,有效地降低了计算量,提高了曲线生成速度;
43.2、通过遍历三角网格的顶点坐标,对应建立kd树,在需要计算等分采样点所对应的最近的网格顶点的时候,可以通过kd树检索,确定每一个等分采样点在kd树上所对应的位置,并计算对应的kd树分支上的网格顶点,相比遍历算法可以有效地降低寻找各个等分采样点对应的最近网格顶点所需要的计算量;
44.3、通过建立层次包围盒树,在计算所述等分采样点与包围盒之间的距离的时候,可以通过所述层次包围盒树上的分支,判断所述等分采样点与各个包围盒之间的距离是否大于第一距离,有效地降低设备的计算量。
附图说明
45.图1为本发明的一种三角网格快速绘制曲线方法的流程图;
46.图2为本发明的三角网格模型上确定若干初始点的流程图;
47.图3为本发明的计算等分采样点与包围盒之间的距离的流程图;
48.图4为本发明的生成第一做坐标点集合的流程图;
49.图5为本发明的一种三角网格快速绘制曲线系统的结构图;
50.图6为本发明的通过鼠标拾取点生成射线对应确定初始点的示意图;
51.图7为本发明的通过初始点生成线段或者多段线的示意图;
52.图8为本发明的在线段上设置多个等分采样点的示意图;
53.图9为本发明的将线段映射到三角网格模型上对应生成曲线的示意图;
54.图10为本发明实施例中计算机设备的内部结构图。
55.图中:1、三角网格模型生成模块;2、kd树生成模块;3、包围盒生成模块;4、层次包围盒树生成模块。
具体实施方式
56.为使本发明的目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。附图中给出了本发明的若干实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。
57.在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或
者隐含地包括一个或者更多个该特征。
58.在本发明中,除非另有明确的规定和限定,第一特征在第二特征之“上”或之“下”可以包括第一和第二特征直接接触,也可以包括第一和第二特征不是直接接触而是通过它们之间的另外的特征接触。而且,第一特征在第二特征“之上”、“上方”和“上面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”包括第一特征在第二特征正下方和斜下方,或仅仅表示第一特征水平高度小于第二特征。术语“垂直的”、“水平的”、“左”、“右”、“上”、“下”以及类似的表述只是为了说明的目的,而不是指示或暗示所指装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
59.下面结合附图和实施例,对本发明进行详细描述。
60.本发明提供了一种三角网格快速绘制曲线的方法,如图1所示,包括:
61.s1、构建三角网格模型,并对所述三角网格模型进行预处理,所述预处理包括:对所述三角网格模型上的每一个三角面片分别计算生成对应的包围盒;
62.s2、在所述三角网格模型上确定若干初始点,根据预定轨迹,连接若干所述初始点,对应生成至少一线段;
63.s3、根据预设分辨率,在所述线段上设置若干等分采样点,确定距离各个等分采样点最近的三角网格模型的网格顶点,并计算各个所述等分采样点与对应的最近的网格顶点之间的第一距离;
64.s4、分别计算各个等分采样点与所有的包围盒之间的距离,得到各个等分采样点对应的距离集合;将各个等分采样点对应的第一距离与该等分采样点对应的距离集合中的所有距离进行一一比对,确定所述距离集合中小于第一距离的若干第二距离,将若干第二距离对应的包围盒所对应的若干三角面片,记为三角面片集;
65.s5、分别计算各个等分采样点与对应的三角面片集中各个三角面片之间的第一坐标点集合,并筛选出与各个等分采样点对应的第一坐标点集合中距离最近的第一坐标点,记为第二坐标点;
66.s6、按照所述线段上的若干等分采样点的顺序,对应地将若干所述第二坐标点依次连接,生成对应的预定分辨率的曲线。
67.具体来说,对所述三角网格模型上的每一个三角面片分别生成对应的包围盒;在实际应用中,包围盒是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。简单性是指包围盒间进行相交测试时需要的计算量,这不但要求几何形状简单容易计算,而且要求相交测试算法简单快速;紧密性要求包围盒尽可能的贴近被包围的对象,这一属性直接关系到需要进行相交测试的包围盒的数目,紧密性越好,参与相交测试的包围盒数目就越少。通过对应生成包围盒,可以快速地对后续的射线与三角面片之间的碰撞进行计算,减少计算量,提高运算速度。在本实施例中,包围盒采用aabb包围盒,aabb包围盒是应用最早的包围盒。它被定义为包含该对象,且边平行于坐标轴的最小六面体。故描述一个aabb包围盒,仅需六个标量。aabb包围盒构造简单,存储空间小,且对应的计算量小,对于建模过程中的三角面片来说,使用aabb包围盒即可满足降低计算量的需要,且不会存在过多的负面缺陷。
68.然后,如图7所示,所述三角网格模型上确定若干初始点,根据预定轨迹,连接若干
所述初始点,对应生成至少一线段;具体来说,初始点用于对应生成轨迹,即两点确定一条线段,对于曲线来说,可以通过多段线来近似拟合。
69.然后,如图8所示,根据预设分辨率,在所述线段上设置若干等分采样点,确定距离各个等分采样点最近的三角网格模型的网格顶点,并计算各个所述等分采样点与对应的最近的网格顶点之间的距离,记为第一距离;具体来说,等分采样点之间的距离是一定的,也就是说,根据线段的长度不同,每一条线段上的等分采样点的数量是不同的,每一个等分采样点由于位置的不同都对应存在一个与之相对应的距离最近的网格顶点,寻找到距离等分采样点最近的网格顶点,并计算处对应的第一距离,也就是说,每一个等分采样点都对应存在一个第一距离。
70.然后分别计算各个等分采样点与所有的包围盒之间的第二距离,得到各个等分采样点对应的距离集合;对各个等分采样点所对应的第一距离以及所述等分采样点对应的距离集合中的所包含的若干第二距离进行一一比对,筛选出小于第一距离的若干第二距离,并将筛选出的若干第二距离所对应的包围盒中对应包含的若干三角面片,记为三角面片集;具体来说,计算等分采样点与包围盒之间的距离,由于包围盒的数量是一定的,比如存在100个包围盒,那么每一个等分采样点都对应存在100个第二距离,也就是说,每一个距离集合中都存在100个第二距离,同样每一个等分采样点都存在一个固定的第一距离,将100个第二距离与第一距离一一比对,去除大于第一距离的第二距离,保留小于第一距离的第二距离,比如,距离集合中的100个第二距离中,存在12个小于第一距离的第二距离,那么就保留这12个第二距离,并将这12个第二距离对应的包围盒中的三角面片进行标记,使这12个三角面片记为三角面片集,同样的,三角面片集也是与所述等分采样点一一对应的,也就是说每一个等分采样点都对应有一个三角面片集,可以理解的,不同的等分采样点对应的三角面片集中所包含的三角面片的数量可能不同。
71.然后,分别计算各个等分采样点与对应的三角面片集中包含的各个三角面片之间的第一坐标点集合,并筛选出与各个等分采样点对应的第一坐标点集合中距离最近的第一坐标点,记为第二坐标点;具体来说,由于三角面片集中包含有多个三角面片,那么等分采样点所对应的第一坐标点集合中,就会包含有多个对应的第一坐标点;比如某一个等分采样点对应的三角面片集中包含有12个三角面片,那么对应的,该等分采样点所对应的第一坐标点集合中包含的第一坐标点的数量也为12个。第一坐标点的具体确定方法参考后续步骤,第一坐标点的位置均位于所述三角面片上,这12个第一坐标点不能都用来描述曲线的走向和位置,因此需要在12个第一坐标点中,选出距离所述等分采样点最近的一个第一坐标点,舍弃其他的11个等分采样点。也就是说,通过本步骤,可以使每一个等分采样点都对应确定一个位于三角面片上的第二坐标点。
72.然后按照所述线段上的若干等分采样点的顺序,对应地将若干所述第二坐标点依次连接,生成对应的预定分辨率的曲线;具体来说,所述第二坐标点依次连接,可以对应生成预定分辨率的曲线,第二坐标点的数量与等分采样点的数量相同,等分采样点的数量使根据预定分辨率确定的,那么,第二坐标点的数量也满足分辨率的需要,且将第二坐标点依次相连,形成多段线,可以近似拟合成为满足需要的光滑曲线,如图9所示,为一种在人体模型上对应生成曲线的效果,其中s1为对应的线段,也就是通过连接初始点对应生成的线段,p1就是该线段上的等分采样点对应生成的高分辨率的多段线,也就是满足分辨率要求的曲
线,具体来说,该多段线仍然不是紧密贴合在三角网格模型上的线段,但是由于满足于定分便于的要求,因此该多段线可以在肉眼观察的情况下,近似地贴合在所述三角网格上。
73.本技术所要实现的步骤,是在预定的低分辨率的三维模型表面,按照预定的线段轨迹,描绘出对应的高分辨率的多段线,来近似拟合成为光滑曲线的过程。其中s1是通过设置包围盒,来降低三角面片与线段之间碰撞的计算量的;s2是用来确定需要绘制的曲线的方向,步骤s3,是将线段通过等分采样点再分为多段首尾相连的线段,步骤s4和步骤s5都是用于将等分采样点对应映射到3d模型上,并对应地确定所述等分采样点的位置;步骤s6,用于连接三角网格模型上的对应点,形成多段线,该多段线相比等分采样点所在的线段,更贴合于三角网格模型的表面形状,且满足曲线绘制的需要。
74.在实际应用中,通过3d软件绘制曲线,通常都需要在3d软件中导入一个基础的三角网格模型,并该三角网格模型为基础,将每一个三角面片都分解成为更细小的三小面片,并调整其中的三角形的形状,以使所生成三角形的部分顶点符合曲线的需要,当符合需要的三角形顶点足够多的情况下,便可以将多个顶点按照顺序连接起来,形成对应的曲线。且所提供的点越多,则曲线的分辨率就越高,曲线就越光滑。但是这种曲线的绘制方式,所需要的计算量大,且对于一个整体的3d模型,通常都需要将所有的三角面片分解为更小的三角面片,以实现分辨率的提升,这样就会导致计算量指数形式地上升。
75.综上,本发明提供的一种基于三角网格的高分辨率曲线绘制方法,首先需要将对应的三角网格模型导入软件中,并对三角网格模型上的三角面片计算包围盒,可以通过计算等分采样点与包围盒之间的距离,替代计算等分采样点与三角面片之间的距离,有效地降低了计算量,提高了曲线生成速度。
76.进一步的,所述对所述三角网格模型进行预处理,还包括:遍历所述三角网格模型上的所有顶点,获取所有顶点对应的三维坐标,以所有的三维坐标为节点建立三维kd树。
77.所述确定距离各个等分采样点最近的三角网格模型的网格顶点,包括:遍历所有等分采样点,获取所有的等分采样点对应的三维坐标,对每一个等分采样点分别进行kd树检索,以确定与每一个等分采样点距离最近的网格顶点。
78.具体来说,kd(k-dimensional)树的概念自1975年提出,以解决的是在k维空间为数据集建立索引的问题,在实际使用过程中,对于一维空间的切分的最终结果实际上切出的是一段段的线段,同理,二维空间中,对于若干个点集最后的切分结果的空间应该是子平面集合,三维空间中,对于若干个点集最后的切分结果的空间应该是子空间集合。这里,kd树最终目标就是构建一棵树,能够将三维立体空间切分得到的最终的子空间集合;在立体空间之中建立三维坐标系,并且将三角网格模型的顶点在三维坐标系中进行标注,然后使用与坐标系平面的相平行的平面以及对应的顶点,将三维坐标系划分为若干个子空间。三维kd树的建立过程如下:将顶点按照坐标,在三维空间中标出,首先将空间使用平行于xy轴平面进行划分,选出对应的位于中间(在这里,如果定点数量是偶数,位于中间的点数量为两个,则任选其一即可)的z轴坐标对应顶点所在的高度,并使用第一平面将三维空间划分为上下两个空间,位于上方的空间对应的z轴坐标均大于该平面的z轴坐标,位于下方空间中的所有点,对应的z轴坐标都小于该平面的z轴坐标;然后对上下两个空间,分别使用平行与yz轴的平面进行划分,同样的,在上下两个空间中,分别选取x轴坐标位于最中间的点作为分界点,这样就将上下两个空间,又均划分成为了两个空间,也就是对应生成了四个空
间。最后,在上述的四个空间中分别再选取对应的点,以平行于xz的平面进行划分,进行空间划分,同样也是选取y轴坐标的中间点,进行空间划分。然后对每一个子空间中的顶点均重复上述步骤,直到所有的顶点都位于平面上。
79.按照上述划分,还存在一定的规则,1、父平面划分出的子空间中,进一步划分所使用的子平面不能穿过父平面,也就是说,子平面划分空间的时候,只能延伸到父平面处。2、当子空间中不存在三角网格模型的顶点后,便不能再划分空间。3、对空间的划分所使用的平面需要按照顺序,进行,比如,首先使用平行于xy平面的平面,然后使用平行于yz平面的平面,最后使用平行于xz平面平面,后面的对子空间的进一步划分都需要使用这个顺序的平行面进行划分空间。
80.这样在检索某一个等分采样点的对应的最近顶点的时候,可以根据等分采样点的坐标,对应确定等分采样点所在的最低子空间,然后通过对最低子空间附近的顶点进行查询后,可以确定距离等分采样点最近的三角网格模型的顶点。通过kd树检索可以排数大量的无关点,有效地降低计算量,提高曲线的生成速度。
81.进一步的,所述在所述三角网格模型上确定若干初始点,包括:
82.s21、确定观察点;
83.s22、根据预定曲线轨迹确定鼠标拾取点;
84.s23、连接所述观察点以及所述鼠标拾取点,对应生成射线;
85.s24、记录所述射线与三角网格模型之间的交点,记为初始点。
86.具体来说,如图6所示,观察点也就是现有的三维软件中的摄像机的拍摄点,用于在三维软件中观察模型;具体来说在三维软件中,鼠标的拾取点并不一定会落在三维模型上,由于观察角度的关系,鼠标的拾取点通常会穿过三维模型落到三维模型的后面或者落到三维模型的前方。因此通过建立观察点以及确定鼠标拾取点,可以建立一条以观察点为起始点的射线,射线无限延长到3d软件的底部远平面上,这样就可以确定该射线是否与三角网格模型存在交点;若不存在交点,则舍弃该射线,若存在一个交点,则以该交点作为一个初始点,若存在两个或以上的交点,则以射线与三角网格模型的第一个交点为初始点。
87.进一步的,所述对所述三角网格模型进行预处理,还包括:
88.对所有的包围盒建立层次包围盒树;
89.所述分别计算各个等分采样点与所有的包围盒之间的距离,包括:
90.使用所述层次包围盒树分别对每一个等分采样点进行筛选,计算所述等分采样点与所述层次包围盒树上的包围盒之间的距离。
91.具体来说,层次包围盒树,在物理引擎里,由于物理模拟,大部分形状都是会动态更新的,例如位移/旋转都会改变形状。于是就又有一种支持动态更新的层次包围盒树,称之为动态层次包围盒树。它的算法核心可以概括为:形状的位移/旋转/伸缩更新对应的叶节点,然后一级一级更新上面的节点,使它们的包围体包住子节点。通过建立层次包围盒树,可以通过不同尺寸的包围盒,将三角面片的包围盒进行划分,通过与父包围盒进行计算可以快速地排除其内部对应的子包围盒,有效地降低计算量,提高计算速度。
92.进一步的,分别计算各个等分采样点与所有的包围盒之间的距离,包括:
93.s41、获取任一包围盒对应的坐标(xmin,ymin,zmin,xmax,ymax,zmax),获取任一所述等分采样点的坐标(x,y,z);
94.s42、获取x轴方向距离dx,在x小于xmin的情况下,dx=xmin-x;在x大于xmin且x小于xmax的情况下,dx=0;在x大于xmax的情况下,dx=x-xmax;
95.s43、获取y轴方向距离dy,在y小于ymin的情况下,dy=ymin-y;在y大于ymin且y小于ymax的情况下,dy=0;在y大于ymax的情况下,dy=y-ymax;
96.s44、获取z轴方向距离dz,在z小于zmin的情况下,dz=zmin-z;在z大于zmin且z小于zmax的情况下,dz=0;在z大于zmax的情况下,dz=z-zmax;
97.s45、根据x轴方向距离dx、y轴方向距离dy以及z轴方向距离dz,计算任一包围盒与任一等分采样点之间的距离
98.s46、根据各个等分采样点与所有的包围盒之间的距离,得到所有各个等分采样点对应的距离集合。
99.具体来说,分别计算各个等分采样点与所有的包围盒之间的距离,例如,在一个线段上设有五个等分采样点,三角网格模型上设置有二十个三角面片,那么就需要重复计算5*20=100次距离,步骤s42-步骤s45,是仅仅计算出一个等分采样点与一个包围盒之间的距离,还需要根据排列组合将等分采样点与包围盒之间的所有组合情况都分别计算,以得到5个等分采样点与对应的5个距离集合。在本实施例中,所述包围盒采用aabb包围盒,aabb包围盒的六面均平行于基础平面,因此通过相对的两个点的坐标,也就是坐标(xmin,ymin,zmin,xmax,ymax,zmax),即可确定对应的包围盒的位置,并进行计算某一个等分采样点与包围盒之间的距离。包围盒树是用更大的父包围盒将若干体积较小的子包围盒进行包围,这样在计算的时候,可以先计算等分采样点与父包围盒之间的距离,如果大于第一距离,则说明等分采样点与父包围盒内部的子包围盒的距离均大于第一距离,也就是可以将父包围盒中的子包围盒全部都排除掉。这样就可以有效地降低距离计算过程的计算量,提高计算速度。
100.进一步的,所述分别计算各个等分采样点与对应的三角面片集中各个三角面片之间的第一坐标点集合,包括:
101.s51、确定各个三角面片所在的平面;
102.s52、获取各个等分采样点在对应的各个平面上的投影点;
103.s53、判断各个平面上的投影点是否位于该平面上的三角面片的内部,若是,则将该投影点作为对应的第一坐标点;若否,则以所述三角面片上的距离所述等分采样点最近的点作为第一坐标点。
104.具体来说,每一个等分采样点都对应一个三角面片集,但是不同的等分采样点对应的三角面片集中所包含的三角面片的数量是不同的,例如,某一个等分采样点所对应的三角面片集中的三角面片的数量为5个,那么三角面片所对应的平面也是5个,对应地,等分采样点在各个平面上所对应的投影点也是5个,通过判断投影点的与对应平面上的三角面片之间的位置,可以对应得到5个第一坐标点,也就是说,将这5个对应的第一坐标点,记为第一坐标点集。在确定第一坐标点的时候,可以通过三角面片的重心与投影点之间的距离,判断投影点是否位于三角面片的内部,若位于三角面片的内部,则以该投影点作为第一坐标点;若该投影点不在三角面片的内部,则需要计算并选取三角面片上的距离等分采样点最近的点,作为第一坐标点,具体来说,距离等分采样点最近的点,位于所述三角面片的边
缘;那现在需要分别计算三角面片的三条线段边与采样点的距离,并通过比较投影点与三条边之间的距离,可以选出距离等分采样点最近的一条边。然后通过计算等分采样点与该边的最近点(也就是在某一条线段上确定一个点的最近点),可以采用以下计算方法:记线段ab,起点为a,终点为b,等分采样点为p,建立向量ab、ap,ab向量点乘ap得到a,向量ab的长度的平方为b,a除以b得到比值ratio,如果ratio《=0,则最近点为a;如果ratio》=1,则最近点为b;如果0《ratio《1,最近点为a*(1-ratio)+b*ratio。其中ratio即为最近点在线段ab上的比例点,确定ratio的大小,也就确定了点在线段上的位置。
105.如图5所示,本发明还提供了一种三角网格快速绘制曲线系统,包括:
106.三角网格模型生成模块,用于生成三角网格模型;
107.kd树生成模块,用于根据所述三角网格模型上的顶点坐标对应生成kd书树模型;
108.包围盒生成模块:根据所述三角网格模型上的三角面片对应生成包围盒;
109.层次包围盒树生成模块:根据三角网格模型上的三角面片的包围盒对应生成层次包围盒树。
110.关于一种三角网格快速绘制曲线系统的具体限定可以参见上文中对于一种三角网格快速绘制曲线系统的限定,在此不再赘述。上述一种三角网格快速绘制曲线系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
111.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机程序被处理器执行时以实现一种三角网格快速绘制曲线的方法。
112.本领域技术人员可以理解,图10中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
113.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:包括:
114.包括:
115.s1、构建三角网格模型,并对所述三角网格模型进行预处理,所述预处理包括:对所述三角网格模型上的每一个三角面片分别计算生成对应的包围盒;
116.s2、在所述三角网格模型上确定若干初始点,根据预定轨迹,连接若干所述初始点,对应生成至少一线段;
117.s3、根据预设分辨率,在所述线段上设置若干等分采样点,确定距离各个等分采样点最近的三角网格模型的网格顶点,并计算各个所述等分采样点与对应的最近的网格顶点之间的第一距离;
118.s4、分别计算各个等分采样点与所有的包围盒之间的距离,得到各个等分采样点对应的距离集合;将各个等分采样点对应的第一距离与该等分采样点对应的距离集合中的
所有距离进行一一比对,确定所述距离集合中小于第一距离的若干第二距离,将若干第二距离对应的包围盒所对应的若干三角面片,记为三角面片集;
119.s5、分别计算各个等分采样点与对应的三角面片集中各个三角面片之间的第一坐标点集合,并筛选出与各个等分采样点对应的第一坐标点集合中距离最近的第一坐标点,记为第二坐标点;
120.s6、按照所述线段上的若干等分采样点的顺序,对应地将若干所述第二坐标点依次连接,生成对应的预定分辨率的曲线。
121.在一个实施例中,所述对所述三角网格模型进行预处理,还包括:遍历所述三角网格模型上的所有顶点,获取所有顶点对应的三维坐标,以所有的三维坐标为节点建立三维kd树。
122.在一个实施例中,所述确定距离各个等分采样点最近的三角网格模型的网格顶点,包括:遍历所有等分采样点,获取所有的等分采样点对应的三维坐标,对每一个等分采样点分别进行kd树检索,以确定与每一个等分采样点距离最近的网格顶点。
123.在一个实施例中,所述在所述三角网格模型上确定若干初始点,包括:
124.s21、确定观察点;
125.s22、根据预定曲线轨迹确定鼠标拾取点;
126.s23、连接所述观察点以及所述鼠标拾取点,对应生成射线;
127.s24、记录所述射线与三角网格模型之间的交点,记为初始点。
128.在一个实施例中,所述对所述三角网格模型进行预处理,还包括:
129.对所有的包围盒建立层次包围盒树;
130.所述分别计算各个等分采样点与所有的包围盒之间的距离,包括:
131.使用所述层次包围盒树分别对每一个等分采样点进行筛选,计算所述等分采样点与所述层次包围盒树上的包围盒之间的距离。
132.在一个实施例中,分别计算各个等分采样点与所有的包围盒之间的距离,包括:
133.s41、获取任一包围盒对应的坐标(xmin,ymin,zmin,xmax,ymax,zmax),获取任一所述等分采样点的坐标(x,y,z);
134.s42、获取x轴方向距离dx,在x小于xmin的情况下,dx=xmin-x;在x大于xmin且x小于xmax的情况下,dx=0;在x大于xmax的情况下,dx=x-xmax;
135.s43、获取y轴方向距离dy,在y小于ymin的情况下,dy=ymin-y;在y大于ymin且y小于ymax的情况下,dy=0;在y大于ymax的情况下,dy=y-ymax;
136.s44、获取z轴方向距离dz,在z小于zmin的情况下,dz=zmin-z;在z大于zmin且z小于zmax的情况下,dz=0;在z大于zmax的情况下,dz=z-zmax;
137.s45、根据x轴方向距离dx、y轴方向距离dy以及z轴方向距离dz,计算任一包围盒与任一等分采样点之间的距离
138.s46、根据各个等分采样点与所有的包围盒之间的距离,得到所有各个等分采样点对应的距离集合。
139.进一步的,所述分别计算各个等分采样点与对应的三角面片集中各个三角面片之间的第一坐标点集合,包括:
140.s51、确定各个三角面片所在的平面;
141.s52、获取各个等分采样点在对应的各个平面上的投影点;
142.s53、判断各个平面上的投影点是否位于该平面上的三角面片的内部,若是,则将该投影点作为对应的第一坐标点;若否,则以所述三角面片上的距离所述等分采样点最近的点作为第一坐标点。
143.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
144.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
145.以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1