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

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

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

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

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

骨骼蒙皮动画算法(Linear Blending Skinning)_第1张图片

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

骨骼蒙皮动画算法(Linear Blending Skinning)_第2张图片 骨骼蒙皮动画算法(Linear Blending Skinning)_第3张图片

骨骼蒙皮动画算法(Linear Blending Skinning)_第4张图片 骨骼蒙皮动画算法(Linear Blending Skinning)_第5张图片

骨骼蒙皮动画算法(Linear Blending Skinning)_第6张图片 骨骼蒙皮动画算法(Linear Blending Skinning)_第7张图片

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

骨骼蒙皮动画算法(Linear Blending Skinning)_第8张图片

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

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

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

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

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

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

 

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

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

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

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

骨骼蒙皮动画算法(Linear Blending Skinning)_第9张图片 骨骼蒙皮动画算法(Linear Blending Skinning)_第10张图片

本文为原创,转载请注明出处: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.

你可能感兴趣的:(骨骼蒙皮动画算法(Linear Blending Skinning))