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 中使用
77KB
2K SLoC
波函数坍缩
用于生成与指定网格相似的值网格的库。此库的典型用途是程序化生成图像,但它可以推广到任何值网格。
相似 定义为以下两种情况
- 严格局部相似:输出图像中的每个小(通常为3x3)图案都出现在输入图像的某个位置。
- 松散全局相似:输出图像中小图案的分布大致与输入图像中小图案的分布相同。
使用约束求解器填充网格。对于每个单元格,我们存储一个概率分布,表示该单元格包含可能图案左上角的可能性。最初,每个图案的概率基于其在样本图像中的频率。然后,它重复识别熵最低的单元格,并决定(随机地,根据概率分布加权)将该单元格分配给哪个图案。这种分配可能会从相邻单元格中删除一些候选图案,因此它随后更新候选单元格。选择单元格、分配图案和传播不兼容的邻居的过程持续进行,直到整个网格被填充了值或一个单元格的所有候选图案都被移除。
相似图像示例
->
有关更多图像示例,请参阅 wfc-image。
动画
这显示了根据上面的示例花朵图像生成图像的过程。每个像素的颜色是所有可能分配给它的颜色的平均值,按概率加权。
相关工作
- Maxim Gumin的WaveFunctionCollapse 是我首次了解WFC算法的地方。它包含一个参考实现,并收集了许多其他WFC资源(包括这个)的实现链接。
- WFC主要基于 Paul Merrell的模型综合算法。
- 我发现 Fehr Mathieu的fast-wfc 是一个易于理解的WFC实现。它解答了我关于算法具体细节的许多问题。
依赖项
~1.9–2.7MB
~43K SLoC