运动捕捉数据的描述ASF/AMC

运动捕捉数据有多种格式:ASF/AMC,BVH,C3D等,这三个是比较常用的,一般的matlab实验用的是ASF/AMC,其次就是BVH。

ASF/AMC文件格式是Acclaim Games公司设计开发的,全称是Acclaim Skeleton File/Acclaim Motion Capture data,其中ASF是骨架文件信息,AMC是运动数据信息。分开存储的好处就是一个ASF骨架可以运用到不同的AMC中,而不必要对每个AMC运动数据都写入一个ASF骨架信息,减少了数据冗余。

原始的运动数据文件可以去卡内基梅隆大学的网站去找:http://mocap.cs.cmu.edu/

关于ASF和AMC文件的读取,很多论文中都提到了使用Neil Lawrence的MOCAP工具包,github地址为:https://github.com/lawrennd/mocap

鉴于以上github上基本都会出现getline这个函数的问题,我当时是花费了一天时间去折腾这个函数,可能在老版本中getline可以获取文件的每一行,但是新版本的matlab的getline函数作用变了,好像是获取在当前窗口画线的点坐标,具体用法没看,反正就是函数用途变了,然后找到新版的matlab应该是用fgetl去获取文本的每一行,然后修改后的版本可以在我的csdn上传文件中下载,地址:http://download.csdn.net/detail/zb1165048017/9687818

ASF文件:

ASF文件是骨架信息。定义了运动的初始姿态。

#开头的部分是ASF文件的声明部分。

:version         是运动捕获设备的类型

:name            是运动捕获设备的名称

:units              是相关的度量单位的信息,比如"units_length"的值为0.45,表示数据都乘以0.45后存储,且数据的存储单位为英寸

:documentation             是对文档的描述信息

:root                是人体骨架模型根节点的信息,作为根节点,它没有长度和旋转信息。其中,“order”的TX,TY,TZ,RX,RY,RZ是顺序为x轴,y轴,z轴方向上的平移和旋转信 息;“axis”根节点对应的三个旋转轴;“position”是根节点在世界坐标系下的初始位置;“orientation”代表根节点在世界坐标系下的初始位置方向,也就是整体骨架模型的朝向。

:bonedata       包括了人体骨架模型的其它30个节点的信息,每个节点的信息都从“begin”开始到“end”结束。其中,“id”是关节的编号,“那么”是关节的名称。“direction”是该关节在世界坐标系下x轴,y轴,z轴的方向单位向量。“length”是该关节与其父关节之间的骨骼长度。“axis”该节点的局部坐标系相对于世界坐标系的x轴,y轴,z轴的旋转量。“dof”(degree of freedom)是x轴,y轴,z轴的旋转自由度。“limits”是x轴,y轴,z轴的自由度变化范围。

:hierarchy  是人体骨架模型的树状层次关系,每一行的第一个是父节点,后面跟着其子节点。

可以看出ASF文件是给出了AMC运动数据格式的模板,是重用AMC文件的基础。

AMC文件:

AMC是运动数据文件,具体数据格式严格遵循ASF文件中的定义。文件开始以“#”开头的部分,是ACM文件的声明部分,主要声明所用骨骼文件,然后以帧序号为开头的各帧运动数据。在每一帧的运动数据中, “root”的数据包含当前帧根节点的平移和旋转信息,顺序与ASF文件中“dof”的定义保持一致。值的注意的是,在AMC文件中,所有的旋转信息均是以欧拉角的形式保存的。

AMC文件中各关节空间旋转信息是通过欧拉角表示的,欧拉角是三维空间中表示旋转的方法之一,由于欧拉角存在万向锁问题,由此在表征三维空间旋转时,我们往往采用四元数。
欧拉角四元数相关知识,请参考前面的:http://blog.csdn.net/zb1165048017/article/details/48579877

【强调】根节点的6个自由度分别代表xyz三维空间中的位置,然后才是xyz朝向
%test测试路径和朝向的关系
clear
clc
%绕圈走路
skel=acclaimReadSkel('./data/13.asf');
[channels1,skel]=acclaimLoadChannels('./data/training data/run/111_23.amc',skel);

%直线走路
[channels2,skel]=acclaimLoadChannels('./data/training data/run/09_01.amc',skel);
x=channels1(:,1);
z=channels1(:,3);
plot(x,z)




  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风翼冰舟

额~~~CSDN还能打赏了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值