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

一种沿放样路径构建三维模型的方法、电子设备和存储介质与流程

2022-08-11 07:53:26 来源:中国专利 TAG:


1.本发明属于计算机三维建模技术领域,具体涉及一种沿放样路径构建三维模型的方法、电子设备和存储介质。


背景技术:

2.放样是一种非常通用的几何建模方法,百度百科解释如下:放样是将一个二维形体对象作为沿某个路径的剖面,而形成复杂的三维对象。同一路径上可在不同的段给予不同的形体。
3.在一些建模系统中,会选择用一组平面来模拟一个曲面,这样的好处是大大简化计算的难度。这种建模方法在业界也有很多软件在使用,比如酷家乐中的酷大师建模系统、sketchup草图大师软件等。
4.目前,现有的放样算法稳定性仍不满足使用需要,对于复杂路径进行放样是否会产生错误的结果。不够稳定的放样算法往往只能支持比较简单的放样路径,对建模能力的限制非常大;也有一些提高稳定性的算法,但是导致效率骤降。


技术实现要素:

5.有鉴于此,本发明针对完全由平面建模的系统中,提出一种放样建模方法,具体为一种沿放样路径构建三维模型的方法、电子设备和存储介质。
6.第一方面,本发明提供一种沿放样路径构建三维模型的方法,包括:
7.对用于放样的多边形和放样路径进行合法性检测以及合法化处理,所述多边形是平面多边形,所述放样路径由多段边组成;
8.根据所述起始点对放样路径的所有边进行排序得到放样的顺序;
9.按放样的顺序使用所述多边形根据所述放样路径的每一段边进行扫掠构建三维模型;
10.当所述放样路径不是闭合环路时,在起始点和终点处生成放样端面。
11.上述方案中,对用于放样的多边形进行合法性检测包括:
12.对所述多边形进行共面检测,确保所述多边形的所有边在同一个平面上且首尾相连;
13.对放样路径进行合法性检测包括:
14.检测所述放样路径是否存在共线的边;
15.所述合法化处理包括:
16.当所述放样路径存在共线边时,将所述共线边合并。
17.上述方案中,按放样的顺序使用所述多边形根据所述放样路径的每一段边进行扫掠构建三维模型包括:
18.将所述多边形投影到所述初始平面得到包含多边形投影点集合的初始投影面,根据放样路径中每段边的方向将所述初始投影面移动变换到每段边的起点,得到所述多边形
在放样路径每段边起点处的投影点集合;
19.根据每段边的方向和起点处的投影点集合生成每段边对应的侧面所在的平面和侧面边线所在的直线;
20.将放样路径中相邻两段边的侧面边线进行求交运算,得到所有交点,所述交点为所构建三维模型的端点;
21.根据所述交点生成u方向边,其中u方向是沿着放样路径的方向;
22.根据所述交点和u方向边生成v方向边,其中v方向是沿着所述多边形边的方向;
23.根据u方向边和u方向边构建所有侧面。
24.上述方案中,根据所述交点生成u方向边的方法为:
25.连接同一侧面边线上的交点生成u方向边。
26.上述方案中,根据所述交点和u方向边生成v方向边的方法为:
27.针对所述多边形的每个边,计算该边所对应放样路径中的相邻两段边的侧面相交线;
28.计算所述相交线与该边关联的u方向边的两个交点,作为v方向边的两个端点;
29.连接两个端点得到v方向边。
30.上述方案中,还包括:根据v向边的相交情况对v向边进行取舍。
31.上述方案中,根据u方向边和u方向边构建所有侧面包括:
32.对所述侧面进行取舍操作。
33.上述方案中,对所述侧面进行取舍操作包括:
34.当一侧面所包含的u方向边与对应的放样路径的边同向时,保留该侧面;否则舍弃该侧面。
35.上述方案中,计算确定放样路径的起始点和起始方向包括:
36.当所述放样路径是闭合环路时,计算确定放样路径的全部边的端点中,到所述多边形的重心距离最近的端点;生成与每个所述距离最近的端点所在边相垂直的平面,计算所述多边形到每个所述平面的投影面积,将投影面积最大的平面设定为初始平面,所述初始平面对应的所述边的方向设定为起始方向,将所述初始平面对应的端点设定为起始点;
37.当所述放样路径不是闭合环路时,计算放样路径首、尾两个端点到所述多边形的重心的距离,将距离最近的端点设定为起始点,将起始点所在边的方向或其反方向设定为起始方向。
38.第二方面,本发明还提供一种电子设备,包括:至少一个处理器;与所述至少一个处理器通信连接的存储器;
39.其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述第一方面任一项所述沿放样路径构建三维模型的方法。
40.第三方面,本发明还提供一种非暂态计算机可读存储介质,,其特征在于:
41.该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述第一方面任一项所述沿放样路径构建三维模型的方法。
42.相较于现有技术,本发明支持三维建模,放样的路径可以在不同平面上,最终构建出由多个平面构成的模型;在稳定性方面,保证任意多边形沿着任意多段线路径进行放样,
都可以得到正确的结果;此外还能保证效率,针对边数很多的多边形作为输入,沿多段线进行扫掠,也尽可能快的计算出结果。
附图说明
43.图1是本发明实施例提供的沿放样路径构建三维模型的方法流程图;
44.图2是本发明实施例提供的多边形和放样路径示意图;
45.图3是本发明实施例提供的放样路径起始点示意图;
46.图4是本发明实施例提供的放样侧平面和边线示意图;
47.图5是本发明实施例提供的侧面边线求交示意图;
48.图6是本发明实施例提供的生成u方向边示意图;
49.图7是本发明实施例提供的v方向边产生自交情形示意图;
50.图8是本发明实施例提供的v方向边取舍逻辑示意图;
51.图9是本发明实施例提供的侧面取舍逻辑示意图;
52.图10是本发明实施例提供的u向边和v向边构成面的方向示意图;
53.图11是本发明实施例提供的复杂三维路径扫掠示意图;
54.图12是本发明实施例提供的复杂三维路径扫掠结果示意图;
55.图13是本发明实施例提供的体自交的圆扫掠圆情形示意图;
56.图14是本发明实施例提供的圆扫掠圆扫掠结果示意图;
57.图15是本发明实施例提供的放样后自动与环境求交示意图;
58.图16是本发明实施例提供的放样后自动与环境求交处理结果示意图;
具体实施方式
59.以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
60.除非另有说明,本实施例使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
61.现有的建模系统多是基于brep数据结构的。边界表示brep(boundary representation)是图形学建模中一种常用的表示模型的数据结构。brep数据结构层次如下:一个连通的物体为一个shell,shell是由很多face组成的,每个face首先有最外围的loop组成,内部也可能有很多内部loop。loop是有方向的,每个loop有很多条halfedge组成,halfedge也是有方向的。halfedge是依附于edge的,edge是没有方向的,一条edge可能有多条halfedge。多个顶点(一般为两个)组成一条edge。
62.图1是本实施例提供的沿放样路径构建三维模型的方法流程图。本实施例中,用于放样的多边形必须是一个平面多边形,内部不能有孔。沿着路径的方向被称为u方向,沿着多边形的边的方向被称作v方向。
63.本实施例提供的沿放样路径构建三维模型的方法包括:
64.步骤101、对多边形和放样路径检测合法性并重新排序、必要时合并边。
65.多边形和放样路径及其位置均由用户设定。首先要对多边形和放样路径进行合法
性检测。
66.多边形和放样路径如图2所示。
67.在一些实施例中,对于多边形做共面检测,保证多边形的所有边必须在一个平面上,并且是首尾相连的。
68.在一些实施例中,对于放样路径,如果遇到相交且共线的边需要做合并操作。因为两段共线边无法求交确定交点,容易引发各种问题。而且在最终对于共面的面也要做合并,不如在这一步就做边合并。
69.步骤102、确定放样路径的起始点和起始方向。
70.计算确定放样路径的起始点和起始方向包括:
71.当所述放样路径是闭合环路时,计算确定放样路径的全部边的端点中,到所述多边形的重心距离最近的端点;生成与每个所述距离最近的端点所在边相垂直的平面,计算所述多边形到每个所述平面的投影面积,将投影面积最大的平面设定为初始平面,所述初始平面对应的所述边的方向设定为起始方向,将所述初始平面对应的端点设定为起始点;
72.当所述放样路径不是闭合环路时,计算放样路径首、尾两个端点到所述多边形的重心的距离,将距离最近的端点设定为起始点,将起始点所在边的方向或其反方向设定为起始方向。
73.具体而言,将多边形映射到放样路径的起点上,并根据放样路径的变换得到每一段放样路径起点处的多边形投影。
74.在一些实施例中,放样是沿着放样路径的方向进行放样,但是并不是把多边形平移到放样路径的起点,而是把多边形投影到放样路径的起点进行扫掠。因此确定放样路径的起点就特别重要,特别是当放样路径是一个环的时候。
75.确定放样路径起点,主要有以下几个标准:
76.首选在放样路径所有边的端点中找到距离多边形重心最近的点,如果有多个点距离相同,就都纳入考虑。如果该点的关联边(该点相连的边)都与多边形平面平行,那么不计入考虑。
77.对于连续边,只有起点和终点参与比较。用一组相连的直线边代表一条曲线,称为连续边。
78.对于所有距离最近的点,找到点的关联边,计算这些边垂直的平面,找到多边形在这些平面的投影面积,投影面积最大的平面对应的边的方向作为起始方向,对应端点作为起始点。
79.在确定放样路径起始点后,根据该点对放样路径的所有边进行重新排序,该顺序就是接下来要进行放样的顺序。
80.将多边形投影到初始平面(与起始方向垂直的平面),并且保证投影的边在放样路径方向上是逆时针的。本系统中面的方向符合右手定则,因此保证投影面的边是逆时针后,可以保证生成的侧面方向都是朝外的。
81.然后将初始投影面根据放样路径的每段距离和方向,移动到每段的起始点上,得到多边形在放样路径每一段边上的起始点的投影点集合。如图3所示。
82.步骤103、根据每段投影确定每一段的放样侧平面和边线。
83.在步骤102中得到了放样路径上每一段边起始点的投影点集合之后,我们只需要
将根据每个端点和这段放样路径的边的方向,就可以得到侧面边线所在的直线,以及侧面所在的平面,如图4所示。
84.步骤104、根据边线求交得到所有交点。
85.在上一步中得到侧面边线之后,将边线的每一段与下一段(这里的每一段与放样路径的每一段边对应)求交,得到的交点。这些交点就是最终得到的放样物体的端点。如图5所示。
86.步骤105、根据交线得到u方向的边(segedge)。
87.沿着路径的方向被称为u方向。u方向边的生成过程比较简单,只需要顺次连接上一步中的端点就可以得到。有些时候,上一段边的端点和下一段边的端点是同一个点,这时候u方向边就是一个点而不是一条线段。如图6所示。
88.步骤106、根据交线和u方向edge得到v方向edge(contuouredge)。
89.v方向的边也是通过将端点根据列坐标相连得到的,但是由于有的时候多边形过大,在扫掠过程中会有自交的情况,会导致这部分的逻辑比较复杂。参考图7和图8,边e1与边e2相交互相打断,同时边e2又与边e3相交互相打断,此时边e2被分成了3段。这些分段的v方向边都需要记录下来,根据之后的u方向边信息在生成面的时候做相应的取舍。
90.顺序判断两条相邻v向边是否相交,如果相交,那么根据交点和端点形成两条v向边并记录,并将后两条v向边加入cache。在计算下面两条相邻v向边的时候,如果也发生相交,那么判断交点在cache中两条v向边的哪一条上,并将该段分割。如果不发生相交,那么直接使用cache作为该段边记录。如果最终路径是闭合的,那么还需要用最后一段与第一段做该处理,并根据结果更新第一段v向边的记录。
91.如上述例中,首先做边1与边2做求交,两者相交并得到交点,那么根据边1的端点和交点得到了边1形成的两条边,e1和e2,都记录到边1对应的v向边中。同时,把边2与交点形成的两条边(e3和e4)记录在缓存中。接下来处理边2与边3,两者相交并得到交点,那么判断这个交点在cache中的哪一段上(如果cache只有一段就不需要处理)。由图可见交点在e3上,那么该交点将e3分割成e5、e6和e4,把这三段edge都记录到边1对应的v向边中。同时将边3形成的两条边,e7和e8存入cache,以此类推。由于只处理相邻面的求交,所以只需要记录一个cache即可。
92.如果遇到u方向边就是一个点的情况,那么就不需要做上述判断,因为相邻的两条v向边交点就是该点,直接记录即可。
93.步骤107、根据所有edge得到所有侧面。
94.根据上述u方向边和v向边就可以构建侧面。这里需要注意的点就是侧平面是需要取舍的,比如两条相交的v向边会构成两个相对的三角形,那么其中一个三角形是需要舍弃的。取舍的标准就是看面所包含的u方向边是否与对应的path同向,如果方向相同就保留,否则被舍弃。这个标准同样适用于v向边没有交点的面,因为内扫导致反扫构成的面同样需要删去。内扫是指对于一些特殊的情况下,多边形的一条边放样方向与放样路径方向完全相反。
95.如图9所示,线1与线2构成了两个面,f1和f2,线2和线3构成了两个面,f3和f4。很明显,f1和f3对应的u方向边与放样路径方向一致,因此被保留。f2和f4被舍弃。
96.然后根据对应的两条u方向边(可能只有一条)和两组v向边(每组可能不止一条)
构成face,方向如图10所示。
97.如前所述,对于起始面,保证点的顺序是在投影屏幕逆时针。后面的u方向边顺序都是根据这个顺序确定的,v向边顺序则是根据放样路径方向。那么我们可以规定,相邻的uedge从小到大为upedge和downedge,如果有vedge相交,那么交点测的uedge就是undefined。相邻的vedge从小到大为edge left和edge right。这四组(或者是三组)edge的走向如图10所示。那么需要根据edge构造halfedge,根据右手定则可以基本确定,edge left和downedge的halfedge与edge同向,edge right和upedge的halfedge与edge反向。这样可以保证面方向朝外。
98.用这种方法,本实施例得到了对应的一组halfedges,然后就可以构成loop和face。
99.步骤108、根据放样路径是否闭合决定是否生成端面。
100.对于path不闭合的放样,需要生成放样端面。其中,起始端面的所有halfedge与edge反向,终止端面的所有hafledge与edge同向。
101.如果一个端面相邻的所有侧面都被舍弃了,则该端面也没有生成的必要。
102.步骤109、侧面的共面face融合。
103.构造完扫掠体后,需要对扫掠体的所有共面face做面融合,这样更能保证拓扑的合理性。共面情况只会存在于同一段profile edge扫掠得到的所有face中,因此按照放样路径方向依次判断面是否共面并相交,将所有共面相交face做融合即可。
104.在一些可选的实施例中,由于在生成放样建模的结果后,就不再需要用于放样的多边形了,而且保留多边形可能还会产生其他错误,因此可将多边形删除。
105.通过以上放样过程,本实施例提供的放样建模方法既能够支持复杂三维路径扫掠,如图11和12所示;也支持放样生成的体自交的情况,比如圆扫掠圆,如图13和14所示;放样后自动与环境求交,如图15和16所示。
106.本发明实施例还提供一种电子设备,包括:至少一个处理器;与所述至少一个处理器通信连接的存储器;
107.其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述沿放样路径构建三维模型的方法。
108.本实施例的电子设备可以是例如终端设备或服务器。终端设备可以包括但不限于诸如移动电话、笔记本电脑、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。以上示例不应对本实施例的功能和使用范围带来任何限制。
109.电子设备可以包括处理装置(例如中央处理器、图形处理器等),其可以根据存储在只读存储器(rom)中的程序或者从存储装置加载到随机访问存储器(ram)中的程序而执行各种适当的动作和处理。在ram中,还存储有电子设备操作所需的各种程序和数据。处理装置、rom以及ram通过总线彼此相连。输入/输出(i/o)接口也连接至总线。
110.通常,以下装置可以连接至i/o接口:包括例如触摸屏、触摸板、键盘、鼠标、摄像头等的输入装置;包括例如液晶显示器(lcd)、扬声器等的输出装置;包括例如磁带、硬盘等的存储装置;以及通信装置。通信装置可以允许电子设备与其他设备进行无线或有线通信以
交换数据。
111.本发明实施例还提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述沿放样路径构建三维模型的方法。
112.实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、随机存取存储器(ram,random access memory)、只读存储器(rom,read-only memory)、磁碟或者光盘等各种可以存储程序代码的介质。
113.或者本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(例如是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述存储介质包括:移动存储设备、ram、rom、磁碟或者光盘等各种可以存储程序代码的介质。
114.以上所述仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献