【问题标题】:Remeshing of a triangular mesh for making high quality Delaunay triangulation?重新划分三角形网格以进行高质量的 Delaunay 三角剖分?
【发布时间】:2020-06-02 15:21:03
【问题描述】:

我有一个大脑表面的三角形网格。我想将其重新划分为高质量的 Delaunay 三角剖分。我正在寻找一种简单直接的方法。

【问题讨论】:

  • 这是this question 的副本吗?
  • @obchardon 不,这是一个不同的问题。这个是关于重新网格化,而不是细化网格。

标签: matlab mesh triangulation delaunay geometry-surface


【解决方案1】:

我不确定 C++ 是否适合您,但 CGAL 库提供了这样的功能。见this package,特别见this example

如果您想使用 GUI,可以使用 CGAL 多面体演示。您可以通过从发行版中编译demo/Polyhedron 中的代码来自己编译它,或者使用预编译的Windows 演示可用:demo + dlls 将在演示目录中解压缩。加载您的输入网格,选择它并单击操作 -> 四面体网格生成 -> 创建曲面三角形网格

【讨论】:

  • 谢谢@sloriot。关于您的第一个报价,我如何将 FEM(.txt 文件)转换为 .OFF 文件?
  • 我是 CGAL 的初学者,我尝试运行 axample,但出现以下错误:严重性代码描述项目文件行源抑制状态错误 C4996 'CGAL::Diagonalize_traits: :diagonalize_selfadjoint_covariance_matrix': CGAL::Diagonalize_traits 是一个不推荐使用的类,可能导致精度问题,请使用 CGAL::Eigen_diagonalize_traits TryCGAL c:\dev\cgal-4.14\include\cgal\default_diagonalize_traits.h 74 Build
  • 这只是一个警告,如果您在 cmake 步骤安装并配置了 Eigen,则会消失。或者,可以通过定义 CGAL_I_WANT_TO_USE_DIAGONALIZE_TRAITS 来禁用警告。
  • 亲爱的@sloriot,很遗憾,我无法在 CGAL 中执行示例,而且我不熟悉您关于使用 CGAL 多面体演示的第二个提议!可以解释一下吗?!
  • @slroriot,我执行了您为在 CGAL 中重新划分网格而链接的示例,但它没有进行 Delaunay 三角剖分!你能帮我写一个程序还是有一个现成的例子?谢谢。
【解决方案2】:

您的意思是要重新采样网格?我使用 trimesh 包取得了一些成功:https://github.com/mikedh/trimesh

尤其是trimesh.remesh

【讨论】:

  • 感谢@Jussi,我需要一个高质量的网格! trimesh 会这样做吗?
  • 如何定义“高质量”?库之间的重新划分网格/重采样算法可能非常相似。通常您可以使用例如设置所需的网格密度。目标顶点距离,然后算法将在现有顶点之间进行插值。
  • 我的意思是将三角剖分网格转换为 Delaunay 三角剖分!
【解决方案3】:

pygalmesh 与 CGAL 接口并具有表面重新网格化。安装 CGAL,然后用 pygalmesh 安装

pip install pygalmesh

然后就可以使用了

pygalmesh-remesh-surface lion-head.off out.vtu -e 0.025 -a 25 -s 0.1 -d 0.001

在命令行上。

【讨论】:

  • 谢谢@nico Schlomer,我可以在Windows 上使用pygalmesh 吗?
  • 当然。不过,您必须先安装 cgal。
  • 嗨@Nico Schlomer,我安装了 CGAL, Eigen, pygalmesh 然后使用了您的示例,但它不起作用!我收到以下错误:pygalmesh-remesh-surface 无法识别为内部或外部命令...!你能帮我解决这个问题吗?非常感谢。
  • @Fatemeh 此评论部分是安装支持的错误位置。
  • 我该怎么办?
【解决方案4】:

您可以使用JIGSAW 进行表面(重新)网格划分。与CGAL 类似,它提供了各种基于 Delaunay 的方法来离散平面/曲面/体积域,重点是创建高质量的网格。

虽然JIGSAW 本身是c++ 代码,但您可以直接从MATLABPython 运行它。要安装,您需要c++ 编译器和cmake。点击 GitHub 获取更多说明和示例。


**我是JIGSAW 的开发人员,所以请记住这一点!否则,除了 CGAL 之外,MMGGeogram 软件包也可能会受到关注。

【讨论】:

  • 亲爱的@Darren Engwirda,我想使用 JIGSAW 进行网格划分,我得到 'cmake' 不是内部或外部命令、可运行程序或批处理file. 在 MATLAB 中,而我首先安装了 cmakec++ 编译器。请你帮帮我好吗?
  • @Fatemeh 似乎MATLAB 无法找到您的cmake 安装。我很乐意在这里提供帮助,但这更多的是OS 问题,而不是与JIGSAW 直接相关的任何问题。该线程 (stackoverflow.com/questions/31675150/…) 建议将 cmake 添加到您的 path 变量中(如果您使用的是 Windows...)
猜你喜欢
  • 2016-02-08
  • 2014-01-21
  • 2011-07-15
  • 2015-01-07
  • 2011-11-10
  • 2019-04-18
  • 2012-03-04
  • 2020-10-17
  • 2019-09-28
相关资源
最近更新 更多