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::*;