CN111145356A - 一种基于Unity3D模型的切割方法 - Google Patents
一种基于Unity3D模型的切割方法 Download PDFInfo
- Publication number
- CN111145356A CN111145356A CN201911413127.5A CN201911413127A CN111145356A CN 111145356 A CN111145356 A CN 111145356A CN 201911413127 A CN201911413127 A CN 201911413127A CN 111145356 A CN111145356 A CN 111145356A
- Authority
- CN
- China
- Prior art keywords
- model
- information
- vertex
- cutting
- triangular
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
-
- 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
基于Unity3D模型的切割方法,包括步骤:S1、获取模型的切割面,模型包括顶点和由每三个顶点形成的三角面;S2、获取模型中与切割面相交的三角面;S3、由相交三角面中单独一侧顶点向另外两顶点发出射线,获取与切割面的交点,基于交点构建位于两侧的第一类新三角面;通过所有交点生成新顶点信息和第一类新三角面信息;S4重新排序新顶点信息,使形成剖面上封闭的多边形,并生成第二类新三角面填充剖面;S5、克隆原模型生成新模型,切割面两侧的顶点信息分别覆盖原模型和新模型生成切割面两侧的独立子模型,移动子模型实现切割分离效果。能实现灵活、自由的切割分离效果,提高切割体验,简化模型切割操作,提高切割过程性能。
Description
技术领域
本发明涉及三维模型切割领域,更具体地,涉及一种基于Unity3D模型的切割方法。
背景技术
Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎,也常用于三维模型的建立和处理。
Unity3D能实现模型的切割分离效果,但现有技术中,如果要对Unity3D模型进行切割分离处理,普遍采用模型动画实现固定的分割处理,而该类分割方式是固定的,形式较为单一,无法满足随意自由分割模型的需求,无法实现灵活而又自由的切割。同时,现有技术中切割模型后往往是生成两个子模型,并删除原模型,从而实现切割分离效果,该方式不仅过程复杂,且内存访问次数较多,性能较低。
发明内容
本发明旨在克服上述现有技术的至少一种不足,提供一种基于Unity3D模型的切割方法,实现灵活、自由的模型切割分离效果,提高模型切割体验,且能避免每切割一个物体模型就生成两个物体同时删除原先物体的复杂操作,减少内存访问次数,提高切割方法的性能。
本发明采取的技术方案是,一种基于Unity3D模型的切割方法,包括以下步骤:
S1、检测鼠标在模型上的划线操作,根据检测到的鼠标在模型上的划线操作生成虚拟切割面Plane,所述模型包括顶点和由每三个所述顶点形成的三角面,且将所述虚拟切割面Plane信息、模型信息存储于存储组件中;此处所指切割面为鼠标划线操作生成的虚拟切割面,而不是指模型被切割后产生的剖面;获取虚拟切割面有助于判断其切割方向以及在模型上的切割位置,获取模型的虚拟切割面有助于后续依据切割面信息对模型被切割产生的剖面进行填充,对剖面边缘进行补齐。
S2、从模型中提取模型的顶点数据,根据模型的顶点数据和虚拟切割面信息获取所述模型中与所述虚拟切割面Plane相交的三角面IntersectTri;因Unity模型均是由若干个三角面构成,且三角面均具有对应的三个顶点;若切割面切割到模型,则切割面必然会与模型上的部分三角面相交。在完成切割效果时,未与切割面相交的三角面则不需要改变,保持原信息和三角面;而相交区域的补齐和剖面的填充均是完成模型切割效果的重要部分,所以有必要获取被切割三角面,即相交三角面IntersectTri。而通过顶点数据以及虚拟切割面信息则能获取到与切割面相交的三角面。
S3、以所述三角面IntersectTri中的与其两个所述顶点P1、P2不在所述虚拟切割面Plane的同一侧的顶点P0为端点,创建分别朝向P1、P2的射线,检测射线与切割面Plane的相交点n1、n2,并存储射线与切割面Plane相交的两点n1、n2信息,依据交点n1、n2与顶点P1、P2、P3模拟构建分配于两侧的第一类新三角面;提取并统计所有交点、第一类新三角面,记n1、n2为剖面点,即提取并统计所有三角面对应剖面点、第一类新三角面,并存储形成生成新顶点信息和两侧第一类新三角面信息;
获取其中与切割面相交的所有三角面IntersectTri后,找到对应三角面IntersectTri中边线与切割面的交点n1、n2,基于n1、n2有助于模型被切割边缘处三角面的补齐和边缘的闭合以及模型物体剖面的填充。所以需要先遍历相交三角面,找到每个相交三角面IntersectTri中唯一跟其他两个顶点P1、P2不在切割面同一侧的三角面顶点P0,并根据唯一不同侧顶点P0,检测出当前相交三角面IntersectTri与虚拟切割面的两个交点n1、n2,记为剖面点。n1、n2则又能与P0、P1、P2模拟构建形成位于两侧的第一类新三角面;通过第一类新三角面能够补齐被切割的三角面部分区域,结合后续剖面点的连接则能实现边缘的完全补齐。
虽然虚拟切割面与三角面IntersectTri相交后会产生一条切割线,且切割线上皆为切割面与相交三角面的交点,但以该切割线上的随机交点与当前三角面IntersectTri其他顶点连接后形成的第一类新三角面具有规则繁杂、冗余、不易计算的缺陷,且不利于后续利用该类交点进行剖面填充。所以优选的以三角面的边线与切割面的交点作为第一类新三角面其中顶点,而获取该交点则能通过相交三角面中的单侧唯一顶点向另一侧两个顶点发射射线获得,获取和计算过程简单,能够优化计算机资源的利用,减少耗费时间。
具体的,基于生成新顶点信息和两侧第一类新三角面信息便于后续解析生成切割后的两侧子模型。
S4、对新顶点信息重新排序,提取排序后顶点信息模拟创建剖面上封闭的多边形,并生成位于剖面上的第二类新三角面填充剖面;对新顶点信息重新排序后,提取排序后顶点信息并模拟构建剖面上线段,基于该线段构建剖面上封闭的多边形,从而补齐模型被切割后的剖面边缘。同时,基于新顶点信息以及多边形能够生成第二类新三角面,并利用第二类三角面实现对剖面的填充,有助于切割后剖面所带来的实心观感,提高切割模型体验。
S5、根据提取到的模型顶点数据构建所述模型的克隆模型;定位至模型和克隆模型信息在存储组件中的存储区,将位于切割面Plane两侧的顶点信息分别分配至模型和克隆模型存储区进行覆盖并解析,解析后渲染为在图像界面上位于虚拟切割面两侧的两个独立子模型可视化图像,并依据虚拟切割面信息、预输入距离移动两个子模型图像实现切割分离效果。相比于创建两个子模型的同时删除原模型,能够减少内存访问次数,提高性能,缩短切割反应时间,提升体验效果。在解析并渲染生成两个子模型图像后,再根据切割面Plane的法线方向乘以分离距离参数,实现两个子模型在垂直于Plane平面方向上的移动,实现分离的效果;所述分离距离参数即预输入距离。
与现有技术相比,本发明的有益效果为:通过鼠标在模型上的划线操作来获取实时模型的实时切割面,通过获取顶点信息,以实时的切割面为参考面划分对应为两侧的顶点数据、三角面数据,并通过剖面点实现剖面边缘的补齐、剖面的填充,从而实现重建两个被切割后子模型,且寻找剖面点、利用剖面点补齐边缘和填充剖面的过程简单,能够减少计算耗时;整体过程中采用了重构模型mesh信息的方式,结合鼠标在模型上自由的划线操作,从而实现自由、灵活的模型切割分离效果,避免了固定的模型动画切割。同时,重构模型mesh信息的过程中仅需克隆一个新模型,然后通过两侧信息分别覆盖于旧模型、新模型两个对应存储区并解析后产生两个被切割后子模型,减少了内存访问,简化了模型重构操作,提高了切割分离过程性能。
附图说明
图1为本发明的示意图。
具体实施方式
本发明附图仅用于示例性说明,不能理解为对本发明的限制。为了更好说明以下实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
实施例
如图1所示,一种基于Unity3D模型的切割方法,包括以下步骤:
S1、检测鼠标在模型上的划线操作,根据检测到的鼠标在模型上的划线操作生成虚拟切割面Plane,所述模型包括顶点和由每三个所述顶点形成的三角面,且将所述虚拟切割面Plane信息、模型信息存储于存储组件中;
本实施例中通过端口检测鼠标的滑动在模型上画线操作生成虚拟切割面Plane,通过鼠标划线在Unity3D平台基础上实时生成一个透明的Plane对象,即一个平面,作为切割源;并将当前模型以及虚拟切割面Plane对象信息存储于存储组件中。通过鼠标划线操作能够实现实时的切割,且够实现灵活而又自由的切割方向。
S2、从模型中提取模型的顶点数据,根据模型的顶点数据和虚拟切割面信息获取所述模型中与所述虚拟切割面Plane相交的三角面IntersectTri;顶点数据包括能表示顶点位置、顶点法线、顶点UV、顶点索引的数据;切割面若与Unity3D中模型发生相交,因Unity3D模型均是由若干个三角面构成,则虚拟切割面必然会与模型上的部分三角面相交。在完成切割效果时,未与切割面相交的三角面则不需要改变,保持原信息和三角面;而相交区域的补齐和剖面的填充均是完成模型切割效果的重要部分,所以有必要获取被切割三角面,即相交三角面IntersectTri。而通过顶点数据以及虚拟切割面信息则能获取到与虚拟切割面相交的三角面IntersectTri。
在本步骤S2进行前中还需先检测切割面与所述模型是否相交,检测则是基于存储组件内数据以及Unity3D平台进行的,通过调用碰撞检测方法计算数据值从而检测虚拟切割面Plane与模型是否相交,即虚拟切割面是否切割到模型。
当确认切割面切割到了模型物体后进入完成切割效果的后续步骤;且在确认切割面与模型物体相交后,缓存模型物体mesh信息至存储组件中,包括顶点坐标,三角面顶点索引,顶点法线以及顶点uv;
因模型被切割往往是被分割与虚拟切割面两侧,所以需先对切割面两侧顶点信息进行分组,有助于后续通过顶点在两侧的分布获取相交三角面IntersectTri;具体的,从模型中提取模型顶点数据,并检测模型每个顶点相对于虚拟切割面的位置,依据检测结果将所有顶点分配为两组顶点;并将两组顶点的信息传输至存储组件,存储组件内存储有PositiveMesh、NegativeMesh数组数据结构,两组顶点分别存入至PositiveMesh、NegativeMesh数组中;在实际应用中,则是先遍历模型mesh中所有顶点信息,判断每个顶点在切割面的正面还是反面进行分组,并分别保存到两个TempMesh对象中。本实施例中,则是基于部署于计算机设备上的Unity3D平台调用其Plane对象的GetDistanceToPoint()方法检测顶点相对于Plane虚拟切割面位置,若GetDistanceToPoint()方法值>0,则对应顶点分配至PositiveMesh数组中,否则分配至NegativeMesh数组中,且分配的顶点信息包括该顶点位置、该顶点法线、该顶点uv以及其索引信息。
在对顶点进行分组后,遍历模型三角形索引数组,提取每个三角面以及每个三角面对应的三个顶点。当该三个顶点不在切割面的同一侧则代表对应三角面被切割面所切割,即相交三角面IntersectTri。具体的,本实施例中通过遍历模型三角形索引数组,判断PositiveMesh数组是否全包含或全不包含一个三角面的三个顶点,若全包含或全不包含则为非相交三角面,否则为相交三角面IntersectTri,即三角面的三个顶点只有部分顶点分配于PositiveMesh或NegativeMesh数组中时,该三角面即为相交三角面IntersectTri。
为了便于记录,在判断完成后,还通过一个bool类型数组SideIndexList保存被切割三角面IntersectTri三个顶点位于哪一侧的信息,即在PositiveMesh中的顶点为true,否则为false。如:一个被切割的三角面(P0,P1,P2),P0包含在PositiveMesh数组中,对应的SideIndexList[0]=true,P1不包含在PositiveMesh数组中,对应的SideIndexList[1]=false,P2不包含在PositiveMesh数组中,对应的SideIndexList[2]=false。
S3、以所述三角面IntersectTri中的与其两个顶点P1、P2不在所述虚拟切割面Plane的同一侧的顶点P0为端点,分别朝向P1、P2发出射线,检测射线与切割面Plane的相交点n1、n2,存储射线与切割面Plane相交的两点n1、n2信息,依据交点n1、n2与顶点P1、P2、P3模拟构建分配于两侧的第一类新三角面;提取并统计所有三角面IntersectTri对应n1、n2交点以及第一类新三角面,存储形成新顶点信息和两侧第一类新三角面信息;
找到对应三角面IntersectTri中边线与切割面的交点n1、n2,基于n1、n2有助于模型被切割边缘处三角面的补齐和边缘的闭合以及模型物体剖面的填充。所以需要先遍历相交三角面,找到每个相交三角面IntersectTri中唯一跟其他两个顶点P1、P2不在切割面同一侧的三角面顶点P0,并根据唯一不同侧顶点P0,检测出当前相交三角面与切割面的两个交点n1、n2,记为剖面点。n1、n2则又能与P0、P1、P2模拟构建形成位于两侧的第一类新三角面;通过第一类新三角面能够补齐被切割的三角面部分区域,结合后续剖面点的连接则能实现边缘的完全补齐。此处第一类仅为区别于后续第二类新三角面,实际第一类新三角面为模型切口即剖面边缘处的新三角面。
虽然切割面与三角面相交后会产生一条切割线,且切割线上皆为切割面与相交三角面的交点,但以该切割线上的随机交点与当前三角面其他顶点连接后形成的第一类新三角面具有规则繁杂、冗余、不易计算的缺陷,且不利于后续利用该类交点进行剖面填充。所以优选的以三角面的边线与切割面的交点形成第一类新三角面,本段以上以及以下内容交点均是指该类处于相交三角面边线上交点,即剖面点,而获取该交点则能通过相交三角面中的单侧唯一顶点向另一侧两个顶点发射射线获得,获取和计算过程简单,能够优化计算机资源的利用,减少耗费时间。
具体的,因顶点处于不同分组中,所以依据模型顶点数据以及顶点的分组信息能定位一个三角面IntersectTri中的与其包含的另两个顶点P1、P2不在同一侧的顶点P0的位置;然后则能以P0位置为发射原点设置分别朝向P1、P2的射线对象,检测射线与虚拟切割面的交点,并对交点进行存储。本实施例汇总,两条射线与两个交点相对应,分别为n1、n2,基于已知点能获取n1、n2的信息,包括n1、n2的位置信息、uv信息,并存储至存储组件中待后续解析渲染是提取调用;在获取交点n1、n2后则能利用n1、n2和顶点P0、P1、P2模拟构建位于两侧的第一类新三角面,同时依据第一类新三角面重新分配三角形索引,并依据P0、P1、P2顶点分组信息将新三角索引分别存入至PositiveMesh、NegativeMesh数组中,即存储第一类新三角面至对应侧的数组中;上述过程中仅为单个相交三角面对应交点获取过程,具体的,采用同一方法获取所有三角面IntersectTri对应交点、第一类新三角面,并存储形成新顶点信息和两侧第一类新三角面信息,便于后续生成切割后而两侧子模型。实际应用中,获取所有相交三角面与切割面的交点后,生成并缓存新的顶点信息,新的顶点信息包括所有交点的信息,以及新的三角面顶点索引信息,并缓存到之前的两个TempMesh对象中,即本实施例中的PositiveMesh数组、NegativeMeshs数组中。
具体的,本实施例中,根据S2中所得到的SideIndexList数组获取三角面中跟其他两点P1、P2不在切割面同一侧的点P0的信息。然后创建Unity射线对象ray,设置ray的发射原点为p0的位置,即ray.origin=p0位置;设置ray的方向为P0指向P1方向,即:ray.direction=(P1位置-P0位置).normalize,同时获取P0到P1的最大距离maxDists=Vector3.Distance(P1位置,P0位置);同理,设置P0点到P2的射线并获取最大距离。在完成上述过程后,通过部署于计算机设备上的Unity3D平台提取存储组件内数据并调用射线碰撞检测方法Plane.Raycast(ray,out dist)计算得到相交点距离dist,同时通过Unity3D中射线碰撞距离获取节点的ray.GetPoint(dist)方法,计算获取ray与Plane切割面的碰撞点n1和n2的位置,即当前相交三角面与切割面中三角边与切割面的两个交点。
在得到的n1和n2的位置信息后,再提取存储组件数据和调用Unity3D中的坐标差值算法获得n1、n2两点的uv信息即UV(n1)=Mathf.Lerp(UV(p0),UV(p1),dist/maxDist),同理,UV(n2)==Mathf.Lerp(UV(p0),UV(p2),dist/maxDist)。
以交点n1、n2和顶点P0、P1、P2模拟构建位于两侧的第一类新三角面,依据第一类新三角面重新分配三角形索引,如三角面(P0,n2,n1),(P1,n2,n1)以及(P2,n1,n2),并根据SideIndexList数组中对应的bool信息,把新三角索引缓存到PositiveMesh数组或NegativeMeshs数组中。如:P0对应的SideIndexList[0]==true,所以三角面(P0,n2,n1)的信息保存到PositiveMesh数组中。
S4、对新顶点信息重新排序,提取排序后顶点信息模拟创建剖面上封闭的多边形,并生成位于剖面上的第二类新三角面填充剖面;本实施例中,根据步骤S3获取得到的所有剖面点,存储至存储组件的一个向量数组数据结构中;读取和写入存储组件信息对向量数组重新排序,然后从存储组件中提取排序后顶点信息,根据索引i和i+1定义剖面每个线段edge,同时根据索引i和i+2获取相邻的两个线段,检测线段一端顶点索引与i+1索引是否相同,排除重复点,模拟创建形成一个封闭的多边形。再根据封闭多边形的相邻线段间的角度angle判断相邻线段是否共线,若angle>0,则不共线,返回相邻线段的相交顶点并保存至数组face中;若angle==0,则共线,不返回相邻线段的相交顶点,将两条线段合成一条边处理;
最后根据face顶点信息数组进行排序组合形成第二类新三角面,进行补面填充计算,如下:按照逆时针顺序,三角形索引startIndex=0,endIndex=face.count-1,第奇数个三角形顶点索引为:{startIndex,startIndex+1,endIndex},startIndex++;第偶数个三角形顶点索引为:{startIndex,endIndex-1,endIndex},endIndex--;并把补面顶点信息保存到PositiveMesh数组和NegativeMesh数组中。
S5、根据提取到的模型顶点数据构建所述模型的克隆模型;定位至模型和克隆模型信息在存储组件中的存储区,将位于切割面Plane两侧的顶点信息分别分配至模型和克隆模型存储区进行覆盖并解析,解析后渲染为在图像界面上位于虚拟切割面两侧的两个独立子模型可视化图像,并依据虚拟切割面信息移动两个子模型图像预输入距离实现切割分离效果。具体的,根据提取到的模型顶点数据构建所述模型的克隆模型,模拟构建并统计PositiveMesh、NegativeMesh数组对应形成的网格面积大小,定位至模型和克隆模型信息在存储组件中的存储区,分别将面积大的对应数组内顶点信息、面积小的对应数组内顶点信息分配至模型数据存储区、克隆模型数据存储区进行覆盖,对两个存储区覆盖后信息进行解析,解析构建为位于虚拟切割面两侧的两个独立子模型,再渲染两个独立子模型为在图像界面上的可视化图像;并依据虚拟切割面信息、预输入距离,移动两个子模型图像实现切割分离效果。本实施例中依据切割面Plane的法线方向乘以分离距离参数在垂直于Plane平面的方向上移动两个独立子模型,其中分离距离参数即为预输入距离,预输入距离可通过外接输入单元进行输入以预先设定。
克隆一个新模型,定位至旧模型和新模型存储区,然后把两个TempMesh对象的信息覆盖新旧模型对应存储区,实际应用中即覆盖MeshFilter的mesh信息,解析重新生成网格即两个子模型,再通过渲染实现子模型的可视化,且根据切割面位置和法线,移动两个子模型实现切割分离效果。本实施例中记被切割物体为a,则克隆一个被切割物体为a1,判断PositiveMesh和NegativeMesh的网格面积大小,大的部分覆盖a中的Meshfilter信息,小的部分则覆盖a1的MeshFilter信息,然后解析并刷新两者的网格信息,渲染实现模型形变效果;最后根据切割面Plane的法线方向乘以分离距离参数,实现a和a1在垂直于Plane平面方向上的移动,实现切割分离的效果。相比于采用每切割一个物体模型生成两个物体同时删除原先物体的复杂操作,能简化操作、减少内存访问次数,提高切割方法的性能。
显然,本发明的上述实施例仅仅是为清楚地说明本发明技术方案所作的举例,而并非是对本发明的具体实施方式的限定。凡在本发明权利要求书的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (10)
1.一种基于Unity3D模型的切割方法,其特征在于,包括以下步骤:
S1、检测鼠标在模型上的划线操作,根据检测到的鼠标在模型上的划线操作生成虚拟切割面Plane,所述模型包括顶点和由每三个所述顶点形成的三角面,且将所述虚拟切割面Plane信息、模型信息存储于存储组件中;
S2、从模型中提取模型的顶点数据,根据模型的顶点数据和虚拟切割面信息获取所述模型中与所述虚拟切割面Plane相交的三角面IntersectTri;
S3、以所述三角面IntersectTri中的与其两个顶点P1、P2不在所述虚拟切割面Plane的同一侧的顶点P0为端点,分别朝向P1、P2发出射线,检测射线与切割面Plane的相交点n1、n2,存储射线与切割面Plane相交的两点n1、n2信息,依据交点n1、n2与顶点P1、P2、P3模拟构建分配于两侧的第一类新三角面;提取并统计所有三角面IntersectTri对应n1、n2交点以及第一类新三角面,存储形成新顶点信息和两侧第一类新三角面信息;
S4、对新顶点信息重新排序,提取排序后顶点信息模拟创建剖面上封闭的多边形,并生成位于剖面上的第二类新三角面填充剖面;
S5、根据提取到的模型顶点数据构建所述模型的克隆模型;定位至模型和克隆模型信息在存储组件中的存储区,将位于切割面Plane两侧的顶点信息分别分配至模型和克隆模型存储区进行覆盖并解析,解析后渲染为在图像界面上位于虚拟切割面两侧的两个独立子模型可视化图像,并依据虚拟切割面信息、预输入距离,移动两个子模型图像实现切割分离效果。
2.根据权利要求1所述的一种基于Unity3D模型的切割方法,其特征在于,步骤S2具体包括:
S21、从模型中提取模型顶点数据,并检测模型每个顶点相对于虚拟切割面的位置,依据检测结果将所有顶点分配为两组顶点;
S22、将两组顶点的信息传输至存储组件,存储组件内存储有PositiveMesh、NegativeMesh数组数据结构,两组顶点分别存入至PositiveMesh、NegativeMesh数组中;
S23、遍历模型三角形索引数组,判断PositiveMesh数组是否全包含或全不包含一个三角面的三个顶点,若全包含或全不包含则为非相交三角面,否则为相交三角面IntersectTri。
3.根据权利要求2所述的一种基于Unity3D模型的切割方法,其特征在于,步骤S3具体包括:
S31、依据模型顶点数据以及顶点的分组信息定位一个三角面IntersectTri中的与其包含的另两个顶点P1、P2不在同一侧的顶点P0位置;
S32、以P0为发射原点设置分别朝向P1、P2的射线对象;
S33、检测射线与虚拟切割面Plane的相交点n1、n2并对n1、n2信息进行存储;
S34、以交点n1、n2和顶点P0、P1、P2模拟构建分配于两侧的第一类新三角面,依据第一类新三角面重新分配三角形索引,并依据P0、P1、P2顶点分组信息将新三角索引分别存入至PositiveMesh、NegativeMesh数组中。
S35、对所有三角面IntersectTri重复步骤S31~S34,提取并统计所有三角面IntersectTri对应n1、n2交点以及第一类新三角面信息,存储形成新顶点信息和两侧第一类新三角面信息。
4.根据权利要求3所述的一种基于Unity3D模型的切割方法,其特征在于,步骤S4具体包括:
S41、存储步骤S3新顶点信息至存储组件的一个向量数组数据结构中;
S42、读取和写入存储组件信息对向量数组重新排序,然后从存储组件中提取排序后顶点信息,依据索引i、i+1定义剖面每个线段,同时依据i、i+2获取相邻两个线段,检测线段一端顶点索引与i+1索引是否相同,排除重复点,模拟创建形成一个封闭的多边形;
S43、通过线段夹角判断封闭多边形中相邻线段是否共线,并合成共线线段为一条线段,返回非共线线段相交顶点信息存入数组face中;
S44、依据face顶点信息数组排序组合形成第二类新三角面,进行补面填充,并将补面顶点信息存入PositiveMesh和NegativeMesh数组中。
5.根据权利要求4所述的一种基于Unity3D模型的切割方法,其特征在于,在步骤S44补面填充过程中,按照逆时针顺序,记三角形索引startIndex=0,endIndex=face.count-1,第奇数个三角形顶点索引为:{startIndex,startIndex+1,endIndex},startIndex++;第偶数个三角形顶点索引为:{startIndex,endIndex-1,endIndex},endIndex--;并将补面顶点信息分别存入PositiveMesh、NegativeMesh数组中。
6.根据权利要求4所述的一种基于Unity3D模型的切割方法,其特征在于,根据提取到的模型顶点数据构建所述模型的克隆模型,模拟构建并统计PositiveMesh、NegativeMesh数组对应形成的网格面积大小,定位至模型和克隆模型信息在存储组件中的存储区,分别将面积大的对应数组内顶点信息、面积小的对应数组内顶点信息分配至模型数据存储区、克隆模型数据存储区进行覆盖,对两个存储区覆盖后信息进行解析,解析构建为位于虚拟切割面两侧的两个独立子模型,再渲染两个独立子模型为在图像界面上的可视化图像;并依据虚拟切割面信息移动两个子模型图像预输入距离实现切割分离效果。
7.根据权利要求1所述的一种基于Unity3D模型的切割方法,其特征在于,步骤S5中依据切割面Plane的法线方向乘以分离距离参数在垂直于Plane平面的方向上移动两个独立子模型图像,且分离距离参数通过Unity3D平台连接的输入单元预先设定。
8.根据权利要求1所述的一种基于Unity3D模型的切割方法,其特征在于,交点n1、n2信息包括n1、n2的位置信息和uv信息,所述位置信息通过调用Unity3D平台射线碰撞检测方法和射线碰撞距离获取节点方法以及存储组件中顶点信息的传输获得,所述uv信息通过引入存储组件中顶点信息至坐标差值算法获得。
9.根据权利要求1所述的一种基于Unity3D模型的切割方法,其特征在于,模型的虚拟切割面Plane通过鼠标划线操作即时生成,且基于存储组件内数据以及Unity3D平台,调用碰撞检测方法检测虚拟切割面Plane与模型是否相交。
10.根据权利要求2所述的一种基于Unity3D模型的切割方法,其特征在于,基于部署于计算机设备上的Unity3D平台调用其Plane对象的GetDistanceToPoint()方法检测顶点相对于Plane虚拟切割面位置,若GetDistanceToPoint()方法值大于0,则对应顶点分配至PositiveMesh数组中,否则分配至NegativeMesh数组中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911413127.5A CN111145356B (zh) | 2019-12-31 | 2019-12-31 | 一种基于Unity3D模型的切割方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911413127.5A CN111145356B (zh) | 2019-12-31 | 2019-12-31 | 一种基于Unity3D模型的切割方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111145356A true CN111145356A (zh) | 2020-05-12 |
CN111145356B CN111145356B (zh) | 2023-08-18 |
Family
ID=70522591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911413127.5A Active CN111145356B (zh) | 2019-12-31 | 2019-12-31 | 一种基于Unity3D模型的切割方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111145356B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111833452A (zh) * | 2020-07-21 | 2020-10-27 | 武汉大势智慧科技有限公司 | 多面体切割三角网的切割方法及系统 |
CN111833462A (zh) * | 2020-07-14 | 2020-10-27 | 深圳市瑞立视多媒体科技有限公司 | 基于虚幻引擎的切割方法、装置、设备及存储介质 |
CN112764538A (zh) * | 2021-01-13 | 2021-05-07 | 杭州师范大学 | 一种vr环境下基于手势交互的空间能力提升方法 |
CN113101666A (zh) * | 2021-05-07 | 2021-07-13 | 网易(杭州)网络有限公司 | 游戏角色模型方法、装置、计算机设备及存储介质 |
CN113724357A (zh) * | 2021-11-03 | 2021-11-30 | 深圳市华阳国际工程设计股份有限公司 | 一种图像处理方法、系统、终端及存储介质 |
TWI809838B (zh) * | 2021-04-26 | 2023-07-21 | 德商歐克斯勒股份有限公司 | 用於以與格子共形的方式分割網格結構的方法及其裝置和以該方法製作的物體 |
CN111833462B (zh) * | 2020-07-14 | 2024-05-17 | 深圳市瑞立视多媒体科技有限公司 | 基于虚幻引擎的切割方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441780A (zh) * | 2008-11-05 | 2009-05-27 | 武汉大学 | 三维网格模型的剖切方法 |
CN107085862A (zh) * | 2017-05-19 | 2017-08-22 | 东华大学 | 一种三维虚拟服装的立体剪裁方法 |
US20180204378A1 (en) * | 2017-01-13 | 2018-07-19 | Beihang University | Method for real-time cutting of digital organ based on metaball model and hybrid driving method |
CN109360260A (zh) * | 2018-10-22 | 2019-02-19 | 南京科远自动化集团股份有限公司 | 一种三角网格三维模型的切挖重构算法 |
-
2019
- 2019-12-31 CN CN201911413127.5A patent/CN111145356B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441780A (zh) * | 2008-11-05 | 2009-05-27 | 武汉大学 | 三维网格模型的剖切方法 |
US20180204378A1 (en) * | 2017-01-13 | 2018-07-19 | Beihang University | Method for real-time cutting of digital organ based on metaball model and hybrid driving method |
CN107085862A (zh) * | 2017-05-19 | 2017-08-22 | 东华大学 | 一种三维虚拟服装的立体剪裁方法 |
CN109360260A (zh) * | 2018-10-22 | 2019-02-19 | 南京科远自动化集团股份有限公司 | 一种三角网格三维模型的切挖重构算法 |
Non-Patent Citations (1)
Title |
---|
王成龙: ""BIM云平台中三维模型的任意剖切"", 《建筑科学》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111833462A (zh) * | 2020-07-14 | 2020-10-27 | 深圳市瑞立视多媒体科技有限公司 | 基于虚幻引擎的切割方法、装置、设备及存储介质 |
CN111833462B (zh) * | 2020-07-14 | 2024-05-17 | 深圳市瑞立视多媒体科技有限公司 | 基于虚幻引擎的切割方法、装置、设备及存储介质 |
CN111833452A (zh) * | 2020-07-21 | 2020-10-27 | 武汉大势智慧科技有限公司 | 多面体切割三角网的切割方法及系统 |
CN111833452B (zh) * | 2020-07-21 | 2024-01-30 | 武汉大势智慧科技有限公司 | 多面体切割三角网的切割方法及系统 |
CN112764538A (zh) * | 2021-01-13 | 2021-05-07 | 杭州师范大学 | 一种vr环境下基于手势交互的空间能力提升方法 |
TWI809838B (zh) * | 2021-04-26 | 2023-07-21 | 德商歐克斯勒股份有限公司 | 用於以與格子共形的方式分割網格結構的方法及其裝置和以該方法製作的物體 |
CN113101666A (zh) * | 2021-05-07 | 2021-07-13 | 网易(杭州)网络有限公司 | 游戏角色模型方法、装置、计算机设备及存储介质 |
CN113101666B (zh) * | 2021-05-07 | 2024-03-08 | 网易(杭州)网络有限公司 | 游戏角色模型方法、装置、计算机设备及存储介质 |
CN113724357A (zh) * | 2021-11-03 | 2021-11-30 | 深圳市华阳国际工程设计股份有限公司 | 一种图像处理方法、系统、终端及存储介质 |
CN113724357B (zh) * | 2021-11-03 | 2022-02-18 | 深圳市华阳国际工程设计股份有限公司 | 一种图像处理方法、系统、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111145356B (zh) | 2023-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111145356B (zh) | 一种基于Unity3D模型的切割方法 | |
CN111105491B (zh) | 场景渲染方法、装置、计算机可读存储介质和计算机设备 | |
CN110738721B (zh) | 基于视频几何分析的三维场景渲染加速方法及系统 | |
US8570322B2 (en) | Method, system, and computer program product for efficient ray tracing of micropolygon geometry | |
US10108750B2 (en) | Method for designing a geometrical three-dimensional modeled object | |
US7265752B2 (en) | Multi-chart geometry images | |
KR102604737B1 (ko) | 가속 구조를 생성하는 방법 및 장치 | |
US8988433B2 (en) | Systems and methods for primitive intersection in ray tracing | |
CN110309458B (zh) | 基于WebGL的BIM模型显示及渲染方法 | |
US9208610B2 (en) | Alternate scene representations for optimizing rendering of computer graphics | |
JP6721333B2 (ja) | オブジェクトのセットの視点の選択 | |
CN107464286B (zh) | 三维城市模型中的孔洞修复方法及装置、设备及可读介质 | |
KR101136737B1 (ko) | 그래픽 처리방법 및 그 장치 | |
KR20110093404A (ko) | 3차원 그래픽스 랜더링 장치 및 그 방법 | |
CN101506847A (zh) | 用于划分空间索引的方法和系统 | |
KR102242566B1 (ko) | 레이 트레이싱 처리 장치 및 방법 | |
JPH0727579B2 (ja) | グラフィクス処理装置及び方法並びにピクセル・メモリ装置 | |
US10825231B2 (en) | Methods of and apparatus for rendering frames for display using ray tracing | |
Fu et al. | Layerpaint: A multi-layer interactive 3d painting interface | |
Hu et al. | Parallel BVH construction using locally density clustering | |
JPH0636013A (ja) | 地形データの作成方法および装置 | |
Neuhauser et al. | Interactive focus+ context rendering for hexahedral mesh inspection | |
JPH08123835A (ja) | 形状設計支援装置 | |
KR100624455B1 (ko) | 3차원 그래픽스 환경에서의 라이트맵 처리 방법 및 장치 | |
JPH09305791A (ja) | 立体画像生成装置および立体画像生成方法 |
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 |