『Houdini テクニカルアーティストによるGAME&VFXの考察』


2017 年 9 月 6 日(水)、浜松町のKCDホールにて、 『Houdini テクニカルアーティストによるGAME&VFXの考察』が開催されました。

 

 

こちらのセミナーでは、

Side Effects Software社 Mike Lyndon氏による「Game Development Toolset」紹介
Side Effects Software社 多喜 建一 氏によるHoudiniの製品概要紹介
株式会社デジタル・メディア・ラボ 森田 譲 様より、ボクセル化モデリングの実演
株式会社デジタル・メディア・ラボ 山田 賢一 様より、群衆・クラウドのセットアップの実演

をご講演頂きました。

最初のセッションでは、Side Effects Software社 Mike Lyndon氏より、Houdini のゲーム向けツールセット「Game Development Toolset」をご紹介頂きました。セッションの内容は、多喜 健一氏により逐次日本語訳が行われました。

セッションの詳細、および動画につきましては、こちらよりご覧いただけます。

 

 

次に、株式会社デジタル・メディア・ラボ 森田 様より、ドット絵からのゲーム向けボクセル化モデリングの手法について、ご紹介頂きました。

複数のドット絵に厚みを付けることが必要になった際に、ツールがあれば、大量生産ができるのではという発想から、ボクセルモデリングのツールをHoudiniで作成することにしたことで、まず大まかなツールの内容を、完成したデータを使用してご紹介頂きました。

その後、新しいシーンを開いて実際に操作しながら、手法をご説明頂きました。最初に、COP net SOPを呼び出し、画像を読み込んでいます。この画像を基に、ボクセルモデリングを行います。この際、後々処理を追加した時でも参照しやすいように、Null COPが下に接続されています。

次に、グリッドを作成します。分割数とサイズは直接指定せず、COPnetの中にあるNull COPの解像度を参照し、別の画像に変更しても動作するように設定されています。このグリッドの一回り小さいものをDivide SOPで作成し、Merge SOPで合成します。最初のグリッドは、UV Texture SOPでUVを設定した後、削除しています。最初のグリッドを残した状態でUVを設定することで、小さいグリッドに、正確にCOPの画像を張り付けることができます。

AttributeFromMap SOPでCOPの情報をマップとして参照し、ポイントの色として追加します。追加したカラーの中で不要な部分を、Delete SOPでエクスプレッションを使用して削除します。

ドット絵の形状を作成するために、1マス分のグリッドを作成し、色を設定したグリッドのポイントに対してCopy Stamp SOPで複製します。この際、Attribute Wrangle SOPでVEXを使用し、色をもとにグループ分けをしておきます。そして、ForEach SOPFuseSOPGroup SOPを使用し、同じ色を結合します。

その後、Dissolve SOPRemesh SOPで最低限必要なエッジを設定し、面の完成です。

側面は、Copy Stamp SOPで複製された板をFuse SOPで固めたジオメトリから、Poly ExtrudeSOPで押し出して作成します。先程と同様に不要なエッジがあるため、Dissolve SOPRemeshSOPを使用します。Transform SOPで先程作成した面の位置と合うように移動させ、Merge SOPで合成します。最終的にFBXで書き出す際に、色情報を持てるよう、カラーをバーテックスのカラーとして持てるようにアトリビュートを調整し、完成です。

 

また、3Dモデルからのゲーム向けボクセル化モデリングの手法についてもご紹介頂きました。外部で作成したジオメトリを読み込んで変換することを想定しているため、最初にFile SOPでジオメトリを読み込みます。継ぎ目がきれいに処理できないジオメトリに関しては、一度パーツに分けてFBXを書き出し、それぞれに処理をします。後の処理のため、Poly Fill SOPSubdivide SOPでジオメトリを閉じ、調整します。

閉じたジオメトリにConvert VDB SOPを接続し、ボリュームに変換したのち、Point FromVolume SOPでボリュームから等間隔のポイントを生成します。Attribute Transfer SOPでジオメトリのカラーをポイントへ移します。先程のドット絵の例と同様に、このポイントを使用してCopy Stamp SOPでボックスをコピーします。見た目上はこれで完成ですが、内側にもボックスがコピーされているため、現時点ではゲームには使用できない状態です。

