原文链接

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图

重新网格化(Remesh)的更多相关文章

  1. 利用Matlab生成一个网格化的三维球面(生成直角坐标)

    利用Matlab生成一个网格化的三维球面,分别对径向方向.经度方向和纬度方向进行网格化,代码如下: %生成一个笛卡尔坐标系下球面网格的x,y,z坐标 %r为球面距离 %nJingdu,nWeidu分别 ...

  2. 正六边形网格化(Hexagonal Grids)原理与实现

    在路径规划.游戏设计栅格法应用中,正六边形网格不如矩形网格直接和常见,但是正六边形具有自身的应用特点,更适用于一些特殊场景中,比如旷阔的海洋.区域或者太空.本文主要讲述如何对正六边形进行几何学分析.网 ...

  3. Unity 环境区域网格化

    在使用A星算法和物体布局的过程中,常常会使用的网格的概念,即建立在网格的基础上,会使得游戏的相关编程变得简单的多. 格子的代码: using System.Collections; using Sys ...

  4. 使用 UICollectionView 实现网格化视图效果

    讲解 UICollectionView 的相关链接:http://blog.csdn.net/eqera/article/details/8134986 关键操作: 效果如下: KMCollectio ...

  5. 社区管理有捷径!Wish3D Earth社区网格化管理案例重磅上线

    社区网格化是精细化.全覆盖.高效率的社区管理模式,便捷有效的社区网格化管理平台是社区网格化管理的关键. Wish3D Earth全新上线三维社区网格化管理平台,使用实景三维模型作为地图,地形地貌真实展 ...

  6. webgis技术在智慧城市综合治理(9+X)网格化社会管理平台(综治平台)的应用研究

    综治中心9+X网格化社会管理平台 为落实中央关于加强创新社会治理的要求,适应国家治理体系和治理能力现代化要求,以基层党组织为核心,以整合资源.理顺关系.健全机制.发挥作用为目标,规范街道.社区综治中心 ...

  7. webgis技术在智慧城市综合治理网格化社会管理平台(综治平台)的应用

      网格化社会管理平台功能:1 实有人口管理人口数据管理按照人口分类进行管理,分为常住人口.流动人口.特殊人群.弱势群体,功能包括人口信息管理.归口负责.人房关联.统计汇总.地图监管服务等功能.人口信 ...

  8. 点云网格化算法---MPA

    MPA网格化算法思路 第一步:初始化一个种子三角面.(随机选点,基于该点进行临近搜索到第二点:在基于该线段中点临近搜索到第三点) 图1 第二步:在种子三角面的基础上,进行面片的扩充,利用边的中点进行临 ...

  9. 利用Matlab生成一个网格化的三维三轴椭球面(生成直角坐标)

    代码很简单,a,b,c分别为椭球的三轴轴长,a=b=c时得到的是三维球面,a=b!=c时得到的是三维椭球面,a!=b且a!=c且b!=c时得到的是三维旋转椭球面 %生成一个笛卡尔坐标系下三轴椭球表面的 ...

随机推荐

  1. 找到并更改启动时间(timeout)

    centos7更改引导项等待时间 centos7已经不用grub,改用grub2. [ root]# vi /boot/grub2/grub.cfg 找到并更改启动时间(timeout) [root] ...

  2. 面试题:Dubbo中zookeeper做注册中心,如果注册中心集群全都挂掉,发布者和订阅者之间还能通信么?

    1.[提供者]在[启动]时,向注册中心zk [注册]自己提供的服务. 2.[消费者]在[启动]时,向注册中心zk [订阅]自己所需的服务.   可以的,消费者在启动时,消费者会从zk拉取注册的生产者的 ...

  3. mybatis之联表查询

    今天碰到了一个问题,就是要在三张表里面各取一部分数据然后组成一个list传到前台页面显示.但是并不想在后台做太多判断,(因为涉及到for循环)会拉慢运行速度.正好用的框架是spring+springM ...

  4. css-动画,a标签下,文字加下划线,而且动画是由中间向两边扩展开

    效果: html: <div class="warp"> <a class="welcome">期待您的参与</a> < ...

  5. CSS定位——文档流定位

    关于CSS的定位机制Ⅰ ㈠概念 对于盒子模型来说,也就是页面元素,这些盒子究竟在页面的什么位置,怎样排列它,那么找到它的位置,确定它的位置,这个就是定位机制所决定的. ㈡分类 文档流, 浮动定位,层定 ...

  6. 在linux 下安装git

    ① 安装 Git Linux 做为服务器端系统,Windows 作为客户端系统,分别安装 Git 服务器端: #yum install -y git 安装完后,查看 Git 版本 [root@loca ...

  7. Codeforces 1213C Book Reading

    cf题面 中文题意 多组数据,每组给一个n给一个m,要求正整数\(1\)~\(n\)中,所有能被m整除的数的个位之和. 解题思路 首先,能被m整除的数的数量是\(\lfloor\frac{n}{m}\ ...

  8. 计蒜客T2202 数三角形(提高组2017模拟赛(三)day2T3) LZOJ3878攻略

    今天模拟赛考了一道计蒜客NOIP2017模拟赛(三)day2T3的数三角形,原题链接 https://nanti.jisuanke.com/t/T2202 ,LZOJ3878攻略.场上想了很久都没转化 ...

  9. HDU4587--TWO NODES(无向图割点,暴力出奇迹)这是我见过的时间最长的题。。。

    TWO NODES Time Limit: 24000/12000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  10. [CSP-S模拟测试]:硬币(博弈论+DP+拓展域并查集)

    题目传送门(内部题135) 输入格式 第一行包含一个整数$T$,表示数据组数. 对于每组数据,第一行两个整数$h,w$,表示棋盘大小. 接下来$h$行,每行一个长度为$w$的字符串,每个位置由为$o, ...