CN112017294B - 基于可见性判断的三维cad网格模型简化方法和系统 - Google Patents

基于可见性判断的三维cad网格模型简化方法和系统 Download PDF

Info

Publication number
CN112017294B
CN112017294B CN202010847874.6A CN202010847874A CN112017294B CN 112017294 B CN112017294 B CN 112017294B CN 202010847874 A CN202010847874 A CN 202010847874A CN 112017294 B CN112017294 B CN 112017294B
Authority
CN
China
Prior art keywords
edge
triangle
point
mesh
vertex
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
Application number
CN202010847874.6A
Other languages
English (en)
Other versions
CN112017294A (zh
Inventor
黄正东
刘云华
潘隽永
刘坤
董天林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Tianyu Software Co ltd
Original Assignee
Wuhan Tianyu Software Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Tianyu Software Co ltd filed Critical Wuhan Tianyu Software Co ltd
Priority to CN202010847874.6A priority Critical patent/CN112017294B/zh
Publication of CN112017294A publication Critical patent/CN112017294A/zh
Application granted granted Critical
Publication of CN112017294B publication Critical patent/CN112017294B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • G06T17/205Re-meshing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明公开了一种基于可见性判断的三维CAD网格模型简化方法,包括:获取三维CAD网格模型中多个零件构成的装配结构树、该装配结构树中每个零件对应的变换矩阵、每个零件对应的三角形网格,以及与每个三角形网格对应的一个点表、一个边表、一个面表、以及一个边‑面邻接表,所有零件对应的三角形网格构成三角形网格集合;利用装配结构树中每个零件对应的变换矩阵将该零件对应的点表中所有点的坐标变换为全局坐标,并确定三维CAD网格模型的包围盒,根据包围盒的每一面上每条边的中点将该面均匀划分为4个视角分区,并对每个视角分区中4个顶点的基本视角方向进行双线性插值计算,以得到该视角分区内部的视角方向。

Description

基于可见性判断的三维CAD网格模型简化方法和系统
技术领域
本发明属于计算机图形学和计算机辅助设计技术领域,更具体地,涉及一种基于可见性判断的三维CAD网格模型简化方法和系统。
背景技术
目前,三维CAD网格模型已经广泛应用在航空、航天、船舶、机械、装备等工业制造领域。然而,随着需要展示的这些机械装备产品的复杂程度越来越高,三维CAD网格模型的文件存储规模(即三角形网格的数量)也越来越庞大,这给三维CAD网格模型的传输、绘制和使用带来了诸多困难,进而影响到三维CAD网格模型的广泛应用。
网格模型简化或轻量化是解决上述问题的重要方法之一,其目标是在保持原模型形状特征和近似精度的条件下,用尽量少的三角形表达原模型。目前网格模型简化一般采用删除法、重划分法和折叠法。其中,删除法是删去密集处的点或三角形,然后在附近局部区域重新连接成更稀疏的网格;重划分法是在原网格表面上重新采点,连接成更少的三角形逼近原始网格模型;折叠法包括边折叠和三角形折叠,其中应用较为成功的是基于误差控制的递进式边收缩折叠法。该方法利用二次误差度量(Quadric Error Metric,简称QEM)预估网格中不同边的折叠操作所产生的误差,通过排序选择具有最小误差的折叠操作,该操作依次渐进地进行,过程简单、稳定可靠、通用性强。
然而,上述三种方法均存在一些不可忽略的缺陷:删除法和重划分法都较难对精度进行控制,容易散失原始网格上的细节特征,导致简化效果并不理想;对于折叠法而言,由于该方法是基于全局误差排序进行简化操作,因此会错误地将那些细小(但重要)的局部特征先简化,而留下QEM误差较大、但特征性不明显的地方不简化,因此使得简化效果在特征保持方面存在缺陷。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于可见性判断的三维CAD网格模型简化方法和系统,其目的在于,在保证三维CAD网格模型的形状特征和几何尺寸不变的前提下,减少该三维CAD网格模型中三角形网格的数量,从而解决现有三维CAD网格模型由于三角形网格数量过多,导致难以实现三维CAD网格模型的传输、绘制和使用,并进而影响三维CAD网格模型应用的技术问题,以及现有删除法和重划分法由于容易散失原始网格上的细节特征,导致简化效果并不理想的技术问题,以及现有折叠法由于错误地将细小但重要的局部特征先简化,而留下QEM误差较大、但特征性不明显的地方不简化,因此导致简化效果在特征保持方面存在缺陷的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于可见性判断的三维CAD网格模型简化方法,包括以下步骤:
(1)获取三维CAD网格模型中多个零件构成的装配结构树、该装配结构树中每个零件对应的变换矩阵、每个零件对应的三角形网格,以及与每个三角形网格对应的一个点表、一个边表、一个面表、以及一个边-面邻接表,所有零件对应的三角形网格构成三角形网格集合;
(2)利用步骤(1)获取的装配结构树中每个零件对应的变换矩阵将该零件对应的点表中所有点的坐标变换为全局坐标,并获取所有全局坐标中的最大值xmax,ymax和zmax、以及最小值xmin、ymin和zmin,根据该最大值和最小值确定三维CAD网格模型的包围盒,在该包围盒的6个面中心处选择6个与面法向相反的视角方向VF,在包围盒的12个边中点选择12个视角方向VE,其方向是由该边中点与对边中点的连线确定,在包围盒的8个顶点选择8个视角方向VV,其方向是由该顶点与对角顶点的连线确定;
(3)根据包围盒的每一面上每条边的中点将该面均匀划分为4个视角分区,并对每个视角分区中4个顶点的基本视角方向进行双线性插值计算,以得到该视角分区内部的视角方向;
(4)在步骤(2)得到的26个视角方向上分别使用Z-Buffer方法提取三角形网格集合中多个可见三角形;
(5)基于步骤(3)得到的每个视角分区内部的视角方向以及步骤(4)提取的多个可见三角形获取三角形网格集合中对应该视觉分区的多个可见三角形;
(6)根据步骤(4)得到的多个可见三角形和步骤(5)得到的多个可见三角形,获得三角形网格集合中的每个三角形在不同视角方向上的可见性标识,并根据该可见性标识获取三角形网格集合中的全部外部可见三角形网格;
(7)根据步骤(1)获得的边-面邻接表将三角形网格中每个三角形的每条边划分为光滑边和折边,并根据划分的光滑边和折边将三角形网格中每个三角形的顶点划分为区域顶点、区域边点、区域内边顶点、以及区域面点;
(8)根据步骤(7)得到的三角形网格中每个三角形的顶点类型对步骤(6)得到的三角形网格集合中的全部外部可见三角形网格进行边折叠简化处理,以得到简化后的三角形网格集合。
优选地,点表用于表示该三角形网格中每个三角形的顶点的三维坐标,边表用于表示该三角形网格中每个三角形的边所包含的两个顶点在点表中的序号,面表用于表示该三角形网格中每个三角形的三个边在边表中的序号,边-面邻接表用于表示该三角形网格中每个三角形中的每个边所邻接的三角形在面表中的序号
优选地,在Z-Buffer方法中,光栅像素尺寸d的选取条件为:满足 的最大d,其中,h表示三角形的高,b表示三角形底边上的两个顶点分别到高的垂足的距离中较长的一个。
优选地,步骤(5)具体包括以下子步骤:
(5-1)对于步骤(3)得到的每个视角分区D而言,获取其内部的视角方向上可见三角形的并集合M(D),并判断该并集合M(D)中是否存在内部孔洞,如果存在则转入步骤(5-2),否则过程结束;
(5-2)获取视角分区D中已经使用Z-Buffer方法的视角方向V所检测到的轮廓线所包含的内部孔洞边E,选取内部孔洞边E中的一个点p1,并获取与点p1位于V视角光栅中同一扫描线上的另一轮廓点p2;
(5-3)连接点p1和p2,以得到向量W=p2-p1,并判断是否有VTW<0成立,如果是则设置W=-W,然后转入步骤(5-4),否则直接转入步骤(5-4);
(5-4)分别计算点p1和p2的外法向在V视角光栅所在平面上的投影n1和n2,将向量绕点p1和p2的中点m=0.5(p1+p2)旋转一角度Δθ,从而得到入口方向估计Ventrance
(5-5)判断入口方向估计Ventrance是否是视角分区D内部的视角方向,如果是则进入步骤(5-6),否则调整Δθ或α值,使入口方向估计Ventrance成为视角分区D内部的视角方向,然后进入步骤(3-6);
(5-6)使用入口方向估计Ventrance作为视角方向,在该视角方向上使用Z-Buffer方法提取三角形网格集合中的多个可见三角形。
(5-7)重复上述步骤(5-1)至(5-6),直至不能探测到新的可见三角形为止,从而得到多个可见三角形。
优选地,入口方向估计Ventrance计算过程为:
判断f=NscanPlane*[(p1-m)×n1+(p2-m)×n2]是小于0、大于0,还是等于0,如果小于0,则取Δθ为负值,并根据以下公式计算入口方向估计Ventrance,如果大于0,则取Δθ为正值,并根据以下公式计算入口方向估计Ventrance
Ventrance=RW
其中
若f=0,则其中NscanPlane表示扫描线平面法向,且有NscanPlane=[0 -1 0]T;α>0表示调整量,其取值范围是0.1到0.5之间,优选为0.3。
优选地,对于顶点v0和v1组成的边e而言,对其进行边折叠简化处理具体为:
A、当v0和v1均为区域顶点时,对边e不执行任何操作;
B、当v0和v1分别为区域顶点和区域边点时,在边e的边长大于预定阈值时,对边e执行边长阈值操作,在边e的边长小于或等于预定阈值时,对边e执行边折叠操作。
C、当v0和v1分别为区域顶点和内边顶点时,对边e不执行任何操作。
D、当v0和v1分别为区域顶点和区域面点时,对边e执行移动区域面点操作。
E、当v0和v1均为区域边点时,在边e的边长大于预设阈值时,对边e执行边长阈值操作,在边e的边长小于或等于预定阈值时,对边e执行边折叠操作。
F、当v0和v1分别为区域边点和内边顶点时,在边e的边长大于预设阈值时,对边e执行边长阈值操作,在边e的边长小于或等于预定阈值时,对边e执行边折叠操作。
G、当v0和v1分别为区域边点和区域面点时,对边e执行移动区域面点操作。
H、当v0和v1均为内边顶点时,对边e不做任何操作。
I、当v0和v1分别为内边顶点和区域面点时,对边e执行移动区域面点操作。
J、当v0和v1均为区域面点时,对边e执行边折叠操作。
优选地,步骤(8)具体包括以下子步骤:
(8-1)对三角形网格集合中的每个三角形f,计算其平面方程系数af、bf、cf和df,其中平面方程如下:
afx+bfy+cfz+df=0
其中,
(8-2)根据边表获取三角形网格集合中每个外部可见三角形网格的每条边e所邻接的所有三角形构成的集合Nb(e),并根据该集合Nb(e)和步骤(8-1)得到的平面方程系数获取该边e的QEM误差估计E(e):
其中
p=[x y z 1]T
Q表示误差估计测度矩阵,且有:
(8-3)根据步骤(7)得到的三角形网格中每个三角形的顶点类型对该三角形的每条边e进行边折叠简化处理,获取边e的误差较小端点p0,并根据误差较小端点p0计算边e上的操作误差
(8-4)从步骤(8-3)得到的所有边上的操作误差中选择操作误差最小值对应的边econtraction,并对该边econtraction执行边折叠操作;
(8-5)根据步骤(8-4)的边折叠操作结果更新步骤(8-1)的计算平面方程、以及误差估计测度矩阵Q;
(8-6)重复上述步骤(8-1)至(8-5),直至三角形网格集合中三角形的当前总数与三角形网格集合中三角形的初始总数之间的比值小于阈值s为止。
优选地,当不对当前边e进行任何处理时,将当前边e上的操作误差设置为Error(e)=+∞。
当对当前边e执行边折叠操作时,由求解线性方程组,以计算误差最小位置p=p0,若/>无解或解不唯一,则改为在边e上求最小误差点p=p0,若在边e上无解或解不唯一,则直接选择p0为e的误差较小端点。
若对当前边e执行边长阈值操作,则在边e上求最小误差点p=p0,若在边e上无解或解不唯一,则选择p0为e的误差较小端点。
若对当前边e执行移动区域面点操作,则直接选取非区域面点的边上的端点作为误差较小端点p0
优选地,步骤(8-4)具体是将边econtraction的两端点移动到它对应的误差较小端点p0,并删去该两个端点所组成的边、以及该边所在的三角形。
按照本发明的另一方面,提供了一种基于可见性判断的三维CAD网格模型简化系统,包括:
第一模块,用于获取三维CAD网格模型中多个零件构成的装配结构树、该装配结构树中每个零件对应的变换矩阵、每个零件对应的三角形网格,以及与每个三角形网格对应的一个点表、一个边表、一个面表、以及一个边-面邻接表,所有零件对应的三角形网格构成三角形网格集合;
第二模块,用于利用第一模块获取的装配结构树中每个零件对应的变换矩阵将该零件对应的点表中所有点的坐标变换为全局坐标,并获取所有全局坐标中的最大值xmax,ymax和zmax、以及最小值xmin、ymin和zmin,根据该最大值和最小值确定三维CAD网格模型的包围盒,在该包围盒的6个面中心处选择6个与面法向相反的视角方向VF,在包围盒的12个边中点选择12个视角方向VE,其方向是由该边中点与对边中点的连线确定,在包围盒的8个顶点选择8个视角方向VV,其方向是由该顶点与对角顶点的连线确定;
第三模块,用于根据包围盒的每一面上每条边的中点将该面均匀划分为4个视角分区,并对每个视角分区中4个顶点的基本视角方向进行双线性插值计算,以得到该视角分区内部的视角方向;
第四模块,用于在第二模块得到的26个视角方向上分别使用Z-Buffer方法提取三角形网格集合中多个可见三角形;
第五模块,用于基于第三模块得到的每个视角分区内部的视角方向以及第四模块提取的多个可见三角形获取三角形网格集合中对应该视觉分区的多个可见三角形;
第六模块,用于根据第四模块得到的多个可见三角形和第五模块得到的多个可见三角形,获得三角形网格集合中的每个三角形在不同视角方向上的可见性标识,并根据该可见性标识获取三角形网格集合中的全部外部可见三角形网格;
第七模块,用于根据第一模块获得的边-面邻接表将三角形网格中每个三角形的每条边划分为光滑边和折边,并根据划分的光滑边和折边将三角形网格中每个三角形的顶点划分为区域顶点、区域边点、区域内边顶点、以及区域面点;
第八模块,用于根据第七模块得到的三角形网格中每个三角形的顶点类型对步骤(6)得到的三角形网格集合中的全部外部可见三角形网格进行边折叠简化处理,以得到简化后的三角形网格集合。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)由于本发明提出基于Z-Buffer方法的预先剔除不可见的内部网格,因此能够较大幅度地减少三维CAD网格模型中三角形的数量,并能够容易地实现三维CAD网格模型的传输、绘制和使用,并进而扩展三维CAD网格模型的应用性:
(2)本发明通过采用步骤(8),其基于边的分类规则确定当前边是否需要进行递进式边折叠网格简化操作,并在网格简化过程中保持了原网格的尖锐特征,进而实现了特征保持的目的,因此能够解决现有删除法、重划分法、以及折叠法在网格的特征保持方面存在缺陷、进而导致简化效果降低的技术问题,此外,本发明的方法无需对特征区域进行分割预处理,从而大大简化了计算量。
(3)本发明在步骤(4)中通过适当地选择扫描线光栅化所用的光栅像素尺寸,减少了Z-Buffer预处理过程中的计算量;
(4)本发明通过步骤(5),基于入口轮廓线位置导引进行入口方向估计,对潜在的入口方向进行局部的Z-Buffer处理,从而获取三角形网格集合中对应该视觉分区的多个可见三角形,因此能够解决Z-Buffer计算所用的视角方向个数有限、可能导致整体可见性误判问题。
附图说明
图1是本发明基于可见性判断的三维CAD网格模型简化方法的流程图。
图2是本发明包围盒表面的基本视角方向以及相关的视角分区。其中,箭头方向包括面法向视角方向、对边视角方向、以及对顶点方向,DTi、DFi、DSi分别是顶面、前面和侧面上的视角分区。
图3示出不同数量视角方向所能探测到的当前视角区的可见面片和不可见面片,其中图3(a)示出用两个视角方向探测到当前视角区的全面可见面片,图3(b)示出用三个视角方向探测到当前视角区的全面可见面片,图3(c)示出用5个视角方向探测到当前视角区的全面可见面片,虚线代表对当前视角区不可见面片;
图4示出基于轮廓点位置的入口视角方向确定方法,其中图4(a)示出以轮廓点连线方向(W)为基准,旋转一小角度得到新的视角方向Ventrance,图4(b)示出短虚线视角方向探测到两个可见短虚线面片。以新的轮廓点连线方向W为基准,旋转一小角度得到另一新视角方向Ventrance,图4(c)示出长虚线视角方向探测到一个可见长虚线面片,以新的轮廓点连线方向(点画线W)为基准,旋转一小角度得到另一新视角方向Ventrance,粗实线是当前可见片面,小圆圈是当前视角方向上的轮廓点位置;
图5是本发明步骤(8)中的边折叠收缩处理过程的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
相对于其它三角形网格模型,三维机械CAD网格模型的特点包括:(1)有较多的尖锐特征,如零件上的尖锐边和顶点;(2)有大量的不可见内部网格,如箱体内部零件显示时是不需要绘制的。而传统上流行的基于QEM的边折叠方法对这两个问题较少考虑。实际上,从网格规模轻量化的角度看,由于机械CAD模型的网格密度在生成时已有一定程度的控制,删除内部网格比表面网格密度稀疏化更能大幅减少总的面片数量。其次,机械零件的几何特征极为丰富,特征在机械功能实现上取着关键作用,所以特征保持是一个必需解决的问题。
如图1所示,本发明提供了一种基于可见性判断的三维CAD网格模型简化方法,包括以下步骤:
(1)获取三维CAD网格模型中多个零件构成的装配结构树、该装配结构树中每个零件对应的变换矩阵、每个零件对应的三角形网格(Mesh),以及与每个三角形网格对应的一个点表、一个边表、一个面表、以及一个边-面邻接表,所有零件对应的三角形网格构成三角形网格集合,其中点表用于表示该三角形网格中每个三角形的顶点的三维坐标,边表用于表示该三角形网格中每个三角形的边所包含的两个顶点在点表中的序号,面表用于表示该三角形网格中每个三角形的三个边在边表中的序号,边-面邻接表用于表示该三角形网格中每个三角形中的每个边所邻接的三角形在面表中的序号;
面表中的顶点索引按照右手法则定义顶点排列顺序。
(2)利用步骤(1)获取的装配结构树中每个零件对应的变换矩阵将该零件对应的点表中所有点的坐标变换为全局坐标,并获取所有全局坐标中的最大值xmax,ymax和zmax、以及最小值xmin、ymin和zmin,根据该最大值和最小值确定三维CAD网格模型的包围盒,在该包围盒的6个面中心处选择6个与面法向相反的视角方向VF,在包围盒的12个边中点选择12个视角方向VE,其方向是由该边中点与对边中点的连线确定(其中对边指的是在包围盒中,与当前边不处于同一个水平面或者竖直面的对向边),在包围盒的8个顶点选择8个视角方向VV,其方向是由该顶点与对角顶点的连线确定(其中对角顶点指的是在包围盒中,与当前顶点不处于同一个水平面或者竖直面的对角顶点);
如图2所示,首先在该包围盒的6个面中心处选择6个与面法向相反的视角方向VF。然后,在包围盒的12个边中点选择12个视角方向VE,其方向是由对边中点连线确定。最后,在包围盒的8个顶点选择8个视角方向VV,其方向是由对角顶点连线确定。这些方向是成对、互为反方向出现的。它们一起构成基本视角方向。
(3)根据包围盒的每一面上每条边的中点将该面均匀划分为4个视角分区,并对每个视角分区中4个顶点的基本视角方向进行双线性插值计算,以得到该视角分区内部的视角方向;
如图2所示,每面等分成4个子区、共24个视角分区。例如,在顶面上建立DT1、DT2、DT3、DT4四个视角分区,每个视角分区的4个顶点处的视角方向为基本视角方向;一个面方向、一个顶点方向、两个边方向。视角分区内部的视角方向由这4个方向双线性插值得到:
V(u,v)=(1-u)(1-v)VF+(1-u)vVE,1+u(1-v)VE,2+uvVV(u,v)∈[0,1]×[0,1]
(4)在步骤(2)得到的26个视角方向上分别使用Z-Buffer方法提取三角形网格集合中多个可见三角形;
在本步骤的Z-Buffer方法中,光栅像素尺寸d的选取条件为:满足 的最大d,其中,h表示三角形的高,b表示三角形底边上的顶点到高的垂足的距离(取两个顶点分别到垂足的距离中较长的一个)。
(5)基于步骤(3)得到的每个视角分区内部的视角方向以及步骤(4)提取的多个可见三角形获取三角形网格集合中对应该视觉分区的多个可见三角形;
在对所有基本视角方向进行了可见面片和轮廓线提取之后,收集全部可见面片构成已经探测到外表面网格集合。当该网格整体上不封闭时,就有可能存在未被探测到的外部可见面片。如图3所示,对于给定视角分区,图3(a)中两个基本视角方向就可以探测出从该区任意视角方向可见的全部三角形;对于图3(b)所示情况,需要3个视角方向;而图3(c)用了5个视角方向探测当前视角分区的可见面片。因此,除了基本视角方向之外,本发明提出增加内部入口方向作为探测视角,找出遗漏的可见面片。
本步骤具体包括以下子步骤:
(5-1)对于步骤(3)得到的每个视角分区D而言,获取其内部的视角方向(该视角方向最初就是该视角分区4个顶点对应的4个基本视角方向,后续是增加了入口方向估计Ventrance)上可见三角形的并集合M(D),并判断该并集合M(D)中是否存在内部孔洞,如果存在则转入步骤(5-2),否则过程结束;
(5-2)获取视角分区D中已经使用Z-Buffer方法的视角方向V所检测到的轮廓线所包含的内部孔洞边E,选取内部孔洞边E中的一个点p1,并获取与点p1位于V视角光栅中同一扫描线上的另一轮廓点p2;
(5-3)连接点p1和p2,以得到向量W=p2-p1,并判断是否有VTW<0成立,如果是则设置W=-W,然后转入步骤(5-4),否则直接转入步骤(5-4);
如图4所示,W即为轮廓基准方向。
(5-4)分别计算点p1和p2的外法向在V视角光栅所在平面上的投影n1和n2,将向量绕点p1和p2的中点m=0.5(p1+p2)旋转一角度Δθ,从而得到入口方向估计Ventrance,其中Δθ的取值范围是5度到15度之间,优选为10度。
计算f=NscanPlane*[(p1-m)×n1+(p2-m)×n2],若f<0,取Δθ为负值;若f>0,取正值;若f=0,取这里NscanPlane表示扫描线平面法向;在-z为深度方向、-y是扫描线从上向下移动方向的条件下,NscanPlane=[0 -1 0]T;α>0表示调整量,其取值范围是0.1到0.5之间,优选为0.3。
(5-5)判断入口方向估计Ventrance是否是视角分区D内部的视角方向,如果是则进入步骤(5-6),否则调整Δθ或α值,使入口方向估计Ventrance成为视角分区D内部的视角方向,然后进入步骤(3-6);
(5-6)使用入口方向估计Ventrance作为视角方向,在该视角方向上使用Z-Buffer方法提取三角形网格集合中的多个可见三角形。
(5-7)重复上述步骤(5-1)至(5-6),直至不能探测到新的可见三角形为止,从而得到多个可见三角形。
上述步骤的优点在于:在进行入口可见性探测时,只在有限的局部视窗内进行Z-Buffer探测,减小计算量。
(6)根据步骤(4)得到的多个可见三角形和步骤(5)得到的多个可见三角形,获得三角形网格集合中的每个三角形在不同视角方向上的可见性标识,并根据该可见性标识获取三角形网格集合中的全部外部可见三角形网格;
(7)根据步骤(1)获得的边-面邻接表将三角形网格中每个三角形的每条边划分为光滑边和折边,并根据划分的光滑边和折边将三角形网格中每个三角形的顶点划分为区域顶点、区域边点、区域内边顶点、以及区域面点;
具体而言,如果边-面邻接表中,某条边邻接的两个三角形之间的法向夹角大于给定阈值,则该条边为折边,否则,该条边为光滑边,如果某条边仅仅邻接一个三角形,则该边也是折边。在本实施方式中,阈值的取值范围是10度到20度,优选为15度。
具体而言,对于某个三角形的顶点而言,如果其所在的折边的数量度大于等于3,则该点为区域顶点,若其折边的数量为2,则该点为区域边点,若其折边的数量等于1,则该点为区域内边顶点,若其折边的数量为0,则该点为区域面点。
(8)根据步骤(7)得到的三角形网格中每个三角形的顶点类型对步骤(6)得到的三角形网格集合中的全部外部可见三角形网格进行边折叠简化处理,以得到简化后的三角形网格集合。
对于顶点v0和v1组成的边e而言,对其进行边折叠简化处理具体为:
A、当v0和v1均为区域顶点时,对边e不执行任何操作;
B、当v0和v1分别为区域顶点和区域边点时,在边e的边长大于预定阈值时,对边e执行边长阈值操作,在边e的边长小于或等于预定阈值时,对边e执行边折叠操作。
具体而言,预定阈值的取值范围是包围盒中最长对角线长度的0.001到0.005,优选为0.002。
C、当v0和v1分别为区域顶点和内边顶点时,对边e不执行任何操作。
D、当v0和v1分别为区域顶点和区域面点时,对边e执行移动区域面点操作。
E、当v0和v1均为区域边点时,在边e的边长大于预设阈值时,对边e执行边长阈值操作,在边e的边长小于或等于预定阈值时,对边e执行边折叠操作。
具体而言,预定阈值的取值范围是包围盒中最长对角线长度的0.001到0.005,优选为0.002。
F、当v0和v1分别为区域边点和内边顶点时,在边e的边长大于预设阈值时,对边e执行边长阈值操作,在边e的边长小于或等于预定阈值时,对边e执行边折叠操作。
具体而言,预定阈值的取值范围是包围盒中最长对角线长度的0.001到0.005,优选为0.002。
G、当v0和v1分别为区域边点和区域面点时,对边e执行移动区域面点操作。
H、当v0和v1均为内边顶点时,对边e不做任何操作。
I、当v0和v1分别为内边顶点和区域面点时,对边e执行移动区域面点操作。
J、当v0和v1均为区域面点时,对边e执行边折叠操作。
本步骤的优点在于,基于一种边的分类规则,确定当前边是否需要进行递进式边折叠网格简化操作,其效果是网格简化过程中保持了原网格的尖锐特征;此外,本步骤也提出了一种简洁的基于顶点度属性的边分类规则。
步骤(8)具体包括以下子步骤:
(8-1)对三角形网格集合中的每个三角形f,计算其平面方程系数af、bf、cf和df,其中平面方程如下:
afx+bfy+cfz+df=0
其中,
(8-2)根据边表获取三角形网格集合中每个外部可见三角形网格的每条边e所邻接的所有三角形构成的集合Nb(e),并根据该集合Nb(e)和步骤(8-1)得到的平面方程系数获取该边e的二次误差度量(Quadric Error Metrics,简称QEM)误差估计E(e):
这里
p=[x y z 1]T
其中Q表示误差估计测度矩阵。
(8-3)根据步骤(7)得到的三角形网格中每个三角形的顶点类型对该三角形的每条边e进行边折叠简化处理,获取边e的误差较小端点p0,并根据误差较小端点p0计算边e上的操作误差
具体而言,针对不同的顶点类型,所执行的具体边折叠简化处理过程已经在以上段落中叙述,在此不再赘述。
当不对当前边e进行任何处理时,将当前边e上的操作误差设置为Error(e)=+∞。
当对当前边e执行边折叠操作时,由求解线性方程组,以计算误差最小位置p=p0,若/>无解或解不唯一,则改为在边e上求最小误差点p=p0,若在边e上无解或解不唯一,则直接选择p0为e的误差较小端点。
若对当前边e执行边长阈值操作,则在边e上求最小误差点p=p0,若在边e上无解或解不唯一,则选择p0为e的误差较小端点。
若对当前边e执行移动区域面点操作,则直接选取非区域面点的边上的端点作为误差较小端点p0
(8-4)从步骤(8-3)得到的所有边上的操作误差中选择操作误差最小值对应的边econtraction,并对该边econtraction执行边折叠操作;
具体而言,如图5所示,本步骤是将边econtraction的两端点移动到它对应的误差较小端点p0,并删去该两个端点所组成的边、以及该边所在的三角形。
(8-5)根据步骤(8-4)的边折叠操作结果更新计算平面方程afx+bfy+cfz+df=0、以及误差估计测度矩阵Q;
(8-6)重复上述步骤(8-1)至(8-5),直至三角形网格集合中三角形的当前总数与三角形网格集合中三角形的初始总数之间的比值小于阈值s为止;
具体而言,阈值s是由用户事先设置,一般在0.01到0.02之间,优选为0.015。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于可见性判断的三维CAD网格模型简化方法,其特征在于,包括以下步骤:
(1)获取三维CAD网格模型中多个零件构成的装配结构树、该装配结构树中每个零件对应的变换矩阵、每个零件对应的三角形网格,以及与每个三角形网格对应的一个点表、一个边表、一个面表、以及一个边-面邻接表,所有零件对应的三角形网格构成三角形网格集合;
(2)利用步骤(1)获取的装配结构树中每个零件对应的变换矩阵将该零件对应的点表中所有点的坐标变换为全局坐标,并获取所有全局坐标中的最大值xmax,ymax和zmax、以及最小值xmin、ymin和zmin,根据该最大值和最小值确定三维CAD网格模型的包围盒,在该包围盒的6个面中心处选择6个与面法向相反的视角方向VF,在包围盒的12个边中点选择12个视角方向VE,其方向是由该边中点与对边中点的连线确定,在包围盒的8个顶点选择8个视角方向VV,其方向是由该顶点与对角顶点的连线确定;
(3)根据包围盒的每一面上每条边的中点将该面均匀划分为4个视角分区,并对每个视角分区中4个顶点的基本视角方向进行双线性插值计算,以得到该视角分区内部的视角方向;
(4)在步骤(2)得到的26个视角方向上分别使用Z-Buffer方法提取三角形网格集合中多个可见三角形;
(5)基于步骤(3)得到的每个视角分区内部的视角方向以及步骤(4)提取的多个可见三角形获取三角形网格集合中对应该视觉分区的多个可见三角形;
(6)根据步骤(4)得到的多个可见三角形和步骤(5)得到的多个可见三角形,获得三角形网格集合中的每个三角形在不同视角方向上的可见性标识,并根据该可见性标识获取三角形网格集合中的全部外部可见三角形网格;
(7)根据步骤(1)获得的边-面邻接表将三角形网格中每个三角形的每条边划分为光滑边和折边,并根据划分的光滑边和折边将三角形网格中每个三角形的顶点划分为区域顶点、区域边点、区域内边顶点、以及区域面点;
(8)根据步骤(7)得到的三角形网格中每个三角形的顶点类型对步骤(6)得到的三角形网格集合中的全部外部可见三角形网格进行边折叠简化处理,以得到简化后的三角形网格集合。
2.根据权利要求1所述的基于可见性判断的三维CAD网格模型简化方法,其特征在于,点表用于表示该三角形网格中每个三角形的顶点的三维坐标,边表用于表示该三角形网格中每个三角形的边所包含的两个顶点在点表中的序号,面表用于表示该三角形网格中每个三角形的三个边在边表中的序号,边-面邻接表用于表示该三角形网格中每个三角形中的每个边所邻接的三角形在面表中的序号。
3.根据权利要求1所述的基于可见性判断的三维CAD网格模型简化方法,其特征在于,在Z-Buffer方法中,光栅像素尺寸d的选取条件为:满足的最大d,其中,h表示三角形的高,b表示三角形底边上的两个顶点分别到高的垂足的距离中较长的一个。
4.根据权利要求1所述的基于可见性判断的三维CAD网格模型简化方法,其特征在于,步骤(5)具体包括以下子步骤:
(5-1)对于步骤(3)得到的每个视角分区D而言,获取其内部的视角方向上可见三角形的并集合M(D),并判断该并集合M(D)中是否存在内部孔洞,如果存在则转入步骤(5-2),否则过程结束;
(5-2)获取视角分区D中已经使用Z-Buffer方法的视角方向V所检测到的轮廓线所包含的内部孔洞边E,选取内部孔洞边E中的一个点p1,并获取与点p1位于V视角光栅中同一扫描线上的另一轮廓点p2;
(5-3)连接点p1和p2,以得到向量W=p2-p1,并判断是否有VTW<0成立,如果是则设置W=-W,然后转入步骤(5-4),否则直接转入步骤(5-4);
(5-4)分别计算点p1和p2的外法向在V视角光栅所在平面上的投影n1和n2,将向量绕点p1和p2的中点m=0.5(p1+p2)旋转一角度Δθ,从而得到入口方向估计Ventrance
(5-5)判断入口方向估计Ventrance是否是视角分区D内部的视角方向,如果是则进入步骤(5-6),否则调整Δθ或α值,使入口方向估计Ventrance成为视角分区D内部的视角方向,然后进入步骤(3-6);
(5-6)使用入口方向估计Ventrance作为视角方向,在该视角方向上使用Z-Buffer方法提取三角形网格集合中的多个可见三角形;
(5-7)重复上述步骤(5-1)至(5-6),直至不能探测到新的可见三角形为止,从而得到多个可见三角形。
5.根据权利要求1所述的基于可见性判断的三维CAD网格模型简化方法,其特征在于,入口方向估计Ventrance计算过程为:
判断f=NscanPlane*[(p1-m)×n1+(p2-m)×n2]是小于0、大于0,还是等于0,如果小于0,则取Δθ为负值,并根据以下公式计算入口方向估计Ventrance,如果大于0,则取Δθ为正值,并根据以下公式计算入口方向估计Ventrance
Ventrance=RW
若f=0,则其中NscanPlane表示扫描线平面法向,且有NscanPlane=[0 -1 0]T;α>0表示调整量,其取值范围是0.1到0.5之间,优选为0.3。
6.根据权利要求1所述的基于可见性判断的三维CAD网格模型简化方法,其特征在于,对于顶点v0和v1组成的边e而言,对其进行边折叠简化处理具体为:
A、当v0和v1均为区域顶点时,对边e不执行任何操作;
B、当v0和v1分别为区域顶点和区域边点时,在边e的边长大于预定阈值时,对边e执行边长阈值操作,在边e的边长小于或等于预定阈值时,对边e执行边折叠操作;
C、当v0和v1分别为区域顶点和内边顶点时,对边e不执行任何操作;
D、当v0和v1分别为区域顶点和区域面点时,对边e执行移动区域面点操作;
E、当v0和v1均为区域边点时,在边e的边长大于预设阈值时,对边e执行边长阈值操作,在边e的边长小于或等于预定阈值时,对边e执行边折叠操作;
F、当v0和v1分别为区域边点和内边顶点时,在边e的边长大于预设阈值时,对边e执行边长阈值操作,在边e的边长小于或等于预定阈值时,对边e执行边折叠操作;
G、当v0和v1分别为区域边点和区域面点时,对边e执行移动区域面点操作;
H、当v0和v1均为内边顶点时,对边e不做任何操作;
I、当v0和v1分别为内边顶点和区域面点时,对边e执行移动区域面点操作;
J、当v0和v1均为区域面点时,对边e执行边折叠操作。
7.根据权利要求1所述的基于可见性判断的三维CAD网格模型简化方法,其特征在于,步骤(8)具体包括以下子步骤:
(8-1)对三角形网格集合中的每个三角形f,计算其平面方程系数af、bf、cf和df,其中平面方程如下:
afx+bfy+cfz+df=0
其中,
(8-2)根据边表获取三角形网格集合中每个外部可见三角形网格的每条边e所邻接的所有三角形构成的集合Nb(e),并根据该集合Nb(e)和步骤(8-1)得到的平面方程系数获取该边e的QEM误差估计E(e):
其中
p=[x y z 1]T
Q表示误差估计测度矩阵,且有:
(8-3)根据步骤(7)得到的三角形网格中每个三角形的顶点类型对该三角形的每条边e进行边折叠简化处理,获取边e的误差较小端点p0,并根据误差较小端点p0计算边e上的操作误差
(8-4)从步骤(8-3)得到的所有边上的操作误差中选择操作误差最小值对应的边econtraction,并对该边econtraction执行边折叠操作;
(8-5)根据步骤(8-4)的边折叠操作结果更新步骤(8-1)的计算平面方程、以及误差估计测度矩阵Q;
(8-6)重复上述步骤(8-1)至(8-5),直至三角形网格集合中三角形的当前总数与三角形网格集合中三角形的初始总数之间的比值小于阈值s为止。
8.根据权利要求7所述的基于可见性判断的三维CAD网格模型简化方法,其特征在于,
当不对当前边e进行任何处理时,将当前边e上的操作误差设置为Error(e)=+∞;
当对当前边e执行边折叠操作时,由求解线性方程组,以计算误差最小位置p=p0,若/>无解或解不唯一,则改为在边e上求最小误差点p=p0,若在边e上无解或解不唯一,则直接选择p0为e的误差较小端点;
若对当前边e执行边长阈值操作,则在边e上求最小误差点p=p0,若在边e上无解或解不唯一,则选择p0为e的误差较小端点;
若对当前边e执行移动区域面点操作,则直接选取非区域面点的边上的端点作为误差较小端点p0
9.根据权利要求7所述的基于可见性判断的三维CAD网格模型简化方法,其特征在于,步骤(8-4)具体是将边econtraction的两端点移动到它对应的误差较小端点p0,并删去该两个端点所组成的边、以及该边所在的三角形。
10.一种基于可见性判断的三维CAD网格模型简化系统,其特征在于,包括:
第一模块,用于获取三维CAD网格模型中多个零件构成的装配结构树、该装配结构树中每个零件对应的变换矩阵、每个零件对应的三角形网格,以及与每个三角形网格对应的一个点表、一个边表、一个面表、以及一个边-面邻接表,所有零件对应的三角形网格构成三角形网格集合;
第二模块,用于利用第一模块获取的装配结构树中每个零件对应的变换矩阵将该零件对应的点表中所有点的坐标变换为全局坐标,并获取所有全局坐标中的最大值xmax,ymax和zmax、以及最小值xmin、ymin和zmin,根据该最大值和最小值确定三维CAD网格模型的包围盒,在该包围盒的6个面中心处选择6个与面法向相反的视角方向VF,在包围盒的12个边中点选择12个视角方向VE,其方向是由该边中点与对边中点的连线确定,在包围盒的8个顶点选择8个视角方向VV,其方向是由该顶点与对角顶点的连线确定;
第三模块,用于根据包围盒的每一面上每条边的中点将该面均匀划分为4个视角分区,并对每个视角分区中4个顶点的基本视角方向进行双线性插值计算,以得到该视角分区内部的视角方向;
第四模块,用于在第二模块得到的26个视角方向上分别使用Z-Buffer方法提取三角形网格集合中多个可见三角形;
第五模块,用于基于第三模块得到的每个视角分区内部的视角方向以及第四模块提取的多个可见三角形获取三角形网格集合中对应该视觉分区的多个可见三角形;
第六模块,用于根据第四模块得到的多个可见三角形和第五模块得到的多个可见三角形,获得三角形网格集合中的每个三角形在不同视角方向上的可见性标识,并根据该可见性标识获取三角形网格集合中的全部外部可见三角形网格;
第七模块,用于根据第一模块获得的边-面邻接表将三角形网格中每个三角形的每条边划分为光滑边和折边,并根据划分的光滑边和折边将三角形网格中每个三角形的顶点划分为区域顶点、区域边点、区域内边顶点、以及区域面点;
第八模块,用于根据第七模块得到的三角形网格中每个三角形的顶点类型对步骤(6)得到的三角形网格集合中的全部外部可见三角形网格进行边折叠简化处理,以得到简化后的三角形网格集合。
CN202010847874.6A 2020-08-21 2020-08-21 基于可见性判断的三维cad网格模型简化方法和系统 Active CN112017294B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010847874.6A CN112017294B (zh) 2020-08-21 2020-08-21 基于可见性判断的三维cad网格模型简化方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010847874.6A CN112017294B (zh) 2020-08-21 2020-08-21 基于可见性判断的三维cad网格模型简化方法和系统

