kinect动作捕捉初探——ipi soft录屏与处理/C4D bvh文件的处理和应用

原创  2021年8月8日  欧煅 未经作者授权,禁止转载

kinect动作捕捉初探(上)——ipi soft录屏与处理


原文:https://www.bilibili.com/read/cv3024015

(可以跳过)前面是废话:我打算写点东西。

        一开始,我在这里有个号,我觉得如果我想做一些东西,在B站上,我就放上去。我享受一种自由创作的感觉,很多人也一样,只是渐渐得发现,可以自由的时间越来越少,所以和很多up一样,开始不太关注这里。后来发现有了1000个粉丝,(也许都是僵尸粉,笑)。开玩笑,不管怎样,我很开心,至少会有人看我写的东西。

         本文图片来自于百度、youtube和软件截图

        写什么好呢?动作捕捉!这是我一直想实现的事情,所以我买了一个kinect 2。二手闲鱼,加电源适配器,成本价600,可能是现在最便宜的动捕价格了(图像分析除外),那进入正题,看看这个东西到底怎样:

      kinect分为1代和2代,全新价格还是比较高,二手分别为200多和500多,均需一根电源适配器才可连接电脑。考虑成本还行,我选择了效果更好的kinect 2,对应系统必须为win8及以上,还需下载一个驱动,即可成功激活(注意重启)。具体方法可百度,一般没有太大问题,只要买的kinect正常。(我是不是有点水😄)

        关键问题还是软件。目前可以用于kinect动捕的软件很多,但大多需要收费。综合试验后,我选择了ipi soft,实际上这是两个软件。一个叫ipi  recorder另一个叫ipi  studio。前者免费,后者提供试用30天。下载建议官网,但需要外网,具体方法我就不说了😒。

        

        ipi recorder实际上是一个录像软件,其中3代和最新的4代可支持kinect 2,选好并连接kinect后,即可在软件里启动录像,但是录像前需要点击分析背景地面,这就需要有足够的地面空间,如果分析失败,那么在输出到studio中获得的图像就有可能漂到空中,这样到时候对准模型时会稍有麻烦。

        对准地面后就可以录像了,但首先必须先保持一个“T型”姿态,这是为了后面对准用的,然后开始动作录像,完事后就会获得一个彩色图像的视频文件avi。不同的彩色深度就代表人物离摄像机的距离,有了这样的深度信息,我们就可以认为获得了人物的3d数据。

        接下来我们只要打开另一个软件ipi  studio,把之前的avi直接拖进去,它就能分析视频文件并生成人物的全息图像,不过之前先要选定一下身高。当然,如果只有一台kinect,所获得的全息点图像只是你人物正面的“浮雕”,这样当你将手或脚甩到身后时,由于捕捉不到图像,可能会出现一些错误,这些都需要后期调整。

        当你获得全息图像动画,你需要把它移到T型态的时刻,并把这个时刻的浮雕图像与ipi studio打开就有的T态人物进行“对准”(就是把他们移动到尽可能重合在一起),然后点击向前追踪,这时自带人物就会自动跟随动画了,这需要几分钟时间,结束后输出bvh或fbx即可。

        应该说,ipi分析出来的效果,还是高于我预期的,只是大范围的翻转动作不太可能捕捉,但简单的动作,似乎手k的效率更高😂。如果拥有前后两台kinect配合ipi同时录制,将获得全身图像,这样捕捉出来的效果可能更好,但这也同时需要两台电脑和前后5米左右的空间,成本也随之增加。

        目前ipi studio的3代和4代不太找得到破解版,咨询了一些商家,需要1000大洋。所以碍于成本,只能30天试用,试用期过,将无法输出动作文件(bvh或fbx),一个可以的办法是重装系统(😂),而且切忌不要卸载后再装软件,否则。。。你可以试下重装系统的效果了。。

kinect动作捕捉初探(下)——bvh文件的处理和应用

