一、Laplace平滑

简单的拉普拉斯平滑算法的原理是将每个顶点都移动到相邻顶点的平均位置,即采用所谓伞状算子:

在伞状结构中表示这样的过程如下图:

拉普拉斯平滑算法有很多进一步的变形,首先在求取平均位置时,可以采用不同的加权策略,例如对不同的邻接点采用不同的权值。一般来说,距离中心点P较远的邻接点,我们可以让他对P平滑后的位置影响小一点。这样就可以采用一种距离的倒数为权值的拉普拉斯平滑。

有时为了控制平滑的速率,也会引入参数lambda来控制平滑的速率,即从原来所执行的:

转变成同时,平滑算法往往可以反复对Mesh执行,使得Mesh越来越光顺,迭代次数T也是平滑算法中重要的参数。

二、切向Laplace平滑

右边图中的第三幅,代表reproject的效果,需要额外实现(比如用AABBtree等),在公式中没有体现。

另一种写法:

区别在于(I - ni . ni.T),还有正负号

三、改进的切向Laplace平滑(基于面积的切向Laplace平滑)

首先计算gi:

然后用以下公式将gi被投影会pi的切面:

其中ni是pi的法向,λ是阻尼系数用来防止震荡。

一些Voronoi面积大的节点拥有更大的重力,所以吸引了其它节点,因此减小了他们自身的面积。一般通过<20次迭代,面积方差可以减小5倍,最终产生一个每个节点面积大致相同的网格,如下图所示。

代码:

Eigen::Vector3d tangential_smooth(const Tuple& t)
{auto one_ring_tris = get_one_ring_tris_for_vertex(t);if (one_ring_tris.size() < 2) return vertex_attrs[t.vid(*this)].pos;Eigen::Vector3d after_smooth = smooth(t);  // 计算了普通Laplace平滑后的点位置// get normal and area of each faceauto area = [](auto& m, auto& verts) {return ((m.vertex_attrs[verts[0].vid(m)].pos - m.vertex_attrs[verts[2].vid(m)].pos).cross(m.vertex_attrs[verts[1].vid(m)].pos - m.vertex_attrs[verts[2].vid(m)].pos)).norm() /2.0;};auto normal = [](auto& m, auto& verts) {return ((m.vertex_attrs[verts[0].vid(m)].pos - m.vertex_attrs[verts[2].vid(m)].pos).cross(m.vertex_attrs[verts[1].vid(m)].pos - m.vertex_attrs[verts[2].vid(m)].pos)).normalized();};auto w0 = 0.0;Eigen::Vector3d n0(0.0, 0.0, 0.0);for (auto& e : one_ring_tris) {auto verts = oriented_tri_vertices(e);w0 += area(*this, verts);n0 += area(*this, verts) * normal(*this, verts);}n0 /= w0;if (n0.norm() < 1e-10) return vertex_attrs[t.vid(*this)].pos;n0 = n0.normalized();after_smooth += n0 * n0.transpose() * (vertex_attrs[t.vid(*this)].pos - after_smooth);assert(check_mesh_connectivity_validity());return after_smooth;
}

四、非流形网格的平滑

对于non-manifold网格,上面的公式是否还适用,有待调研。

参考文献:

sgp04 M. Botsch and L. Kobbelt / Remeshing for Multiresolution Modeling

Polygon mesh processing (Botsch M., et al.) Chapter6 Section 6.5 Triangle-based Remeshing

