CN111523159B - 网格模型的塑形方法、终端及存储介质 - Google Patents
网格模型的塑形方法、终端及存储介质 Download PDFInfo
- Publication number
- CN111523159B CN111523159B CN202010302997.1A CN202010302997A CN111523159B CN 111523159 B CN111523159 B CN 111523159B CN 202010302997 A CN202010302997 A CN 202010302997A CN 111523159 B CN111523159 B CN 111523159B
- Authority
- CN
- China
- Prior art keywords
- shaping
- point
- area
- user
- preset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- Computational Mathematics (AREA)
- Human Computer Interaction (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种网格模型的塑形方法、终端及存储介质,所述方法包括:响应用户触发的连续塑形开始指令,进入连续塑形模式;实时获取用户选择的点;判断用户选择点时网格模型是否与触发连续塑形开始指令时网格模型相同;若是,则根据kd树、选择的点、预设半径和预设投影方向,获得塑形区域和塑形区域的中心点;若否,则根据选择的点、预设半径和预设投影方向,获得塑形区域和塑形区域的中心点;根据预设塑形算法和塑形区域的中心点,对塑形区域的三角面片进行塑形;响应用户触发的连续塑形结束指令,退出连续塑形模式,并根据连续塑形结束时的网格模型,更新kd树。本发明解决了现有对网格模型连续塑形过程中,CPU占用率高,致卡顿问题。
Description
技术领域
本发明涉及计算机辅助设计领域,尤其涉及一种网格模型的塑形方法、终端及计算机可读存储介质。
背景技术
义齿CAD软件自动生成网格模型后,通常需要对生成的网格模型进行精细的塑形调整才能达到我们需要的效果,例如局部变形、蜡刀增、蜡刀减、局部平滑、全局平滑、局部简化、消除尖刺等塑形调整。
当前国内外相关义齿CAD软件对网格模型的连续塑形调整过程中,会实时对kd树进行更新重建,而kd树的重建更新会极大占用CPU资源,因此整个塑形算法速度比较慢,特别是在蜡刀这样的连续塑形操作,CPU占用非常高,甚至可能会出现卡顿现象。
发明内容
本发明的主要目的在于提出一种网格模型的塑形方法、终端及计算机可读存储介质,旨在解决现有软件中对构建的网格模型进行连续塑形过程中,CPU占用率高,会导致卡顿问题。
为实现上述目的,本发明提供一种网格模型的塑形方法,包括步骤:
响应用户触发的连续塑形开始指令,进入连续塑形模式;
实时获取用户选择的点;
每获取到一个用户选择的点时,判断获取用户选择的点时的当前网格模型是否与触发连续塑形开始指令时的网格模型相同;
若是,则根据用户选择的点、预设半径、预设投影方向和触发连续塑形开始指令时的kd树,获得当前网格模型上的塑形区域和塑形区域的中心点;
若否,则根据用户选择的点、预设半径和预设投影方向,获得当前网格模型上的塑形区域和塑形区域的中心点;
根据预设塑形算法和塑形区域的中心点,对塑形区域的三角面片进行塑形;
响应用户触发的连续塑形结束指令,退出连续塑形模式,并根据触发连续塑形结束指令时的网格模型,更新kd树。
可选地,所述根据用户选择的点、预设半径和预设投影方向,获得当前网格模型上的塑形区域和塑形区域的中心点的步骤包括:
以用户选择的点为起点,沿预设投影方向构建第一射线;
采用第一射线与当前网格模型的三角面片进行求交,获得第一射线与当前网格模型的交点中距用户选择的点最近的交点,作为塑形区域的中心点;
以用户选择的点为圆心,构建垂直预设投影方向且半径为预设半径的第一圆;
将所述第一圆沿预设投影方向投影在当前网格模型上,获得与所述第一圆对应的第一投影区域;
将处于第一投影区域内的三角面片作为塑形区域。
可选地,所述以用户选择的点为起点,沿预设投影方向构建第一射线的步骤之前还包括:
获取前一个选择点对应的塑形区域经塑形后的三角面片,作为求交区域;
所述采用第一射线与当前网格模型的三角面片进行求交,获得第一射线与当前网格模型的交点中距用户选择的点最近的交点,作为塑形区域的中心点的步骤包括:
采用第一射线与求交区域中所有三角面片进行求交,获得第一射线与网格模型的交点中距用户选择的点最近的交点,作为塑形区域的中心点。
可选地,所述根据用户选择的点、预设半径、预设投影方向和触发连续塑形开始指令时的kd树,获得当前网格模型上的塑形区域和塑形区域的中心点的步骤包括:
以用户选择的点为起点,沿预设投影方向构建第二射线;
根据第二射线和触发连续塑形开始指令时的kd树,获得第二射线与当前网格模型的交点中距用户选择的点最近的交点,作为塑形区域的中心点;
以用户选择的点为圆心,构建垂直预设投影方向且半径为预设半径的第二圆;
根据第二圆和触发连续塑形开始指令时的kd树,获得当前网格模型上与所述第二圆对应的第二投影区域;
将处于第二投影区域内的三角面片作为塑形区域。
可选地,所述根据预设塑形算法和塑形区域的中心点,对塑形区域的三角面片进行塑形的步骤之前包括:
遍历塑形区域的三角面片的各边、以及各边对应的对角;
每获取到边长大于预设阈值的边时,构建边长大于预设阈值的边的中线,将边长大于预设阈值的边所在的三角面片划分为两个新的三角面片,直至塑形区域的三角面片的各边的边长均小于等于预设阈值。
可选地,所述根据预设塑形算法和塑形区域的中心点,对塑形区域的三角面片进行塑形的步骤之前还包括:
遍历塑形区域的三角面片的各边、以及各边对应的对角;
每获取到对应的两个对角之和大于180°的边时,连接所述边对应的两个顶点,并删除所述边,以生成两个新的三角面片,直至塑形区域的三角面片的各边对应的两个对角之和均小于等于180°。
可选地,所述根据预设塑形算法和塑形区域的中心点,对塑形区域的三角面片进行塑形的步骤包括:
获取塑形区域的三角面片的各顶点与塑形区域中心点间的距离以及各边与塑形区域中心点间的垂直距离;
根据预设的距离与权重值间映射关系,获得塑形区域的三角面片的各顶点对应的权重值和各边对应的权重值;
根据预设塑形算法以及塑形区域的三角面片的各顶点对应的权重值和各边对应的权重值,对塑形区域的三角面片进行塑形。
可选地,所述根据触发连续塑形结束指令时的网格模型,更新kd树的步骤包括:
判断触发连续塑形结束指令时的网格模型与触发连续塑形开始指令时的网格模型是否相同;
若否,则根据触发连续塑形结束指令时的网格模型,更新kd树。
为实现上述目的,本发明还提供一种终端,所述终端包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的网格模型的塑形方法的步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的网格模型的塑形方法的步骤。
本发明提出的一种网格模型的塑形方法、终端及计算机可读存储介质,通过响应用户触发的连续塑形开始指令,进入连续塑形模式;实时获取用户选择的点;每获取到一个用户选择的点时,判断获取用户选择的点时的当前网格模型是否与触发连续塑形开始指令时的网格模型相同;若是,则根据用户选择的点、预设半径、预设投影方向和触发连续塑形开始指令时的kd树,获得当前网格模型上的塑形区域和塑形区域的中心点;若否,则根据用户选择的点、预设半径和预设投影方向,获得当前网格模型上的塑形区域和塑形区域的中心点;根据预设塑形算法和塑形区域的中心点,对塑形区域的三角面片进行塑形;响应用户触发的连续塑形结束指令,退出连续塑形模式,并根据触发连续塑形结束指令时的网格模型,更新kd树。从而终端对模型进行一次连续塑形操作过程中,不会实时对kd树进行更新,而是每结束一次连续塑形操作后才会根据塑形后的模型构建kd树,从而降低连续塑形操作过程中对CPU占用率,避免出现卡顿现象。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的结构示意图;
图2为本发明网格模型的塑形方法第一实施例的流程示意图;
图3为本发明网格模型的塑形方法第一实施例中步骤S50的细化流程示意图;
图4为本发明网格模型的塑形方法第二实施例的流程示意图;
图5为本发明网格模型的塑形方法第五实施例中步骤S60的细化流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参照图1,图1为本发明各个实施例中所提供的终端的硬件结构示意图。所述终端包括通信模块01、存储器02及处理器03等部件。本领域技术人员可以理解,图1中所示出的终端还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中,所述处理器03分别与所述存储器02和所述通信模块01连接,所述存储器02上存储有计算机程序,所述计算机程序同时被处理器03执行。
通信模块01,可通过网络与外部设备连接。通信模块01可以接收外部设备发出的数据,还可发送数据、指令及信息至所述外部设备,所述外部设备可以是手机、平板电脑、笔记本电脑和台式电脑等电子设备。
存储器02,可用于存储软件程序以及各种数据。存储器02可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(根据预设塑形算法和塑形区域的中心点,对塑形区域的三角面片进行塑形)等;存储数据区可存储根据终端的使用所创建的数据或信息等。此外,存储器02可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器03,是终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器02内的软件程序和/或模块,以及调用存储在存储器02内的数据,执行终端的各种功能和处理数据,从而对终端进行整体监控。处理器03可包括一个或多个处理单元;优选的,处理器03可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器03中。
尽管图1未示出,但上述终端还可以包括电路控制模块,电路控制模块用于与市电连接,实现电源控制,保证其他部件的正常工作。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
根据上述硬件结构,提出本发明方法各个实施例。
参照图2,在本发明网格模型的塑形方法的第一实施例中,所述网格模型的塑形方法包括步骤:
步骤S10,响应用户触发的连续塑形开始指令,进入连续塑形模式;
在本方案中,网格模型是指三维三角网格模型,是由多个三角面片组成的三维模型。网格模型的塑形是指网格模型的变形、蜡刀、平滑或填缝等操作。预设投影方向是指与当前工作界面的观察方向存在一定夹角并且由终端的显示界面外指向显示界面内的方向,该夹角范围一般为-45°~45°,本实施例优选该夹角为0°,即预设投影方向为当前工作界面的观察方向,当前工作界面的观察方向是指垂直于终端的显示界面并且由终端的显示界面外指向显示界面内的方向。
用户对已经构建的网格模型进行连续塑形操作的过程可以为:用户在正在运行的网格模型设计软件的终端界面上选择的塑形操作类型后,该塑形操作类型可以为局部变形操作、蜡刀增操作、蜡刀减操作、平滑操作或填缝操作等,在此不对塑形操作类型进行限定。用户可以通过按住鼠标的左键、滚轮或右键来触发连续塑形开始指令,然后再按住鼠标的左键、滚轮或右键的情况下移动鼠标,来控制终端工作界面上的指针连续移动,连续移动过程中指针位置即用户选择的需塑形的点,最后通过松开一直按住的鼠标左键、滚轮或右键触发连续塑形结束指令。
用户对已经构建的网格模型进行连续塑形操作的过程还可以为:用户在正在运行的网格模型设计软件的终端界面上选择的塑形操作类型后,通过手指或触控笔按压终端的触控屏来触发连续塑形开始指令,然后在终端的触控屏上利用手指或触控笔进行滑动,来控制终端界面上的选择指针连续移动,连续移动过程中指针位置即用户选择的需塑形的点,最后通过控制按压触控屏的手指或触控笔离开触控屏触发连续塑形结束指令。
步骤S20,实时获取用户选择的点;
终端在接收到用户触发的连续塑形开始指令后,用户未触发连续塑形结束指令之前,用户通过移动鼠标、通过手指滑动或通过触控笔滑动控制指针在三维模型设计软件的工作界面上连续移动,而在指针连续移动过程中终端会实时获取指针所在位置作为用户选择的点。
步骤S30,每获取到一个用户选择的点时,判断获取用户选择的点时的当前网格模型是否与触发连续塑形开始指令时的网格模型相同;若是,则执行步骤S40;若否,则执行步骤S50;
每获取到用户在三维模型设计软件的工作界面上选择的一个点时,会判断在获取该点时,当前网格模型是否与触发连续塑形开始指令时的网格模型相同,若相同,则终端会执行步骤S40,若不相同,则终端会执行步骤S50。
步骤S40,根据用户选择的点、预设半径、预设投影方向和触发连续塑形开始指令时的kd树,获得当前网格模型上的塑形区域和塑形区域的中心点;
每获取到用户在三维模型设计软件的工作界面上选择的一个点时,并且确定在获取该点时,当前网格模型与触发连续塑形开始指令时的网格模型相同,终端在接收到本次连续塑形开始指令后对网格模型还从未进行塑形,即用户还没确定要网格模型的表面上要塑形的区域,网格模型上的各三角面片均还没有被调整,而用户触发连续塑形开始指令时的kd树是通过用户触发连续塑形开始指令前的网格模型上三角面片各顶点位置信息构建出的kd树,适用于当前的网格模型,终端会根据用户选择的点、预设半径、预设投影方向和触发连续塑形开始指令时的kd树,获得当前网格模型上的塑形区域和塑形区域的中心点。具体的过程为:
步骤S41,以用户选择的点为起点,沿预设投影方向构建第二射线;
步骤S42,根据第二射线和触发连续塑形开始指令时的kd树,获得第二射线与当前网格模型的交点中距用户选择的点最近的交点,作为塑形区域的中心点;
步骤S43,以用户选择的点为圆心,构建垂直预设投影方向且半径为预设半径的第二圆;
步骤S44,根据第二圆和触发连续塑形开始指令时的kd树,获得当前网格模型上与所述第二圆对应的第二投影区域;
步骤S45,将处于第二投影区域内的三角面片作为塑形区域。
终端以用户选择的点为起点,沿预设投影方向构建一条第二射线,然后采用kd树求交法求解构建的第二射线与网格模型的交点,即根据触发连续塑形开始指令时的kd树和第二射线求交,获得第二射线与网格模型的交点,将第二射线与网格模型的交点中选择距用户选择的点最近的交点作为塑形区域的中心点。
需要说明的是,由于第二射线是无限长度的,可能会与网格模型存在多个交点,故终端可以以用户选择的点为起点,沿预设投影方向构建一条预设长度的第二线段,该预设长度刚好使得构建的第二线段与网格模型只存在一个交点,直接将构建的第二线段与网格模型的交点作为塑形区域的中心点。
终端以用户选择的点为圆心,构建半径为预设半径并且垂直与预设投影方向的第二圆,然后根据连续塑形开始指令时kd树和该圆,获得该圆沿预设投影方向在网格模型表面上投影的第二投影区域,将处于第二投影区域内的三角面片作为本次获取到用户选择的点对应的塑形区域。在本方案中处于第二投影区域内的三角面片是指三角面片完全处于第二投影区域内,即该三角面片的三个顶点都位于第二投影区域内。
需要说明的是,在步骤S42中,当终端采用kd树求交法求解构建的射线与网格模型的交点,发现构建的第二射线与网格模型不相交,即用户选择的点沿预设投影方向的投影点并没有落在网格模型的表面上,终端不会继续执行后续步骤S43-步骤S45。
步骤S50,根据用户选择的点、预设半径和预设投影方向,获得当前网格模型上的塑形区域和塑形区域的中心点;
每获取到用户在三维模型设计软件的工作界面上选择的一个点时,并且确定在获取该点时,当前网格模型与触发连续塑形开始指令时的网格模型不相同,终端在接收到本次连续塑形开始指令后对网格模型已经进行过至少一次塑形,即获取该点时的当前网格模型和用户触发连续塑形开始指令时的网格模型不同,而根据用户触发连续塑形开始指令前的网格模型上三角面片各顶点位置信息构建出的kd树,并不适用于当前网格模型,终端根据用户选择的点、预设半径和预设投影方向,获得当前网格模型上的塑形区域和塑形区域的中心点。
具体地的,请参照图3,图3为本申请一实施例中步骤S50的流程细化示意图,基于上述实施例,步骤S50包括:
步骤S51,以用户选择的点为起点,沿预设投影方向构建第一射线;
步骤S52,采用第一射线与当前网格模型的三角面片进行求交,获得第一射线与当前网格模型的交点中距用户选择的点最近的交点,作为塑形区域的中心点;
终端以用户选择的点为起点,沿预设投影方向构建一条第一射线,然后采用第一射线与当前网格模型的所有三角面片进行求交,获得射线与网格模型的交点,会将射线与网格模型的交点中选择距用户选择的点最近的交点作为塑形区域的中心点。
需要说明的是,由于第一射线是无限长度的,可能会与网格模型存在多个交点,故终端可以以用户选择的点为起点,沿预设投影方向构建一条预设长度的第一线段,该预设长度刚好使得构建的第一线段与网格模型只存在一个交点,直接将构建的第一线段与网格模型的交点作为塑形区域的中心点。
步骤S53,以用户选择的点为圆心,构建垂直预设投影方向且半径为预设半径的第一圆;
步骤S54,将所述第一圆沿预设投影方向投影在当前网格模型上,获得与所述第一圆对应的第一投影区域;
步骤S55,将处于第一投影区域内的三角面片作为塑形区域。
终端以用户选择的点为圆心,构建半径为预设半径并且垂直与预设投影方向的圆,然后将所述第一圆沿预设投影方向投影在当前网格模型的表面上,获得所述第一圆对应的投影区域,将处于第一投影区域内的三角面片作为用户选择的点对应的塑形区域。在本方案中处于投影区域内的三角面片是指三角面片完全处于投影区域内,即该三角面片的三个顶点都位于第一投影区域内。
需要说明的是,在本方案中,终端执行步骤S51~S52,与执行步骤S53~S55之间的顺序并不作限定,即可以先执行步骤S51~S52,再执行步骤S53~S55;也可以先执行步骤S53~S55,再执行步骤S51~S52;或者执行步骤S51~S52与执行步骤S53~S55并行。
当采用先执行步骤S51~S52,再执行步骤S53~S55的策略时,终端还可以在执行步骤S52中的采用第一射线与当前网格模型的所有三角面片进行求交的步骤后,若未获得交点,即第一射线与网格模型不相交,用户选择的点沿预设投影方向的投影点并没有落在网格模型的表面上,终端不会继续执行步骤S53~S54的步骤。
步骤S60,根据预设塑形算法和塑形区域的中心点,对塑形区域的三角面片进行塑形;
终端每获取到一个用户选择的点,并确定了用户选择的点对应的塑形区域和塑形区域中心点后,会根据预设塑形算法和塑形区域的中心点,对塑形区域的三角面片进行塑形。例如当用户触发的连续塑形开始指令为平滑开始指令,在对塑形区域进行塑形时,会采用预设平滑算法对塑形区域的三角面片进行平滑。又例如当用户触发的连续塑形开始指令为蜡刀增开始指令,在对塑形区域进行塑形时,会采用预设蜡刀增算法对塑形区域的三角面片进行蜡刀增操作。
步骤S70,响应用户触发的连续塑形结束指令,退出连续塑形模式,并根据触发连续塑形结束指令时的网格模型,更新kd树。
终端会实时获取用户选择的点,并且每获取到一个用户选择的点时,确定用户选择的点对应的塑形区域,并对塑形区域进行塑形,直至接收到用户触发的连续塑形结束指令。若终端在接收到用户触发的连续塑形结束指令后,终端会响应用户触发的连续塑形结束指令,退出连续塑形模式,并根据触发连续塑形结束指令时的网格模型,更新kd树。
终端接收到用户触发的连续塑形开始指令后,会实时监控是否接收到用户触发的连续塑形结束指令,用户触发的连续塑形结束指令的时机分为三种情况,第一种情况是用户触发连续塑形开始指令后,此时用户还未移动鼠标、手指或触控笔未在终端的触控屏上滑动,即用户还未在网格模型软件的工作界面上进行点的选择,就认为当前不需要进行塑形或者本次是误触发连续塑形开始指令,用户可以立即触发连续塑形结束指令;第二种情况是,用户触发连续塑形开始指令后,用户已经移动鼠标、或者手指或触控笔已经在终端的显示触控屏上进行了滑动,即用户已经在网格模型软件的工作界面上进行了点的选择,但是终端将已获取到用户选择的各点沿预设投影方向进行投影,其投影点都没有落在网格模型上,说明目前用户还没有在网格模型的表面上选择到塑形区域中心点,终端还不会对网格模型进行塑形,只有塑形区域中心点落在网格模型的表面上,终端才会对网格模型进行塑形,也就是说终端还未对网格模型进行塑形之前,用户就触发了连续塑形结束指令;第三种情况是,用户已经在网格模型的表面上选择到了塑形区域中心点,终端在连续塑形开始指令后已经对网格模型表面的部分区域进行了塑形,用户认为不需要进一步进行塑形时,用户才触发连续塑形结束指令。
需要说明的时,在终端根据触发连续塑形结束指令时的网格模型更新kd树之后,终端会在用户触发下一次操作指令前,下一次操作指令并不仅仅指塑形操作指令还包括网格模型设计软件中的任一会对网格模型产生改变的操作指令,会实时监控是否接收到用户触发的回撤指令,若接收到用户的回撤指令,则将当前网格模型恢复到本次连续塑形前的网格模型,以及当前kd树恢复到本次连续塑形前的kd树。
本实施例通过响应用户触发的连续塑形开始指令,进入连续塑形模式;实时获取用户选择的点;每获取到一个用户选择的点时,判断获取用户选择的点时的当前网格模型是否与触发连续塑形开始指令时的网格模型相同;若是,则根据用户选择的点、预设半径、预设投影方向和触发连续塑形开始指令时的kd树,获得当前网格模型上的塑形区域和塑形区域的中心点;若否,则根据用户选择的点、预设半径和预设投影方向,获得当前网格模型上的塑形区域和塑形区域的中心点;根据预设塑形算法和塑形区域的中心点,对塑形区域的三角面片进行塑形;响应用户触发的连续塑形结束指令,退出连续塑形模式,并根据触发连续塑形结束指令时的网格模型,更新kd树。从而终端对模型进行一次连续塑形操作过程中,不会实时对kd树进行更新,而是每结束一次连续塑形操作后才会根据塑形后的模型构建kd树,从而降低连续塑形操作过程中对CPU占用率,避免出现卡顿现象。
进一步地,参照图4,图4为根据本申请网格模型的塑形方法的第一实施例提出本申请网格模型的塑形方法的第二实施例,在本实施例中,步骤S51之前还包括:
步骤S56,获取前一个选择点对应的塑形区域经塑形后的三角面片,作为求交区域;
所述步骤S52包括:
步骤S521,采用第一射线与求交区域中所有三角面片进行求交,获得第一射线与网格模型的交点中距用户选择的点最近的交点,作为塑形区域的中心点。
在本实例中,选择指针在工作界面上连续移动的过程中,终端获取的用户当前选择的点和用户上一个选择的点是相邻的,因此用户当前选择的点在网格模型上的投影点,即当前选择点对应的塑形区域中心点必定落在前一个选择点对应的塑形区域中经塑形后的三角面片上。终端获取到当前用户选择的点后,会先获取前一个选择点对应的塑形区域经塑形后的三角面片,作为求交区域,然后以当用户选择的点作为起点,沿预设投影方向构建第一射线,采用第一射线与求交区域中所有三角面片进行求交,获得射线与网格模型的交点,会将射线与网格模型的交点中选择距用户选择的点最近的交点作为塑形区域的中心点。
需要说明的是,由于第一射线是无限长度的,可能会与网格模型存在多个交点,故终端可以以用户选择的点为起点,沿预设投影方向构建一条预设长度的第一线段,该预设长度刚好使得构建的第一线段与网格模型只存在一个交点,直接将构建的第一线段与网格模型的交点作为塑形区域的中心点。
本实施例通过将以当前选择点构建的第一射线与上一个选择点对应的塑形区域塑形后的三角面片进行求交,获得当前选择的点对应的塑形区域中心点,从而不需要利用射线与网格模型所有的三角面片进行求交,减少了求交过程的计算量,降低了对CPU的占用率。
进一步地,根据本申请网格模型的塑形方法的前述实施例提出本申请网格模型的塑形方法的第三实施例,在本实施例中,步骤S60之前包括:
步骤S61,遍历塑形区域的三角面片的各边、以及各边对应的对角;
步骤S62,每获取到边长大于预设阈值的边时,构建边长大于预设阈值的边的中线,将边长大于预设阈值的边所在的三角面片划分为两个新的三角面片,直至塑形区域的三角面片的各边的边长均小于等于预设阈值。
终端在获取到塑形区域后,塑形区域的某些三角面片的边长可能过长,会降低塑形质量。为了提高塑形质量,终端会遍历塑形区域的三角面片的各边、以及各边对应的对角,每获取到边长大于预设阈值的边时,就会构建获取到的边长大于预设阈值的边的中线。例如某个三角面片的顶点分别为A、B和C,其中AB边的边长大于预设阈值,会构建AB边的中线,即取AB连线的中点D,然后连接D和顶点C,通过连线CD将原三角面片ABC划分为了两个新的三角面片分别为ACD和BCD。由于某些边长大于预设阈值的边是为塑形区域的两个相邻的三角面片的共用边,例如有两个三角面片分别为ABC和ABE,共用边AB,且AB边的边长大于预设阈值,终端会分别构建AB边所在三角面片中AB边中线,此时会分别构建出两条中线,分属于两个不同的三角面片,即取AB边的中点D,连接D和顶点C,将原三角面片ABC划分为了两个新的三角面片分别为ACD和BCD,以及连接D和顶点E,将原三角面片ABE划分为了两个新的三角面片分别为AED和BED。终端会不停的遍历获取塑形区域的三角面片中边长大于预设阈值的边,并从该边的中间打断重建三角面片,直至塑形区域的三角面片的各边的边长均小于等于预设阈值。
本实施例通过将塑形区域内过长的三角面片边打断,并重新构建三角面片,以减少塑形区域内具有过长边的三角面片数量,从而提高了塑形质量。
进一步地,根据本申请网格模型的塑形方法的前述实施例提出本申请网格模型的塑形方法的第四实施例,在本实施例中,步骤S60之前还包括:
步骤S63,遍历塑形区域的三角面片的各边、以及各边对应的对角;
步骤S64,每获取到对应的两个对角之和大于180°的边时,连接所述边对应的两个顶点,并删除所述边,以生成两个新的三角面片,直至塑形区域的三角面片的各边对应的两个对角之和均小于等于180°。
在本实施例中,塑形区域内的钝角三角面片会降低塑形质量。为了减少钝角三角面片数量,提高塑形质量。终端在对塑形区域内大于预设阈值的边长进行全部打断后,终端会遍历塑形区域的三角面片的各边、以及各边对应的对角,由于在网格模型中,三角面片中每条边都是由两个不同三角面片共用的,故三角面片的每条边都对应两个对角,这两个对角分属于两个不同的三角面片,终端每获取对应的两个对角之和大于180°的边时,就会对该边所在的两个三角面片组成的四边形进行边翻转,具体过程为:例如存在一条边AB,是由于两个不同的三角面片ABC和ABD共用,当AB对应的两个对角∠ACB和∠ADB之和大于180°,会将AB边对应的顶点C和顶点D连接,然后删除AB边,从而生成新的两个三角面片ACD和BCD。终端会不停的遍历获取塑形区域的三角面片中对应的两个对角之后大于180°的边,直至塑形区域内三角面片的各边的边长均小于等于预设阈值。
需要说明的是,本方案中,终端在执行步骤S60之前,可以只执行步骤S63-S64,不执行步骤S61-步骤S62;也可以只执行步骤S61-S62,不执行步骤S63-S64,还可以先执行步骤S61-S62,再执行步骤S63-S64;又还可以先执行步骤S63-S64,再执行步骤S61-S61。本方案优选先执行步骤S61-S62,再执行步骤S63-S64。
本实施例通过将塑形区域内共用一条边的两个钝角三角面片进行边翻转,减少塑形区域内钝角三角面片数量,提高塑形区域内锐角三角面片数量,从而提高了塑形质量。
进一步地,请参照图5,图5为根据本申请网格模型的塑形方法的前述实施例提出本申请网格模型的塑形方法的第五实施例,在本实施例中,步骤S60包括:
步骤S65,获取塑形区域的三角面片的各顶点与塑形区域中心点间的距离以及各边与塑形区域中心点间的垂直距离;
步骤S66,根据预设的距离与权重值间映射关系,获得塑形区域的三角面片的各顶点对应的权重值和各边对应的权重值;
步骤S67,根据预设塑形算法以及塑形区域的三角面片的各顶点对应的权重值和各边对应的权重值,对塑形区域的三角面片进行塑形。
在本实例中,终端获得塑形区域后,会获取塑形区域内三角面片的各顶点与塑形区域中心点间的距离以及各边与塑形区域中心点间的垂直距离;然后根据预设的距离与权重值间映射关系,获得塑形区域内三角面片的各顶点对应的权重值和各边对应的权重值;将获得塑形区域内三角面片各顶点和各边分别对应的权重值作为变形约束条件,根据变形约束条件和预设塑形算法计算出三角面片各顶点对应的变形位移;根据塑形区域内三角面片各顶点变形前的位置和各顶点对应的变形位移,获得塑形区域内三角面片各顶点变形后的位置;最后根据塑形区域内三角面片各顶点变形后的位置更新网格模型,即完成一次对塑形区域的三角面片的塑形。
本实施例通过为与塑形区域中心的距离不同的顶点和边设置对应的权重,在塑形过程中结合权重和塑形算法,使得离塑形区域中心越远的面片变形量越小,离塑形区域中心越近的面片变形量越大,从而使得塑形后的区域是平滑变化的,提高了塑形质量。
进一步地,根据本申请网格模型的塑形方法的前述实施例提出本申请网格模型的塑形方法的第六实施例,在本实施例中,步骤S70中所述根据触发连续塑形结束指令时的网格模型,更新kd树的步骤包括:
步骤S71,判断触发连续塑形结束指令时的网格模型与触发连续塑形开始指令时的网格模型是否相同;
步骤S72,若否,则根据触发连续塑形结束指令时的网格模型,更新kd树。
在本实施例中,由于存在用户触发连续塑形开始指令后,此时用户还未在工作界面上进行点的选择,认为当前不需要进行塑形或者本次是误触发连续塑形开始指令,用户就触发了连续塑形结束指令;又或者用户触发连续塑形开始指令后,用户已经移动鼠标、或者手指或触控笔已经在终端的显示触控屏上进行了滑动,即用户已经在网格模型软件的工作界面上进行了点的选择,但是终端将已获取到用户选择的各点沿预设投影方向进行投影,其投影点都没有落在网格模型上,说明目前用户还没有在网格模型的表面上选择到塑形区域中心点,终端还不会对网格模型进行塑形,只有塑形区域中心点落在网格模型的表面上,终端才会对网格模型进行塑形,也就是说终端还未对网格模型进行塑形,用户就通过点击取消操作或输入取消操作对应的快捷键指令触发了连续塑形结束指令。这两种情况,都是终端还未对网格模型进行塑形,用户就触发了连续塑形结束指令,故在终端接收到用户触发的连续塑形结束指令后,以及根据触发连续塑形结束指令时的网格模型更新kd树之前,终端会先判断触发连续塑形结束指令时的网格模型与触发连续塑形开始指令时的网格模型是否相同,若相同,则不更新kd树,若不相同,则根据触发连续塑形结束指令时的网格模型更新kd树。
本实施例通过更新kd树前,先确定触发连续塑形开始指令至触发连续塑形结束指令这个过程中,终端是否对网格模型做过塑形,只有做过塑形情况下,才需要更新kd树,从而避免对kd树进行不必要的更新。
本发明还提出一种计算机可读存储介质,其上存储有计算机程序。所述计算机可读存储介质可以是图1的终端中的存储器02,也可以是如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘中的至少一种,所述计算机可读存储介质包括若干信息用以使得终端执行本发明各个实施例所述的方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种网格模型的塑形方法,其特征在于,包括步骤:
响应用户触发的连续塑形开始指令,进入连续塑形模式;
实时获取用户选择的点;
每获取到一个用户选择的点时,判断获取用户选择的点时的当前网格模型是否与触发连续塑形开始指令时的网格模型相同;
若是,则根据用户选择的点、预设半径、预设投影方向和触发连续塑形开始指令时的kd树,获得当前网格模型上的塑形区域和塑形区域的中心点;
若否,则根据用户选择的点、预设半径和预设投影方向,获得当前网格模型上的塑形区域和塑形区域的中心点;
根据预设塑形算法和塑形区域的中心点,对塑形区域的三角面片进行塑形;
响应用户触发的连续塑形结束指令,退出连续塑形模式,并根据触发连续塑形结束指令时的网格模型,更新kd树;
其中,所述根据用户选择的点、预设半径和预设投影方向,获得当前网格模型上的塑形区域和塑形区域的中心点的步骤包括:
以用户选择的点为起点,沿预设投影方向构建第一射线;
采用第一射线与当前网格模型的三角面片进行求交,获得第一射线与当前网格模型的交点中距用户选择的点最近的交点,作为塑形区域的中心点;
以用户选择的点为圆心,构建垂直预设投影方向且半径为预设半径的第一圆;
将所述第一圆沿预设投影方向投影在当前网格模型上,获得与所述第一圆对应的第一投影区域;
将处于第一投影区域内的三角面片作为塑形区域;
所述根据用户选择的点、预设半径、预设投影方向和触发连续塑形开始指令时的kd树,获得当前网格模型上的塑形区域和塑形区域的中心点的步骤包括:
以用户选择的点为起点,沿预设投影方向构建第二射线;
根据第二射线和触发连续塑形开始指令时的kd树,获得第二射线与当前网格模型的交点中距用户选择的点最近的交点,作为塑形区域的中心点;
以用户选择的点为圆心,构建垂直预设投影方向且半径为预设半径的第二圆;
根据第二圆和触发连续塑形开始指令时的kd树,获得当前网格模型上与所述第二圆对应的第二投影区域;
将处于第二投影区域内的三角面片作为塑形区域。
2.根据权利要求1所述的网格模型的塑形方法,其特征在于,所述以用户选择的点为起点,沿预设投影方向构建第一射线的步骤之前还包括:
获取前一个选择点对应的塑形区域经塑形后的三角面片,作为求交区域;
所述采用第一射线与当前网格模型的三角面片进行求交,获得第一射线与当前网格模型的交点中距用户选择的点最近的交点,作为塑形区域的中心点的步骤包括:
采用第一射线与求交区域中所有三角面片进行求交,获得第一射线与网格模型的交点中距用户选择的点最近的交点,作为塑形区域的中心点。
3.根据权利要求1~2中任一项所述的网格模型的塑形方法,其特征在于,所述根据预设塑形算法和塑形区域的中心点,对塑形区域的三角面片进行塑形的步骤之前包括:
遍历塑形区域的三角面片的各边、以及各边对应的对角;
每获取到边长大于预设阈值的边时,构建边长大于预设阈值的边的中线,将边长大于预设阈值的边所在的三角面片划分为两个新的三角面片,直至塑形区域的三角面片的各边的边长均小于等于预设阈值。
4.根据权利要求3所述的网格模型的塑形方法,其特征在于,所述根据预设塑形算法和塑形区域的中心点,对塑形区域的三角面片进行塑形的步骤之前还包括:
遍历塑形区域的三角面片的各边、以及各边对应的对角;
每获取到对应的两个对角之和大于180°的边时,连接所述边对应的两个顶点,并删除所述边,以生成两个新的三角面片,直至塑形区域的三角面片的各边对应的两个对角之和均小于等于180°。
5.根据权利要求4所述的网格模型的塑形方法,其特征在于,所述根据预设塑形算法和塑形区域的中心点,对塑形区域的三角面片进行塑形的步骤包括:
获取塑形区域的三角面片的各顶点与塑形区域中心点间的距离以及各边与塑形区域中心点间的垂直距离;
根据预设的距离与权重值间映射关系,获得塑形区域的三角面片的各顶点对应的权重值和各边对应的权重值;
根据预设塑形算法以及塑形区域的三角面片的各顶点对应的权重值和各边对应的权重值,对塑形区域的三角面片进行塑形。
6.根据权利要求5所述的网格模型的塑形方法,其特征在于,所述根据触发连续塑形结束指令时的网格模型,更新kd树的步骤包括:
判断触发连续塑形结束指令时的网格模型与触发连续塑形开始指令时的网格模型是否相同;
若否,则根据触发连续塑形结束指令时的网格模型,更新kd树。
7.一种终端,其特征在于,所述终端包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至6中任一项所述的网格模型的塑形方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的网格模型的塑形方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010302997.1A CN111523159B (zh) | 2020-04-16 | 2020-04-16 | 网格模型的塑形方法、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010302997.1A CN111523159B (zh) | 2020-04-16 | 2020-04-16 | 网格模型的塑形方法、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111523159A CN111523159A (zh) | 2020-08-11 |
CN111523159B true CN111523159B (zh) | 2023-04-28 |
Family
ID=71903069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010302997.1A Active CN111523159B (zh) | 2020-04-16 | 2020-04-16 | 网格模型的塑形方法、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111523159B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111921202B (zh) * | 2020-09-16 | 2021-01-08 | 成都完美天智游科技有限公司 | 虚拟场景的数据处理方法、装置、设备及可读存储介质 |
CN112402973B (zh) * | 2020-11-18 | 2022-11-04 | 芯勍(上海)智能化科技股份有限公司 | 模型细节判断方法、终端设备及计算机可读存储介质 |
CN112489216B (zh) * | 2020-11-27 | 2023-07-28 | 北京百度网讯科技有限公司 | 面部重建模型的评测方法、装置、设备及可读存储介质 |
CN114998513B (zh) * | 2022-05-12 | 2024-01-30 | 中国人民解放军国防科技大学 | 基于kd树的带循环边界的地球模拟系统网格重映射方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001014493A (ja) * | 1999-06-30 | 2001-01-19 | Toshiba Corp | 点位置決定装置、点位置決定方法および点位置決定プログラムを格納したコンピュータ読取り可能な記録媒体 |
CN105243687A (zh) * | 2015-10-23 | 2016-01-13 | 佛山市南海区广工大数控装备协同创新研究院 | 一种义齿模型三角网格优化方法 |
CN105741355A (zh) * | 2016-02-01 | 2016-07-06 | 华侨大学 | 一种三角网格模型的块分割方法 |
CN108171793A (zh) * | 2018-01-19 | 2018-06-15 | 北京建筑大学 | 一种探查层叠区域三角网格的方法 |
JP2018097519A (ja) * | 2016-12-12 | 2018-06-21 | エーティーラボ株式会社 | メッシュ作成装置、メッシュ作成方法およびメッシュ作成プログラム |
CN108898673A (zh) * | 2018-06-13 | 2018-11-27 | 东莞时谛智能科技有限公司 | 一种重构脚部三角网格模型处理方法及系统 |
CN108961408A (zh) * | 2018-06-12 | 2018-12-07 | 山东大学 | 基于三角网格模型的数字拓片制作方法、系统及存储介质 |
CN109448125A (zh) * | 2018-09-26 | 2019-03-08 | 深圳市华讯方舟太赫兹科技有限公司 | 一种三角网格模型的处理方法、处理终端及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI443603B (zh) * | 2009-11-23 | 2014-07-01 | Inst Information Industry | 二維向量圖形三角化系統及其方法 |
US9715754B2 (en) * | 2010-08-05 | 2017-07-25 | Koninklijke Philips N.V. | In-plane and interactive surface mesh adaptation |
-
2020
- 2020-04-16 CN CN202010302997.1A patent/CN111523159B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001014493A (ja) * | 1999-06-30 | 2001-01-19 | Toshiba Corp | 点位置決定装置、点位置決定方法および点位置決定プログラムを格納したコンピュータ読取り可能な記録媒体 |
CN105243687A (zh) * | 2015-10-23 | 2016-01-13 | 佛山市南海区广工大数控装备协同创新研究院 | 一种义齿模型三角网格优化方法 |
CN105741355A (zh) * | 2016-02-01 | 2016-07-06 | 华侨大学 | 一种三角网格模型的块分割方法 |
JP2018097519A (ja) * | 2016-12-12 | 2018-06-21 | エーティーラボ株式会社 | メッシュ作成装置、メッシュ作成方法およびメッシュ作成プログラム |
CN108171793A (zh) * | 2018-01-19 | 2018-06-15 | 北京建筑大学 | 一种探查层叠区域三角网格的方法 |
CN108961408A (zh) * | 2018-06-12 | 2018-12-07 | 山东大学 | 基于三角网格模型的数字拓片制作方法、系统及存储介质 |
CN108898673A (zh) * | 2018-06-13 | 2018-11-27 | 东莞时谛智能科技有限公司 | 一种重构脚部三角网格模型处理方法及系统 |
CN109448125A (zh) * | 2018-09-26 | 2019-03-08 | 深圳市华讯方舟太赫兹科技有限公司 | 一种三角网格模型的处理方法、处理终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111523159A (zh) | 2020-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111523159B (zh) | 网格模型的塑形方法、终端及存储介质 | |
CN104077446B (zh) | 从数字化三维模型中提取二维电气施工图的方法及系统 | |
CN110704087A (zh) | 页面生成方法、装置、计算机设备和存储介质 | |
CN110363854B (zh) | 曲面模板分割方法、装置、计算机设备和存储介质 | |
KR20230163921A (ko) | 목표 대상의 상호작용적 재구성을 위한 제어 방법, 장치, 기기 및 저장 매체 | |
CN104899929A (zh) | 一种基于拉普拉斯坐标的网格细分方法 | |
CN112287427B (zh) | 建筑墙体位置确定方法、装置、计算机设备和存储介质 | |
CN111714235B (zh) | 就位方向算法、终端及存储介质 | |
CN111124242B (zh) | 功能按键展示方法、装置、电子设备和存储介质 | |
CN117224944A (zh) | 虚拟对象的碰撞体的生成方法、装置和电子装置 | |
CN115249303A (zh) | 基于图纸分割的布点绘制方法、装置、设备及存储介质 | |
CN115661406A (zh) | 牙齿模型修复方法、装置、设备及存储介质 | |
CN115888085A (zh) | 游戏信息的处理方法、装置和存储介质 | |
CN112200860B (zh) | 对象位置关系确定方法、装置、存储介质及电子装置 | |
CN110310353B (zh) | 一种bim模型数据的优化方法及系统 | |
CN111784805B (zh) | 一种虚拟角色交互反馈方法和装置 | |
CN111449781B (zh) | 排溢孔的生成方法、终端及存储介质 | |
CN114428984A (zh) | 模型中墙体处理方法、装置、计算机设备和存储介质 | |
CN114283230A (zh) | 植被模型渲染方法、装置、可读存储介质和电子装置 | |
CN110838159B (zh) | 动画制作中具有材质信息的对象共享装置及方法 | |
CN113436330A (zh) | 面积对象的生成方法、装置、电子设备及可读存储介质 | |
CN102598000A (zh) | 用于建模环境中实心物体的拓扑冲突的校正 | |
CN111898654A (zh) | 三维对象特征获取方法、装置、计算机设备和存储介质 | |
CN113470144B (zh) | 一种页面元素的圆角绘制方法、装置、设备和可读介质 | |
CN117708980A (zh) | 一种生成凹凸台的方法、装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |