2020-06-05

WFC


ここでは、Houdini を使った Wave Function Collapse について簡単に紹介する。

これは「第2回Houdini勉強会(オンライン)」で発表した内容です。



使用したビルド: Houdini 18.0.487
Unreal 4.25.1 Windows 10

1. 概要

Wave Function Collapse に関する概要

2. インストールおよび設定

Houdini で WFC を使うには SideFX Labs のインストールが必須。

  1. SideFX Labs がインストールされていないのであればインストールする。インストール方法はこちら。
  2. 上記の Simon のファイルと Paul A のファイルをダウンロードする。
  3. Paul A のファイルのうち、WFC_In_Engine.hda を自分の HDA パス (例: ~/houdini18.0/otls) に置く。
  4. Simon のファイルのうち、WFC_Dungeon_General_Demo.hda と UE_WFC_Level_Generator.hda も自分の HDA パスに置く。
  5. Unreal も使うのであれば 4.24 以降をインストール。UE4 インストール後に、Houdini をインストールし Houdini Engine のプラグインもインストールすれば、確実に正しい場所にインストールされる。

3. Paul A のファイル

  1. Houdini を起動し、Paul A の .hip ファイル WFC_Engine.hip を開く。
      WFC_In_Engine.hda がパスにあることが必須。あれば WFC の計算が行われ、ファイルが開くまでに20秒ぐらい。
  2. Seed、Size、Pattern Search Size の値を変更すればマップが自動計算される。
      サクサク動かすには Size を低めにしてから。
      Size を大きくすればそれだけ計算に時間がかかる。
  3. Sample Level Image を入れ替えればまた別のマップになる。

4. Simon のファイル

File->New をしたと仮定し

  1. Geometry ノードを配置し、その中に入り、TAB->WFC Dungeon General Demo を実行。
      Paul A のファイル同様、パラメータを変更すればレベルの配置が自動的に変わる。
  2. UE4 を起動し、WFC_Dungeon_General_Demo.hda をロードすれば、同じ配置が確認できる。

5. 自分で作る

以下、自分で作る場合の方法を紹介する。現段階でわかる範囲で一番良いのは、「WFC によるダンジョン生成」チュートリアルに沿って行くこと。

  1. (していなければ File->New 、) Geometry ノードを作成し、中に入る。
  2. TAB->Labs WFC Initialize Grid を作成する。
      wfc_initialize1 が出来る。
  3. wfc_initialize1 で From Texture トグルをクリックし、テクスチャを読み込む。ここでは、Simon のファイル以下の Source_files/Grid_Demo_03.jpg を使う。

    Simon のチュートリアルと見た目が違うのは、Simon のアセットはカスタマイズされているため。
  4. Labs WFC Initialize Grid をもう一つ作成 (wfc_initialize2)し、From Texture を使わずに、Rows と columns を 30x30 に変更。
      こちらが出力の大きさを定義する。
  5. TAB-> Labs 2D WaveFunctionCollapse (2d_wavefunctioncollapse1) を作成。
    1. 一番目 (左) の入力に wfc_initialize2、二番目 (右) の入力に wfc_initialize1 を接続。
    2. Find Wrapping Input Patterns をオンにする。
        各ノードとそのパラメータの説明はこちらに非常に良いのがある。
    3. Seed の値を変えれば、パターンも変更される。ここでは 300。
  6. Labs Wang Tiles Decorder を作成 (wang_tiles_decoder1)し、 2d_wavefunctioncollapse1 の出力をこの入力に接続。
  7. Labs Wang Tiles Sample (wang_tiles_sample1) と Copy To Points (copytopoints1) し、 copytopoints1 の左の入力に wang_tiles_sample1 を、右に wang_tiles_decoder1 を接続。
  8. copytopoints1 の Piece Attributes トグルをオンにし、アトリビュート名を name に設定。するとこのようにビューポートに現れる(はず)。

6. Wang Tile

上の手順の最後で行った Wang タイルの挙動を簡単に説明すると、


最終更新: 2024-04-23

0 件のコメント:

コメントを投稿