网格上顶点的Laplace坐标(均匀权重)定义为:,其中di为顶点vi的1环邻域顶点数。

  网格Laplace坐标可以用矩阵形式表示:△=LV,其中,那么根据网格的Laplace坐标通过求解稀疏线性方程组可以得到网格的顶点坐标。

  基于网格Laplace形变算法的思想:网格上顶点的Laplace坐标作为网格的细节特征,其在网格形变前后的局部坐标系内不发生变化。Laplace形变问题可以用如下数学优化形式表达,那么问题的关键是如何得到网格形变后的Laplace坐标,或者说是每个顶点Laplace坐标的变换Ti

  文章[Lipman et al. 2004]形变算法主要包括以下步骤:

  1.在初始网格顶点上建立局部坐标系,先利用原始Laplace坐标将网格进行形变;

  2.在形变后的网格顶点上建立局部坐标系,根据形变前后Laplace坐标在局部坐标系内不变,估计形变后网格顶点的Laplace坐标,如下:

δ(vj)=αnjuji+γ(nj×uji)

δ(vj)=αnjuji+γ(nj×uji)

其中:njnj为形变前后顶点vj的法向,ujiuji为形变前后边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)的更多相关文章

  1. 三维动画形变算法(Gradient-Based Deformation)

    将三角网格上的顶点坐标(x,y,z)看作3个独立的标量场,那么网格上每个三角片都存在3个独立的梯度场.该梯度场是网格的微分属性,相当于网格的特征,在形变过程中随控制点集的移动而变化.那么当用户拖拽网格 ...

  2. 三维动画形变算法(Linear rotation-invariant coordinates和As-Rigid-As-Possible)

    在三维网格形变算法中,个人比较喜欢下面两个算法,算法的效果都比较不错, 不同的是文章[Lipman et al. 2005]算法对控制点平移不太敏感.下面分别介绍这两个算法: 文章[Lipman et ...

  3. 三维动画形变算法(Mixed Finite Elements)

    混合有限元方法通入引入辅助变量后可以将高阶微分问题变成一系列低阶微分问题的组合.在三维网格形变问题中,我们考虑如下泛函极值问题: 其中u: Ω0 → R3是变形体的空间坐标,上述泛函极值问题对应的欧拉 ...

  4. 三维网格形变算法(Laplacian-Based Deformation)

    网格上顶点的Laplace坐标(均匀权重)定义为:,其中di为顶点vi的1环邻域顶点数. 网格Laplace坐标可以用矩阵形式表示:△=LV,其中,那么根据网格的Laplace坐标通过求解稀疏线性方程 ...

  5. 高阶Laplace曲面形变算法(Polyharmonic Deformation)

    数学上曲面的连续光滑形变可以通过最小化能量函数来建模得到,其中能量函数用来调节曲面的拉伸或弯曲程度,那么能量函数最小化同时满足所有边界条件的最优解就是待求曲面. 能量函数通常是二次函数形式: 其中S* ...

  6. 三维网格形变算法(Gradient-Based Deformation)

    将三角网格上的顶点坐标(x,y,z)看作3个独立的标量场,那么网格上每个三角片都存在3个独立的梯度场.该梯度场是网格的微分属性,相当于网格的特征,在形变过程中随控制点集的移动而变化.那么当用户拖拽网格 ...

  7. 在图层上使用CATransform3D制做三维动画-b

    在UIView上,我们可以使用CGAffineTransform来对视图进行:平移(translation),旋转(Rotation),缩 放(scale),倾斜(Invert)操作,但这些操作是没有 ...

  8. Camera三维动画

    一.概述 在Android中说到3D开发,我们首先想到的是OpenGL,但用起来比较复杂繁琐,不适合做应用级别的3D变换.Android为我们提供了一个简化版的3D开发入口:Camera(这里的Cam ...

  9. 三维网格形变算法(Linear rotation-invariant coordinates和As-Rigid-As-Possible)

    在三维网格形变算法中,个人比较喜欢下面两个算法,算法的效果都比较不错, 不同的是文章[Lipman et al. 2005]算法对控制点平移不太敏感.下面分别介绍这两个算法: 文章[Lipman et ...

随机推荐

  1. C#3.0新增功能04 扩展方法

    连载目录    [已更新最新开发文章,点击查看详细] 扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型 ...

  2. rest-frameword框架的基本组件

    序列化 1.models部分 from django.db import models # Create your models here. class Book(models.Model): tit ...

  3. 【MySQL】(四)表

    本篇文章将从InnoDB存储引擎表的逻辑存储及实现开始进行介绍,然后将重点分析表的物理存储特征,即数据在表中是如何组织存放的.简单来说,表就是关于特定实体的数据集合,这也是关系型数据库模型的核心. 1 ...

  4. 什么是WebP以及如何在WordPress中使用WebP图像

    图像通常是缓慢加载网页的最大原因之一.它们不仅减慢了加载时间,而且还可以占用服务器上的大量空间和资源.仔细选择文件类型并压缩它们有助于降低加载速度,但它们只能在图像质量受损之前进行优化.另一种选择是使 ...

  5. linux初学者-网络管理篇

    linux初学者-网络管理篇 linux学习中,网络管理是非常重要的一个内容,本篇将会介绍一些ip.网关.DNS配置的一些基本内容. 1.ip配置 1.1.ip查询  在linux系统中一般可以使用& ...

  6. 一文搞懂List 、List<Object>、List<?>的区别以及<? extends T>与<? super T>的区别

    前段时间看<Java编程思想>泛型时对 <? extends T>与<? super T>很懵逼,接着看到泛型与集合的更蒙蔽,随后又翻开<码出高效>时, ...

  7. JavaScript的面向对象原理之原型链

    二.JavaScript的对象 为了能够清楚的解释这一切,我先从对象讲起.从其他面向对象语言(如Java)而来的人可能认为在JS里的对象也是由类来实例化出来的,并且是由属性和方法组成的. 实际上在JS ...

  8. 知识图谱学习与实践(4)——Protégé使用入门

    1 Protégé简介 Protégé是一个本体建模工具软件,由斯坦福大学基于java语言开发的,属于开放源代码软件.软件主要用于语义网中本体的构建和基于本体的知识应用,是本体构建的核心开发工具,最新 ...

  9. 如何编译生成Linux-C静态链接库

    目标生成的静态库文件为:libnpcp.a 举例:我们有四个文件分别为:npcp.c npcp.h other.h main.c main.h在npcp.c里面#include "other ...

  10. basic

    vmware三种网络类型 bridged(桥接)通过物理主机网卡架设桥,从而连入实际网络,最接近正式网络环境 NAT(地址转换)虚拟机通过宿主机转发地址上网,宿主机ip更改虚拟机不需要改.过程:虚拟机 ...