交互式变形是编辑几何模型的重要手段,目前出现了许多实时、直观的交互式变形方法。本文介绍一种利用线性混合蒙皮(Linear Blending Skinning,LBS)技术来实现网格变形的方法,线性混合蒙皮技术由于计算速度优势使得其成为商业应用中最主要的方法之一。蒙皮算法一般分两步:第一步用户在几何模型上选择一系列控制单元,并计算几何模型受这些控制单元的影响权重;第二步用户拖动控制单元,几何模型随控制单元发生相应变形。第一步中权重的计算决定了蒙皮算法的效果,如果想要几何模型发生自然、高质量的形变,必须得有一种高效准确的权重计算方法。

  文章[Jacobson et al. 2011]介绍了一种有界双调和权重(Bounded Biharmonic Weights,BBW)的计算方法,该权重能使得几何模型发生平滑变形。定义控制单元为H∈Ω,j = 1, … , m,每个控制单元H的仿射变换为T,对于顶点p∈Ω,线性混合蒙皮算法给出变形后p的位置为控制单元仿射变换T的加权线性组合:

骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP

其中w(p)为顶点p受控制单元H的权重影响。

  对于有界双调和权重w的计算方法,其数学表达式如下,最小化问题可以转化为求解对应的Euler-Lagrange方程,即双调和方程Δw = 0,而其同时满足设定的限制条件,因此作者将这种权重命名为有界双调和权重。

骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP

function U = lbs(V,T,W)
% Inputs:
% V list of vertex positions
% T list of transformations for each controls point, for 2D:
% by by #controls, for 3D: x by # controls
% W weights, # vertices by # handles matrix of weights
% Output:
% U list of new vertex positions dim = size(V,);
m = size(T,);
TT = reshape(permute(T,[,,]),[dim+,dim*m])';
VV = [V(:,:dim)'; ones(1,size(V,1))];
VVV = reshape((TT*VV)',[size(V,1),dim,m]);
WW = permute(repmat(W,[,,dim]),[,,]);
U = sum(WW.*VVV,);
end

骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP 骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP

骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP 骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP

骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP 骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP

  但是即使计算得到精确的权重值之后,线性混合蒙皮算法仍会出现皮肤塌陷的问题。例如假设两个控制单元分别绕z轴旋转角度-π/2和π/2,并且这两个控制单元对某个计算点的影响权重是相同的,都为0.5。直觉上我们希望得到一个单位旋转矩阵,但是实际上得到的是一个x方向和y方向退化的旋转矩阵,这就使得在该计算点处会出现塌陷现象。

骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP

  利用对偶四元数来代替旋转矩阵可以解决上述塌陷问题。常规四元数只能表示空间旋转变换,它的数学形式为q = [cos(θ/2) nsin(θ/2) nsin(θ/2) nsin(θ/2)],其中单位向量[n n n]表示通过原点的旋转轴,θ表示旋转角度。对偶数的概念类似于复数,它的数学形式为 = r + dε并满足ε = 0,其中rd分别表示实部和对偶部,ε表示对偶算子。对偶四元数是实部和对偶部都为四元数的对偶数,又可称为八元数。常规四元数只能表示空间旋转,而对偶四元数可以表示空间任意旋转和平移的组合。

  对偶四元数的数学形式为:

骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP

其中qq都为四元数,ε表示对偶算子。

  利用旋转和平移信息计算对偶四元数的方法如下:

骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP

其中r代表旋转单位四元数,t代表平移四元数,t = [0 t t t]。

  利用对偶四元数计算旋转和平移的方法如下:

骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP

  当对偶四元数仅表示空间旋转变换时,其表达式为:

骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP

  当对偶四元数仅表示空间平移变换时,其表达式为:

骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP

  利用对偶四元数对点p进行转换后得到点p

骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP

其中qq分别代表对偶四元数及对应的共轭对偶四元数。

骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP 骨骼蒙皮动画算法(Linear Blending Skinning)-LMLPHP

本文为原创,转载请注明出处:http://www.cnblogs.com/shushen

参考文献:

[1] Alec Jacobson, Ilya Baran, Jovan Popović, and Olga Sorkine. 2011. Bounded biharmonic weights for real-time deformation. ACM Trans. Graph. 30, 4, Article 78 (July 2011), 8 pages.

[2] Ladislav Kavan, Steven Collins, Jiří Žára, and Carol O'Sullivan. 2008. Geometric skinning with approximate dual quaternion blending. ACM Trans. Graph. 27, 4, Article 105 (November 2008), 23 pages.

05-07 15:44