【三维视觉】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

相关文章

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

Redis如何使用zset处理排行榜和计数问题

《Redis如何使用zset处理排行榜和计数问题》Redis的ZSET数据结构非常适合处理排行榜和计数问题,它可以在高并发的点赞业务中高效地管理点赞的排名,并且由于ZSET的排序特性,可以轻松实现根据... 目录Redis使用zset处理排行榜和计数业务逻辑ZSET 数据结构优化高并发的点赞操作ZSET 结

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

mysql外键创建不成功/失效如何处理

《mysql外键创建不成功/失效如何处理》文章介绍了在MySQL5.5.40版本中,创建带有外键约束的`stu`和`grade`表时遇到的问题,发现`grade`表的`id`字段没有随着`studen... 当前mysql版本:SELECT VERSION();结果为:5.5.40。在复习mysql外键约

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

Python视频处理库VidGear使用小结

《Python视频处理库VidGear使用小结》VidGear是一个高性能的Python视频处理库,本文主要介绍了Python视频处理库VidGear使用小结,文中通过示例代码介绍的非常详细,对大家的... 目录一、VidGear的安装二、VidGear的主要功能三、VidGear的使用示例四、VidGea