Houdini 16 Professional Workshop – #5 『 ゲーム・インスタレーション制作におけるHoudiniの活用 』 –


2017 年 7 月 27 日(木)、株式会社プリズムプラス様の Prism Lab (プリズムラボ)にて、 Houdini 16 Professional Workshop – #5 ゲーム・インスタレーション制作におけるHoudiniの活用 が開催されました。

こちらのセミナーでは、『ゲーム・インスタレーション制作におけるHoudiniの活用』 と題して、UNLIT inc. ビジュアルエンジニアの土肥 武司 様より、SOPを中心とした基礎編として、インスタレーションコンテンツ、およびゲーム制作現場でのHoudiniでの制作フローをご紹介頂きました。

土肥 様はイベントのコンテンツやゲーム向けに、Houdiniと、Unityを中心に使用して制作を行われているということで、まずそちらの制作事例の映像を拝見しました。

 

そして、実際の事例の紹介に入る前に、初心者の方がつまずきやすい点として、SOP、CHOPなどのオペレータの種類と、それぞれが使用可能な階層についてご紹介頂きました。

次に、HoudiniでSOPによるモデリングを行う上での利点をご説明頂きました。「プロシージャルで修正に強い」「ラフから追いこめる」「ノードが製造機のようなもので、大量生産が可能」「過去のリソースを持ってくることができる」「工程が確認でき、学習や共有にも役立つ」という点が挙げられました。

 

その後、モデリングの中でほぼ使用されている便利なSOPについて、実際にHoudiniの画面で操作しながらご紹介頂きました。

ランダムな複製が可能なCopy SOP、線をつないで面を貼るSkin SOPPolyLift SOP、空いた穴をきれいに塞げるPolyFill SOP、断面のエッジをそのまま取得可能なDivide SOP、オブジェクトの投影とUVの転写を行えるRay SOP、トンネルの作成に使用可能なRails SOP、アトリビュートを作成するAttribute Create SOPなど、多数のサンプルによる紹介が行われました。

また、これらのSOPにはパラメータにそのままアニメーションを付けたり、関数を使用することができるため、上記の処理をアニメーションさせることで、おもしろい結果が得られるとのことでした。

 

基本的な紹介が行われた後で、実践編として、事例のシーンファイルを拝見しながら、実際にどのように作成したかを流れに沿ってご紹介頂きました。

最初にご紹介頂いたのは、江ノ島水族館の「ナイトワンダーアクアリウム」というイベントで12mのモニターで表示されるインタラクティブコンテンツのキャラクター制作の事例でした。

こちらの事例では、Unityで曲線が多いクラゲの表現を行う際に、頂点のアニメーションを行ったデータを持ち込むととても処理が重いため、まずHoudiniでオブジェクトを作成し、Unityのバーテックスシェーダに渡し、頂点毎にアニメーションをさせるという方法を取ったとのことです。

Curve SOPで描いた縦方向と横方向の断面のカーブを、 Rails SOPで並べ、Skin SOPで面を貼り、クラゲの傘部分のジオメトリを作成します。このジオメトリを作成するためには様々な方法がありますが、デザイナーの方の修正依頼が多くなることが予想されたため、カーブを変更するだけで形状全体が修正できるこちらの方法が使用されました。

 

頂点をUnityのシェーダでアニメーションさせるために、こちらの事例では、頂点の「UV」と「法線」を使用しています。現時点ではジオメトリにその情報は含まれていないため、Houdiniで追加の設定が行われています。

UVに関しては、UVTexture SOPのLow and Columnの方式でメッシュ形状に合わせてUVを展開します。このUVはアニメーションの滑らかさに影響するため、きれいに貼る必要があります。

法線は、Facet SOPでポイントの法線を追加し、その後、追加したUVと法線、それから時間を使用して、Point Wrangle SOP に式を入力して、波のように動くアニメーションを設定します。また、動きの微調整が行えるように、式で使用する項目をスライダのパラメータとして出力しています。

