zoukankan      html  css  js  c++  java
  • 骨骼蒙皮动画算法(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,而其同时满足设定的限制条件,因此作者将这种权重命名为有界双调和权重。

    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

     

     

     

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

      利用对偶四元数来代替旋转矩阵可以解决上述塌陷问题。常规四元数只能表示空间旋转变换,它的数学形式为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*分别代表对偶四元数及对应的共轭对偶四元数。

     

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

  • 相关阅读:
    Eclipse慢慢学会的快捷键
    换行和flush()
    接口Interface
    对象的转型
    抽象类和抽象函数
    BufferedReader
    FileInputStream和FileReader
    Unable to instantiate receiver XXXXXX
    声明对象和定义数组
    Eclipse中文乱码问题
  • 原文地址:https://www.cnblogs.com/shushen/p/5987280.html
Copyright © 2011-2022 走看看