Publications (2)

Publication Number Publication Date
CN112017294A CN112017294A (zh) 2020-12-01
CN112017294B true CN112017294B (zh) 2023-10-27

Family

ID=73505386

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010847874.6A Active CN112017294B (zh) 2020-08-21 2020-08-21 基于可见性判断的三维cad网格模型简化方法和系统

Country Status (1)

Country Link
CN (1) CN112017294B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114660994B (zh) * 2022-05-25 2022-08-23 中科航迈数控软件(深圳)有限公司 一种数控机床加工工艺决策优化方法、系统及相关设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6362820B1 (en) * 1999-06-24 2002-03-26 Microsoft Corporation Quadric metric for simplifying meshes with appearance attributes
CN109887030A (zh) * 2019-01-23 2019-06-14 浙江大学 基于cad稀疏模板的无纹理金属零件图像位姿检测方法
CN110223397A (zh) * 2019-05-30 2019-09-10 南京维狸家智能科技有限公司 一种保持细节特征及纹理的网格模型简化方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7940262B2 (en) * 2006-06-15 2011-05-10 Right Hemisphere Limited Unification and part hiding in three dimensional geometric data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6362820B1 (en) * 1999-06-24 2002-03-26 Microsoft Corporation Quadric metric for simplifying meshes with appearance attributes
CN109887030A (zh) * 2019-01-23 2019-06-14 浙江大学 基于cad稀疏模板的无纹理金属零件图像位姿检测方法
CN110223397A (zh) * 2019-05-30 2019-09-10 南京维狸家智能科技有限公司 一种保持细节特征及纹理的网格模型简化方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
保持细节特性的局部误差渐进网格简化算法;黄佳;温佩芝;李丽芳;朱立坤;;计算机应用(第06期);全文 *
面向高可信度仿真的海量CAD模型实时绘制;薛俊杰;周军华;施国强;曲慧杨;;系统仿真学报(第12期);全文 *