网格优化Remesh——Tangential Smooth相关推荐

  1. LESSON 9.4 集成算法的参数空间与网格优化

    四 集成算法的参数空间与网格优化 如随机森林中所展示的,集成算法的超参数种类繁多.取值丰富,且参数之间会相互影响.共同作用于算法的最终结果,因此集成算法的调参是一个难度很高的过程.在超参数优化还未盛行 ...

  2. 图形处理(十二)拉普拉斯网格优化、最小二乘网格模型光顺

    看这篇博文前,请先参考我的另外一篇博文<图形处理(三)简单拉普拉斯网格变形-Siggraph 2004>学习拉普拉斯坐标的相关理论知识.这里要分享的paper,是通过拉普拉斯的方法实现三角 ...

  3. 机器学习之超参数优化 - 网格优化方法(随机网格搜索)

    机器学习之超参数优化 - 网格优化方法(随机网格搜索) 在讲解网格搜索时我们提到,伴随着数据和模型的复杂度提升,网格搜索所需要的时间急剧增加.以随机森林算法为例,如果使用过万的数据,搜索时间则会立刻上 ...

  4. 机器学习之超参数优化 - 网格优化方法(对半网格搜索HalvingSearchCV)

    机器学习之超参数优化 - 网格优化方法(对半网格搜索HalvingSearchCV) 在讲解随机网格搜索之前,我们梳理了决定枚举网格搜索运算速度的因子: 1 参数空间的大小:参数空间越大,需要建模的次 ...

  5. ANSYS Workbench中的网格优化方法

    自 50 年代后期以来,有限元法 (FEM) 已被用作解决工程问题的强大工具.当时的计算是手工进行的,该方法是基于力的,而不是我们今天使用的基于位移的方法.由于计算机工业的进步,已经开发出各种有限元商 ...

  6. 重新网格化Remesh

    Remesh并没有一个严格的定义,简单的讲,Remesh就是从一个输入网格生成另一个网格,并且满足一定的要求.根据网格改动大小,可以分为这么几类: 保持顶点拓扑和几何信息,优化网格连接关系 保持顶点拓 ...

  7. LESSON 10.410.510.6 贝叶斯优化的基本流程BayesOpt vs HyperOpt vs Optuna batch基于BayesOpt实现高斯过程gp优化

    超参数优化 - 贝叶斯优化方法 import numpy as np import pandas as pd import sklearn import matplotlib as mlp impor ...

  8. OpenCASCADE:网格

    OpenCASCADE:网格 网格演示 网格划分算法 网格演示 除了支持 3D 对象的精确几何表示之外,Open CASCADE 技术还提供了以网格形式处理对象的细分表示的功能. 开放式级联技术网格功 ...

  9. html流式布局插件,Jquery瀑布流网格布局插件

    插件描述:一款简单且高度可定制的jQuery瀑布流网格布局插件.通过该瀑布流网格插件你可以动态添加和删除各种尺寸的图片,定义图片宽度,设置网格的列数,或使用流式布局方式,甚至还可以通过URL动态添加图 ...

最新文章

  1. 连载《一个程序猿的生命周期》-《发展篇》 - 5.奶奶终于“自杀”了
  2. Makefile_04:Makefile变量初了解
  3. 第十一讲 二阶齐次线性ODE相关理论
  4. Python应用实战案例-pyspark库从安装到实战保姆级讲解
  5. laravel 先排序后分组怎么写_插入排序的故事
  6. wdatepicker使用指南
  7. SpringBoot使用@Transactional
  8. 「镁客·请讲」云迹科技张名举:酒店是移动机器人最标准化的服务场景,将有更多服务岗位被机器人替代...
  9. csrss.exe病毒的清除方法
  10. Markdown常用数学符号
  11. 教科书级别的软件推荐
  12. redis报错Unrecoverable error: corrupted cluster config file.
  13. Science Robotics | 美国造“自我意识”机器人?还能自我复制?
  14. 【NLP】⚠️学不会打我! 半小时学会基本操作 2⚠️ 关键词
  15. 练习一万小时;2000-5000 小时计划和建议;现在开始!---读《异类》后刚好遇到的一篇文章
  16. linux filp open,诚意请教一个filp_open的问题。
  17. 常见TCP/IP、HTTP协议以及三次握手和四次挥手
  18. mysql主从同步错误:The slave I/O thread stops because master and slave have equal MySQL server UUIDs
  19. 【弹子兵法】四国军棋棋盘、棋子与记谱【基础篇】
  20. python图片转为64位编码形式

热门文章

  1. Hive V1.x以及V2.x安装步骤
  2. java生成pdf图表_开发员指南:使用Java图表转换为PDF/JPG等图像
  3. 华为计算机变色,华为新机子大换血,大屏而且还能变色!
  4. JAVA调用SAP ODATA服务
  5. linux限制pptp连接数_Linux PPTP 连接数限制
  6. 开车自驾游必备的三样“神器” 及这12个夺命开车坏习惯必改
  7. 物联网工程实践日报表11
  8. 2023华为OD面试手撕代码真题
  9. 主键索引和唯一索引的区别与创建规则
  10. .net OWIN 实现 OAuth2.0