Mesh模型的Laplace Deformation(网格形变 - 拉普拉斯形变) - 2

     https://blog.csdn.net/Bob__yuan/article/details/81778875,这里是我的第一篇Laplace形变的学习记录,在这第二篇学习记录中,想将做出的几个结果放上来看一下(红色是固定区域,绿色是移动区域,由于上一篇文章说了,Laplace Deformation是可以三个轴分着计算的,所以只是将绿色区域在Y方向上进行拖动,所有点的坐标也只更新Y坐标):

    我目前是先实现的最简单的Laplace Deformation,就是点的Laplace坐标就是单纯的用周围一圈点的坐标平均(同样的权重)然后和该点坐标做减法。从结果上看还是比较对的,为了检查在内存有洞的情况下是否会影响,加的第二张图的测试。

    但是从结果也可以看出一个很大的问题,就是在初始模型是平面(模型上所有点的Laplace坐标的Y坐标都是0!!),将选中的绿色区域向下拖动(向Y方向拖动)的时候,模型的形变结果和预期基本是完全一致的,但是,当模型初始形状不是平面,而是一个飞碟形状的时候(如下图),可以看到模型的形变结果,虽然大体上看是没有问题的,也很平滑,但是在固定区域的边上,那一圈点是向着拖动方向的反方向形变的!!

    思考了一下,又重新检查了一下实现代码,感觉应该不是代码或者矩阵的问题,应该是Laplace Deformation自有的属性。因为Laplace Deformation会趋向于保持所有点的Laplace坐标在形变前后不变,形变矩阵也是利用这个条件进行计算的。由于只是在一个方向上有坐标的变化,所以可以直接从侧面来看,飞碟形状的模型形变过程就是下图(示意图)所示:

    天呐好难看,不过意思到了,在网上没有找到讲解这个结果是不是Laplace形变的计算方式决定的,我也没有找到自己哪里写错了。还希望看到的大佬们能够指点迷津。跪谢!!! 

    主要问题其实不是上边的结果,而且下边这个结果。正常的人脸,形变成这样也是没谁了。。

    不许笑!!

猜你喜欢

转载自blog.csdn.net/Bob__yuan/article/details/82191363