1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
//! # meshvox //! A simple CPU based mesh voxelizer written in rust. //! //! ## Example //! //! ```rust //! use meshvox::Voxels; //! use std::fs::File; //! use std::io::{BufWriter, Write}; //! //! fn main() -> Result<(), Box<dyn std::error::Error>> { //! let p0 = [0.0, 0.0, 1.0]; //! let p1 = [1.0, 0.0, 0.0]; //! let p2 = [0.0, 1.0, 0.0]; //! let p3 = [-1.0, 0.0, 0.0]; //! let p4 = [0.0, -1.0, 0.0]; //! //! let i0 = [0, 2, 1]; //! let i1 = [0, 1, 4]; //! let i2 = [0, 4, 3]; //! let i3 = [0, 3, 2]; //! let i4 = [2, 3, 4]; //! let i5 = [2, 4, 1]; //! //! let vertices = vec![p0, p1, p2, p3, p4]; //! let indices = vec![i0, i1, i2, i3, i4, i5] //! .iter() //! .flatten() //! .map(|i| *i) //! .collect::<Vec<_>>(); //! //! let box_size = 0.05; //! let pyramid = Voxels::voxelize(&vertices, &indices, box_size); //! let (v, i) = pyramid.vertices_indices(); //! //! let file = File::create("examples/pyramid.obj")?; //! let mut file = BufWriter::new(file); //! for vertex in v { //! writeln!( //! file, //! "v {:0.6} {:0.6} {:0.6}", //! vertex[0], vertex[1], vertex[2] //! ); //! } //! for index in i.iter().step_by(3) { //! writeln!(file, "f {} {} {}", index + 1, index + 2, index + 3); //! } //! file.flush()?; //! //! Ok(()) //! } //! ``` pub(crate) mod sat; pub(crate) mod vector; pub mod voxelize; //pub(crate) mod greedy_mesh; pub use voxelize::*;