CN116168183A - 一种vr环境中3d模型的自动切割方法及系统 - Google Patents
一种vr环境中3d模型的自动切割方法及系统 Download PDFInfo
- Publication number
- CN116168183A CN116168183A CN202310171906.9A CN202310171906A CN116168183A CN 116168183 A CN116168183 A CN 116168183A CN 202310171906 A CN202310171906 A CN 202310171906A CN 116168183 A CN116168183 A CN 116168183A
- Authority
- CN
- China
- Prior art keywords
- cutting
- model
- path
- points
- size
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Abstract
本发明公开一种VR环境中3D模型的自动切割方法及系统,该方法步骤包括:在VR环境中构建平面网格并组合拼接形成指定大小的3D模型画板;绘制圆形切割大小,以作为切割运行路径中最小切割大小;按照圆形切割大小进行切割,生成多个路径点直至运动轨迹形成封闭图形;将运动轨迹转换为平面几何图形的顶点;根据转换得到的平面几何图形的顶点确定出切割剪裁区域;进行内部塑形切割时,根据生成的各路径点在3D模型画板上进行切割;进行外轮廓切割时,按照确定的切割剪裁区域在3D模型画板上进行切割,完成最终目标模型的切割。本发明具有实现方法简单、实时性以及真实性高、灵活性强,能够现动态切割模型模拟过程等优点。
Description
技术领域
本发明涉及VR环境虚拟仿真内容制作技术领域,尤其涉及一种VR环境中3D模型的自动切割方法及系统。
背景技术
VR环境中进行内容制作时,通常是以平面网格切割为基础,利用OpenGL编程规则及剪裁算法通过计算绕组数实现多边形偏移,实现模拟3D模型切割塑形的功能,进而实现仿真数控切割的功能。目前在VR环境中进行虚拟仿真内容制作时,通常是直接使用提前做好的3D模型来表达虚拟仿真的内容,但是不同场景下3D模型需求不同,为了满足不同的3D模型需求,需要构建大量的3D模型,使得耗时较长、实时性较差,且直接使用预制的模型还会存在缺乏过程的可视化性以及同步效果差等问题,无法满足当前对仿真内容的高实时性和高真实性的要求。例如在数控切割中,目前大多数是采用预制的仿真设备模型,仿真结果的输出即是利用做好的3D模型直接展示为成果模型,无法展示模型的变化过程,致使缺乏模型的变化和仿真的真实性。
现有技术中对于3D模型的切割,通常是采用简单的一分为二切割方式(如图1所示中(a)所示),或者采用基于CSG布尔运算切割方式进行曲面切割(如图1中(b)所示)。但是一分为二的切割方式功能单一,只能简单的将模型一分为二,不能进行多次切割;而基于CSG布尔运算切割的曲面切割,对于同一网格的切割同样不能多次进行,否则网格会破碎,图形也不能过于复杂,就无法实现3D模型的时时切割等。
综上,现有技术在VR环境中开发虚拟仿真应用数控切割的过程中,就无法实现3D模型的时时切割、外部轮廓的切割和内部图案的绘制,即无法展示、实现动态切割模型的模拟过程。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现方法简单、实时性以及真实性高、灵活性强的VR环境中3D模型的自动切割方法及系统,能够实现3D模型的时时切割、外部轮廓的切割和内部图案的绘制,从而实现动态切割模型模拟过程。
为解决上述技术问题,本发明提出的技术方案为:
一种VR环境中3D模型的自动切割方法,步骤包括:
在VR环境中构建平面网格并组合拼接形成指定大小的3D模型画板;
绘制圆形切割大小,以作为切割运行路径中最小切割大小;
按照所述圆形切割大小进行切割,生成多个路径点直至各路径点所构成的物体运动轨迹形成封闭图形;
将所述物体运动轨迹转换为平面几何图形的顶点;
根据转换得到的平面几何图形的顶点确定出切割剪裁区域;
进行内部塑形切割时,根据生成的各路径点在3D模型画板上进行切割;
进行外轮廓切割时,按照确定的所述切割剪裁区域在所述3D模型画板上进行切割,完成最终目标模型的切割。
进一步的,所述按照绘制的所述圆形切割大小进行切割,生成多个路径点直至各路径点所构成的运动轨迹形成封闭图形包括:
配置协程函数,在按照圆形切割大小切割过程中由所述协程函数循环在执行完每一帧的最后阶段时,存储每一帧对应的物体位置信息点作为所述路径点;
遍历存储的各路径点的位置信息,若第一个路径点和最后一个路径点重合或者误差小于所述圆形切割大小则判定完成路径点生成,形成封闭的物体运动轨迹。
进一步的,所述将所述物体运动轨迹转换为平面几何图形的顶点包括:
根据所述物体运动轨迹的所有路径点与网格边界之间的距离确定分割点,从分割点开始构建多个路径点形成分割延长线以用于将切割的图形形成封闭的几何图形;
根据物体的运动轨迹以及分割延长线上各路径点围起的几何图形范围,确定所需的平面几何图形的顶点。
进一步的,所述形成分割延长线的步骤包括:
获取所述物体运动轨迹的所有路径点中Y轴最大的路径点作为分割点;
计算出所述分割点到网格边界的最短距离;
在Y轴正方向上从所述分割点开始延长所述最短距离的长度之间,按照指定间距计算出多个路径点以得到分割延长线正方向上的路径点;
根据所述分割延长线正方向上的路径点获取反方向的路径点,得到分割延长线反方向上的路径点;
将所述分割延长线从正方向到反方向进行首尾相连组合成封闭图形。
进一步的,所述根据转换得到的平面几何图形的顶点确定出切割剪裁区域包括:根据平面几何图形的顶点检测裁切范围,调用多边形裁剪算法确定出最终的切割剪裁区域。
进一步的,所述调用多边形裁剪算法时使用正缠绕规则,即只有具有正绕组数的区域被分类为多边形内部,使用所示正缠绕规则在预处理步骤中清理重叠和/或自交多边形。
进一步的,所述步骤S02包括:定义圆的半径R以及分段数量N;使用预先定义的度数转弧度函数计算出角度;根据计算出的所述角度计算出平面顶点并进行存储,其中第i分段的角度Angle具体按照Angle=Mathf.Deg2Rad*(-90f-360f/N*i)计算得到,其中Mathf.Deg2Rad表示所述度数转弧度函数,i=0,1,......,N,所述平面顶点按照式平面顶点=new Vector2(R*Mathf.Cos(Angle),R*Mathf.Sin(Angle))计算得到,其中Mathf.Cos表示余弦函数,Mathf.Sin表示正弦函数,Vector2表示二维向量。
进一步的,所述步骤S01中构建平面网格包括:进行初始化定义,使用实例化函数通过顶点、三角面构建出多面体网格,并存储每个网格的顶点数据,将网格组合拼接形成所述3D模型画板,所述初始化定义包括定义单元网格的大小、边缘列表、单元格的顶点数据类型、初始化网格和更新网格的block类中任意多种。
一种VR环境中3D模型的自动切割系统,包括处理器以及存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序以执行如上述方法。
一种存储有计算机程序的计算机可读存储介质,所述计算机程序执行时实现如上述方法。
与现有技术相比,本发明的优点在于:本发明通过在平面的基础上绘制平面网格以拼接组合成3D模型画板,然后以圆形最小切割大小进行时时切割形成物体运动轨迹,再通过将物体运动轨迹转换为平面几何图形的顶点,进而确定出切割剪裁区域,最后按照轨迹切割进行内部塑形切割,按照切割剪裁区域进行外轮廓切割,最终完成目标模型的切割,能够在VR环境中模拟数控切割时,根据运动轨迹快速、准确的实现对模型的时时切割和切割图案绘制,从而高效实现动态切割模型的模拟过程,有效达到数控切割过程中的切割仿真效果。
附图说明
图1是传统两种切割方式的效果示意图。
图2是本实施例VR环境中3D模型的自动切割方法的实现流程示意图。
图3是本发明在具体应用实施例中实现VR环境中3D模型的自动切割的具体流程示意图。
图4是本发明在具体应用实施例中在Unity中构建3D模型画板的流程示意图。
图5是本发明在具体应用实施例中构建的3D模型画板效果示意图。
图6是本发明在具体应用实施例中生成物体运动轨迹的效果示意图。
图7是本发明在具体应用实施例中生成分割延长线的效果示意图。
图8是本发明在具体应用实施例中根据平面几何检测边界进行裁切的效果示意图。
图9是在具体应用实施例中模仿数控切割中运动轨迹切割的效果示意图。
图10是在具体应用实施例中得到的简单外轮廓切割效果示意图。
图11是在具体应用实施例中得到的复杂外轮廓切割效果示意图。
图12是在具体应用实施例中得到的内部切割效果示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图1所示,本实施例VR环境中3D模型的自动切割方法的步骤包括:
S01.在VR环境中构建平面网格并组合拼接形成指定大小的3D模型画板;
S02.绘制圆形切割大小,以作为切割运行路径中最小切割大小;
S03.按照圆形切割大小进行切割,生成多个路径点直至各路径点所构成的运动轨迹形成封闭图形;
S04.将运动轨迹转换为平面几何图形的顶点;
S05.根据转换得到的平面几何图形的顶点确定出切割剪裁区域;
S06.进行内部塑形切割时,根据生成的各路径点在3D模型画板上进行切割;
S07.进行外轮廓切割时,按照确定的切割剪裁区域在3D模型画板上进行切割,完成最终目标模型的切割。
本实施例通过在平面的基础上绘制平面网格以拼接组合成3D模型画板,然后以圆形最小切割大小进行时时切割形成物体运动轨迹,再通过将物体运动轨迹转换为平面几何图形的顶点,进而确定出切割剪裁区域,最后按照轨迹切割进行内部塑形切割,按照切割剪裁区域进行外轮廓切割,最终完成目标模型的切割,能够在VR环境中模拟数控切割时,根据运动轨迹快速、准确的实现对模型的时时切割和切割图案绘制,从而高效实现动态切割模型的模拟过程,达到数控切割过程中的切割仿真效果。
本实施例中,步骤S01中构建平面网格具体包括:进行初始化定义,使用实例化函数通过顶点、三角面构建出多面体网格,并存储每个网格的顶点数据,将网格组合拼接形成3D模型画板。上述初始化定义具体包括定义单元网格的大小、边缘列表、单元格的顶点数据类型、初始化网格和更新网格的block类等,具体可以根据实际需求选取定义。
在VR环境中构建除3D模型后,需要确定切割运行路径中最小切割大小,本实施例通过绘制圆形切割大小,以作为运行中路径最小切割大小。本实施例中,步骤S02绘制圆形切割大小的具体步骤包括:
S201.定义圆的半径R以及分段数量N;
S202.使用预先定义的度数转弧度函数计算出角度,即将度数转换为弧度;
S203.根据计算出的角度计算出平面顶点并进行存储。
在具体应用实施例中,第i分段的角度Angle具体可以按照下式(1)计算得到:
Angle= Mathf.Deg2Rad * (-90f - 360f / N* i) (1)
其中,Mathf.Deg2Rad表示度数转弧度函数,i=0,1,......,N。
平面顶点具体可以按照下式(2)计算得到:
平面顶点=new Vector2(R*Mathf.Cos(Angle)R*Mathf.Sin(Angle))(2)
其中,Mathf.Cos表示余弦函数,Mathf.Sin表示正弦函数,Vector2表示二维向量。
本实施例中,步骤S03按照绘制的圆形切割大小进行切割,生成多个路径点直至各路径点所构成的运动轨迹形成封闭图形的具体步骤包括:
S301.路径点生成:配置协程函数,在按照圆形切割大小切割过程中由协程函数循环在执行完每一帧的最后阶段后,存储每一帧对应的物体位置信息点作为路径点;
S302.结束判断:遍历存储的各路径点的位置信息,若第一个路径点和最后一个路径点重合或者误差小于圆形切割大小则判定完成路径点生成,形成封闭的物体运动轨迹。
本实施例上述步骤,通过循环存储物体位置信息得到一系列路径点,首尾路径点重合或者距离小于圆形切割大小时结束,形成物体运动轨迹,使得可以通过物体的运动轨迹时时切割物体。
本实施例中,步骤S04将物体运动轨迹转换为平面几何图形的顶点的具体步骤包括:
S401.根据物体运动轨迹的所有路径点与网格边界之间的距离确定分割点,从分割点开始构建多个路径点形成分割延长线以用于将切割的图形形成封闭的几何图形;
S402.根据物体运动轨迹以及分割延长线上各路径点围起的几何图形范围,确定所需的平面几何图形的顶点。
本实施例中,上述步骤S401形成分割延长线的步骤具体包括:
S411.获取物体运动轨迹的所有路径点中Y轴最大的路径点作为分割点;
S412.计算出分割点到网格边界的最短距离S;
S413.在Y轴正方向上从分割点开始延长最短距离的长度之间,按照指定间距计算出多个路径点以得到分割延长线正方向上的路径点;
S414.根据分割延长线正方向上的路径点获取反方向的路径点,得到分割延长线反方向上的路径点;
S415.将分割延长线从正方向到反方向进行首尾相连组合成封闭图形。
假设运动轨迹的所有路径点中Y轴最大的路径点的坐标为(X,Y),则计算出最短距离S后,最短距离S处网格边界点的坐标为(X,Y+S),则从Y轴最大的路径点到最短距离S处的网格边界点(即Y到S)即为所需的分割延长线,通过获取分割延长线正反方向上路径点,然后首尾相连即可组合形成封闭图形。
本实施例中,步骤S05根据转换得到的平面几何图形的顶点确定出切割剪裁区域具体包括:根据平面几何图形的顶点检测裁切范围,调用多边形裁剪算法确定出最终的切割剪裁区域。假设步骤S04中得到的平面几何范围的边界中y轴最低点为H1,最高点为H2,x轴最小为X1,,最大为X2,根据该边界范围调用多边形裁剪算法即可实现指定范围的切割剪裁。本实施例在OpenGL的缠绕规则基础上,使用缠绕计算偏移多边形的算法,可以快速、准确的实现切割,空间复杂度仅为O(n+k),运行时间为O((n+k)logn),其中n是输入顶点的数量,k是原始偏移曲线中的自相交数,logn是对数,且可以大大提供可扩展性,对于包含多个重叠的输入和具有任意孔的自交多边形均可适用。
本实施例中网格的切割方向即为物体运动的方向,遵循多边形填充的缠绕规则:偶数奇数和非零(如GDI、GDI+、XLib、OpenGL、Cairo、AGG、Quartz、SVG、Gr32),其他规则包括正值、负值和ABS_GTR_EQ_TWO(仅在OpenGL中)等。多边形偏移具体遵循:
其中,ω是缠绕圈数,ψ是返回值,p代表多边形,Rq是来自q的任何射线,e1和e2是多边形P中的两个边,如果光线交叉多边形P中的e1和e2,它们对点q的卷绕数的贡献为+1(或-1)。
本实施例通过缠绕规则定义一个类别,如奇数、非零、正、负或“大于或等于2的绝对值”,将一个区域划分为内部或外部。如果计算出的区域圈数属于所选类别,则将其归为内部(inside)。在OpenGL中可以采用以下规则:GLU.TESS-WINDING-ODD,缠绕规则GLU TESSWinding ODD和GLU TES Winding NONTZERO通常用于多边形填充程序(仅填充分类为内部的区域)。缠绕规则可用于实现CSG布尔运算,如轮廓的并集、差分和相交。本实施例具体使用缠绕规则GLU TESS winding ABS GEQ TWO获得两个轮廓的交点,以及使用正缠绕规则:只有具有正绕组数的区域被分类为多边形内部,首先使用正缠绕规则在预处理步骤中清理任何重叠和/或自交多边形。
本实施例步骤S06、步骤S07可以通过定义枚举类型OutCut(轮廓切割)和InsideCut(内部塑形)实现,如果是内部切割,直接按照存储的路径点进行切割,如果是外轮廓切割,则将步骤S05确定的几何图形调用多变形裁剪算法完成最终切割。
以Unity为例,Unity即是通过提前设置好的模型切割仿真数控切割,无法根据实际需求满足时时切割所需目标模型的需求。将本发明上述方法应用于Unity中,通过创建平面网格组成3D模型,然后根据平面几何图形绘制切割形状和大小形成所需目标模型,即可以达到时时切割所需目标模型的需求。如图3所示,本实施例利用Bala Vatti裁剪算法扩展规则,在Unity中实现三维模型切割的详细步骤为:
S01.在VR环境中构建平面网格并组合拼接形成指定大小的3D模型画板。
如图4所示,首先创建Unity工程,然后导入后续所需的多边形剪裁算法脚本,进而实例化网格mesh画布,进入如下定义:
(1)以float数据类型定义单元网格的大小命名为blockSize,以int数据类型定义单元网格的长With和宽Height,以float数据类型定义组合模型的深度Depth,以数据类型int64定义blockSizeScaled,得出画布的宽=blockSize*With,画布的长=blockSize*Height。blockSizeScaled=(int64)(blockSize*VectorEx.float2int64);VectorEx.float2int64为全局静态float数据这里定义为100000.0f。
(2)定义边缘列表(edgesList)数据类型为List<List<Vector2>>。
(3)定义单元格的顶点(vertices)数据,数据类型为List<Vector2i>,Vector2i为“多边形剪裁算法”中的ClipperLib.IntPoint构造函数,可以将平面的两点转为int64数据。
(4)定义多边形(Polygons)数据类型为List<List<Vector2i>>。
(5)定义一个block类,所有的单元网格都挂在该脚本,用于初始化网格和更新网格。其中通过顶点的填充更新网格的方法具体为:通过接收多边形(Polygons)、长(height)、宽(with)、深度(depth)的参数构建平面网格,平面网格分为边缘多边形和内部多边形。
(6)用Unity的实例化函数,通过顶点、三角面构建出多面体网格(如图5中(a)所示),并存储每个网格的顶点数据,然后将网格拼接为立体模型,如图5中(b)所示。
S02.绘制圆形切割大小,以作为切割运行路径中最小切割大小。
定义圆的半径R,分段数量N,以及定义List<Vector2i>vertices用来存储顶点,以及定义float数据类型角度变量Angle,通过循环执行0到N,递增变量为int数据类型i,使用函数Mathf.Deg2Rad:(度数转弧度的转换常量)计算出角度Angle=Mathf.Deg2Rad*(-90f-360f/N*i);然后计算除平面顶点=new Vector2(R*Mathf.Cos(Angle),R*Mathf.Sin(Angle));最后将平面顶点转换为Vector2i数据存储在vertices中。
S03.生成路径点:按照圆形切割大小进行切割,生成多个路径点直至各个路径点所构成的物体运动轨迹形成封闭图形。
构建协程函数:在函数中通过循环,定义List<Vector3>用来存储物体位置信息。在函数yield return new WaitForEndOfFrame(表示在一帧的最后阶段执行)执行后,存储物体的位置(根据物体的基本属性Transform中的position,position是Vector3数据,Transform是所有物体通用基本属性)。
判断是否完成:遍历存储路径点的所有位置信息,当第一个路径点和最后一个路径点重合或者误差小于圆形切割大小时候则为完成。其中,List<Vector3>在存储物体的位置信息的时候忽略物体的position.z的属性。在具体应用实施例中形成的物体运动轨迹如图6中(a)所示,图6中(b)表示运动过程中以最小切割单元时时切割路径。
S04.将物体运动轨迹转换为平面几何图形的顶点。
S401.生成分割延长线:获取所有路径中Y轴的最大值作为分割线,如果有多个最大点则选取其中任意一个,计算出点到网格边界的最短距离以在物体运动轨迹的基础上使物体外部轮廓形成封闭几何图形,按照指定的间距计算出线段的路径点,再使用list的Reverse()方法获取相反方向的点。
本实施例中间距路径点计算时,具体设最短距离为Y,设每个点的间距为M,则路径点的个数为n=y/m,通过这些路径点以及相反方向的点即为封闭图形假设的路径点数据。
本实施例中分割延长线计算时,具体可以通过定义数据类型为float的变量maxY,循环遍历存储所有路径的list<vector3>列表,通过Math.max函数(返回两个整数中较大的一个),得到maxY=Math.Max(maxY,列表集合元素.y)。
在具体应用实施例中生成分割延长线如图7所示,其中(a)对应为分割延长线生成效果,(b)对应为通过分割延长线形成封闭图形,其中箭头方向轨迹方向。
S402.通过物体的运动轨迹,将轨迹从开始到结束的时间位置排序。
由于list<vector3>列表是按照路径存储的,因而不需要排序,但是延长线需要分别存储然后首位相连组合成封闭图形,最终计算出路径点围起的几何图形范围。
S05.根据转换得到的平面几何图形的顶点确定出切割剪裁区域。
检测裁切范围:
定义步骤S04中几何图形范围中的边界y轴最低点H1,最高点为H2,x轴最小为X1,最大为X2,循环遍历所有路径点得出:
X1=Math.Min(X1,路径点.x);
X2=Math.Max(maxx,路径点.x);
H1=Math.Min(minY,路径点.y);
H2=Math.Max(maxY,路径点.y);
定义数据类型vector2的最低点lowerPoint,和最高点upperPoint,可以得出:
lowerPoint=new Vector2(X1,H1);
upperPoint=new Vector2(X2,H2);
定义数据类型int的x1、x2、y1、y2变量;
x1=Mathf.Max(0,(int)(lowerPoint.x/blockSize));
x2=Mathf.Min(网格画布的宽-1,(int)(upperPoint.x/blockSize));
y1=Mathf.Max(0,(int)(lowerPoint.y/blockSize));
y2=Mathf.Min(网格画布的高-1,(int)(upperPoint.y/blockSize));
使用双循环遍历画布,最外层遍历x1到x2,增量为x1,内部遍历y1到y2,增量为y1。
定义block一维数组blocks,将blocks[x+网格画布的宽度*y]赋值给数据类型为block的变量newBlock,得出:newBlock=blocks[x+网格画布的宽度*y];进而调用多边形剪裁算法中的AddPolygons函数、AddPolygon函数和Execute函数,最后调用block中的更新网格算法即可完成切割。
S06.进行内部塑形切割时,根据生成的各路径点在3D模型画板上进行切割。进行外轮廓切割时,按照确定的所述切割剪裁区域在所述3D模型画板上进行切割,完成最终目标模型的切割。
定义枚举类型OutCut(轮廓切割)和InsideCut(内部塑形),如果是内部切割,直接按照list<vector3>列表存储点切割即可,如果是外轮廓切割,则步骤S04计算的几何图形带入步骤S05中确定的逻辑完成最终切割,然后通过E的方法更新网格,渲染出裁切后的模型。在具体应用实施例中根据平面几何检测边界进行裁切效果如图8所示。
在具体应用实施例中,按照上述方法得到的切割效果如图9~12所示。以半径的圆面在运动过程中时时切割,以模仿数控切割中运动轨迹切割,得到的效果如图9中(a)所示;还可以在切割过程中通过贝塞尔曲线运动实现切割轨迹的平滑,如图9中(b)所示,即运动轨迹平滑对于切割的平滑同样适用。轨迹点完成后对外部轮廓的塑形如图10、11所示,其中图10中(a)~(c)对应为三种外轮廓切割展示效果,图11中(a)、(b)分别对应为另外两种较为复杂的外轮廓切割效果。图12中(a)、(b)分别对应为根据轨迹点对内部图案的绘制切割两种效果。由上述切割效果可知,本发明可以有效完成对各类组合而成的所需目标模型进行时时切割并完成模型的基本塑形。
本实施例还提供VR环境中3D模型的自动切割系统,包括处理器以及存储器,存储器用于存储计算机程序,处理器用于执行计算机程序以执行如上述方法。
本实施例还提供存储有计算机程序的计算机可读存储介质,计算机程序执行时实现如上述方法。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (10)
1.一种VR环境中3D模型的自动切割方法,其特征在于,步骤包括:
在VR环境中构建平面网格并组合拼接形成指定大小的3D模型画板;
绘制圆形切割大小,以作为切割运行路径中最小切割大小;
按照所述圆形切割大小进行切割,生成多个路径点直至各路径点所构成的物体运动轨迹形成封闭图形;
将所述运动轨迹转换为平面几何图形的顶点;
根据转换得到的平面几何图形的顶点确定出切割剪裁区域;
进行内部塑形切割时,根据生成的各路径点在3D模型画板上进行切割;
进行外轮廓切割时,按照确定的所述切割剪裁区域在所述3D模型画板上进行切割,完成最终目标模型的切割。
2.根据权利要求1所述的VR环境中3D模型的自动切割方法,其特征在于,所述按照绘制的所述圆形切割大小进行切割,生成多个路径点直至各路径点所构成运动轨迹形成封闭图形包括:
配置协程函数,在按照圆形切割大小切割过程中由所述协程函数循环在执行完每一帧的最后阶段时,存储每一帧对应的物体位置信息点作为所述路径点;
遍历存储的各路径点的位置信息,若第一个路径点和最后一个路径点重合或者误差小于所述圆形切割大小则判定完成路径点生成,形成封闭的物体运动轨迹。
3.根据权利要求1所述的VR环境中3D模型的自动切割方法,其特征在于,所述将所述物体运动轨迹转换为平面几何图形的顶点包括:
根据所述物体运动轨迹的所有路径点与网格边界之间的距离确定分割点,从分割点开始构建多个路径点形成分割延长线以用于将切割的图形形成封闭的几何图形;
根据物体的运动轨迹以及分割延长线上各路径点围起的几何图形范围,确定所需的平面几何图形的顶点。
4.根据权利要求3所述的VR环境中3D模型的自动切割方法,其特征在于,所述形成分割延长线的步骤包括:
获取所述物体运动轨迹的所有路径点中Y轴最大的路径点作为分割点;
计算出所述分割点到网格边界的最短距离;
在Y轴正方向上从所述分割点开始延长所述最短距离的长度之间,按照指定间距计算出多个路径点以得到分割延长线正方向上的路径点;
根据所述分割延长线正方向上的路径点获取反方向的路径点,得到分割延长线反方向上的路径点;
将所述分割延长线从正方向到反方向进行首尾相连组合成封闭图形。
5.根据权利要求1所述的VR环境中3D模型的自动切割方法,其特征在于,所述根据转换得到的平面几何图形的顶点确定出切割剪裁区域包括:根据平面几何图形的顶点检测裁切范围,调用多边形裁剪算法确定出最终的切割剪裁区域。
6.根据权利要求5所述的VR环境中3D模型的自动切割方法,其特征在于,所述调用多边形裁剪算法时使用正缠绕规则,即只有具有正绕组数的区域被分类为多边形内部,使用所示正缠绕规则在预处理步骤中清理重叠和/或自交多边形。
7.根据权利要求1~6中任意一项所述的VR环境中3D模型的自动切割方法,其特征在于,所述步骤S02包括:定义圆的半径R以及分段数量N;使用预先定义的度数转弧度函数计算出角度;根据计算出的所述角度计算出平面顶点并进行存储,其中第i分段的角度Angle具体按照Angle=Mathf.Deg2Rad*(-90f-360f/N*i)计算得到,其中Mathf.Deg2Rad表示所述度数转弧度函数,i=0,1,......,N,所述平面顶点按照式平面顶点=new Vector2(R*Mathf.Cos(Angle),R*Mathf.Sin(Angle))计算得到,其中Mathf.Cos表示余弦函数,Mathf.Sin表示正弦函数,Vector2表示二维向量。
8.根据权利要求1~6中任意一项所述的VR环境中3D模型的自动切割方法,其特征在于,所述步骤S01中构建平面网格包括:进行初始化定义,使用实例化函数通过顶点、三角面构建出多面体网格,并存储每个网格的顶点数据,将网格组合拼接形成所述3D模型画板,所述初始化定义包括定义单元网格的大小、边缘列表、单元格的顶点数据类型、初始化网格和更新网格的block类中任意多种。
9.一种VR环境中3D模型的自动切割系统,包括处理器以及存储器,所述存储器用于存储计算机程序,其特征在于,所述处理器用于执行所述计算机程序以执行如权利要求1~8中任意一项所述方法。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序执行时实现如权利要求1~8中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310171906.9A CN116168183A (zh) | 2023-02-27 | 2023-02-27 | 一种vr环境中3d模型的自动切割方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310171906.9A CN116168183A (zh) | 2023-02-27 | 2023-02-27 | 一种vr环境中3d模型的自动切割方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116168183A true CN116168183A (zh) | 2023-05-26 |
Family
ID=86419822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310171906.9A Pending CN116168183A (zh) | 2023-02-27 | 2023-02-27 | 一种vr环境中3d模型的自动切割方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116168183A (zh) |
-
2023
- 2023-02-27 CN CN202310171906.9A patent/CN116168183A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8175734B2 (en) | Methods and system for enabling printing three-dimensional object models | |
JP3962361B2 (ja) | 位相判断装置、分解可能形状生成装置、構造メッシュ生成装置、位相判断方法、分解可能形状生成方法、および該位相判断方法を実行させるためのコンピュータ実行可能なプログラム、分解可能形状生成方法を実行させるためのコンピュータ実行可能なプログラム並びに構造メッシュ生成システム | |
US5774124A (en) | Finite element modeling method and computer system for converting a triangular mesh surface to a quadrilateral mesh surface | |
CN110489778B (zh) | 面向激光刻蚀加工的图形分割方法、激光刻蚀控制系统 | |
CN103236079B (zh) | 一种基于三维模型体素化的内部球改进构造方法 | |
WO2011111680A1 (ja) | 表面加工データの作成方法および装置 | |
JPH0550030B2 (zh) | ||
JP2002352273A (ja) | 対話式にグラフィクスオブジェクトを編集するシステムおよび方法 | |
JPH0350679A (ja) | コンピュータモデルシステム | |
JP2002324250A (ja) | コンピュータ実現ツールを用いてグラフィクスオブジェクトを編集する方法 | |
JP2002329215A (ja) | オブジェクトの適応的サンプル距離フィールドを生成する方法 | |
JP2002334346A (ja) | オブジェクトのレンジデータをオブジェクトのモデルに変換する方法 | |
JP2002334347A (ja) | グラフィクスモデルの適応的サンプル距離フィールドを三角形モデルに変換する方法 | |
JP2002245098A (ja) | 六面体メッシュ生成方法および装置 | |
CN113593033A (zh) | 一种基于网格细分结构的三维模型特征提取方法 | |
JP2002329218A (ja) | コンピュータ実現ツールを用いてグラフィクスオブジェクトのサーフェスを編集する方法 | |
JP2002324251A (ja) | グラフィクスオブジェクトを編集する方法 | |
US20200051333A1 (en) | Techniques for generating stylized quad-meshes from tri-meshes | |
EP0361787A2 (en) | A boundary representation solid modelling system | |
Amiri et al. | Connectivity maps for subdivision surfaces | |
CN116168183A (zh) | 一种vr环境中3d模型的自动切割方法及系统 | |
Kamaev et al. | Constructing and visualizing three-dimensional sea bottom models to test AUV machine vision systems | |
JP2002324252A (ja) | グラフィクスオブジェクトをモデル化する方法 | |
JP2002352270A (ja) | モデルの適応的サンプル距離フィールドを訂正する方法 | |
KR101105244B1 (ko) | 3차원 격자구조에서의 교점을 이용한 곡면 모델링 장치 및 방법 |
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 |