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![], }], } }