如何在虚拟世界里灵活运用你的双手?手势交互方案、算法和场景全解析(13)

此论文用了 linear blend skinning(一种骨骼蒙皮动画算法):意思就是给骨架蒙上一层皮肤 , 并让皮肤跟随骨骼运动一起变化 , 多用于动画领域 。

先把 pose 转换成对应的 mesh(下图左侧) , 在进一步转换成光滑曲面模型(下图右侧) 。 我们可以理解为 pose 是自变量 , 几何模型可由 pose 算出 , 且几何模型与 pose 一一对应 。

手部几何模型

    

输入的手部深度图可转化为点云 , 此点云就相当于在真实的手表面上采集到的一些 3D 点 , 如下图中的红点和蓝点:

这样就可以定义损失函数为点云中的点到模型表面的距离(上图中的红线) , 以此描述深度图和pose的相似度 。 损失函数的输入是深度图和 pose , 输出是差异度 。 损失函数的输出值越小 , 说明输入的深度图和pose越相似 。

因此 , 只要在搜索空间中找到令损失函数最小的 pose 即为所求的pose 。 但因搜索空间不能写成解析形式 , 没法一次性求出损失函数的最小值 , 通常只能用数值计算方法 , 如PSO , ICP等 , 不断迭代计算得到最优解 。

推荐阅读