简介

网格形变如果算法优秀的话,那么动画里就会大量应用。
先提供一个比较简单的拉普拉斯网格形变简介

参考文献

https://www.cse.iitb.ac.in/~cs749/spr2017/lecs/18_laplace.pdf
https://blog.csdn.net/qq_31804159/article/details/103409465

核心公式

\(\left(\begin{array}{c}\text {LaplacianMatrix} \\ \text {FixedPointMatrix} \\ \text {oneEditPoint}\end{array}\right) *(\text {newPointPosition})=\left(\begin{array}{c}\text {LaplacianPointMatrix} \\ \text {FixedPointPosionMatrix} \\ \text {YouWantThisPointToMoveWhere}\end{array}\right)\)

分步公式简介

拉普拉斯矩阵的计算公式:
注:矩阵的大小是示例
对于每个点如果他和某个点相互连接的话,那么计算他的1邻域点的个数
LaplacianMatrix\(=\left(\begin{array}{cccc}1 & -\frac{1}{\text {neighborNumber}} & 0 & 0 \\ -\frac{1}{\text {neighborNumber}} & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1\end{array}\right)\)
固定点矩阵计算:
FixedPointMatrix\(=\left(\begin{array}{cccc}0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 0\end{array}\right)\)
就是某个固定点是选中的,那么在那一行的idx(openmesh中的属性)就会标为1
oneEditPoint 同上
(newPointPosition) 就是n*3的矩阵(待求解)
LaplacianPointMatrix 表示的是$$\delta_{i}=\frac{\sum_{j \in N(i)} w_{i j}\left(V_{i}-V_{j}\right)}{\sum_{j \in N(i)} w_{i j}}$$ 所代表的点的微分坐标
简化表示可以认为w权重为1
FixedPointPosionMatrix 表示的是固定点的坐标未变
YouWantThisPointToMoveWhere 你想要把你的编辑点坐标移动的位置

原理分析

说实话原理不是很清楚,

个人理解

微分坐标其实保存的信息就是某个点的一邻域的局部信息,固定点就是约束,然后在形变的过程中尽量保证某个点的局部信息不变。

code

https://github.com/lishaohsuai/digital_geo

TIPS

软件只能对 bunmy 模型进行形变 因为没有做好交互功能。

posted on 2020-06-01 22:56  HDU李少帅  阅读(348)  评论(0编辑  收藏  举报