Also Published As

Publication number Publication date
CN112017294A (zh) 2020-12-01

Similar Documents

Publication Publication Date Title
US20050052452A1 (en) 3D computer surface model generation
CN105139379B (zh) 基于分类分层的机载Lidar点云建筑物顶面渐进提取方法
CN106340036A (zh) 一种基于双目立体视觉的立体匹配方法
CN107256557A (zh) 一种误差可控的细分曲面图像矢量化方法
JP2013507679A (ja) 三次元物体モデルの3dプリントが可能な方法及びシステム
Pérez et al. A comparison of hole-filling methods in 3D
Branch et al. Automatic hole-filling of triangular meshes using local radial basis function
CN103632394B (zh) 一种特征保持的模型简化方法
CN116051759B (zh) 一种生成倾斜摄影lod简化模型的方法
CN112017294B (zh) 基于可见性判断的三维cad网格模型简化方法和系统
CN111581776A9 (zh) 一种基于几何重建模型的等几何分析方法
Aubry et al. A three-dimensional parametric mesher with surface boundary-layer capability
CN115393548A (zh) 一种适用于三维重建的网格纹理化简算法
Branch et al. A hole-filling algorithm for triangular meshes using local radial basis function
CN116152306B (zh) 确定砌筑质量的方法、装置、设备和介质
CN108898679A (zh) 一种零部件序号自动标注的方法
Yoo Three-dimensional morphing of similar shapes using a template mesh
Lu et al. Fast and robust generation of city-scale seamless 3D urban models
JP2006277712A (ja) 3次元モデルのフィッティング装置、方法及びプログラム
CN114638116A (zh) 一种基于三维鞋楦的数字化开板方法
CN100365665C (zh) 一种基于锐化滤波的三维模型特征线提取方法
CN113781649A (zh) 一种基于三维扫描点云的建筑物平面图生成方法
CN109887076B (zh) 根据视角变化的人脸三维模型建立方法及装置
CN113033540A (zh) 场景文字的轮廓拟合和校正方法、电子设备及存储介质
Sipos et al. Creating good quality meshes from smooth implicit surfaces

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