Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >重新网格化(Remesh)

重新网格化(Remesh)

作者头像
NT4.4
修改于 2019-10-21 06:48:41
修改于 2019-10-21 06:48:41
4K0
举报
文章被收录于专栏:图形视觉图形视觉

原文链接

Remesh并没有一个严格的定义,简单的讲,Remesh就是从一个输入网格生成另一个网格,并且满足一定的要求。根据网格改动大小,可以分为这么几类:

  • 保持顶点拓扑和几何信息,优化网格连接关系
  • 保持顶点拓扑信息,同时优化顶点几何和网格连接关系
  • 顶点重采样,优化网格连接关系

Remesh对原网格的改动比较大,实际应用中要谨慎使用。尽量使用改动比较小的Remesh方法。


Delaunay三角化

Delaunay三角化,是点云的一种三角化方法,它具有某些好的性质:

  • 网格中的最小角最大化
  • 任意三角形的外接圆内不含三角形以外的顶点
  • 三角化的网格是点云的凸包
  • 最大化所有三角面片的内切圆的平均值
  • 其它......

带约束的Delaunay三角化

有时候,点云包含一些线段连接约束,如下左图所示。有些约束边并不满足Denaulay性质,所以,它并不能得到整体的Delaunay三角化结果(如下中图是点云的一个Delaunay三角化结果)。我们可以放开一些Delaunay性质约束,使其尽量的接近Delaunay三角化。下右图是一个带约束的Denaulay三角化的结果。可以比较一下中图和右图的结果差异。


Delaunay网格优化

Delaunay优化,可以优化网格的连接关系,减少狭长三角形,保持网格顶点数目和位置不变。如下图所示,图2和图3是图1点云不同的三角化结果。图2经过一系列拓扑优化,如Delaunay边翻转操作,得到图3的高质量网格。

Delaunay优化只改变了网格顶点的连接关系,一般是局部的Delaunay边翻转。由于顶点保持不变,它可以极大可能的保持住原始网格的几何信息。缺点是,在顶点分布很差的情况下,优化的效果有限。


Voronoi图

给定一群平面(或曲面)的点,其Voronoi图,把平面(或者曲面)分隔成一块一块的区域,每个区域包含一个点,并且这块区域到所有点的最近点为其所包含的点。如图左所示。这些线也是相邻两点的垂直平分线。如果是曲面上的点,点之间的距离为曲面的测地距离。

Voronoi图和Delaunay三角化的图,互为对偶图。如图右所示。


重心Voronoi图

重心Voronoi图,是一种特殊的Voronoi图,其每个区域的重心和其对应点重合。如右图所示,这就是一个重心Voronoi图。


重心Voronoi优化

重心Voronoi优化,可以减少狭长三角形。它和Delaunay优化的区别是,它不仅优化网格顶点的连接关系,还要优化顶点的位置。如下图1所示,虽然这是一个Delaunay三角化,但明显可以看出其网格质量很很差的,经过一系列几何优化(如重心Voronoi优化)后,顶点分布更加均匀,然后再做一个Delaunay三角化就得到了图2的结果。

重心Voronoi优化,虽然可以优化顶点分布,但其优化程度有限,在顶点分布极不均匀的情况下,效果还是不理想的。


重新网格化(Remesh)

这里的Remesh,主要是指顶点重新采样的类型。前面提到的Delaunay优化和重心Voronoi优化也属于Remesh的范畴,但它们对顶点分布的优化能力有限。

Remesh的目标有很多种,一般是应用驱动的,不同的应用所需要的性质是有差别的,即使是同一个性质,有时候是硬约束,有时候是软约束。常见的一些性质有:

  • 新网格是原网格的一个好的逼近
  • 新网格复杂度(网格顶点或面片数量)
  • 网格面片质量满足一定的要求:避免狭长和退化面片;顶点度数为6;顶点分布满足均匀分布或几何相关的各项异性分布;网格边长要求。
  • 保持特征边
  • 新网格要保持流形结构

