三维物体变形方法赋予了模拟物体的动态特性,但是随着物体模型的复杂度慢慢增加,对高质量的实时变形方法也提出了更高的要求。对于高精度的大型三维网格而言,通常会设计一个低精度的子网格,并构建子网格与原始网格之间的映射关系,然后通过控制低精度子网格的变形来驱动高精度原始网格的变形。[Wang et al. 2015]提出了一种线性子网格的构建方法,下面将介绍其主要原理。
通用的网格形变能量函数可以表示成如下二次项形式:
其中A是与网格形状相关的半正定矩阵,SX删选出X中控制点所在的行,H是控制点所在的空间位置。
如果选取二阶Laplacian形变能量函数,那么A = LTM-1L,L是Laplacian矩阵,对于三角网格而言,常用的矩阵L表达式如下:
但是这种定义方式是有缺陷的,它使得在网格内部满足线性光滑,而在网格边界处由于缺失角度信息而非线性光滑。事实上,对于边界顶点i,矩阵L中的行Li计算的是顶点i的拉普拉斯算子(laplacian)减去该点的法向导数(normal derivative),拉普拉斯算子是线性光滑的,而法向导数并不是。为了修复边界缺陷问题,对所有边界点所在的行加上法线导数得到新的线性光滑的Laplacian矩阵:
K = L + N
边界点的法向导数N定义如下:
式中字母的具体含义如下图所示。
对于四面体网格,可以得到类似的定义:
式中字母的具体含义如上图所示。
有了上述理论之后,我们可以将高精度的原始网格通过精简方法得到低精度的子网格,并保证子网格的所有顶点都位于原始网格上,这样以子网格顶点为控制点可以得到子网格与原始网格之间的映射关系。
对于子网格的动态模拟,可以用如下能量函数表示,其由E1和E2两部分组成,其中能量E1使得三维物体在模拟过程中保持细节特征(http://www.cnblogs.com/shushen/p/4977870.html),能量E2则描述了三维物体基于物理模拟的动态特性(http://www.cnblogs.com/shushen/p/5522498.html)。
其中 。
本文为原创,转载请注明出处:http://www.cnblogs.com/shushen。
参考文献:
[1] Yu Wang, Alec Jacobson, Jernej Barbič, and Ladislav Kavan. 2015. Linear subspace design for real-time shape deformation. ACM Trans. Graph. 34, 4, Article 57 (July 2015), 11 pages.
[2] Olga Sorkine and Marc Alexa. 2007. As-rigid-as-possible surface modeling. In Proceedings of the fifth Eurographics symposium on Geometry processing (SGP '07). Eurographics Association, Aire-la-Ville, Switzerland, Switzerland, 109-116.