6 个版本 (1 个稳定版)
1.0.0 | 2022年1月29日 |
---|---|
0.1.4 | 2022年1月29日 |
#1349 在 解析器实现
60KB
1.5K SLoC
off-rs - 简单的 .off 文件解析器
解析 .off
(对象文件格式) 文件。此实现遵循普林斯顿形状基准中的此规范。
示例 .off
文件
# this file header has to be the first instruction
OFF
# cube.off
# A cube
# 8 vertices, 6 faces, 12 edges
8 6 12
# vetex coordinates: x, y, z
1.632993 0.000000 1.154701
0.000000 1.632993 1.154701
-1.632993 0.000000 1.154701
0.000000 -1.632993 1.154701
1.632993 0.000000 -1.154701
0.000000 1.632993 -1.154701
-1.632993 0.000000 -1.154701
0.000000 -1.632993 -1.154701
# face indicies & RGBA color data: n, v1, v2, v3, v4, r, g, b, a
4 0 1 2 3 1.000 0.000 0.000 0.75
4 7 4 0 3 0.300 0.400 0.000 0.75
4 4 5 1 0 0.200 0.500 0.100 0.75
4 5 6 2 1 0.100 0.600 0.200 0.75
4 3 2 6 7 0.000 0.700 0.300 0.75
4 6 5 4 7 0.000 1.000 0.000 0.75
此 cube.off 文件使用 off-rs
在此示例中 进行解析。
用法
let off_string = r#"
OFF
3 1
1.0 0.0 0.0
0.0 1.0 0.0
0.0 0.0 1.0
4 0 1 2 3 255 0 0 # red
"#;
let mesh = off_rs::parse(
off_string,
Default::default() // optional ParserOptions
);
println!("{:#?}", mesh);
将返回类似这样的结构
Mesh {
vertices: [
Vertex {
position: Position {
x: 1.0,
y: 0.0,
z: 0.0,
},
color: None,
},
...
faces: [
Face {
vertices: [
0,
1,
2,
3,
],
color: Some(
Color {
red: 1.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
},
),
},
...