【问题标题】:Grading tet mesh density in cgal polygon meshercgal多边形网格器中的tet网格密度分级
【发布时间】:2019-11-06 17:26:56
【问题描述】:

仍在尝试在 CGAL 中控制(分级)网格的密度。特别是对多边形表面(或多个表面流形)进行网格划分,我只是将其加载为 OFF 文件。我也可以加载选定面或面节点的列表。

但我似乎无法首先使用多边形 tet-mesher。我要做的就是在 OFF 文件中的选定面上分配和强制执行网格密度/大小。

可以通过插入具有体积数据网格的 1-D 特征来获得某种网格密度,但对于 CAD 和 3D 打印目的,它必须通过计算一个类似 STL 的三角形表面流形,因此基于体积的网格划分是不可行的。

在 CGAL 中我正在尝试做的事情是否可行?对我来说,它一定是这样的,我只是错过了一些明显的东西。 我真的希望有人可以在这里提供帮助。仅供参考,我主要使用 v4.14 处理 Mesh3 示例。 非常感谢。

【问题讨论】:

    标签: c++ mesh cgal


    【解决方案1】:

    查看Mesh_facet_criteria,尤其是constructor,其中SizingField 是您可以控制大小的地方。对于定位点wrt wrt a face,您可以使用AABB-tree函数closest_point_and_primitive()

    【讨论】:

    • 好的,谢谢!已经这样做了。我认为归结为如何正确生成 SizingField。基本示例仅显示了一个球形分析尺寸域。但我认为我需要的是一个非分析性的大小调整字段(本质上是定义表面每个顶点或面的大小)。
    • 我可以定义表面上所有顶点的大小,然后用你的代码以某种方式计算“生成”一个“大小字段”吗?我可以在 python 中做到这一点,但是......如果我遗漏了一些明显的东西,我深表歉意。
    • 我将制作一个更好地解释的图。我有薄和厚的结构,但我希望薄结构的网格密度较低,而较厚的结构更密集,这与通常的做法“相反”。
    • sizing field API 基本上是以一个点为表面,必须返回本地的sizing field。使用前面提到的 AABB-tree 函数,您可以定位输入三角形网格上的点并获取有关您想要的大小的信息。
    • 感谢您的信息。我仍然对如何指定“大小字段”感到困难。这是一个插图:i.imgur.com/oj5aPGw.png 我想在 verts 指定不同的 tet 大小,以便 thin 部分具有较大的元素(低密度),而 thick 区域具有较小的元素(高密度)。看起来我所需要的只是正确定义“大小字段”,但从当前示例中无法弄清楚。我可以将顶点大小作为列表提供。有人可以提供一个简短的代码sn-p吗?我已经检查了文档,但无法弄清楚。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    相关资源
    最近更新 更多