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

  根据变分法,上式最小化即求解泊松方程:

其中Φ为待求的网格形变后坐标,w为网格形变后的梯度场。

  上式可以进一步表示为求解稀疏线性方程组:

其中L为网格的拉普拉斯算子,b为梯度场w在网格顶点处的散度值。

  问题的关键是如何得到网格形变后的梯度场w,文章[Yu et al. 2004]提到其是通过由控制点集变换的加权运算得到,并且提出了几种不同的加权方式(线性加权,高斯加权等)。另外文章[Zayer et al. 2005]中提到可以在网格内构建一个调和场作为加权系数。

1.离散梯度算子定义:

      假设f是一个分片线性函数,在网格的每个三角片{xi,xj,xk}的顶点处有f(xi)=fi,f(xj)=fj,f(xk)=fk,通过线性插值可以知道f在三角片上每一点处的值为:

  这样f的梯度如下:

其中基函数Φi,Φj,Φk满足Φijk=1,那么它们梯度之和▽Φi+▽Φj+▽Φk=0。所以f的梯度可以写成如下形式:

  经简单计算可以求得▽Φi的表达式是,同样也可以写出▽Φj、▽Φk的表达式,其中⊥表示将向量逆时针旋转90度,A表示三角片的面积。

2.离散散度算子定义:

       设向量值函数w:S→R3,S表示网格,w表示在每个三角片上的向量,那么w在顶点xi处的散度可以定义为:

其中T(xi)表示顶点xi的1环邻域三角片,AT表示三角片T的面积。

3.离散Laplace算子定义:

       将梯度算子表达式代入散度算子表达式可以得到顶点xi处的Laplace算子如下形式:

其中N(xi)表示顶点xi的1环邻域点。

效果:

本文为原创,转载请注明出处:http://www.cnblogs.com/shushen

参考文献:

[1] Y. Yu, K. Zhou, D. Xu, X. Shi, H. Bao, B. Guo, and H.-Y. Shum. "Mesh Editing with Poisson-Based Gradient Field Manipulation." ACM Transactions on Graphics (Proc. SIGGRAPH) 23:3 (2004), 644-51.

[2] R. Zayer, C. Rossl, Z. Karni, and H.-P. Seidel. "Harmonic Guidance for Surface Deformation." Computer Graphics Forum (Proc. Eurographics) 24:3 (2005), 601-10.

[3] 许栋. 微分网格处理技术[D]. 浙江大学, 2006.

[4] 刘昌森. 三角网格曲面上的laplace算子及其应用[D]. 中国科学技术大学, 2012.

三维动画形变算法(Gradient-Based Deformation)的更多相关文章

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

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

  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. 不同版本2.5的Servlet web.xml 头信息

    <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" ...

  2. hdu6406 Taotao Picks Apples(线段树)

    Taotao Picks Apples 题目传送门 解题思路 建立一颗线段树,维护当前区间内的最大值maxx和可摘取的苹果数num.最大值很容易维护,主要是可摘取的苹果数怎么合并.合并左右孩子时,左孩 ...

  3. 程序员的长安十二时辰:Java实现从Google oauth2.0认证调用谷歌内部api

    最近公司在做一个app购买的功能,主要思路就是客户在app上购买套餐以后,Google自动推送消息到Java后端,然后Java后端通过订单的token获取订单信息,保存到数据库. Java后端要获取订 ...

  4. Linux学习笔记06之DNS

    一.DNS概念:Domain Name System(域名系统) 是互联网上作为域名和IP地址相互映射的一个分布式数据库 二.DNS功能: 完成IP地址和域名之间的一个映射 三.DNS分类: 1.静态 ...

  5. 使用Kubeadm创建k8s集群之节点部署(三十一)

    前言 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜像拉取问题)还提供了多种解决方案.不 ...

  6. window下不用安装虚拟机,也可以玩转linux,玩转最新redis

    想要了解redis的最新特性,可是windows下的可以安装的版本最高为3.2,想要验证redis的诸如stream特性的话,就无能为力了. 解决方法之一在windows上安装虚拟机,然后再虚拟机上安 ...

  7. wscript.shell 使用

    <%@ Page Language="VB" validateRequest = "false" aspcompat = "true" ...

  8. Iphone使用过程中遇到的问题

    Q1:同一个Apple ID不同设备之间的通话记录保持同步 解决方法: Step1:"设置"--"电话"--"在其他设备上通话"--选择关闭 ...

  9. Qt基于sqlite数据库的管理小软件

    闲来无事,写了一个基于sqlite的数据库管理小软件. 先上图 中心思想就是: 创建一个数据库 然后每一个分组对应一个数据表 然后遍历该数据表.将名字以treewidgetItem显示出来.添加删除实 ...

  10. Selenium+java - 截图操作

    写在前面 自动化测试过程中,运行失败截图可以很好的帮我们定位问题,因此,截图操作也是我们自动化测试中的一个重要环节. 截图方法 1.通过截图类TakeScreenshout实现截图 特点:截取浏览器窗 ...