7 releases
0.2.0 | May 26, 2023 |
---|---|
0.1.5 | May 18, 2023 |
#2469 in Algorithms
69 downloads per month
2MB
542 lines
Wave Function Collapse for Voxel Input
This crate provides a solver for tile-based Wave Function Collapse. It automatically generates rules for map generation from preliminary voxel files.
Currently, the crate only supports MagicaVoxel XRAW
file formats.
Installation
Add to your current working directory:
cargo add wfc_voxel
Or add to your Cargo.toml:
wfc_voxel = "target_version"
Usage
// Initalize NodeSet from directory
let node_set = NodeSet::new(NODE_SIZE, "path/to/voxel/files", exclusions);
// Initialize Solver
let solver = Solver::new([MAP_WIDTH, MAP_HEIGHT, MAP_WIDTH], node_set.bit_mask(), &node_set);
// Get solved map
let map = solver.solve().unwrap();
// Dimensions of map
let shape = solver.shape();
for x in 0..shape[0] {
for y in 0..shape[1] {
for z in 0..shape[2] {
// Get node id and asset name
let node_id = map[[x, y, z]];
let asset_name = node_set.get_asset_name(&node_id).unwrap();
// Do something
}
}
}
Examples
See Isometric Demo for an example project.
Dependencies
~2.5MB
~54K SLoC