关于三维布尔运算的思考(2)

1.前言

        三维布尔运算是几何内核的核心算法之一,博主前述文章中提到过布尔算法有多种,可以根据几何数据表达方式分为Brep布尔运算、CSG布尔运算、网格布尔运算等,而网格布尔运算又又多种,如BSP方式、八叉树方式,详细可参考博主文章。

2.特点比较

        不同方式的布尔运算有其特点,其适应的几何数据表达方式不一样,同时带来的效果也不一样,当然也有优缺点。

2.1 Brep布尔运算

比较轻量,数据结构轻量,运算逻辑简便,结果数据简便,是一种使用范围较广的算法方案,但其也有我们不能忽略的特点:

  • 轻量,无论是数据还是算法效率;
  • 专业性强,对应处理Brep方式表达的几何数据,而实际工程中往往有很多网格化的数据或CSG方式数据,则无法处理。如OCC库不能进行网格化几何数据的布尔运算;
  • 技术难度较高,对于曲面构件(如Nurbs曲面)需要进行曲面相交等复杂计算,计算方式可以采用统一nurbs表达的或转化为nurbs数据结构进行计算,也可以枚举曲面类型进行组合算法实现,不论采用哪种方式,其技术难度较高;

2.2 CSG布尔运算

数据比较重,CSG方式表达数据结构本身就比较重,因为要存储实体产生过程的中间实体信息;但其计算方式相对简单,基本的几何实体类型数量有限,且可以对应实现,

  • 数据较重,由于计算方式的简单特点,导致复杂造型的实体布尔操作要较多的组合串联基本运算来实现,这种方式有重(数据重、计算过程逻辑组合串联重)有轻(实现基本的实体类型运算),特点明显;
  • 同Brep方式一样,专业性较强;

2.3 网格布尔运算

2.3.1 BSP方式

BSP方式逻辑简单暴力,效率较低,会产生大量的零碎三角面,且对数据规范性要求较高,适用性较差,实际工程数据来源多,很难保证完全提供符合其要求的数据,不建议采用这种方式;

2.3.2 八叉树(OctTree)方式

逻辑简便,可以针对数据情况来调整八叉树的深度,以便提高效率;这种方式适用性较强,因为不论是何种方式表达的几何数据均可以转为网格数据,进而进行网格布尔运算;

  • 逻辑简便,比较轻量;可以通过自适应八叉树深度来优化效率,同时结果数据的数据量不会庞大,注意也没有BSP方式的轻;
  • 适用性强,可以处理各种来源和表达方式的几何数据(通过处理为网格方式);
  • 由于结果数据是网格化的,难以还原原始的参数化信息,是其明显的特点,需要根据实际场景进行分析;

3. 总结

可以根据实际场景进行布尔运算方式的选择,需要考虑效果、效率、适应性、技术难度、几何数据表达方式等因素。当然也可以直接采用已有的几何内核,专注于应用开发,将应用做好做广,也是一种很好的选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值