Crates.io | yawfc |
lib.rs | yawfc |
version | 0.1.0 |
source | src |
created_at | 2022-08-13 07:01:46.524531 |
updated_at | 2022-08-13 07:01:46.524531 |
description | Yet another wave function collapse implementation |
homepage | https://github.com/10maurycy10/wfc |
repository | https://github.com/10maurycy10/wfc.git |
max_upload_size | |
id | 644543 |
size | 58,731 |
This is an unfinished pure rust implantation of the Wave Function Collapse Algorithm.
Example usage:
use image::io::Reader as ImageReader;
use image::RgbImage;
use yawfc::overlapping::overlapping;
let generated_size = 30;
// Read the example image
let img = ImageReader::open("in.png").unwrap().decode().unwrap().to_rgb8();
let img:Vec<Vec<_>> = img.rows().map(|x| x.map(|x| x.clone()).collect()).collect();
// Create the wave function from example image.
let mut wave = overlapping(img, generated_size, generated_size, true, false, since_the_epoch.as_millis() as u64);
// Collapse the wave function.
wave.colapse();
// Extract image data from solver and save with image crate.
let mut tiles: Vec<_> = wave.get_collapsed_data().unwrap().iter().flatten().flat_map(|x| x.0).collect();
let generated = RgbImage::from_raw(generated_size as u32, generated_size as u32, tiles).unwrap();
generated.save("out.png").unwrap();