modsynth
is an implementation of model
synthesis intended for use in interactive
applications like games. It can take a grid of arbitrary data and synthesize new
grids with local similarity. This is very similar/also known as "wave function
collapse" (wfc).
π©π©βββπ©π©π©π©π© πͺπͺπͺπͺβ¬β¬π©π©π©π©
π©βπ¦π¦π¦βπ©π©π©π© πͺπͺπͺπͺπͺβ¬β¬π©π©π©
π©βπ¦π¦π¦βπ π©π©π© πͺπͺπͺπͺπͺπͺβ¬β¬π©π©
π©βπ¦π¦βπ©π¨π¨π©πͺ πͺπͺπͺπͺπͺπͺπͺβ¬β¬π©
π©βπ¦π¦βπ¨π¨π©π©π© πͺπͺπͺπͺπͺπͺπͺπͺβ¬β¬
π©βπ¦π¦βπ¨π©π©π©π© π§πͺπͺπͺπͺπͺπͺπͺπͺβ¬
π©βπ¦π¦βπ©π©π©π©π© π§π§πͺπͺπͺπͺπͺπͺπͺπͺ
π©βπ¦π¦π¦βπ©π©π©π© π¨π§π§πͺπͺπͺπͺπͺπͺβ¬
πͺβπ«π«π«βπ©π©π©π© π¨π§π§πͺπͺπͺπͺπͺβ¬β¬
π©βπ«π«π«βπ©ββπ© π§π§πͺπͺπͺπͺπͺβ¬β¬π©
π©βπ¦π¦π¦ββπ¦π¦β π§πͺπͺπͺπͺπͺβ¬β¬π©π©
π©βπ¦π¦π¦βπ¦π¦π¦β πͺπͺπͺπͺπͺβ¬β¬π©π©π©
π©βπ¦π¦π¦π¦π¦π¦βπ© πͺπͺπͺπͺβ¬β¬π©π©π©π©
π©βπ¦π¦π¦π¦π¦βπ©π© πͺπͺπͺβ¬β¬π©π©π©π©π©
π©βπ¦π¦π¦ββπ©π©π© πͺπͺππππππππ©
π©π©βββπ©π©π©πͺπ© πͺβ¬β¬π©π©π©π©π©π©π©
πͺπ©π¨π©πͺπͺπͺπ©π©π©βββπ©πͺπͺ
πͺβ¬π©βπ©π©πͺβ¬β¬β¬π©π©βπ©πͺπ
πͺπͺβ¬π©πͺπͺπ©π©π©π©π©π©π©π¨π©π©
πͺπͺπͺπ©πͺπͺβπ©π©π©πͺβ¬β¬π©πͺπ©
πͺππππ©π©π©π©π¨π©π©π©πͺβ¬π©π©
πͺπ©π©π©π©π©π©βπ©π©π©πͺππππ©
πͺπͺπͺπ©π©π©π©π©π©πͺπͺβ¬β¬β¬β¬β¬
πͺπ©πͺβ¬β¬β¬β¬β¬π©πͺπͺβ¬π©π©πͺπͺ
πͺπͺπͺπͺβ¬β¬π©π©π¨π©πͺπ©π©π©πͺπͺ
πͺπͺπͺπͺπͺπ©π©βπ¨π©πͺβπ©πͺπͺπͺ
π§π§π§π§π§πͺπ©π©π©π©π©π©π¨π§π§πͺ
π¨π¨π¨π¨π§πͺπππ©πͺπͺβπ©πͺπͺπͺ
π©π©π¨π©πͺπͺβ¬β¬π©π©π©π©π©πͺπͺπͺ
βπ¨π§πͺπͺβ¬β¬β¬π©βββπ©πͺπ©πͺ
π©π©πͺπͺπͺπͺπ©π©π©ββπ©π©π©π©πͺ
πͺπͺπͺπͺπͺπ©π©βπ©π©π©πͺπͺπͺπͺβ¬
I want to implement everything here eventually.
- synthesize from input samples (no need to specify constraints manually)
- multiple sample support
- multiple sample weight adjustments
- detection of grid boundaries when calculating probabilities (see maze_2d example to see how the edge of the grid isn't properly synthesized)
- simple backtracking
- 3D support
- generation with smaller segments
- bevy integration
As it stands, it's pretty slow to generate and often fails, espcially at bigger sizes.