网格参数化,Mesh parameterization processing

devtools/2025/1/19 7:20:42/

目录

  • 前言
  • 1.Barycentric mapping
    • Mapping 步骤
    • 实例
  • 2.Laplace mapping
  • 3.Laplace improvement
  • 4.Coding


前言

多边形网格的类型多种多样。本文所实现的网格多边形参数化是指三角多边形。
不同的表示被用来编码三维物体的几何形状。选择一种表示方式取决于在上游的获取过程和下游的应用程序。然而,最容易重建的表示是在大多数情况下不是应用程序的最佳情况。参数化的概念是指为对象附加了一个“几何坐标系统”。
本文介绍了计算这种参数表示的方法对于给定的多边形网格。这有助于从一种表示转换为另一种表示。例如,可以转换网格模型变成一个分段的样条曲面,也就是这种类型的表示法用于计算机辅助设计(CAD)软件包。在某种意义上,这是提取了几何的“方程”,或者构造了几何的抽象几何:一旦几何被抽象,将其重新实例化为可选的表示变得更容易。
一个参数化的例子如下:通过对空间几何的重新建模,构造新了二维参数化对象。其作用在于完成了对三维mesh的参数化过程,这对于一些问题,如在三维mesh进行一些复杂操作时,我们可以将其转化为对二维对象,在其参数空间进行处理。最后将处理的结果转化到三维mesh。
在这里插入图片描述
下面阐述了3中parametrization mapping 的方式。

1.Barycentric mapping

Mapping 步骤

Reference: W. Tutte. “Convex Representation of Graphs.”
他描述了一种方式,从Mesh 几何空到参数空间的映射方式,可以通过下式构建。

这里的i是指顶点的序列i,共有N个顶点。
该问题也被考虑为(对于坐标 x j , y j x_j,y_j xj,yj),系数矩阵C决定了参数空间网格的形状:
在这里插入图片描述
同时也给出了 λ \lambda λ的取值:
在这里插入图片描述
在上述的参数下,可以完成整个参数化的过程,定义为:
在这里插入图片描述

在文中证明该结论:给定一个与三角形曲面,如果边界顶点处的(u, v)坐标位于凸多边形上,如果内部顶点的坐标是其相邻顶点的凸组合,则(u, v)坐标形成有效的参数化,即无自交的参数化。并建议 λ i j = 1 / d i \lambda_{ij}=1/d_i λij=1/di,他表示了质心mapping的参数化过程。具体取值如下:
在这里插入图片描述
具体求解过程考虑为对一线性系统的求解,但对于大型mesh而言,这并不适用。可以考虑采用高斯赛德尔迭代求解。Gauss-Seidel更新方程如下:
在这里插入图片描述

实例

这里通过一个实际算例展示其mapping 过程。
该图为一个三维狮头mesh,red lines represent the boundary edge.
在这里插入图片描述
This gif describes the algorithm update process, using the barycentric mapping.
请添加图片描述

2.Laplace mapping

拉普拉斯变换,或拉普拉斯算子,是多元函数二阶导数的推广。二维的Discrete Laplace 过程可以写为:
在这里插入图片描述
根据其形式,可以考虑为对 函数x,y,G2变化的一种描述。他也经常被应用在图像处理等一些应用中,被简化为laplace operator。
对于三维mesh case, the equation can be define as:
在这里插入图片描述
A是指点i的邻域空间。省略其推导过程,这里直接给出结论(Ref: M. Eck, T. DeRose, T. Duchamp, H. Hoppe, M. Lounsbery, and W. Stuetzle. “Multiresolution Analysis of Arbitrary Meshes.”):
在这里插入图片描述
因此,其A矩阵值可以表示为:
在这里插入图片描述
依旧采用Gauss-Seidel algorithm, 对1中问题求解如下: fig 2

3.Laplace improvement

由二中解决方案,可以看出,Laplace 对该三角mesh的参数化过程并不如barycentric mapping. 究其原因是因为钝角三角问题。导致矩阵A值出现部分负值。这个问题一般可以通过对mesh 的细分处理,替换掉所有的钝角mesh,然后再带入LapLace mapping 过程。而在在一些改进方案中从新定义不同的系数值如下:
在这里插入图片描述
算法更新:(由下图可以看出算法解决了Laplace-Beltrami operator的缺陷,不再有self-interesct mesh)
请添加图片描述

4.Coding

待续…


http://www.ppmy.cn/devtools/151769.html

相关文章

sqlfather笔记

这里简单记录写学习鱼皮sqlfather项目的笔记,以供以后学习。 运行 将前后端项目clone到本地后,修改对应配置文件运行项目。 后端 1.配置好mysql后运行这个sql文件建立对应的表。 2.修改数据库密码 3.修改完后运行启动类即可 4. 启动结果 5.查看A…

2.3 表示学习与嵌入(Embedding):理解和优化数据表示

表示学习与嵌入(Embedding):理解和优化数据表示 在计算机科学和人工智能领域,表示学习(Representation Learning)和嵌入(Embedding)是两项关键技术。它们通过将复杂的数据转化为更易于计算机处理的形式,帮助我们提高机器学习模型的性能,特别是在处理高维复杂数据时,…

【学习总结|DAY032】后端Web实战:登录认证

在 Web 后端开发中,登录认证是保障系统安全和用户数据隐私的关键环节。本文将结合实际开发案例,深入探讨登录功能与登录校验的实现思路和技术细节,希望能帮助读者更好地掌握这一重要知识点。 一、登录功能实现 1.1 思路分析 登录功能的核心…

抢十八游戏

前言 我国民国一直流传着一个名叫“抢十八”的抢数游戏:参与游戏的两人从1开始轮流报数,每次至少报1个数,最多报2个数,每人报的每个数不得与自已报过的或对方报过的重复,也不得跳过任何一个数。谁先报到18&#xff0c…

使用python+pytest+requests完成自动化接口测试(包括html报告的生成和日志记录以及层级的封装(包括调用Json文件))

一、API的选择 我们进行接口测试需要API文档和系统,我们选择JSONPlaceholder免费API,因为它是一个非常适合进行接口测试、API 测试和学习的工具。它免费、易于使用、无需认证,能够快速帮助开发者模拟常见的接口操作(增、删、改、…

【Python】使用 selenium模拟敲键盘输入的方法汇总

我在使用selenium弄模拟登陆,需要模拟输入账号和密码,往往都使用 selenium 的send_keys 函数。 可是我昨天在写测试的时候,有时候有些网站,居然使用send_keys 函数,无法在输入框里输入文字! 在Python中&a…

【云岚到家】-day03-门户缓存实现实战

【云岚到家】-day03-门户缓存实现实战 1.定时任务更新缓存 1.1 搭建XXL-JOB环境 1.1.1 分布式调度平台XXL-JOB介绍 对于开通区域列表的缓存数据需要由定时任务每天凌晨更新缓存,如何实现定时任务呢? 1.使用jdk提供的Timer定时器 示例代码如下&#xf…

python批量doc转pdf调用提示库未注册

使用的是pywin32工具包! python代码 from win32com.client import Dispatch, constants, gencache, DispatchEx.....gencache.EnsureModule({00020905-0000-0000-C000-000000000046}, 0, 8, 4) 运行报错 pywintypes.com_error: (-2147319779, 库没有注册。, Non…