cyborg/editor/src/import.rs

39 lines
1.1 KiB
Rust

use crate::model;
pub fn load_stl(path: std::path::PathBuf) -> model::Model {
let name = path.file_name().map(|v| v.to_string_lossy().to_string());
let mut file = std::fs::File::open(path).unwrap();
let stl = stl::read_stl(&mut file).unwrap();
let mut vertices = Vec::new();
let mut indices = Vec::new();
for tri in stl.triangles.iter() {
indices.push(vertices.len() as u32);
vertices.push(model::BasicVertex {
position: tri.v1.into(),
});
indices.push(vertices.len() as u32);
vertices.push(model::BasicVertex {
position: tri.v2.into(),
});
indices.push(vertices.len() as u32);
vertices.push(model::BasicVertex {
position: tri.v3.into(),
});
}
model::Model {
name: name.clone(),
objects: vec![model::Object {
name,
mesh: model::Mesh {
transform: Default::default(),
data: model::MeshData { vertices, indices },
},
children: vec![],
}],
}
}