资源行业动态教你在Unity3D创建基于视觉的动作捕捉系统

教你在Unity3D创建基于视觉的动作捕捉系统

2020-02-06 | |  137 |   0

原标题:教你在Unity3D创建基于视觉的动作捕捉系统

来源:AI 研习社          链接:https://www.yanxishe.com/TextTranslation/1450


颅面特征点检测向量艺术(感谢:我!)  

我在大一的时候遇到了一位图形学教授,他让我着迷于实时虚拟化身的想法。我们并不满足于沉浸式游戏中现有的控制玩家角色的方式。最终,我们决定需要一个更好的来实现化身的移动和表达解决方案。借助基于视觉的技术,如Microsoft Kinect和颅面特征点识别,我们开始创建自己的动作捕捉系统。我写这篇文章是为了分享我如何实现这个系统的。这篇文章的灵感来自我的期末研究论文。  

1580969608842298.png

主角

作为一个故事的主角,而不是旁观者,是很有力量的。在未来,我设想在视频游戏中采用多人战役模式,将故事控制权交给玩家(很像《安德的游戏》)。通过虚拟化身来镜像模拟他们的身体动作和面部表情是可行的。


基于视觉的方法

我的“基于视觉”的虚拟化身方法试图将视觉感官数据映射到角色模型上。我在一个流行的游戏引擎Unity3D中实现了它。它处理两个场景:移动和表达。  


选择角色模型  

这绝对是这个项目最好的部分。我花了很多时间在Mixamo上寻找角色模型。最后,我从Mixamo Face-Plus中选择了一个角色,这是来自Unity资产商店的一个很受欢迎的软件包。  

02.png

我选择的人物模型(致谢:我的论文,第23页) 


它有一个完整的骨架用于移动和一个混合形状用于面部动画。所以它非常适合我的项目。(我最近了解到这个包在Unity 5中已经停用了?)  


运动能力

       首先,我已经解决怎样获取角色的移动。这里我发挥了预定义角色装配的优势。一个装备包含了可以被变换和旋转的关节和骨骼。得到图片的流,一个神经网络就可以去学着追踪玩家的关节与骨骼。然而,RGB图缺少深度信息,这对于在3D中使角色活灵活现至关重要。幸运的是,Xbox Kinect v2 通过一组摄像头去实现它。

1580969661179097.png

        它使用了time-of-flight技术。本质上来说,深度传感器发射光照信号,然后测量他们往返花费的时间。这个信息被用于构造一个深度的map,用于把玩家身体划入到有意义的区域。


        听起来像一堆底层的代码技术。但幸运的是,所有的这些都被KinectSDK实现并且有效。更好的是,带有MS-SDK和Nuitrack SDK的Kninect v2例子还处理了Kinect和Unity之间的交互。这使我变得非常简单了。

04.gif

        顺便说一下,如果你好奇Kinect如何在3D中追踪人类的骨骼,检出微软关于人类姿势识别的研究论文。


表情能力


        表达一个人的能力是多人游戏的关键组成部分。大多数网游都有世界聊天。对于我的项目来说,面部动画起到了交流的最基本作用。


        关于活灵活现的脸部动作这个灵感来自于一个非常流行的游戏叫VRChat。在这个游戏中,玩家通过他们喜欢的角色生存在一个社交的大宇宙中。角色可以做玩家设计的任何表情。唯一的问题是玩家不得不手动创建他们的动画然后导入游戏中。这个玩家带来太多负担。再者,不是所有玩家都是好的动画师,这就会打破玩家对游戏的幻想。


        这就需要一个超出沙盒以外的解决方案。我决定做一个可以反映玩家面部表情的角色。玩家脸上的点可以被追踪并且映射到角色的mesh上。为了这个目标,我用Deformable Shape Tracking(DEST)。这是一个开源库,可以检测玩家脸上的点,也被称作landmark。


        为了使DEST融入Unity,我使用了本地插件的特性。我通过动态链接库(DLL)从c++中导入DEST代码到Unity中,然后就可以在Unity脚本中访问它的函数。


BlendShapes技术


       事实证明不能像我最初预想的那样,仅仅改变脸部mesh的顶点。面部表情是真的复杂并且调用需要移动的部分。取而代之的是用独立的顶点做动画,我选择blendshapes。


        根据一篇欧洲图形协会2014年发表的论文:


”一个blendshape生成一个面部形态是根据许多面部表情的线性组合。”

