【三维视觉】TetWild / fTetWild学习:将任意mesh处理成流形水密的mesh

2024-03-30 06:04

本文主要是介绍【三维视觉】TetWild / fTetWild学习:将任意mesh处理成流形水密的mesh,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目地址

TetWild - Tetrahedral Meshing in the Wild
快速版本:Fast Tetrahedral Meshing in the Wild

2D版本:
TriWild: Robust Triangulation With Curve Constraints

快速版本的fTetWild

输入与输出

输入:任意网格:.off/.obj/.stl/.ply format
输出:保证是水密的
在这里插入图片描述

其中.msh文件可以用gmesh打开
在这里插入图片描述
这里的面片颜色代表的是每个面片与原始网格的误差,通过设置stop-energy来调节,默认的是8,当所有面片的最大误差都小于stop-energy时停止优化

参数含义

float-tetwild
Usage: ./FloatTetwild_bin [OPTIONS]Options:-h,--help                   Print this help message and exit-i,--input TEXT:FILE        Input surface mesh INPUT in .off/.obj/.stl/.ply format. (string, required)-o,--output TEXT            Output tetmesh OUTPUT in .msh format. (string, optional, default: input_file+postfix+'.msh')--tag TEXT:FILE             Tag input faces for Boolean operation.--op INT                    Boolean operation: 0: union, 1: intersection, 2: difference.-l,--lr FLOAT               ideal_edge_length = diag_of_bbox * L. (double, optional, default: 0.05)-e,--epsr FLOAT             epsilon = diag_of_bbox * EPS. (double, optional, default: 1e-3)--max-its INT               (for debugging usage only)--stop-energy FLOAT         Stop optimization when max energy is lower than this.--stage INT                 (for debugging usage only)--stop-p INT                (for debugging usage only)--postfix TEXT              (for debugging usage only)--log TEXT                  Log info to given file.--level INT                 Log level (0 = most verbose, 6 = off).-q,--is-quiet               Mute console output. (optional)--skip-simplify             skip preprocessing.--no-binary                 export meshes as ascii--no-color                  don't export color--not-sort-input            (for debugging usage only)--correct-surface-orientation(for debugging usage only)--envelope-log TEXT         (for debugging usage only)--smooth-open-boundary      Smooth the open boundary.--export-raw                Export raw output.--manifold-surface          Force the output to be manifold.--coarsen                   Coarsen the output as much as possible.--csg TEXT:FILE             json file containg a csg tree--use-old-energy            (for debugging usage only)--disable-filtering         Disable filtering out outside elements.--use-floodfill             Use flood-fill to extract interior volume.--use-general-wn            Use general winding number.--use-input-for-wn          Use input surface for winding number.--bg-mesh TEXT:FILE         Background mesh for sizing field (.msh file).--max-threads UINT          Maximum number of threads used
  • Smoothing open regions
    Our method can fill gaps and holes but the tetmesh faces on those parts could be bumpy. We provide users an option to do Lapacian smoothing on those faces to get a smoother surface.

  • Envelope of size epsilon
    Using smaller envelope preserves features better but also takes longer time. The default value of epsilon is b/1000, where b is the length of the diagonal of the bounding box.

  • Ideal edge length
    Using smaller ideal edge length gives a denser mesh but also takes longer time. The default ideal edge length is b/20

  • Filtering energy
    Our mesher stops optimizing the mesh when maximum energy is smaller than filtering energy. Thus, larger filtering energy means less optimization and sooner stopping. If you do not care about quality, then give a larger filtering energy would let you get the result earlier. The energy we used here is conformal AMIPS whose range is from 3 to +inf. The default filtering energy is 10.
    💡 We suggest not to set filtering energy smaller than 8 for complex input.

  • Maximum number of optimization passes
    Our mesher stops optimizing the mesh when the maximum number of passes is reached. The default number is 80.

  • bg-mesh
    Sizing field Users can provide a background tetmesh in .msh format with vertex scalar field values stored. The scalar field values is used for controlling edge length. The scalars inside an element of the background mesh are linearly interpolated.
    💡 Here is an example including input surface mesh, background mesh and output tetmeshes with/without sizing control.

  • Smoothing open regions
    Our method can fill gaps and holes but the tetmesh faces on those parts could be bumpy. We provide users an option to do Lapacian smoothing on those faces to get a smoother surface.

我的私人总结

–no-color don’t export color, 这里的颜色指的是给每个面片记录浮点的filtering energy

处理得到neural subdivision surfaces的输入网格的参数设置

./FloatTetwild_bin -i input_mesh_path -o  output_mesh_path_no_postfix -l 0.05 --e 0.0002 --manifold-surface --smooth-open-boundary

–l 0.05:更小的边长更精细,实测(0.05不到1min, 0.01需要2-3min, 0.005需要10+min)
Ideal edge length
Using smaller ideal edge length gives a denser mesh but also takes longer time. The default ideal edge length is b/20

–e 0.0002: 更小的值更好地保留特征
Envelope of size epsilon
Using smaller envelope preserves features better but also takes longer time. The default value of epsilon is b/1000, where b is the length of the diagonal of the bounding box.
–manifold-surface:保证流形,否则会出现非流形的顶点
在这里插入图片描述
–smooth-open-boundary:使用拉普拉斯平滑来平滑孔洞填充后的面
原始网格
在这里插入图片描述
没有平滑
在这里插入图片描述
有平滑
在这里插入图片描述

这篇关于【三维视觉】TetWild / fTetWild学习:将任意mesh处理成流形水密的mesh的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/860673

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

一文带你深入了解Python中的GeneratorExit异常处理

《一文带你深入了解Python中的GeneratorExit异常处理》GeneratorExit是Python内置的异常,当生成器或协程被强制关闭时,Python解释器会向其发送这个异常,下面我们来看... 目录GeneratorExit:协程世界的死亡通知书什么是GeneratorExit实际中的问题案例

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言