通常情况下,这些性质很难同时满足,有些性质是矛盾的:

  • 网格复杂度与逼近误差
  • 网格顶点均匀分布与逼近误差
  • 保持特征边与网格面片质量

Remesh的方法,大致可以分为局部和全局的:

  • 局部方法:经过一系列的局部拓扑和几何操作的迭代,来Remesh整个网格。它的优点是计算速度比较快,容易实现;缺点是缺乏整体质量的把控,是一种启发式方法。
  • 全局方法:一般指把网格分割成一片一片的,然后分片参数化子网格。参数化的过程中,保持住边界的连续性。也有一些全局参数化的方法,不要网格分割这一步。最后再把参数域的网格拓扑结构反映射回原网格。它的优点是网格的全局质量容易把控,缺点也显而易见,强烈的依赖参数化方法,稳定高质量的实现会比较困难。

有兴趣的读者,欢迎参考视频:Delaunay三角化Voronoi图

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL的MRR(Multi-Range Read)优化原理详解
在数据库管理系统中,查询性能是评估系统优劣的重要指标之一。MySQL作为广泛使用的开源关系型数据库管理系统,不断优化其内部机制以提升查询效率。其中,MRR(Multi-Range Read)优化技术是一种针对范围查询和索引扫描的有效优化手段。本文将深入解析MySQL中MRR优化的原理,探讨其工作机制及在数据库性能提升中的应用。
公众号:码到三十五
2024/09/05
3850
深入浅出MySQL MRR(Multi-Range Read)
在探索数据库优化的广阔领域中,我们不可避免地会遇到一系列独特的概念和技术。其中之一就是MySQL的多范围读取(Multi-Range Read, MRR)。
BookSea
2023/10/12
4170
MySQL的优化利器⭐️Multi Range Read与Covering Index是如何优化回表的?
上篇文章MySQL的优化利器:索引条件下推,千万数据下性能提升273%🚀,我们说到MySQL中server层与存储引擎层的交互、索引、回表、ICP等知识(有不理解的概念可以看上篇文章哈~)
菜菜的后端私房菜
2024/06/13
2231
InnoDB 存储引擎之索引和优化
数据库优化可以说是后台开发中永恒的话题,数据库的性能通常是整个服务吞吐量的瓶颈之所在。
三哥
2019/07/30
4740
性能优化之MRR
一 介绍 MySQL 5.6版本提供了很多性能优化的特性,其中之一就是 Multi-Range Read 多范围读(MRR) , 它的作用针对基于辅助/第二索引的查询,减少随机IO,并且将随机IO转化为顺序IO,提高查询效率。 二 原理 在没有MRR之前,或者没有开启MRR特性时,MySQL 针对基于辅助索引的查询策略是这样的:
用户1278550
2018/08/09
1.2K0
Mysql实战面试题
B Tree 指的是 Balance Tree,也就是平衡树。平衡树是一颗查找树,并且所有叶子节点位于同一层。
爱撸猫的杰
2019/03/28
1.2K0
Mysql实战面试题
【MySQL】之join算法详解
在阿里巴巴的java开发手册有这么一条强制规定:超过三个表禁止join,需要join的字段,数据类型保持绝对一致,多表关联查询时,要保证被关联的字段需要有索引。
MySQL数据库技术栈
2020/09/01
8450
【MySQL】之join算法详解
MySQL 索引优化:提升数据库性能得关键
索引,从本质上来说,是一种特殊的数据结构,它如同书籍的目录,能够帮助我们快速定位到所需的数据。在 MySQL 中,索引通过对表中的特定列进行排序和存储,建立起数据值与数据行物理位置之间的映射关系。这样,当执行查询操作时,数据库无需全表扫描,而是借助索引直接定位到符合条件的数据行,大大缩短了查询时间。
tcilay
2025/08/19
1610
SQL 不知道咋优化?吹一手 join 语句的优化准没错
面试最怕遇到的问题是什么,如何做优化一定当仁不让,SQL 优化更是首当其冲,这里先跟大家分享一个比较容易理解的 join 语句的优化~
飞天小牛肉
2022/02/23
1K0
SQL 不知道咋优化?吹一手 join 语句的优化准没错
MYSQL5.6优化器的一个新特性MRR
MMR全称是Multi-Range Read,是MYSQL5.6优化器的一个新特性,在MariaDB5.5也有这个特性。优化的功能在使用二级索引做范围扫描的过程中减少磁盘随机IO和减少主键索引的访问次数。将随机IO转换为顺序IO。
MySQL轻松学
2019/07/31
9480
技术分享 | 用好 MySQL 的 MRR 优化器
MySQL DBA,擅长 python 和 SQL,目前维护着 github 的两个开源项目:mysqltools 、dbmc 以及独立博客:https://www.sqlpy.com。
爱可生开源社区
2020/06/19
7550
MySQL优化原理
前言 说起MySQL的查询优化,相信大家收藏了一堆:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理? 在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。 一、MySQL逻辑架构    如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。
用户1195962
2018/01/18
1.2K0
MySQL优化原理
join查询可以⽆限叠加吗?MySQL对join查询有什么限制吗?
假设有一个复杂的业务系统,涉及到用户表(users)、订单表(orders)、商品表(products)、物流表(logistics)和支付表(payments)。如果编写如下的 JOIN 查询:
威哥爱编程
2025/02/24
7780
MySQL8.0 优化器介绍(三)
为了让读者对join优化 有更深的了解,章节里的sql例子,留了一些思考和动手的问题。可能大家得到的答案会不同,但探索未知的过程,方式应该是一样的。
GreatSQL社区
2023/08/10
4960
MySQL8.0 优化器介绍(三)
【索引潜规则】-覆盖索引、ICP、MRR详解
上篇文章我们说了创建索引的方法,有聚簇索引、辅助索引、前缀索引、联合索引等,也说了如何利用索引的排序功能,接着本篇文章主要来说一说索引的几种优化策略,首先我们先说下回表的概念。
MySQL数据库技术栈
2020/08/05
1.6K0
【索引潜规则】-覆盖索引、ICP、MRR详解
图文并茂说MySQL索引——入门进阶必备
  你一定看到过这样的例子,索引是什么,你要查字典,不可能从第一页翻到最后一页去查找,你会先查找拼音或者偏旁部首,然后直接跳转到对应的页小范围的一条一条查找,这样会快得多。
