前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >重新网格化(Remesh)

重新网格化(Remesh)

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

原文链接

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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
Salesforce LWC学习(八) Look Up组件实现
本篇参考https://www.salesforcelwc.in/2019/10/lookup-in-lwc.html,感谢前人种树。
Zero-Zhang
2019/12/25
1.1K0
Salesforce LWC学习(八) Look Up组件实现
salesforce零基础学习(一百一十二)项目中的零碎知识点小总结(四)
本篇参考: https://trailblazer.salesforce.com/issues_view?id=a1p4V0000003znDQAQ https://salesforce.stacke
Zero-Zhang
2022/03/22
7010
salesforce零基础学习(一百一十二)项目中的零碎知识点小总结(四)
Salesforce LWC学习(三十六) Quick Action 支持选择 LWC了
背景: 我们现在项目越来越多的使用 lwc 进行了前端开发,当然我们知道lwc并不能所有的场景都支持自己玩,比如组件之间的navigation、 quick action等都需要通过aura进行操作,aura套用lwc来实现。好消息是随着salesforce的release对lwc的不断发力,越来越多的功能可以通过lwc来使用。
冬夜先生
2021/09/08
7790
Salesforce LWC学习(五) LDS & Wire Service 实现和后台数据交互 & meta xml配置
之前的几节都是基于前台变量进行相关的操作和学习,我们在项目中不可避免的需要获取数据以及进行DML操作。之前的内容中也有提到wire注解,今天就详细的介绍一下对数据进行查询以及DML操作以及Wire Service相关的知识。
Zero-Zhang
2019/09/29
2.9K0
Salesforce LWC学习(五)  LDS & Wire Service 实现和后台数据交互 & meta xml配置
Salesforce LWC学习(三十一) Quick Action适配
本篇参考:https://www.lightningdesignsystem.com/components/modals/
Zero-Zhang
2021/03/05
6070
Salesforce LWC学习(三十一) Quick Action适配
Salesforce LWC学习(二十一) Error浅谈
本篇参考:https://developer.salesforce.com/docs/component-library/documentation/en/lwc/data_error
Zero-Zhang
2020/08/25
1.2K0
Salesforce LWC学习(二十一) Error浅谈
Salesforce LWC学习(十) 前端处理之 list 处理
本篇参看:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array
Zero-Zhang
2020/02/12
9230
Salesforce学习 Lwc(十七)【track声明的变量与html项目绑定②】
Lwc开发过程中,我们经常会遇到父子组件之间的相互调用,下边我们在子组件的【renderedCallback】中写一些逻辑,看看效果如何。
repick
2021/03/15
1.1K0
Salesforce学习 Lwc(十七)【track声明的变量与html项目绑定②】
Salesforce 自定义List Button(二) VfPage如何打开Lwc
上一篇做成的ListButton可以直接打开VfPage,VfPage也可以引用Lwc,从而实现打开Lwc画面的做法。
repick
2022/03/31
8530
Salesforce 自定义List Button(二) VfPage如何打开Lwc
Salesforce LWC学习(二十九) getRecordNotifyChange(LDS拓展增强篇)
https://developer.salesforce.com/docs/component-library/documentation/en/lwc/data_ui_api
Zero-Zhang
2020/12/21
8380
Salesforce LWC学习(二十九) getRecordNotifyChange(LDS拓展增强篇)
Salesforce LWC学习(二十七) File Upload
https://developer.salesforce.com/docs/component-library/bundle/lightning-file-upload/documentation
Zero-Zhang
2020/10/10
7100
Salesforce LWC学习(二十七) File Upload
Salesforce 详细Page中自定义QuickAction LightningComponent
image.pngquickActionForDeleteAura.cmp<aura:component implements="force:lightningQuickActionWithoutHeader,force:hasRecordId,flexipage:availableForRecordHome,lightning:actionOverride"> <aura:attribute name="recordId" type="Id"/> This is Aura RecordId is: {!v.recordId} </aura:component>quickActionForDeleteAura.cmp<aura:component implements="force:lightningQuickActionWithoutHeader,force:hasRecordId,flexipage:availableForRecordHome,lightning:actionOverride"> <aura:attribute name="recordId" type="Id"/> This is Aura RecordId is: {!v.recordId} </aura:component>QuickAction调用AuraComponent之前做过详细Page中自定义QuickAction直接调用Lwc,下边我们看看如何调用AuraComponent。1.AuraComponent做成quickActionForDeleteAura.cmp
repick
2022/09/11
3820
Salesforce 详细Page中自定义QuickAction LightningComponent
Salesforce学习 Lwc(一) lightning-record-edit-form标签
使用lightning-record-edit-form组件创建一个表单,该表单用于添加Salesforce记录或更新对象上现有记录中的字段。
repick
2020/12/08
1.4K0
Salesforce LWC学习(三十) lwc superbadge项目实现
本篇参考:https://trailhead.salesforce.com/content/learn/superbadges/superbadge_lwc_specialist
Zero-Zhang
2020/12/29
1.7K0
Salesforce LWC学习(十六) Validity 在form中的使用浅谈
https://developer.salesforce.com/docs/component-library/bundle/lightning-input/documentation
Zero-Zhang
2020/04/24
1.1K0
Salesforce LWC学习(十六) Validity 在form中的使用浅谈
Salesforce LWC学习(九) Quick Action in LWC
我们在lightning开发中,quick action是一个常用的功能,很可惜的是,lwc目前还不支持单独的custom quick action操作,只能嵌套在aura中使用才能发挥作用。
Zero-Zhang
2019/12/26
1.1K0
Salesforce LWC学习(九) Quick Action in LWC
Salesforce LWC学习(二十二) 简单知识总结篇二
https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.reactivity_fields
Zero-Zhang
2020/09/01
5650
Salesforce LWC学习(二十二) 简单知识总结篇二
Salesforce学习 Lwc(九)【数据初期取得与更新】运用详解
开发自定义画面经常遇到的场景就是增删改查,关于数据更新用到的几个方法进行一下总结,常用到的有以下几种。
repick
2020/12/29
1.1K0
Salesforce LWC学习(十九) 针对 lightning-input-field的label值重写
https://salesforcediaries.com/2020/02/24/how-to-override-lightning-input-field-label-in-lightning-web-component/
Zero-Zhang
2020/07/21
1.3K0
Salesforce LWC学习(三十三) lightning-datatable 翻页bug处理
本来lightning-datatable这种标签,基本上任何的项目都会用到而且很精通,所以当时感觉没有太大的单独一篇写的必要,在Salesforce LWC学习(三十) lwc superbadge项目实现 中也有使用这个标签的demo,所以有类似需要的小伙伴参考一下也可以照猫画虎搞定需求。项目中遇见了两个datatable的问题,解决以后感觉有必要写一下,后期遇见这种坑的小伙伴可以快速对应。话不多说,先弄一个简单的分页效果的UI,UI很丑,旨在实现功能。
Zero-Zhang
2021/03/27
1K0
推荐阅读
相关推荐
Salesforce LWC学习(八) Look Up组件实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档