CN106558104A - 一种对三维网格模型进行布尔运算的方法 - Google Patents
一种对三维网格模型进行布尔运算的方法 Download PDFInfo
- Publication number
- CN106558104A CN106558104A CN201610916018.5A CN201610916018A CN106558104A CN 106558104 A CN106558104 A CN 106558104A CN 201610916018 A CN201610916018 A CN 201610916018A CN 106558104 A CN106558104 A CN 106558104A
- Authority
- CN
- China
- Prior art keywords
- dimensional grid
- grid model
- carried out
- boolean calculation
- model
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种对三维网格模型进行布尔运算的方法,根据三维网格模型选取多个预划分面,通过所述多个预划分面将所述三维网格模型划分为多个空间子区域,然后分别对S1中分割的每个空间子区域构建BSP树,对多个空间子区域的BSP树进行布尔运算,得到模型网格。通过上述优化设计的对三维网格模型进行布尔运算的方法,通过按照三维网格模型的结构,预先将网格模型进行划分,将空间划分成多个空间子区域,然后分别对多个空间子区域进行BSP树方法的空间划分,从而避免不必要的切割,大大减少切割次数和零碎小切割面的存在,从而将算法最坏情形的运行时间控制在一定范围内,大大地提升了算法执行速度。
Description
技术领域
本发明涉及三维模型技术领域,尤其涉及一种对三维网格模型进行布尔运算的方法。
背景技术
随着3D技术的广泛应用,建立的三维模型需要进行布尔运算。现有的利用BSP树理论进行三维模型布尔操作的方法的主要原理如下:
首先得到多个需要进行布尔运算的三维网格模型以及相应的布尔运算参数。以两个三维网格模型A,B之间进行布尔运算的场景来作示例。首先得到布尔运算的操作对象亦即三维模型A,B,同时获取布尔运算类型选项参数:交(∩),并(∪),差(-)。
其中,AinB与BinA分别表示A在B内的部分以及B在A内的部分。(BinA)-1表示的是B在A内的部分取反。
接着分别对三维模型A与B构建相对应的空间划分树(BSP树)。BSP树构建原理如下:空间内任意一个封闭多面体,其所有边界面构成该三维模型的BSP表示,若该多面体是凸多面体,则可以与该多面体的边界面进行比较,得到空间内任意一个点的位置信息,是否在多面体内部还是外部。而在非凸面体的情形下,仍然可以用边界面得到该多面体的BSP表示,只是这时候,该表示为多个凸多面体的表示,多个凸多面体组合成该多面体。同样在这种情形下仍然可以用类似的方法,得到空间内任意一个点的位置信息。
BSP树的构建过程:该过程事实上即为不断选取三维模型中面平面对空间进行划分的过程,最终结果将指定三维模型划分成多个凸多面体的过程。可以看到每次选取一个平面进行划分,空间分成两部分,然后再对这两部分分别重复操作,因此该过程可视为构建一棵树的过程,即BSP树。
在完成以上构建BSP树步骤后,我们得到三维模型A,B以及相对应的BSP树。此时可以利用三维模型A的BSP树对三维模型B进行判定切割,得到内外两部分,同理,也可以利用三维模型B的BSP树对三维模型A进行判定切割,同样得到两部分。然后根据所要求的布尔运算类型的不同进行相应部分的组装,最终得到所要求得的最终布尔运算结果。
利用BSP树理论进行三维模型布尔运算的方法,可以简洁、漂亮地进行布尔运算。然而,该方法主要存在以下缺陷:1.BSP树的构建可能得到一棵极度不平衡的树,导致最终算法复杂度大大增加。2.由于算法是利用BSP树对模型进行切割,亦即利用一系列平面进行切割,因此最终得到的结果网格三角面被数次切分,最终三角面质量极差。
发明内容
为解决背景技术中存在的技术问题,本发明提出一种对三维网格模型进行布尔运算的方法。
本发明提出的一种对三维网格模型进行布尔运算的方法,包括下列步骤:
S1、根据三维网格模型选取多个预划分面,通过所述多个预划分面将所述三维网格模型划分为多个空间子区域;
S2、分别对S1中分割的每个空间子区域构建BSP树;
S3、对多个空间子区域的BSP树进行布尔运算,得到模型网格。
优选地,还包括下列步骤:
S4、对S3中得到的模型网格进行优化。
优选地,在S4中,利用重新三角剖分技术对所述模型网格进行优化。
优选地,在S1中,通过一组平行设置的第一预划分面、一组平行设置的第二预划分面、一组平行设置的第三预划分面对所述三维网格模型进行划分,其中多个第一预划分面自上而下水平设置,多个第二预划分面和多个第三预划分面竖直设置且二者垂直设置。
优选地,在S1中,将所述三维网格模型划分为m*n*p个长方体,其中,m、n、p均为正整数。
优选地,在S3中,利用BSP树进行三角面切割时,记录切割后的三角面与原三角面之间的对应关系。
优选地,在S3中,利用BSP树进行三角面切割时,自上向下切割至树的叶子结点,得到多个子模型网格,将所述多个子模型网格组装得到所需的模型网格。
优选地,在S3中,将位于所述BSP树内部的模型网格标记为正数,将位于所述BSP树外部的模型网格标记为负数。
本发明中,所提出的对三维网格模型进行布尔运算的方法,通过按照三维网格模型的结构,预先将网格模型进行划分,将空间划分成多个空间子区域,然后分别对多个空间子区域进行BSP树方法的空间划分,从而避免不必要的切割,大大减少切割次数和零碎小切割面的存在,从而将算法最坏情形的运行时间控制在一定范围内,大大地提升了算法执行速度。
附图说明
图1为本发明提出的一种对三维网格模型进行布尔运算的方法的流程图。
具体实施方式
如图1所示,图1为本发明提出的一种对三维网格模型进行布尔运算的方法的流程图。
参照图1,本发明提出的一种对三维网格模型进行布尔运算的方法,包括下列步骤:
S1、根据三维网格模型选取多个预划分面,通过所述多个预划分面将所述三维网格模型划分为多个空间子区域;
S2、分别对S1中分割的每个空间子区域构建BSP树;
S3、对多个空间子区域的BSP树进行布尔运算,得到模型网格。
在本实施例中,所提出的对三维网格模型进行布尔运算的方法,通过按照三维网格模型的结构,预先将网格模型进行划分,将空间划分成多个空间子区域,然后分别对多个空间子区域进行BSP树方法的空间划分,从而避免不必要的切割,大大减少切割次数和零碎小切割面的存在,从而将算法最坏情形的运行时间控制在一定范围内,大大地提升了算法执行速度。
下面对本实施例的对三维网格模型进行布尔运算的方法的具体工作过程进行详细说明。
对于三维网格模型的空间划分存在两个阶段,首先选择多个预划分面将三维网格模型的空间划分为多个子区域,然后对每个子区域进行BSP划分,构建每个子区域的BSP树结构,树中每个节点都保存了当前所用的划分平面。经过这两个阶段的空间划分,最终可以将算法最坏情形的运行时间控制在一定范围内,大大地提升了算法执行速度。
在S1的具体实施方式中,为了便于子区域的标号以及索引,在预划分面选取时,可以选择一组平行设置的第一预划分面、一组平行设置的第二预划分面、一组平行设置的第三预划分面对所述三维网格模型进行划分,其中多个第一预划分面自上而下水平设置,多个第二预划分面和多个第三预划分面竖直设置且二者垂直设置,从而对三维网格模型的空间进行规则化划分,将所述三维网格模型划分为m*n*p个立方体,其中,m、n、p均为正整数;此外,也可以以类似八叉树的思想,对空间进行划分,从而将空间划分成多个长方体。
通过上述网络模型的空间预划分,从而对于点的直接定位与索引带来极大的便利,从而可以直接对于划分出来的空的子空间可以直接利用扩散原理从其周边已知区域扩散得到其从属关系(内部还是外部)。这样在后面的利用空间划分树对模型进行切割时,在没有相交的部分,可以进一步省去许多计算步骤,大大提高计算效率。
在S3中,对多个空间子区域的BSP树进行布尔运算,根据布尔操作类型,对切分后的模型内外部分进行组装,得到要求的模型网格。
在S3的具体实施方式中,在利用BSP树对三维网格模型进行切割的时候,对于每一个模型中的三角面,从BSP树的根节点开始不断利用相应的平面对该三角面进行切割,划分平面与三角面切割后的部分之间可以存在位置关系。即三角面被切割后位于平面前面部分,位于平面后面部分,以及与平面共面的情形,与平面共面的情形又可以分为与平面法相相同与相反两种不同情形。对于共面的两种情形下,是判定属于内部还是外部,根据对于布尔运算的结果的处理,用户可以在做布尔运算时预先设定相应参数,来决定共面情形应该属于外部还是内部。通过这种方式,可以有效避免模型布尔运算过程中出现的共面情形下可能出现的不符合常理的结果,使得共面情形下的布尔运算结果仍旧符合用户需要。
在具体实施方式中,利用BSP树进行三角面切割时,自上向下切割至树的叶子结点,得到多个子模型网格,将所述多个子模型网格组装得到所需的模型网格,并且将位于所述BSP树内部的模型网格标记为正数,将位于所述BSP树外部的模型网格标记为负数。正负号的引入,在提供恰当的结果的同时仍然可以让用户拥有随使用场景的不同进行调节的能力,即提供更加丰富的布尔运算类型。
在其他具体实施方式中,在利用BSP树对网格模型进行切割时,由于BSP树在划分空间时,必须到叶子节点才能最终判定三角面每部分的位置信息,因此会出现大量不必要的零碎小三角形。因此在利用BSP树进行三角面的切割时,可以相应的记录切割后的三角面与原三角面之间的对应关系,从而最终结果的小三角形可以尽量组合在一起,避免不必要的切割。并且在网格模型相交部分进行重新三角剖分,最终提高生成的网格三角面质量。
在具体实施方式中,为了提高最终的模型网格的质量,所提出的方法还包括:S4、对S3中得到的模型网格进行优化,优选地,利用重新三角剖分技术对切割处的网格进行质量优化。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (8)
1.一种对三维网格模型进行布尔运算的方法,其特征在于,包括下列步骤:
S1、根据三维网格模型选取多个预划分面,通过所述多个预划分面将所述三维网格模型划分为多个空间子区域;
S2、分别对S1中分割的每个空间子区域构建BSP树;
S3、对多个空间子区域的BSP树进行布尔运算,得到模型网格。
2.根据权利要求1所述的对三维网格模型进行布尔运算的方法,其特征在于,还包括下列步骤:
S4、对S3中得到的模型网格进行优化。
3.根据权利要求2所述的对三维网格模型进行布尔运算的方法,其特征在于,在S4中,利用重新三角剖分技术对所述模型网格进行优化。
4.根据权利要求1所述的对三维网格模型进行布尔运算的方法,其特征在于,在S1中,通过一组平行设置的第一预划分面、一组平行设置的第二预划分面、一组平行设置的第三预划分面对所述三维网格模型进行划分,其中多个第一预划分面自上而下水平设置,多个第二预划分面和多个第三预划分面竖直设置且二者垂直设置。
5.根据权利要求4所述的对三维网格模型进行布尔运算的方法,其特征在于,在S1中,将所述三维网格模型划分为m*n*p个长方体,其中,m、n、p均为正整数。
6.根据权利要求1所述的对三维网格模型进行布尔运算的方法,其特征在于,在S3中,利用BSP树进行三角面切割时,记录切割后的三角面与原三角面之间的对应关系。
7.根据权利要求1所述的对三维网格模型进行布尔运算的方法,其特征在于,在S3中,利用BSP树进行三角面切割时,自上向下切割至树的叶子结点,得到多个子模型网格,将所述多个子模型网格组装得到所需的模型网格。
8.根据权利要求7所述的对三维网格模型进行布尔运算的方法,其特征在于,在S3中,将位于所述BSP树内部的模型网格标记为正数,将位于所述BSP树外部的模型网格标记为负数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610916018.5A CN106558104B (zh) | 2016-10-20 | 2016-10-20 | 一种对三维网格模型进行布尔运算的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610916018.5A CN106558104B (zh) | 2016-10-20 | 2016-10-20 | 一种对三维网格模型进行布尔运算的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106558104A true CN106558104A (zh) | 2017-04-05 |
CN106558104B CN106558104B (zh) | 2020-05-08 |
Family
ID=58443781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610916018.5A Active CN106558104B (zh) | 2016-10-20 | 2016-10-20 | 一种对三维网格模型进行布尔运算的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106558104B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110509548A (zh) * | 2019-08-07 | 2019-11-29 | 安徽卓锐三维科技有限公司 | 一种基于sls技术的可贴合面冷敷康复装置的制备方法 |
CN110507472A (zh) * | 2019-08-07 | 2019-11-29 | 安徽卓锐三维科技有限公司 | 一种3d打印可贴合面冷敷康复装置及其制备方法 |
CN113128095A (zh) * | 2021-04-27 | 2021-07-16 | 中国科学院武汉岩土力学研究所 | 一种三维网格模型的构建方法及装置 |
CN113345091A (zh) * | 2020-02-18 | 2021-09-03 | 广东博智林机器人有限公司 | 一种重叠工作面的面积统计方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0785309A (ja) * | 1993-09-10 | 1995-03-31 | Mitsubishi Electric Corp | 3次元表示装置 |
CN101702244A (zh) * | 2009-11-10 | 2010-05-05 | 南京大学 | 一种适用于绘制区域任意划分的并行绘制负载平衡方法 |
CN105022865A (zh) * | 2015-06-30 | 2015-11-04 | 西安交通大学 | 一种基于stl模型布尔运算的飞机油箱内表面模型提取方法 |
-
2016
- 2016-10-20 CN CN201610916018.5A patent/CN106558104B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0785309A (ja) * | 1993-09-10 | 1995-03-31 | Mitsubishi Electric Corp | 3次元表示装置 |
CN101702244A (zh) * | 2009-11-10 | 2010-05-05 | 南京大学 | 一种适用于绘制区域任意划分的并行绘制负载平衡方法 |
CN105022865A (zh) * | 2015-06-30 | 2015-11-04 | 西安交通大学 | 一种基于stl模型布尔运算的飞机油箱内表面模型提取方法 |
Non-Patent Citations (1)
Title |
---|
刘冬: "改进布尔方法及其在虚拟膝关节手术中的应用研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110509548A (zh) * | 2019-08-07 | 2019-11-29 | 安徽卓锐三维科技有限公司 | 一种基于sls技术的可贴合面冷敷康复装置的制备方法 |
CN110507472A (zh) * | 2019-08-07 | 2019-11-29 | 安徽卓锐三维科技有限公司 | 一种3d打印可贴合面冷敷康复装置及其制备方法 |
CN113345091A (zh) * | 2020-02-18 | 2021-09-03 | 广东博智林机器人有限公司 | 一种重叠工作面的面积统计方法及装置 |
CN113128095A (zh) * | 2021-04-27 | 2021-07-16 | 中国科学院武汉岩土力学研究所 | 一种三维网格模型的构建方法及装置 |
CN113128095B (zh) * | 2021-04-27 | 2022-04-22 | 中国科学院武汉岩土力学研究所 | 一种三维网格模型的构建方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106558104B (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3435336B1 (en) | Hybrid hierarchy for ray tracing | |
CN106558104A (zh) | 一种对三维网格模型进行布尔运算的方法 | |
WO2022121525A1 (zh) | 三维场景数据的渲染方法及装置、存储介质、电子装置 | |
CN104616349B (zh) | 基于局部曲面变化因子的散乱点云数据精简处理方法 | |
CN105787226A (zh) | 四边有限元网格模型的参数化模型重建 | |
Kuang et al. | The research of virtual reality scene modeling based on unity 3D | |
CN107993279B (zh) | 一种场景精确表达方法 | |
CN102436217A (zh) | 飞机结构件槽特征腹板加工驱动几何重构方法 | |
CN114756944A (zh) | 用于bim模型的轻量化系统、方法、计算机设备及存储介质 | |
CN113442440B (zh) | 一种基于切片处理的3d打印方法 | |
CN104392053A (zh) | 一种蒙皮滚弯零件截面曲率分析方法 | |
CN103366401B (zh) | 多层次虚拟服饰试穿的快速显示方法 | |
CN110287508A (zh) | 一种多源三维城市模型的可视化融合系统 | |
CN104183021A (zh) | 一种利用可移动空间网格精简点云数据的方法 | |
US20160210385A1 (en) | Numerical Simulation of Scrap Trimming Operations in Sheet Metal Forming | |
Guérin et al. | Efficient modeling of entangled details for natural scenes | |
US10579039B2 (en) | Setting up physical tools for scrap trimming operations in sheet metal forming based on numerical simulation results | |
CN116205100A (zh) | 一种优化电池包cae网格的方法 | |
CN108121868B (zh) | 一种用于钣金件建模的基于KDtree的空间面域生成方法及系统 | |
CN113591208B (zh) | 一种基于舰船特征提取的超大模型轻量化方法及电子设备 | |
CN109684424B (zh) | 基于离散特征线的地貌数据快速生成与优化方法 | |
CN109903384B (zh) | 一种模型设置的方法及装置、计算设备和存储介质 | |
Chang et al. | Texture tiling on 3d models using automatic polycube-maps and wang tiles | |
CN108876920B (zh) | 用于三维组件拼接的几何结构数据处理方法和装置 | |
Camata et al. | Parallel linear octree meshing with immersed 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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210108 Address after: Room 902, 9 / F, building F, Tianhe Software Park, Tianhe District, Guangzhou 510000 Patentee after: GUANGDONG 3VJIA INFORMATION TECHNOLOGY Co.,Ltd. Address before: Room 606, floor A-3, innovation industrial park, No. 800, Wangjiang West Road, high tech Zone, Hefei City, Anhui Province 230000 Patentee before: HEFEI ABACI SCIENCE & TECHNOLOGY Co.,Ltd. |
|
TR01 | Transfer of patent right |