23个版本

0.10.7 2022年12月24日
0.10.6 2022年5月22日
0.10.5 2022年2月8日
0.10.4 2021年7月28日
0.4.0 2018年12月30日

#570算法

每月 43 次下载
3 crates 中使用

MIT 许可协议

77KB
2K SLoC

波函数坍缩

Version Documentation

用于生成与指定网格相似的值网格的库。此库的典型用途是程序化生成图像,但它可以推广到任何值网格。

相似 定义为以下两种情况

  • 严格局部相似:输出图像中的每个小(通常为3x3)图案都出现在输入图像的某个位置。
  • 松散全局相似:输出图像中小图案的分布大致与输入图像中小图案的分布相同。

使用约束求解器填充网格。对于每个单元格,我们存储一个概率分布,表示该单元格包含可能图案左上角的可能性。最初,每个图案的概率基于其在样本图像中的频率。然后,它重复识别熵最低的单元格,并决定(随机地,根据概率分布加权)将该单元格分配给哪个图案。这种分配可能会从相邻单元格中删除一些候选图案,因此它随后更新候选单元格。选择单元格、分配图案和传播不兼容的邻居的过程持续进行,直到整个网格被填充了值或一个单元格的所有候选图案都被移除。

相似图像示例

Flowers Input -> Flowers Output1 Flowers Output2

有关更多图像示例,请参阅 wfc-image

动画

这显示了根据上面的示例花朵图像生成图像的过程。每个像素的颜色是所有可能分配给它的颜色的平均值,按概率加权。

Flowers Animation

依赖项

~1.9–2.7MB
~43K SLoC