砖业洋__
2023/05/06
3530
图文并茂说MySQL索引——入门进阶必备
【收藏】MySQL 超全优化清单(可执行系列)
先从一般的语句优化开始,其实对于很多规范大家并不陌生,可就是在用的时候,无法遵从,希望今天大家再过一遍,可以养成一种良好的数据库编码习惯。
lyb-geek
2024/07/17
3520
【收藏】MySQL 超全优化清单(可执行系列)
MRR和ICP
MySQL5.6版本开始支持Multi-Range Read(MRR)优化。Multi-Range Read优化的目的就是为了减少磁盘的随机访问,并且将随机访问转化为较为顺序的数据访问,这对于IO-bound类型的SQL查询语句可带来性能极大的提升。Multi-Range Read优化可适 用于range,ref,eq_ref类型的查询。
大忽悠爱学习
2022/12/13
1.6K0
MRR和ICP
面试必问的 MySQL,你懂了吗?
面试必问的 MySQL,你懂了吗?
Java架构师必看
2021/06/17
6250
面试必问的 MySQL,你懂了吗?
mysql索引结构与深分页优化
B-树,这里的 B 表示 balance( 平衡的意思),B-树是一种多路自平衡的搜索树。它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点。
山行AI
2020/03/26
1.6K0
相关推荐
MySQL的MRR(Multi-Range Read)优化原理详解
更多 >
LV.1
公众号:码到三十五公众号:【码到三十五】
作者相关精选
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档