Wave Function Collapseは、どのタイルを他のタイルと隣接させるのか、および、各タイルを出現させる相対的な頻度に関するルールに基づいてタイル集を並べることで画像を生成するプロシージャル生成アルゴリズムです。
このアルゴリズムの歴史は、以下をチェックしてください:
“Texture Synthesis” (1999) by A. A. Efros & T. K. Leung
“Model Synthesis” (2007) by Paul Merrell
“Wave Function Collapse” (2016) by Maxim Gumin
このノードは、WFC Intialize GridとWFC Sample Paintを組み合わせて使用してください。
Tip
この背後にあるアルゴリズムを知りたいのであれば、Paul Ambrosiussen氏のこの説明またはこの詳細な説明を見てください。
プロジェクトで使用されているアルゴリズムを知りたいのであれば、このチュートリアルシリーズを見てください。
パラメータ ¶
Input ¶
Automatic Input Size Detection
ソルバのサンプルグリッド(2番目の入力)内の行数と列数を自動検出することができます。
Sample Grid Size
入力サンプル画像/グリッド(2番目の入力)の行数と列数を指定します。
Pattern Search Size
サンプル画像のカットに使用されるカーネルの“クッキーの抜き型”サイズを制御します。 サイズが小さいほど、複雑なカットができなくなるので、ノイズが増えます。 サイズが大きいほど、サンプルに対する出力画像の局所的な類似性が増えます。 これは、計算時間も長くなり、解が求まる確率も下がります。
Find Wrapping Input Patterns
これを有効にすると、パターン検索ステップは、入力サンプル画像を循環したパターンを作成することができるようになります。 サンプル画像がタイル化可能でない場合には、これを有効にすることは推奨しません。
Output ¶
Automatic Output Size Detection
(1番目の入力の)ソルバから出力されるグリッドの行数と列数を自動検出することができます。
Output Grid Size
(1番目の入力から)出力される画像/グリッドの行数と列数を指定します。
Allow Rotations
Allow Rotationsは、回転を使ってパターンの出力の解を求めることができます。 これは、出力画像内の繰り返しを除去するのに役立ちますが、可能性が指数関数的に増えてしまうので、計算に時間がかかります。
Respect User Provided Constraints
このトグルを有効にすると、ソルバは、WFC Intialize Grid SOPを使って、指定された拘束に順守します。 これを有効にすると、解が求まる確率が大幅に下がりますが、よりアート志向の結果を生成するのに非常に役立ちます。
Produce Tileable Output
これを有効にすると、ソルバは、タイル化可能な出力画像/グリッドを生成するようになります。 これは、タイル化可能なテクスチャを生成するのに役立ちます。 これは、計算時間も長くなり、解が求まる確率も下がります。
WFC Settings ¶
Seed
Seedは、計算に使用されるシードを変更するので、同じ拘束を使用しても異なる出力を生成します。 バリエーションの生成に便利です。
Use Observed Sample Pattern Frequency
Observed Sample Pattern Frequencyは、各ピクセルに配置するパターンを決める時にサンプルパターン内で見つかったパターンの周波数を考慮するようにアルゴリズムに命令します。 そのため、サンプル画像が赤よりも青が多い場合、出力画像も赤より青が多くなります。
Number Of Solve Attempts
このパラメータは、ソルバが解を求めるのに失敗した場合の試行回数を制御します。 難しい計算には、この回数を増やしてください。
Starting Point
このトグルを有効にして、ポイント番号を指定すると、ソルバは、出力グリッド内でまず最初にその指定したポイント番号を解決します。 場合によっては、ユーザが指定した拘束を使用して、ランダムよりは指定した順番でグリッドを解決したい時に役立ちます。