05.png

        表情被定义为动画改变的状态。他们统称为一个blendshape。本质上,我的角色需要被知道它的状态去制作相关联的面部表情。我用blendweight去表达面部状态。相同的疑问,一个混合权重对一部分面部分配一个权重。与其他混合权重合起来,我的角色可以形成差不多任何表情。步骤如下展示了对一个面部表情的混合权重计算。这里应该有N个混合权重去支持N个表情。

/* Step 1: Kinect detects a face, sends image to Unity */
aspectRatio = 1 / frame.width
/* Step 2: 
 * Unity sends image to DEST
 * DEST returns landmark positions (landmark1Pos, landmark2Pos)
 * Compute normalized pixel distance between points
 */
dis = Vector2.Distance(landmark1Pos, landmark2Pos) * aspectRatio
/* Compare min and max to previous frame */
min = Mathf.Min(dis, min)
max = Mathf.Max(dis, max)
prcnt = (dis - min) / (max - min)
/* Compute blendweight (k is some constant) */
blendweight = prcnt * k

        Kinect 的缩放检测方案根据玩家有多远。aspectRatio用于乘以两个landmark的距离可以保持缩放一致,可以得到dis,也就是两个landmark之间距离的标准化像素。


        不同的面部表情有不同的min和max的值。在一些案例中,min将永不为0,因为脸上有两个永不相交的点。举例来说,两个嘴角的点永不相交。但是它们之间的距离告诉我们多远是人在笑。在这个例子中,当两个点的距离dis到达max时prcnt是接近于1的,反之亦然。然后,prcnt是min与max的差值,并且被一些k缩放从而得到最终的blendweight。

06.png

        这个例子展示了一个嘴部运动。两个红点是landmark,用于决定prcnt的值。他们告诉我们嘴部拉伸多少是在笑。


改进与前景


由于时间限制,我不得不在这里停留。 此时,系统可以以3D方式跟踪人的骨骼并反映其面部表情。 最初,我想探索如何为沉浸式多人游戏创建辅助系统。 但是,我还想表明它可以替代当前的播放器表达实现,例如VRChat。 因此,我尝试将VR纳入该项目。 不幸的是,人脸跟踪停止了工作。 事实证明,DEST在部分被黑色大矩形遮挡的面上不起作用。

07.gif

叹。 (版权:Kaia Bennett)


另外,随着图像分辨率的降低,界标检测精度也急剧降低。实际上,在某些情况下,基于视觉的系统可能根本无法工作。例如,如果我们想用化身的手捡起物体,则深度图像不足以跟踪手指。 VR头戴式耳机通过手动控制器解决了这个问题。在像这样的新VR手套技术变得更实惠之前,这可能是一个选择。但是,如果播放器远离相机,该怎么办?如果整个系统依赖于一个输入源,如何捕获面部表情?


幸运的是,NVIDIA可能已经提出了一个替代解决方案。在最近的一篇论文中,他们的研究人员找到了一种训练神经网络以从语音推断面部动画的方法。您可以在他们的论文中阅读有关培训过程的更多信息。但是检查一下结果:


通过姿势和情感的端到端联合学习来进行音频驱动的面部动画

音频驱动的面部动画(来源:Tero Karras Fl)

惊人!


最后的想法

我打算在将来进行探索。由于基于视觉的技术通常涉及高端传感器和摄像头(如Kinect中的传感器和摄像头),因此基于音频的系统可以更便宜,更轻便。这并不是要低估良好视觉系统的价值。诸如骨骼跟踪之类的某些东西仍将需要高端传感器和照相机。因此,基于视觉的系统将继续存在。由我们,开发人员和工程师来决定采用其他类型的技术来弥补视觉缺陷的创造性方法。

THE END

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:LinkedIn 机器学习架构

下一篇:演讲实录 | 张兆翔:基于深度学习的物体检测进展和趋势

用户评价
全部评价

热门资源

  • 国内人才报告:机...

    近日,BOSS 直聘职业科学实验室 &BOSS 直聘研究院...

  • AI使物联网更智能...

    看到微软对物联网和人工智能的结合感兴趣是一个明...

  • 推荐一批学习自然...

    这里推荐一批学习自然语言处理相关的书籍,当然,...

  • 安防智能化大势下...

    大部分传统安防设备不仅拍摄视野有限,而且无法事...

  • 20亿创业基金、10...

    近日,杭州举办了建设国家新一代人工智能创新发展...