基本问题

普遍的应用是对一个三维物体推动或拉动某一处,求出三维物体最后会变形成什么样。

拉普拉斯估计法Python 拉普拉斯的计算_拉普拉斯估计法Python


如上图所示:以一个表面为例,S是一个完整的三角网格。现在固定住最外圈的F部分。顶部黄色H是可以拖动的部分,现在将H拖动到某个地方,问整个网格形变最终结果。

拉普拉斯算子

拉普拉斯估计法Python 拉普拉斯的计算_算法_02


拉普拉斯估计法Python 拉普拉斯的计算_算法_03

都有一个拉普拉斯算子

拉普拉斯估计法Python 拉普拉斯的计算_laplace operator_04

拉普拉斯估计法Python 拉普拉斯的计算_算法_05

拉普拉斯估计法Python 拉普拉斯的计算_拉普拉斯估计法Python_06

拉普拉斯估计法Python 拉普拉斯的计算_laplace operator_07

拉普拉斯估计法Python 拉普拉斯的计算_laplace operator_08

拉普拉斯算子蕴含着曲面的局部特征信息,网格曲面的拉普拉斯坐标其在网格变形、网格平滑、网格去噪等方面都有着重要的应用。

能量方程构建

顶点有n个
拉普拉斯估计法Python 拉普拉斯的计算_拉普拉斯估计法Python_09
其中前m个顶点属于S,H区域。
拉普拉斯估计法Python 拉普拉斯的计算_laplace operator_10

移动以后的点为
拉普拉斯估计法Python 拉普拉斯的计算_laplace operator_11
其中前m个顶点属于S,H区域。

拉普拉斯估计法Python 拉普拉斯的计算_线性代数_12

按照拉普拉斯算子定义,我们希望变形后拉普拉斯算子尽量不变。同时s,h区域的点要尽量接近给定的点。

要使下列式子尽量满足

拉普拉斯估计法Python 拉普拉斯的计算_拉普拉斯估计法Python_13
拉普拉斯估计法Python 拉普拉斯的计算_算法_14

能量方程如下

拉普拉斯估计法Python 拉普拉斯的计算_拉普拉斯估计法Python_15

拉普拉斯估计法Python 拉普拉斯的计算_拉普拉斯估计法Python_16

我们如果可以解出上述式子使得能量最小,那么就确定了最终的点的位置了。

对式子进行拆分,可以发现是一个最小二乘问题。

可以对x,y,z进行拆分得到下式

拉普拉斯估计法Python 拉普拉斯的计算_线性代数_17

拉普拉斯估计法Python 拉普拉斯的计算_拉普拉斯估计法Python_18

上面x,y,z是独立的可以分开求解

拉普拉斯估计法Python 拉普拉斯的计算_算法_19

向量T一共有(n+m)行
拉普拉斯估计法Python 拉普拉斯的计算_拉普拉斯估计法Python_20

拉普拉斯估计法Python 拉普拉斯的计算_拉普拉斯估计法Python_21

拉普拉斯估计法Python 拉普拉斯的计算_拉普拉斯估计法Python_22

拉普拉斯估计法Python 拉普拉斯的计算_矩阵_23

最小二乘问题求解

设有一个f(x,y,z)函数,求最小值,最简单的方法就是求驻点。
求驻点直接求偏导,并令其等于0即可。
拉普拉斯估计法Python 拉普拉斯的计算_线性代数_24

拉普拉斯估计法Python 拉普拉斯的计算_线性代数_25

拉普拉斯估计法Python 拉普拉斯的计算_线性代数_26

拉普拉斯估计法Python 拉普拉斯的计算_算法_27

拉普拉斯估计法Python 拉普拉斯的计算_算法_28

只要对上述4项分别求导即可。

拉普拉斯估计法Python 拉普拉斯的计算_算法_29

拉普拉斯估计法Python 拉普拉斯的计算_矩阵_30

拉普拉斯估计法Python 拉普拉斯的计算_算法_31

同理其他求导如下

拉普拉斯估计法Python 拉普拉斯的计算_laplace operator_32

拉普拉斯估计法Python 拉普拉斯的计算_矩阵_33

拉普拉斯估计法Python 拉普拉斯的计算_算法_28

拉普拉斯估计法Python 拉普拉斯的计算_laplace operator_35

拉普拉斯估计法Python 拉普拉斯的计算_laplace operator_36

令导数为0解得

拉普拉斯估计法Python 拉普拉斯的计算_线性代数_37

应用

  1. 物体变形,物体挤压变形,旋转变形
  2. 模型配准问题,游戏皮肤覆盖,衣服穿着,材料包裹
  3. 动画制作