0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C3D文件LabVIEW编辑方法

LabVIEW逆向工程高级编程 来源:LabVIEW逆向工程高级编程 作者:LabVIEW逆向工程高级 2022-10-17 15:38 次阅读

*c3d文件是一种公用文件格式,自1980年代中期以来,已在生物力学,动画和步态分析实验室中用于记录同步的3D和模拟数据。3D Motion Capture System制造商、Animation行业的公司基本都为它提供支持。

作者这里大体上描述下*c3d文件格式。*c3d文件是一种二进制文件,这有利于应用程序快速读取与存储,但就是不直观。二进制数据根据CPU的不同分为Intel、DEC、SGI三种,Intel和DEC是低位在前存储,SGI是高位前端存储。大家在读*c3d文件时首先要读取文件具体是哪种二进制文件格式,后面的解析才是准确的。C3D文件文件格式是按照数据块存储的,每512个bit为一个数据块,这有利于数据查找与组织。

e613acd8-4c63-11ed-a3b6-dac502259ad0.png

*c3d文件主要是头文件块512个字节,组与参数块1个或者多个数据块,再就是三维点和模拟数据块。

<头文件数据块>

e65351e4-4c63-11ed-a3b6-dac502259ad0.png

*c3d头文件主要描述了,三维点的数量、模拟数据量、每帧模拟数据量、点的采样频率、Scal值等参数以及事件参数。*c3d存储三维点及模拟数据可以是I16整型数据格式或者是32位的浮点型,通过Scal值的正负来判断,Scal为负值,就是32位的浮点型,正值就是I16整型数据存储。

<组与参数数据块>

*c3d文件的组与参数主要是存储对各个参数的描述,比如POINT组(指的是三维点)这一个组里面又包含很多的参数,比如USED、SCAL、LABLES...;类似于一级树形结构。

<组的存储格式>

e69ce8ea-4c63-11ed-a3b6-dac502259ad0.png

<参数存储格式>

e6f4de60-4c63-11ed-a3b6-dac502259ad0.png

*c3d文件组与参数的存储并不是先存组后存参数,是无需状态,有可能是存完一个组后,跟着存另一个组,也有可能是存第一个组下面的参数,具体存的组或者是参数根据第二个字节的正负判断,负数是组,正数是组下面的参数。

<数据块>

点与模拟数据的存储包含多个数据块。数据可以是整型数据存储也可以浮点类型存储,整形数据格式会小一倍,整形点数据需要乘以Scal还原成浮点类型,浮点类型则不需要。数据是一帧一帧的存储,先存点再存模拟信号(如果有的话)。

e7fb9e52-4c63-11ed-a3b6-dac502259ad0.png

<整型点的数据格式>

e91f0f30-4c63-11ed-a3b6-dac502259ad0.png

一共是8个bit,注意最后的2个字节,1-7位是相机的掩码,最后8位是数据的残差。

<32位浮点型点的格式>

e9687c88-4c63-11ed-a3b6-dac502259ad0.png

一共是16个bit,前12个bit是点的XYZ坐标,后面4个先转成16位整形再解析相机的掩码和数据的残差。

<模拟信号存储>

模拟信号的数据格式与点的数据格式必须保持一致,都是整型或者都是浮点型。模拟信号需要通过以下公式进行换算

e9fb196c-4c63-11ed-a3b6-dac502259ad0.png

ANALOG组下面读出OFFSET,SCAL,GEN_SCALE参数。

模拟信号的存储是每帧一个sample一个sample的存储,比如点的帧频是50Hz,模拟信号的帧频是200Hz,每帧需要存储4个sample,这个参数在头文件里面有描述。每个Sample里面包含多个通道的数据,具体多少通道参考ANALOG组下面USED参数的数值。

ea735044-4c63-11ed-a3b6-dac502259ad0.png

<方法一>

首先介绍下官网的方法,下载C3Dserver_setup.exe安装,安装完成后计算机就存在了C3Dserver的ActiveX控件。LabVIEW通过ActiveX控件对文件进行操作,比如读、修改及存储。这个分免费版和付费版。免费版与付费版的唯一区别就是免费版速度会慢,就是故意加了延时!但是这个打包成自己的做的软件毕竟是不方便,一个是慢一个是要安装插件,不是很专业。

eb0f429c-4c63-11ed-a3b6-dac502259ad0.png

<方法二>

最好的解决方案就是认真读文档用LabVIEW写一套*c3d文件编辑工具,不依赖第三方,作者就干了这事,制作了Motion_Lab_C3D LabVIEW库。

eb9b15ce-4c63-11ed-a3b6-dac502259ad0.png

ebac8282-4c63-11ed-a3b6-dac502259ad0.png

C3D_Reader支持文件头、事件头、组与参数、数据的读取。

ebc8a6ec-4c63-11ed-a3b6-dac502259ad0.png

C3D_Writer根据输入的头、组与参数、点、模拟数据,保存为标准的*c3d文件。另外开发了快速搜索数据结构,支持组与参数数据的快速检索与修改。

