>   >  Houdini 16の新機能で生み出す地形~モニュメントバレー風の荒野~
Houdini 16の新機能で生み出す地形~モニュメントバレー風の荒野~

Houdini 16の新機能で生み出す地形~モニュメントバレー風の荒野~

最新のHoudini 16に新しく搭載された強力な地形作成機能「HeightField」。昨年上梓した自著のヒットも記憶に新しいトランジスタ・スタジオの平井豊和氏にこの機能を中心に用い、モニュメントバレーのような自然の景観を作成してもらった。

※本記事は月刊「CGWORLD + digital video」vol. 227(2017年7月号)からの転載記事になります

TEXT_平井豊和(トランジスタ・スタジオ
EDIT_藤井紀明 / Noriaki FUjii(CGWORLD)、山田桃子 / Momoko Yamada

Houdiniを用いた地形のモデリング

Houdiniの最新バージョンである16で新たに追加されたHeightField機能を使用して、アメリカ合衆国西南部にあるモニュメントバレーのような、岩山が点在する荒野の背景を制作しました。主にエフェクトの制作に使用されることが多いHoudiniですが、もともとモデリングの機能も非常に優れており、プロシージャルで柔軟なモデリングを自由に行うことができます。さらに新たに追加されたHeightFieldでは、複数のノイズパターンを組み合わせて単純な地形の隆起を表現するだけでなく、数百年や数千年にわたって侵食し変化する地形をシミュレーションによって表現できるため、非常に説得力のある地形を制作することができます。

  • 平井豊和(トランジスタ・スタジオ)
    テクニカルディレクター。著書『Houdiniではじめる3Dビジュアルエフェクト』発売中。今年の4月に入籍しました
    graberry.web.fc2.com

ここでは、HoudiniのHeightFieldを利用して地形を制作する際の全体的なながれを一例として提案したいと思います。新機能であるHeightFieldの概要や基本的なしくみの理解といった初歩的な事項から、台地などの特殊な地形をSOPの利点を活かしてモデリングする方法、単調に見えないような説得力のあるノイズの追加方法、最終的に細かいディテールをつける方法といった、地形を制作する上での手順や注意すべきポイントをひとつずつ順を追って記述します。また、Houdiniに関する深い知識はなくても十分に理解できる内容なので、Houdiniを始めたばかりという方もぜひとも地形を制作する上での参考にしてみてください。

制作する上での注意点として、二次元平面から高さ情報のみを変位させて形状をつくるというHeightFieldの性質上、絶壁や崖のような垂直にそびえるものに対してはディテールをつけることが難しいため、細かいディテールはボリュームからポリゴンに変換した後やレンダリング時につける必要があります。また、特にゲーム用途では背景に割けるポリゴン数が限られるため、最終的に出力する際のデータ量や計算量をいかに効率的にするかということも大きな課題となりそうです。

使用Software:Houdini 16.0.600

HeightField

まずはHoudini 16で新たに追加された地形を作成するための機能、「HeightField」について理解を深めましょう。

HeightFieldとは


HeightFieldはHoudiniの最新バージョンである16で新たに追加された、主に図のような地形要素を制作するための機能やノード群です。実態は平面的な二次元ボリュームで、基本的には特定のボクセルにおける高さを表す数値のみを制御することでOpenGLの描画時に形状がつくられ、最終的には二次元画像や三次元ジオメトリとして出力を行うことが可能です。これにより従来通りポリゴンでモデリングをするよりもメモリ効率が良く、マスクを定義しながら値を加算や乗算などの演算により制御が可能なことから、まるで画像のコンポジットのような感覚で三次元形状のモデリングをすることができます。また、実際のプリミティブタイプがVolumeであることから、通常の煙や炎を制御する際と同様にVolume VOPやVolumeWrangleなどのノードをそのまま使用することも可能です

HeightFieldのプリセット


Houdini 16で新たに追加された「Terrain FX」というタブのシェルフから、プリセットとして用意されているサンプルを見ることができます


アイコンをクリックするだけでなくプレイバーを再生してみると、雨や風によって侵食されて地形が変化していく様子を見てとることができます。山、丘、渓谷をはじめとして、孤島や月の表面といった様々な種類の地形が用意されているため、初めてHeightFieldを使用する場合はまずこれらをひと通り見ることでも基本的なノードの繋ぎ方やセオリーを把握することができます

HeightFieldのノード


「HeightField ~」で始まるSOPは全てHeightFieldの専用ノードです。ほぼ全てのHeightField用ノードはデジタルアセットであるため処理の内容が把握しやすく、場合によってはノードの仕様自体を改変することも可能です


HeightFieldタイプの情報に対応する入力部や出力部の接続は青緑色に表示されます。これにより、ネットワークが複雑になってしまってもHeightFieldを制御しているノード群が判別しやすくて非常に便利です

  • 代表的なノード

    【HeightField Draw Mask】
    カーブを自分で描いてマスクを定義できます。ペンタブレットを使用してより直感的にマスクを定義したい場合はHeightField Paintでマスクを定義することもできます

    【HeightField Mask Noise】
    ノイズによりマスクを定義します。単調でなく情報量をもったリアリティのある地形を制作したい場合には欠かせないノードです

    【HeightField Mask by Feature】
    地形の高さや傾斜、曲率などの特徴によってマスクを定義できます。例えば渓谷部にのみノイズを加えたり、平地のみ専用のテクスチャを変えたりなどといったプロシージャルな編集を加えることができます

    【HeightField Mask by Object】
    別のオブジェクトによりマスクを定義できます。従来のSOPの利点をそのまま活かして自由な形状のマスクを定義することができます

    【HeightField Noise】
    高さにノイズを加えて歪めます。地形を制作する上で使用頻度の非常に高いノードです

    【HeightField Distort】
    HeightField Noiseが特定のボクセルに対する高さの値にノイズを加える一方、このノードはもともとの高さの情報を二次元平面に沿って移動させるようにして歪めます

    【HeightField Erosion】
    時間軸に沿ってシミュレーションをして侵食を表現しHeightField Erosion ます。HeightFieldの目玉とも言えるノードです

次ページ:
おおまかな形状の作成

特集