三维网格形变算法(Laplacian-Based Deformation)
网格上顶点的Laplace坐标(均匀权重)定义为
:,其中di为顶点vi的1环邻域顶点数。
网格Laplace坐标可以用矩阵形式表示:△=LV,其中
,那么根据网格的Laplace坐标通过求解稀疏线性方程组可以得到网格的顶点坐标。
基于网格Laplace形变算法的思想:网格上顶点的Laplace坐标作为网格的细节特征,其在网格形变前后的局部坐标系内不发生变化。Laplace形变问题可以用如下数学优化形式表达,那么问题的关键是如何得到网格形变后的Laplace坐标,或者说是每个顶点Laplace坐标的变换Ti。

文章[Lipman et al. 2004]形变算法主要包括以下步骤:
1.在初始网格顶点上建立局部坐标系,先利用原始Laplace坐标将网格进行形变;
2.在形变后的网格顶点上建立局部坐标系,根据形变前后Laplace坐标在局部坐标系内不变,估计形变后网格顶点的Laplace坐标,如下:
δ(vj)=αnj+βuji+γ(nj×uji)
δ(vj’)=αnj’+βuji’+γ(nj’×uji’)
其中:nj和nj’为形变前后顶点vj的法向,uji和uji’为形变前后边ji在顶点vj切平面内的投影方向,δ(vj)和δ(vj’)为形变前后顶点vj的Laplace坐标。
3.根据编辑后的Laplace坐标求解形变后网格的顶点坐标。
步骤2和步骤3可以进行迭代。
算法效果:拖动蓝色控制点后,发现随着算法迭代次数的增加,网格表面细节特征逐渐恢复。




文章[Sorkine et al. 2004]形变算法是将优化表达式中Ti表示成vi’相关的形式,这样就可以直接求解得到形变后网格顶点坐标vi’,不需要迭代求解,具体过程如下:
Ti在小角度情况下可以近似为:
,将Ti表示vi’线性相关的形式:

其中:
。
这样Ti就表示成了vi’线性相关的形式,然后根据优化表达式通过最小二乘法即可求得vi’。
算法效果:蓝色控制点从下向上拖拽时的网格形变效果。

前文介绍的Possion形变和Laplace形变是基于网格表面的形变,在大尺度网格形变时,算法不保证体图细节。文章[Zhou et al. 05]提出了基于体图的Laplace形变算法,对于输入网格M,构造两种体图:填充网格内部的图gin用来防止大尺度形变时不自然的体积变化;覆盖网格外侧的图gout用来防止局部自交。

蓝色为输入网格M;红色为填充网格内部的图gin;绿色为覆盖网格外侧的图gout
为了平衡保持网格表面几何细节和保持体图几何细节两个目标,优化函数修改为以下形式:

其中,图g的前n个点就是网格M的点。LM是网格的离散Laplace算子;g’是去掉M中的边之后的g的子图;对网格M中的点,εi(1≤i≤n)是形变后网格的Laplace坐标;对子图g’中的点,δi(1≤i≤N)是形变后体图的Laplace坐标。形变能量分为三个部分,分别刻画保持表面几何细节、满足用户指定约束和保持体图细节的程度。
算法效果:Possion形变不保持体图细节,Volumetric laplacian形变保持体图细节。


