百度下拉框推广网站,怎么弄公众号,百度seo优化网站怎么做,php做直播网站运动捕捉数据有多种格式#xff1a;ASF/AMC#xff0c;BVH#xff0c;C3D等#xff0c;这三个是比较常用的#xff0c;一般的matlab实验用的是ASF/AMC#xff0c;其次就是BVH。
ASF/AMC文件格式是Acclaim Games公司设计开发的#xff0c;全称是Acclaim Skeleton File/A…运动捕捉数据有多种格式ASF/AMCBVHC3D等这三个是比较常用的一般的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”的TXTYTZRXRYRZ是顺序为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【强调】根节点的个自由度分别代表三维空间中的位置然后才是朝向%test测试路径和朝向的关系
clear
clc
%绕圈走路
skelacclaimReadSkel(./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);
xchannels1(:,1);
zchannels1(:,3);
plot(x,z)