python 网格形变_网格形变

简介

网格形变如果算法优秀的话,那么动画里就会大量应用。

先提供一个比较简单的拉普拉斯网格形变简介

参考文献

核心公式

\(\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(\begin1 & -\frac{1}{\text } & 0 & 0 \ -\frac{1}{\text } & 1 & 0 & 0 \ 0 & 0 & 1 & 0 \ 0 & 0 & 0 & 1\end\right)$

固定点矩阵计算:

FixedPointMatrix$=\left(\begin0 & 0 & 1 & 0 \ 0 & 1 & 0 & 0 \ 0 & 0 & 0 & 1 \ 1 & 0 & 0 & 0\end\right)$

就是某个固定点是选中的,那么在那一行的idx(openmesh中的属性)就会标为1

oneEditPoint 同上

(newPointPosition) 就是n*3的矩阵(待求解)

LaplacianPointMatrix 表示的是$$\delta_=\frac{\sum_{j \in N(i)} w_\left(V_-V_\right)}{\sum_{j \in N(i)} w_}$$ 所代表的点的微分坐标

简化表示可以认为w权重为1

FixedPointPosionMatrix 表示的是固定点的坐标未变

YouWantThisPointToMoveWhere 你想要把你的编辑点坐标移动的位置

原理分析

说实话原理不是很清楚,

个人理解

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

code

TIPS

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值