Houdini上で動作を確認するためのこのアニメーションは、UV、N、時間だけで構築されているため、Unityのシェーダで同様の式を記述することで再現が可能です。Houdini側で設定したアニメーションを利用して、もとのカーブを編集し、クラゲの形状を調整することもできます。

ここまで設定した内容の形状を変更して、クラゲの他のパーツを作成し、組み合わせます。そして、各パーツの最後にNull SOPを接続し、ノードの名前を「XX_」から始まるものに設定、Object Merge SOPで同階層にある「XX_」から始まるノードすべてをマージするように設定することで、各パーツをそれぞれ指定せずに、一つにまとめられます。

この結果をUnityに出力する際、HoudiniのデフォルトのFBXのエクスポート機能では作成したオブジェクトの最終結果のみを出力するには手間がかかるため、スクリプトとTextportを使用してオブジェクトを指定し、エクスポートが行われています。また、出力する前に確認用のアニメーションを除外するため、Point Wrangle SOPの有効化と無効化の切り替えをおこなえるようなScript SOPが追加されています。

 

また、元気株式会社様のレースゲーム「首都高バトル」のコースを作成された事例につきましても、ご説明を頂き、その後、簡単なコースを作成するフローについて、詳しくご紹介頂きました。

まず、地形の作成は、COPを使用して作成したノイズの画像を作成し、Attribute from Map SOPで参照してGridの頂点に色を与えます。

そして、その色をもとに、Point SOPで頂点を移動させ、地形の起伏を作成します。作成後、余分なポリゴンを削減するためにPolyReduce SOPを使用したのち、UVを設定しています。

道路部分は、今回の例では簡易版として、NURBSでカーブを作成し、使用しています。このカーブをRay SOPTransform SOPで地形に沿わせたものがベースとなっています。またこのカーブは、Point(old) SOPでエクスプレッションを使用し、グラフによるカーブの高さの調整が行えるような設定が追加されています。

次に、面を貼る際に必要となる法線を設定します。PolyFrame SOPで法線を追加し、最初と最後のポイントの処理をFuse SOPで行います。また、この法線に関しても、カーブの高さを調整した時と同様にグラフによって傾きを調整できるように設定されています。

カーブを左右にずらし、もとのカーブとの面をSkin SOPで作成することで、カーブから道路部分を作成することができます。

地形と重ね、浮いている部分にはその部分と地面の間をつなぐ盛り土のようなオブジェクトを追加します。逆に、地形と埋まっている部分にはSkin SOPで断面カーブから作成したトンネルを作成します。縁石や、コリジョン判定用の壁も追加します。

また、こちらの例では、テストの際に必要な進行方向を決めるポイントも、Houdini側で作成されています。道路を作成する時に最初に作成したカーブをもとにして、Resample SOPでポイント数を少なくし、Skin SOPでポリゴンのカーブ状のものを作成し、OBJ形式でエクスポートしています。このポイントをもとに、ゲームエンジン側で進行方向を設定します。

最終的に、FBX形式でエクスポートし、「Smart AI Car」という Unity Asset Store の有償Asset を使用して、テスト用のゲームアセットを作成しています。途中の段階でのデータをUnityに送信し確認することで、Houdiniで調整がしやすくなるとのことでした。

 

セミナー終了後の懇親会では、プリズムプラス様より、美味しい料理や、お飲物をご用意いただき、ご参加頂いた皆様による Houdini の情報交換が行われました。

 

本セミナー内容の動画およびサンプルデータにつきましては、Houdini を弊社ならびに弊社パートナーよりご購 入頂いたお客様で、AUP(年間アップグレードプラン)契約期間が有効なお客様向けにご提供致します。動画の URL およびパスワードにつきましては、ご登録頂きましたメールアドレス宛にご連絡させていただいております。ぜひご覧ください。