meshvox/
lib.rs

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