经过好几个月的实验,尝试了非常多的数学包,一个月前用硬解方法实现啦laplace,但是变形效果不是很好,硬约束点导致约束点变形过大,从而整个模型不连续,最近找了很多数学求解包,都没能很好的在window下面运行,最终还是采用vc联合matlab的方式求解大型稀疏矩阵的方式来实现软解的laplace编辑(具体用法可以参考前面的文章),laplace的变形的原理可以参考EuroGraph2004的paper和Sig04的paper(possion编辑,其实跟laplace是一个原理),下面给一些具体的变形结果(图中绿色模型为变形后的模型,蓝色为原始模型,红色点为固定点和编辑点):
blade model has 29268 points
blade model has 2906 points
findisk model has 6475 points
screw model has 29154 points
intersect model has 122724 points
实验结果证明,调用matlab里面的dll的求解稀疏矩阵效率也并非非常差,前面结果model都是几千到一万个点的模型,稀疏矩阵也是一万*一万左右的,大概在几秒-10几秒的时间内能够出结果。相对于taucs等专业矩阵求解包来说也不算慢,也就是几秒的差距吧。但是在最后一个模型12w*12w多的稀疏矩阵求解时,效率就慢了不少,估计需要一分多种,不过还可以接受吧,可以满足研究求解的要求,实际运用的话,估计还是可以利用相关的专业数学包求解测试一下,加速的话可以考虑并行化的openMP和cuda。