后面这套工具将集成到Azure Kinect Sensor&BodyTracking For LabVIEW工具包,用于人体跟踪后的动捕数据存储,这将有助于开发者将跟踪的动捕数据快速迁移到第三方软件进行运动生物力学学分析、动画制作等应用。下一个版本更新!

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 3D
    3D
    +关注

    关注

    9

    文章

    2860

    浏览量

    107305
  • LabVIEW
    +关注

    关注

    1961

    文章

    3652

    浏览量

    322234
  • 文件格式
    +关注

    关注

    0

    文章

    19

    浏览量

    15073

原文标题:*c3d File Edit For LabVIEW

文章出处:【微信号:gh_63f7cd07072a,微信公众号:LabVIEW逆向工程高级编程】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LabVIEWC# 注册事件相关方法

    利用C#编写事件相关的类库,在WinForm和LabVIEW中进行测试,并描述相关程序的调用方法
    的头像 发表于 10-09 17:48 2273次阅读
    <b class='flag-5'>LabVIEW</b>与<b class='flag-5'>C</b># 注册事件相关<b class='flag-5'>方法</b>

    LabVIEW树形文件编辑位置”

    是通过树形控件的“编辑位置”这个属性来操作,第一种方法已经实现 第二种方法却实现不了。我看了帮助文件对“编辑位置”的说明,“使用该属性设置控
    发表于 05-17 22:34

    LABVIEW中调用C方法和配置CIN节点

    的数据类型由连接在输入(输出)口上的控件的数据类型决定。(1)生成C源代码编辑格式文件。(2)在C源代码编辑格式
    发表于 05-07 09:40

    LabVIEWC接口的设计方法

    摘 要:介绍一种LabVIEWC接口的设计方法。利用此接口方法,可以根据实际应用的要求,扩展LabVIEW的功能。  关键词:
    发表于 05-10 09:40

    LabVIEWC语言接口的方法

    摘要介绍了一种LabVIEWC 语言接口的方法,由实例证明,该方法高效、易行,是增强LabVIEW整体功能的一条有效的途径。关键词虚拟仪器
    发表于 01-17 21:54 82次下载

    LabVIEW中读取多列数据文件的通用方法

    针对LabVIEW中提供的文件读取函数功能的不足,介绍了一种读取多列数据文件的通用方法。关键词:LabVIEW;多列数据;
    发表于 08-05 16:31 307次下载

    第四届 C3D World 论坛暨展览会再度升温

    第四届 C3D World 论坛暨展览会再度升温   信息化推动工业化、3D 信息技术促进产业升级 -- 亚太3D 信息的盛宴
    发表于 10-15 16:49 815次阅读

    LabVIEWC接口设计

    LabVIEWC接口设计 介绍一种LabVIEWC接口的设计方法。利用此接口方法,可以根据
    发表于 10-16 09:30 3698次阅读
    <b class='flag-5'>LabVIEW</b>与<b class='flag-5'>C</b>接口设计

    labview实现3d模型

    20多年来,NILabVIEW较件致力于简化高效的设计用户界面的创建,实现2D图表显示。LabVIEW8.6加入了全新的数据可视化概念3D传感器映射。現在您可以轻松将CAD模型集成到LabVI
    发表于 11-20 14:05 2.2w次阅读

    LabVIEW宝典带你从LabVIEW入门到详细了解最后让你熟练的应用LabVIEW

    的运行结构,以及LabVIEW的基本数据结构和文件存储方式;高级篇细致地讲解了引用、属性、方法及各类高级控件的运用,LabVIEW的文本方式编程及DLL、
    发表于 07-25 08:00 0次下载
    <b class='flag-5'>LabVIEW</b>宝典带你从<b class='flag-5'>LabVIEW</b>入门到详细了解最后让你熟练的应用<b class='flag-5'>LabVIEW</b>

    LabVIEW使用图形化编辑语言G编写程序

    LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而
    的头像 发表于 07-01 08:22 5779次阅读

    用于微表情识别的三维卷积神经网络进化方法

    Neural Network,C3D)来提取微表情在时域和空域上的特征;同时使用具有全局搜索和优化能力的遗传算法对C3D的网络结构进行优化,以获取最优的C3D网络结构和避免
    发表于 05-17 15:22 10次下载

    C3D Facebook视频分析工具

    ./oschina_soft/C3D.zip
    发表于 06-01 10:11 1次下载
    <b class='flag-5'>C3D</b> Facebook视频分析工具

    编辑与改写IP核源文件方法

    有些时候,根据设计需求可能会想要修改IP核生成的源文件(只能修改未加密文件),包括HDL文件和XDC约束文件。这种修改不能直接修改源文件,因
    的头像 发表于 08-25 14:38 2595次阅读

    labview程序生成exe文件怎么还原

    了程序运行所需的所有指令和数据,但不再以LabVIEW的图形化编程形式存在。 然而,如果你需要修改或查看exe文件背后的LabVIEW逻辑,你可以考虑以下几种方法: 保留原始项目
    的头像 发表于 09-04 17:12 975次阅读