原文:https://www.bilibili.com/read/cv3052473?ivk_sa=1024320u


      bvh是一种动作数据文件,诸如kinect动作捕捉的数据就可以以bvh方式保存。我们可以直接把bvh导入到cinema 4D中:

        由此我们可以看到bvh的实质就是一套骨骼在各个关节三向旋转数据的关键帧,及腰部(重心)处三向位移数据的关键帧之和。简而言之,各个关节的旋转及腰部的位移可以定义一个角色动画。我们把这种定义称为fk模式,又名“芭比娃娃”模式。这是与ik模式(提线木偶)对应而言的。

        我们现在的问题在于,我们如何把所或得的bvh文件应用到我们绑好骨骼的角色模型上去,一种思路是将bvh转化为可直接应用到mmd的vmd文件,可以在bilibili搜到相关教程。但因为up更熟悉使用c4d,我们来讲如何在c4d中的应用。

        当然首先我们要把一个角色模型直接复制到已导入bvh的c4d工程上去。这会存在一个比例问题。我们可以观察bvh骨腰部高度对比已有角色模型的腰部高度比例,然后在编辑>工程设置中修改工程整体比例,然后再复制模型:

右边project scale可修改整体比例

        我们最好不要直接缩放已绑好骨骼的模型,这可能会出现一些bug,尤其在带有ik的情况下。

        接下来,我们要应用c4d中的约束标签,顾名思义,类似AE中的父子关系,它可以始两个物体做同步运动。我们在T姿态下,点中模型关节,选择标签>角色标签>约束,并在约束中点选psr约束,它就给模型关节加上了psr约束标签。

        我们在psr中勾上offset,在target中勾上R(旋转),当然腰关节需要勾上P(位移)和R(旋转),然后通过右下角的箭头点选bvh对应关节为目标。依据我们之前的fk定义,我们把主要的十几个关节一一约束到有关键帧的bvh骨骼上,并通过offset调整一些轴向和同步偏差,两套骨骼就能做同样的动作了。

psr约束,勾上maintain original,勾上r(腰部勾上p和r),箭头点选目标关节

         但是,假如我们有几套bvh数据,如果分别约束到模型,就需要每次一一约束关节,稍显麻烦,为简化操作。我们可以基于这样一个逻辑:先约束好一个bvh作为容器,每次需要更换新的动作数据时,将新的bvh的关键帧,直接复制给容器bvh。

        这样做的前提是两套bvh骨拥有完全一样的骨骼名称和顺序,当然,如果你是同样方法获得的数据,它肯定是一样的。然后,我们还需至少完成两个操作:1、选中bvh骨骼的所有关节。2、选中所有关节在时间线上的所有关键帧。

        操作1有两个方法,直接右键关节,选全部展开,点第一个关节,按住shift点最后一个关节,即可全选。或左上角选择工具矩形框选,预览界面直接框选骨骼。操作2则需要在1的前提下,时间线下的数字先调整时间线长度,然后在一排关键帧后面处,点击鼠标不动,左侧轻拉,即可拉出一段白条,选中所有关键帧。(蛋疼的操作)。

        那么在以上操作基础上,我们删除容器bvh所有关键帧,选中新bvh所有关键帧,crtl c,选中容器骨骼bvh所有关节,crtl v,即可。

        以上操作虽然我们成功把bvh动作映射到了已有模型上,并可通过复制关键帧更换动作。但这都需要依赖bvh的存在,原模型骨骼并没有任何关键帧,一旦删去bvh,模型将静止在删去的姿态。为了获得关键帧,我们需要在窗口中,打开时间线窗口,点中骨骼,功能(functions)>烘焙物体,模型骨骼将自动获得所有动作的关键帧,这时就可以把我们的模型复制到应用动画的场景中去了。

        

时间线窗口>功能>烘焙物体

        有些时候,我们更习惯于使用带有ik及控制器的模型,以方便动画的手动调节。这时候需要先将ik控制器约束到关节。(比如手部ik约束到腕关节),然后烘焙动画,结束后删去约束,就可烘焙出ik模式的动作。这其中可能要注意些优先级的问题,可以搜索一下c4d优先级的调整,这里就不再说了。