Houdini の HeightField ツールを使って作成した地形をスプリットした後、一つにまとめて FBX で出力方法を紹介する。
使用したビルド: 16.0.736
シーンファイルへのリンクは一番下にあり。
1. 元のシーンの作成
- HeightField を作成
- それに HeightField Noise を追加、Perlin ノイズタイプに変更。
- さらに HeightField Erode を追加、60フレーム目程度まで走らせる。
- さらに Timeshift を追加し、Frame パラメータにあるエクスプレッションを削除してフレームを固定。
- 詳細はこちらの#1 (元シーンの作成)。
2. タイル状にスプリット
作成した HeightField をタイル状にスプリットするには、Height Field Split ノードを使用する。- ネットワークの最下流にある timeshift1 の出力から Height Field Time Split を作成。
- HeightField_timesplit1 ができる。
- Tile Count の値はデフォルトでは 4x4 で、これだと16枚にスプリットされることになる。ここでは 3x3 にし 9 枚にする。
- Tile Number のスライダを動かすと、スプリットされた個別のタイルを見ることが出来る。
なお、カウントは 0 から始まっていることに留意。
3. ポリゴン変換および FBX 出力
- HeightField をポリゴンに変換するには、Convert HeightField ノードを使う。
- heightfield_tilesplit1 の出力から TAB->Convert HeightField を実行。Convert To は Polygon のまま。
- 2D ボリュームである Heightfield がポリゴンに変換される。
- Bake Point Colors をオンにすれば、Houdiniでの表示に合わせて頂点カラーが付加される。
- heightfield_tilesplit1 の出力から TAB->Convert HeightField を実行。Convert To は Polygon のまま。
- このポリゴンを FBX で簡単に出力するには、GameDevROP FBX Output を使用する。
- 2D これには Game Development Toolset のインストールが必要。
- ただし、この状態ではタイル一枚ずつで、heightfield_tilesplit1 の Tile Number を自分で出力のたびに変更しなければならず、また全部を一度に出すことが非常に困難。
4. ループ操作
タイル状に分割した地形をまとめて出力するには、For Each Loop ノードを使う。- ネットワークエディタ上で TAB->For Each Loop を実行。
- これにより foreach_begin1 と foreach_end1の二つによるノードブロックが出来る。
- 次の要領で heightfield_split1 と convertheightfield1 が作成した For Each ループブロックの中に入るようにする。
- timeshift1 の出力を foreach_begin1 の入力に接続。
- foreach_begin1 の出力を heightfield_tilesplit1 の入力に接続。
- convertheightfield1 の出力を foreach_end1 の入力に接続。
- foreach_end1 の出力を sop_fbx_rop1 の入力に接続。
- foreach_begin1を選択。
- foreach_end1 を選択。
- Iteration Method を By Count にする。
- Gather Method は Merge Each Iteration (デフォルト) のまま。
- By Count にすることで出来た Iterations を 9 にする (3x3 の場合)。
- Start Value を 0 にする。
- heightfield_tilesplit1 を選択。
- ノード名横のギアアイコンをクリックし表示されるメニューから Add Spare Input を実行。
- Spare Input 0 というパラメータが追加された。
- Spare Input 0 の一番右にある '+' アイコンクリック、Choose Operator ウィンドウで foreach_begin1_metadata1 を選択、Accept をクリックして確定。
- Tile Number パラメータに
detail(-1, "ivalue", 0)
とエクスプレッションを入力する。
Tile の間の筋は heightfield_tilesplit1 の Voxel Padding が 0 だから。これを 1 にすれば埋まる。 - ノード名横のギアアイコンをクリックし表示されるメニューから Add Spare Input を実行。
- ネットワーク最下流の sop_fbx_rop1 で再び Render ボタンをクリックすれば出力される。Maya に FBX で持っていくと次の通り。
Maya で頂点カラーを表示するには、アトリビュートエディタでシェイプノードの Mesh Component Display 以下の Display Colors をオンにする。
シーンファイル
h16_terrain_water.zip (102KB)- water_begin.hip: #2 直前までのファイル
- water_points.hip: 最後まで行ったファイル
最終更新: 2023-10-10
houdiniの勉強を始めてこちらのページを見つけました。
返信削除情報が豊富で大変参考になりそうですが、残念ながらシーンファイルがダウンロードできなっているようです。
ダウンロードできるようにしてもらえると嬉しいです。よろしくお願いいたします。
システム障害のようです。復旧まで時間がかかるかもしれません。しばらくお待ちください。ktaki@sidefx.com にメールアドレスを送っていただければ、そのメールアドレスにシーンファイルを送付できます。
削除ありがとうございます。
返信削除復旧する予定があるようでしたらそれを待たせていただきます。
思ったより早く復旧しました。ダウンロードできるように再度なりました。宜しくお願いいたします。
削除ダウンロードできましたー。ありがとうございました。
削除