目前来说,动捕技术包含三种不同的方式:惯性捕捉、基于标定点的光学捕捉(光学式标定动捕)、基于计算机视觉技术的捕捉(光学式非标定动捕)。
惯性动捕:传感器。在身体的重要节点佩戴集成加速度计,陀螺仪和磁力计等惯性传感器设备,然后通过算法实现动作的捕捉。该系统由惯性器件和数据处理单元组成,数据处理单元利用惯性器件采集到的运动学信息,通过惯性导航原理即可完成运动目标的姿态角度测量。
光学式标定动捕:摄像机镜头+标定点。在运动物体关键部位(如人体的关节处等)粘贴Marker点,多个动作捕捉相机从不同角度实时探测Marker点,数据实时传输至数据处理工作站,根据三角测量原理精确额计算Marker点的空间坐标,再从生物运动学原理出发解算出骨骼的6自由度运动。此外,该光学动捕系统根据标记点发光技术不同,还可细分为主动式和被动式两种。
光学式非标定动捕:由多个高速相机从不同角度,对目标特征点的监视和跟踪来进行动作捕捉。(基于二维图像特征或三维形状特征提取的关节信息作为探测目标。)被监测对象不需要穿戴任何设备。最为精细但对环境要求更高。该类动捕系统比较有代表性的产品分别有捕捉身体动作的Kinect,捕捉手势的Leap Motion和识别表情及手势的RealSense实感。
总体来说,动捕技术目前主要应用于游戏、动画、电影、医疗康复、体育运动分析。
分别来说,惯性动捕和光学标定式动捕主要用于全身的动作捕捉;光学非标定式则在局部动捕,如手部、面部等细节表现优势明显。
光学标定式动捕采集的信号量大,数据处理复杂,存在标记点会被遮挡的问题,标记点的标定过程也比较复杂。
惯性动捕由于测量噪声和游走误差等因素的影响,无法长时间地对人体姿态进行精确的跟踪。
光学动捕都采用视觉进行人体姿态捕捉,会受到外界环境很大的影响,比如光照条件、背景、遮挡物和摄像机质量等。
光学标定式>惯性,光学非标定式则视具体情况而定。
光学标定式动捕需要在一个固定场地内搭设大量高速摄像机,摄像机本身造价就不菲,还要再算上标定点、场地、固定配件、灯光等,专业用途造价在百万、千万级别。
惯性动捕主要核心就是数十个传感器,传感器属于消耗品,存在折损和寿命,也分为有线和无线,目前国内所产的专业用途造价在万元级别。
光学非标定式主要基于机器视觉的算法,如果是需要用到多个相机进行整体捕捉的场合,那么造价也很高;但如果是局部动捕甚至是面向非专业用户的,“只用最普通的摄像机即可实现动捕”往往是卖点。
bvh是一种动捕数据的格式。下面以此为例简述骨骼动画的原理。
参考文章:《骨骼动画程序原理介绍》
骨骼动画的特点是:需要做动画的物体对象本身不记录位移、旋转、缩放、变形信息,而是通过了第三方的“骨骼”物体记录动画信息,然后物体对象本身只记录受到骨骼物体影响的权重。在播放的时候,通过骨骼物体的关键帧和物体对象记录的权重,让动画重现。
一堆关节点 + 他们之间的相互关系 = 骨骼
以下是一个bvh数据的开头部分,实际上就是定义了一套骨骼,其中包含了每一个关节的名字、相对位置关系和父子关系。
HIERARCHY:层次体系,表示以下部分是骨骼层级信息。ROOT:根节点。JOINT:关节点。Hips、RightUpLeg、RightFoot等:每个关节的名字。整个结构就像树一样,向上长出枝叶,向下长出根系。
一个bvh文件中除了骨骼信息,剩下的部分全部都是采集到的数据。MOTION :表示以下开始都是动作数据部分。Frames:总共有多少帧。Frame Time:每帧持续多少秒。
从具体的组织结构来说,以帧为单位可以对这些数据进行分组,有多少帧就有多少组。每一个组内的每一个数据具体表示什么,则跟bvh开头的关节点层级关系的CHANNELS相对应。笼统来说就是记录了每一帧里每一个关节点的位置和旋转角度。
蒙皮:按照需求给模型添加一套合适的骨骼。四足、双足、其他异形。
权重:设定骨骼对模型顶点的影响程度。
动捕数据接入:动捕数据里的骨骼映射到模型的对应骨骼上,然后就可以动了。
下面是笔者本人第一次做动捕动画的流程。(纯外行行为。制作的是简单的跳舞动画。模型来自米哈游。)
下载好模型后,检查格式、大小、材质、是否有道具、骨骼的连接关系、权重、是否有FK/IK等。如果是下图的A字形站姿,则手动调整为T字形会更利于动捕数据的映射。
掏出著名动画软件MotionBuilder。
在建模软件中处理模型,将需要进行布料模拟的面片单独拆出,如果是双面的布料则减为单面,进行一定的细分。
掏出著名的虚拟服装制作和布料计算软件MarvelousDesigner。首先将无布料的、带动作的动画场景以.abc文件的格式导入至MarvelousDesigner。
然后将衣服单独导入,设定为布料。
修改布料的物理属性,包括硬度、厚度、物理材质属性等,并设定好固定针,将不动的部分直接缝在模型身上。
在动画模式下点击录制,软件根据真实的物理条件自动进行布料的模拟运算。运算完毕后把带运动的布料单独导出,和模型放入同一场景。进行下一步。
简单搭建舞台场景并布光。
调整好所有材质和渲染设置以后,渲染输出帧序列。
帧序列导入视频处理软件,加入背景音乐,合成最终视频。