有CAE开发商问及OCCT几何内核的网格方面的技术问题。其实,OCCT几何内核的现有网格生成能力比较弱。
HybridOctree_Hex的源代码,还没有仔细去学习。
“HybridOctree_Hex”的开发者说:六面体网格主要是用在数值模拟领域的,比如汽车飞机或者是医疗影像行业给病人核磁共振扫描后做数字孪生的。图形学领域由于主要是服务游戏和影视行业,一般只关注物体的表面,用三角形网格,因此不是这个软件的受众。
Marching Cubes算法和六面体网格划分在空间处理和结果表示上有所不同,前者是一种等值面的提取和可视化表示的算法,而后者是后续的空间的数值计算和分析。在比较复杂的网格上直接用Marching Cube生成的体积网格不仅有可能不是全六面体的(全六面体一般在数值模拟里精度最高最受青睐),而且在表面附近大概率是有自交叉或者是负雅可比的。我们这个算法主要是聚焦对表面区域网格质量的优化,同时确保所有点都贴合在原始表面上。你如果对六面体网格生成有兴趣的话,可以看看这篇综述:dl.acm.org/doi/pdf/10.1。
总的来说,四面体网格的自动生成已经被内嵌到一些商业软件里了(HyperMesh, ANSYS, ICEM, Cubit),一些自研的小软件也很好用(TetGen, TetWild)。六面体-四面体混合网格在之前提到的软件里也有比较成熟的解决方案。但是纯六面体网格目前还是一个开放问题,在速度-鲁棒-质量三角中没有任何一个算法能够通吃。目前比较有竞争力的算法有我们这种基于背景网格点的八叉树法(速度快,非常鲁棒),还有frame field算法(slides.games-cn.org/pdf)和基于polycube的算法(dl.acm.org/doi/pdf/10.1,质量高)。这三种算法在那个综述里都有介绍,后两种算法在可预见的几年里应该仍然会停留在实验室阶段,因为虽然其质量高,但剩下两个板子太短了,速度非常慢,鲁棒性上frame field无法保证切出来的每个多面体都是六面体,所以网格可能是六面体-四面体混合的。polycube算法在将规则的几何体变形贴合到输入形状时有大量的超参数要调教,在复杂的几何体上没有人为干预很有可能会失败。八叉树法最大的短板是网格内奇异点多,以及部分因为这个原因导致的网格质量差。我们这次的工作主要是解决了网格质量差的问题,利用能量最小化算法,证实了八叉树法生成的网格质量也可以提高到非常高,以至于和其他算法的网格质量在缩放雅可比这一最广泛使用的网格指标上分庭抗礼甚至超越。在我们这个算法之前,八叉树法赛道下的最好算法是