本文为原创,转载请注明出处:http://www.cnblogs.com/shushen。
参考文献:
[1] Y. Lipman, O. Sorkine, D. Cohen-Or, D. Levin, C. Rossl, and H.-P. Seidel. "Differential Coordinates for Interactive Mesh Editing." In Proc. of Shape Modeling International, pp.181-90. Washington, DC: IEEE Computer Society, 2004.
[2] O. Sorkine, D. Cohen-Or, Y. Lipman, M. Alexa, C. Rossl, and H.-P. Seidel. "Laplacian Surface Editing." In Proc. of Eurographics Symposium on Geometry Processing, pp. 179-88. Aire-la-Ville, Switzerland: Eurographics Association, 2004.
[3] K. Zhou, J. Huang, J. Snyder, X. Liu, H. Bao, B. Guo, and H.-Y.Shum. "Large Mesh Deformation Using the Volumetric Graph Laplacian." ACM Transactions on Graphics (Proc. SIGGRAPH) 24:3 (2005), 496-503.
[4] 黄劲. 大尺度几何形变理论与方法[D]. 浙江大学, 2007.
三维网格形变算法(Laplacian-Based Deformation)的更多相关文章
- 三维网格形变算法(Gradient-Based Deformation)
将三角网格上的顶点坐标(x,y,z)看作3个独立的标量场,那么网格上每个三角片都存在3个独立的梯度场.该梯度场是网格的微分属性,相当于网格的特征,在形变过程中随控制点集的移动而变化.那么当用户拖拽网格 ...
- 三维网格形变算法(Linear rotation-invariant coordinates和As-Rigid-As-Possible)
在三维网格形变算法中,个人比较喜欢下面两个算法,算法的效果都比较不错, 不同的是文章[Lipman et al. 2005]算法对控制点平移不太敏感.下面分别介绍这两个算法: 文章[Lipman et ...
- 三维动画形变算法(Laplacian-Based Deformation)
网格上顶点的Laplace坐标(均匀权重)定义为:,其中di为顶点vi的1环邻域顶点数. 网格Laplace坐标可以用矩阵形式表示:△=LV,其中,那么根据网格的Laplace坐标通过求解稀疏线性方程 ...
- 高阶Laplace曲面形变算法(Polyharmonic Deformation)
数学上曲面的连续光滑形变可以通过最小化能量函数来建模得到,其中能量函数用来调节曲面的拉伸或弯曲程度,那么能量函数最小化同时满足所有边界条件的最优解就是待求曲面. 能量函数通常是二次函数形式: 其中S* ...
- 三维动画形变算法(Gradient-Based Deformation)
将三角网格上的顶点坐标(x,y,z)看作3个独立的标量场,那么网格上每个三角片都存在3个独立的梯度场.该梯度场是网格的微分属性,相当于网格的特征,在形变过程中随控制点集的移动而变化.那么当用户拖拽网格 ...
- 三维动画形变算法(Linear rotation-invariant coordinates和As-Rigid-As-Possible)
在三维网格形变算法中,个人比较喜欢下面两个算法,算法的效果都比较不错, 不同的是文章[Lipman et al. 2005]算法对控制点平移不太敏感.下面分别介绍这两个算法: 文章[Lipman et ...
- 三维动画形变算法(Mixed Finite Elements)
混合有限元方法通入引入辅助变量后可以将高阶微分问题变成一系列低阶微分问题的组合.在三维网格形变问题中,我们考虑如下泛函极值问题: 其中u: Ω0 → R3是变形体的空间坐标,上述泛函极值问题对应的欧拉 ...
- 基于谱聚类的三维网格分割算法(Spectral Clustering)
谱聚类(Spectral Clustering)是一种广泛使用的数据聚类算法,[Liu et al. 2004]基于谱聚类算法首次提出了一种三维网格分割方法.该方法首先构建一个相似矩阵用于记录网格上相 ...
- 三维网格分割算法(Random Walks)
首先以一维随机游走(1D Random Walks)为例来介绍下随机游走(Random Walks)算法,如下图所示,从某点出发,随机向左右移动,向左和向右的概率相同,都为1/2,并且到达0点或N点则 ...
随机推荐
- Verilog学习笔记简单功能实现(一)...............D触发器
module D_flop(data,clk,clr,q,qb); input data,clk,clr; output q,qb; wire a,b,c,d,e,f,ndata,nclk; nand ...
- CentOS常用指令
创建文件: 如touch a.txt 创建文件夹: mkdir -p 文件夹名,当文件夹不存在时候,创建这个文件夹 文件重命名: 把文件text.php得命名为index.php,可以是rename ...
- [小北De编程手记] : Selenium For C# 教程目录
写<Selnium For C#>系列文章的初衷是因为有很多朋友问我应该从哪里开始学习自动化测试,于是就为大家写下了这个系列的文章,希望对你有些帮助吧.而我想表达的是Selenium(同时 ...
- log4j.xml 配置参数属性level使用心得
jdbc.sqlonly 只显示执行的sql语句.info级才可以显示,debug增加显示java源代码位置. jdbc.sqltiming 显示执行的sql语句以及语句执行时间, ...
- SharpGL学习笔记(十五) 纹理映射
纹理映射非常实用,在游戏场景中已经无所不在了. 一个较少的多边形构成的模形,配合好的纹理贴图进行映射,可以得到逼真的效果.游戏中的天空,地面,墙面,和植物都是纹理贴图进行映射的. 例如最终幻想8的男女 ...
- 改变mvc web api 支持android ,ios ,ajax等方式跨域调用
公司一个移动后端的项目用到了 webapi 项目搭建到外网环境共app开发者调用测试接口时遇到了一个问题 接口不允许跨域调用 .查阅资料明白 同源策略原则根据请求报头值 Origin 与回应报头值 A ...
- 关于字符串replace方法第二个参数探究
网上有关replace的文章很多了,这里主要聊聊它的第二个参数.阅读本文需要对replace方法有一定了解.W3school=>replace 我们要把一段字符串中的某些指定字符替换掉,第一时间 ...
- C语言位运算详解
位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整形操作数,即只能用于带符号或无符号的char.short.int与long类型 ...
- 【读书笔记】iOS-截屏功能的实现。
一,整个工程文件. 二,代码 ViewController.m #import "ViewController.h" #import <QuartzCore/QuartzCo ...
- 系统在某些情况下会自动调节UIScrollView的contentInset
出现情景 如果一个控制器(ViewController)被导航控制器管理,并且该控制器的第一个子控件是UIScrollView,系统默认会调节UIScrollView的contentInset UIE ...