首页/文章/ 详情

深入剖析三维几何内核(7)--一般技术

2年前浏览2900

深入剖析“三维几何内核”系列简介

深入剖析三维几何内核(1)--基础

深入剖析三维几何内核(2)--功能介绍

深入剖析三维几何内核--数据结构和算法简介

深入剖析三维几何内核(3)--基础数据结构

深入剖析三维几何内核(4)--曲面的艺术

深入剖析三维几何内核(5)--布尔运算

深入剖析三维几何内核(6)--几何修复清理

深入剖析三维几何内核(7)--几何约束求解器

深入剖析三维几何内核(8)--属性关系计算

深入剖析三维几何内核(9)--算法杂项

深入剖析三维几何内核(10)--开发投资估算

本文介绍一些几何内核经常使用的一些技术内容.

1. 树结构

树是几何和图形学中一种常见的数据结构。比如最常见的二维平面四叉树,三维空间八叉树,它的基本思想来源于二分查找,是线性二分查找在高纬空间的扩展。

以平面为例,如图有大量的图元数据,在软件中执行选择操作的时候,需要对每个图元进行计算,判断鼠标位置和图元的关系。可以预先将图元结构放入四叉树结构中,首先判断鼠标和四叉树是否相交,加速过滤,避免进行全局计算,三维空间八叉树也是同样的道理。

image.png

四叉树,八叉树除了用来加速过滤,还可以用来查找,生成有限元中的网格。在标准四叉树八叉树的基础上,又衍生出了各种树的变种结构。常见的有KD树,BVH,R树,BSP树等,基本原理也都是利用分治来加速对象过滤。

一般来讲,数据越多,加速效果越明显。在以往测试中,千万级别的三维图元数据,通过合理的八叉树结构加速,查找次数可以降低几个数量级不到千次的查找。

2. 容差控制

容差控制是几何内核的一个重要内容。容差设置决定了能处理模型的最大和最小范围,邻近的两个点在计算(比如布尔运算)中是否会作为一个点,相邻的两个面是否作为一个面,点是否在面上,进而决定了几何拓扑的构建和整个模型是否有效。特别是针对样条曲线和曲面,容差出现问题,会导致一系列难以修复的问题。通常容差在整个模型初始时会设置好固定值,但有时候会有修改的需求;在几何内核端需要做好设计,做一定的保护机制,防止修改造成的各种问题。

3. 数值精度

C 的数值精度通常float型为6位有效,double型16位有效。在几何建模中一般使用double型数据,double型能满足大多数建模精度需求,但有少数情况不满足计算精度,比如多尺度建模,超大数据模型,细度网格划分等,要引入类似GMP,BigNum等数值库对数据进行更精准的控制。

需要注意:容差控制数值精度是两个概念,避免混为一谈。

4.复杂建模

复杂建模是相对于简单的三维实体(Primitive)而言,比如放样,扫略,镂空,中面提取,Blending,offset。这一块看起来很复杂,其实在几何内核里相对来说还是比较简单的部分,主要涉及到拓扑和几何数据的重建,基础功能做的好的话,这块基本不会有什么问题。

5.面片生成

对于仿真类软件,从技术上来讲,几何网格其实是不分家的。如果几何内核能直接生成仿真所需的网格那是最好不过的。但实际上几何内核一般只会生成无参数控制的三角面片,也就是最基本的Delaunay离散方法。几何内核生成的三角面片数据和仿真所需的网格数据之间还有很大的鸿沟,这点在深入理解数值计算网格(7)--几何与网格里有详细描述。

6.数据库系统

这里的数据库系统主要是用来管理数据,主要是在几何内核使用过程中对象创建,编辑,销毁等生命周期,历史消息维护管理,不是一般的关系型数据库。利用该数据库系统可以帮助上层实现类似undo/redo,历史信息查询,数据保护等。这个也是上层看不到,但是底层比较核心的功能之一。

7.微分几何和拓扑学

微分几何现在是一门独立的学科,是运用微积分的理论研究空间的几何性质的数学分支学,最早和微积分发展紧密相关。前面讲过几何内核如果处理好了几何曲面,那其他的几何内容都没有问题。

拓扑学是研究几何图形或空间在连续改变形状后还能保持不变的一些性质的学科。它只考虑物体间的位置关系而不考虑它们的形状和大小。在拓扑学里,重要的拓扑性质包括连通性与紧致性。

几何内核常用的欧拉公式和非二维流型都来自拓扑学。

欧拉公式:凸多面体之间顶点数/面数/边数之间的关系

若G为一连通之平面图,则V F = E 2

其中V代表G中点的个数, F代表G中面的个数, 而E是G的边数.

8.业务相关

有朋友问,经常看见你提到几何内核和业务的关系,业务到底是什么东西?

做结构前处理的朋友一定非常熟悉壳单元,壳单元在有限元分析中是二维面单元,但几何数据通常为三维实体,所以需要把实体结构变成面结构,也就是类似把一个长方体变成一个长方形,有多种处理方法,一般是选取需要处理的面的中面,这样在结构上可以最大程度保持位置正确,也就是通常说的“抽中面”。

在几何内核处理上就需要根据实体信息,重新生成只有面几何的Shell拓扑结构,再将Shell通过合理布尔运算生成仿真需要的面结构。

“抽中面”就是一个典型的业务操作,最好在内核端提供支持。

9.第三方接口

常用的三维几何数据格式包括商业的sat,x_t,以及通用的igs,step以及各种三维CAD软件的数据格式。这一块其实没有太多技术难度,主要是工作量的问题,在数据转换过程中需要注意文件标准,一系列转换属性设置,比如单位,容差等。

好的几何内核是需要融入生态的,也就是要和第三方数据有接口进行互读互写。

科普
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-06-14
最近编辑:2年前
多物理场仿真技术
www.cae-sim.com
获赞 126粉丝 322文章 220课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