#生物力学 #c3d #数据 #文件格式 #运动 #参数 #模拟

c3d-rs

用 Rust 编写的 c3d(生物力学数据格式)解析器

8 个版本

0.1.7 2020年6月10日
0.1.6 2020年6月3日
0.1.2 2020年5月31日

#1726解析器实现

每月下载量:41

Apache-2.0/MIT

27KB
615 代码行

自述文件

这是一个用 Rust 编写的 c3d 文件格式解析器/读取器。C3d 是在运动捕捉领域广泛使用的生物力学数据格式。

解析器根据 c3d.org 规范和来自 py-c3d 的 Python 解析器编写。

功能

  1. 目前仅支持解析。
  2. 在读取头部/参数块之后,由于适配器实现了迭代器特质,可以读取 (frame_index, points_data, analog_data),无需预先复制所有数据部分。
  3. 根据规范正确解析错误估计和摄像机观测信息。
  4. 在消费读取器时,如果设置了相应的参数,模拟数据将根据设置进行偏移和缩放。

使用方法


use c3d_rs::C3dAdapter;

let mut file = File::open("somefile")?;

let mut buf: Vec<u8> = vec![];
file.read_to_end(&mut buf)?;

let mut cursor = Cursor::new(buf)

/// adapter accepts impl Read + Seek.
let adapter = C3dAdapter::new(&mut file)?.construct()?;
let adapter = C3dAdapter::new(&mut buf[..])?.construct()?;


/// read labels into Vec<String> with whitespace stripped.
let point_labels: Vec<String> = adapter.get_points_labels().unwrap();
let adapter_labels: Vec<String> = adapter.get_adapter_labels().unwrap();

/// reading (frame, ponts, analog) from iterator
for (frame_idx, points_data, optional_analog_data) in adapter.reader()?.into_iter() {

}

/// working with vendor specific parameter.
let param = adapter.parameter.unwrap().get("GROUP:PARAMETER").unwrap();


依赖关系

~0.4–1MB
~21K SLoC