この時点で、データを一度書き出し、Mayaを使用して人の判断が必要な部分について、個別の微調整が行われています。その後、データをFile SOPで読み込みます。形の調整が行われたジオメトリに対して、各パーツをMerge SOPで合成します。内側の不要なボックスは、Clean SOPで削除することができます。ドット絵の例と同様に、ForEach SOPでパーツ毎に処理をすることで、モデルのボクセル化が完了となります。

 

 

次のセッションでは、株式会社デジタル・メディア・ラボ 山田 様より、群衆シミュレーションのCrowd機能に関してご紹介頂きました。

まず、Crowdの各機能について詳しく紹介されているSide Effects Software社の動画をご紹介頂きました。日本語字幕つきで、とてもわかりやすい動画となっています。動画はこちらよりご覧いただけます。

 

次に、Crowdの機能を最初に試す際の簡単なセットアップをご紹介頂きました。

まず、モデルに関しては、シェルフのCharactor タブのMocapBiped3を使用することでテクスチャやアニメーションクリップを含んだアセットを呼び出すことができます。データがない場合も、こちらでテストを行うことが可能です。そして、その後の最低限のセットアップについても、シェルフのCrowdsタブにある、AgentPopulateで動作させるために必要なノードが作成されます。作成されるノードの中にはモデルの大きさなどをランダムにする機能もついており、人同士の衝突を避けるような挙動なども自動で設定されています。単純に街中を歩く群衆の表現などは、これらの設定のみで行えます。

 

次に、実際の作業に近い、外部からインポートしたデータをCrowdシミュレーションで使用するまでの一連のセットアップについて、実演して頂きました。こちらの例では、Autodesk Charactor Generatorのデータを使用し、複数のアニメーションデータをランダムに再生、またマテリアルも複数のテクスチャを使用して適用するということが行われています。

最初に、FBX形式のファイルをインポートします。キャラクタ、それからボーンアニメーションのファイルを読み込みます。その後、キャラクタのノードをデジタルアセット化します。

その後、デジタルアセット内にChopnetノードを追加し、Fetch ノードを追加します。デジタルアセットのパラメータとしてType PropertiesでFetchのパラメータを追加し、新規にFloatのLengthとVector 2のRange パラメータを作成します。追加したLengthとRangeは、Chopnet内で読み込んでいるアニメーションクリップのフレーム数を参照するようなエクスプレッションを追加します。これらは、アニメーションクリップをAgentに追加する時に使用します。

Agentをキャラクタとアニメーションクリップを使用して作成します。/outAgent ROPを作成し、名前を設定します。Agentとして出力する時のRangeは、HDAのパラメータを参照します。これにより、Chopnet内に読み込んだアニメーションのフレームレンジを手動で指定する必要なく書き出しが行えます。アニメーションが複数ある場合はFetchノードで参照するクリップデータを切り替えて、Agent ROPの保存するファイル名を変えて書き出すことで、Agentにそのクリップを追加することができます。

Agentの読み込みは、Agent SOPを使用して、ファイルを参照します。登録されたアニメーションで動いていることが確認できます。

Agentを選択してシェルフからPopulateを適用することで、群衆化が行えます。今回の例のキャラクタがかなり大きいため、発生する範囲を広げる調整が行われました。

シェルフからSimulateを実行して、シミュレーションが行えるようにします。実行時に表示されるウィンドウでは、シミュレーションで使用するクリップは全部選んでおくと必要なノードの追加と設定が行われるため、後々追加するより早く設定が行えます。作成されたDOPネットワーク内には、静的/動的コリジョンを設定するノード、群衆シミュレーションを行うCrowd Solver DOP、クリップを参照するノード、クリップを切り替える条件を設定するノード等が追加されています。

クリップやタイミングのランダマイズはCrowdSourceで各クリップを選ぶことで行えます。今回のデータはアニメーションの軸が異なっているため、Crowd Solver DOPのDirectionでアニメーションの方向に合わせます。

マテリアルのランダマイズは、Material StyleSheetを使用して行います。まずマテリアルを準備し、Material StyleSheetを開きます。作成したマテリアルを全体に適用するように設定し、追加で選んだものだけに別のテクスチャを張り付けるように設定します。

今回の例は群衆が小規模であり、調整がより直感的におこなえるため、こちらの方法が使用されていますが、パーティクルのIDを指定して選んだり、CVEXを使用して、ランダムにテクスチャを割り当てたりすることも可能とのことでした。

 

最後のセッションでは、Side Effects Software社 多喜 様による、Houdiniの製品と概要について、ご紹介頂きました。

 

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