C3D文件LabVIEW编辑方法

*c3d文件是一种公用文件格式,自1980年代中期以来,已在生物力学,动画和步态分析实验室中用于记录同步的3d和模拟数据。3d motion capture system制造商、animation行业的公司基本都为它提供支持。
作者这里大体上描述下*c3d文件格式。*c3d文件是一种二进制文件,这有利于应用程序快速读取与存储,但就是不直观。二进制数据根据cpu的不同分为intel、dec、sgi三种,intel和dec是低位在前存储,sgi是高位前端存储。大家在读*c3d文件时首先要读取文件具体是哪种二进制文件格式,后面的解析才是准确的。c3d文件文件格式是按照数据块存储的,每512个bit为一个数据块,这有利于数据查找与组织。
*c3d文件主要是头文件块512个字节,组与参数块1个或者多个数据块,再就是三维点和模拟数据块。
*c3d头文件主要描述了,三维点的数量、模拟数据量、每帧模拟数据量、点的采样频率、scal值等参数以及事件参数。*c3d存储三维点及模拟数据可以是i16整型数据格式或者是32位的浮点型,通过scal值的正负来判断,scal为负值,就是32位的浮点型,正值就是i16整型数据存储。
*c3d文件的组与参数主要是存储对各个参数的描述,比如point组(指的是三维点)这一个组里面又包含很多的参数,比如used、scal、lables...;类似于一级树形结构。
*c3d文件组与参数的存储并不是先存组后存参数,是无需状态,有可能是存完一个组后,跟着存另一个组,也有可能是存第一个组下面的参数,具体存的组或者是参数根据第二个字节的正负判断,负数是组,正数是组下面的参数。
点与模拟数据的存储包含多个数据块。数据可以是整型数据存储也可以浮点类型存储,整形数据格式会小一倍,整形点数据需要乘以scal还原成浮点类型,浮点类型则不需要。数据是一帧一帧的存储,先存点再存模拟信号(如果有的话)。
一共是8个bit,注意最后的2个字节,1-7位是相机的掩码,最后8位是数据的残差。
一共是16个bit,前12个bit是点的xyz坐标,后面4个先转成16位整形再解析相机的掩码和数据的残差。
模拟信号的数据格式与点的数据格式必须保持一致,都是整型或者都是浮点型。模拟信号需要通过以下公式进行换算
analog组下面读出offset,scal,gen_scale参数。
模拟信号的存储是每帧一个sample一个sample的存储,比如点的帧频是50hz,模拟信号的帧频是200hz,每帧需要存储4个sample,这个参数在头文件里面有描述。每个sample里面包含多个通道的数据,具体多少通道参考analog组下面used参数的数值。
首先介绍下官网的方法,下载c3dserver_setup.exe安装,安装完成后计算机就存在了c3dserver的activex控件。labview通过activex控件对文件进行操作,比如读、修改及存储。这个分免费版和付费版。免费版与付费版的唯一区别就是免费版速度会慢,就是故意加了延时!但是这个打包成自己的做的软件毕竟是不方便,一个是慢一个是要安装插件,不是很专业。
最好的解决方案就是认真读文档用labview写一套*c3d文件编辑工具,不依赖第三方,作者就干了这事,制作了motion_lab_c3d labview库。
c3d_reader支持文件头、事件头、组与参数、数据的读取。
c3d_writer根据输入的头、组与参数、点、模拟数据,保存为标准的*c3d文件。另外开发了快速搜索数据结构,支持组与参数数据的快速检索与修改。
后面这套工具将集成到azure kinect sensor&bodytracking for labview工具包,用于人体跟踪后的动捕数据存储,这将有助于开发者将跟踪的动捕数据快速迁移到第三方软件进行运动生物力学学分析、动画制作等应用。下一个版本更新!


聚焦人工智能 洞察数据价值
日本厂商的决断:鸿海到底是敌是友?
磁盘存储器的分类
Oculus Medium如何开发出来的?
Wifi室内导航技术的理解
C3D文件LabVIEW编辑方法
通过植物冠层分析仪来更好的研究植物冠层的长势
欠压保护器接线图
雷蛇灵刃17寸游戏本上架小米有品 售价16699元起
SynQor电源模块中Hi-Rel总线转换器的作用是什么
OmniVision的内窥镜和导管图像信号处理器系列又增添了高级选项
MIT“触觉手套”,轻触便可识物
6G大运存只卖千元!360N5揭秘蓝绿厂商不厚道的暴利行为
近红外光谱仪操作步骤_近红外光谱仪波长范围
疫情后的AGV市场迎来了怎样的机会
5G对于人工智能的辅助是怎样的
直线马达3D打印技术应用于打造零接触电梯按钮装置
华为P10/小米6/三星S8,三大旗舰上演终极决战
电动叉车的蓄电池选购指南
楼道智能化照明系统电路设计详解