ノードを組み合わせるHoudini流活用術
セッション後半ではパネリストによるHoudiniを用いた事例紹介がなされた。はじめに鈴木氏はプログラマー目線でのHoudiniの解説と、簡単な自作ツールの紹介を行なった。鈴木氏は「Houdiniのネットワークは、ネットワークがフォルダ、ノードがファイルとみなせる。コンピュータのファイルシステムに似ている」と説明。実際にHoudiniのノードやパラメータをPython Shellにドラッグ&ドロップし、パスが表示される様子を示した。「MayaでMELをヘビーに使う人なら、こういった視点から理解すると、わかりやすいのではないでしょうか?」(鈴木氏)。
また、「Houdiniはポリゴン、NURBS、幾何学シェイプなどの異なるジオメトリがサポートされており、全て共通のデータ構造で構築されている」という説明もあった。「3ds MaxやMayaでこれらをサポートするには、それぞれで異なるAPIを叩く必要があります。しかしHoudiniのジオメトリ構造は全て同じ(Point、Vertex、Primitive、Detailで構成)です」(鈴木氏)。鈴木氏によると、Houdiniを理解する上でジオメトリとアトリビュートは非常に重要で、ジオメトリは構造体をリスト化したもの、アトリビュートはその構造体の値にすぎないという。
その後、鈴木氏は「ジオメトリとアトリビュートの関係を説明する上でのHello World」と題して、HoudiniメッシュをUV頂点に変換する自作ツールと、そのつくりかたについて簡単に解説した。Houdiniのサンプルデータである豚の頭部メッシュを、スライダを動かすだけでUV頂点に変換するというものだ(詳細は以下の動画参照)。ポイントはHoudiniにジオメトリノードとして備わっているVertex Splitを使用することで、これによりメッシュの頂点とUV頂点の不一致を簡単に解消できるという。その後、同じくジオメトリノードのAttribute Promoteを使用し、バーテックスクラスにあるUVをポイントに移動させてやる。このようにして、1行もコードを書かずにHoudini上でツールの制作が可能であることを示した。
スライドを動かすだけでメッシュをUV頂点に変換させるツール(Houdiniのジオメトリとアトリビュートの関係を説明するためのサンプル)
最後に鈴木氏はビルのモデリングから、破壊シミュレーションを行い、エフェクトまで表現された一連の映像(下記)を紹介した。全てHoudini上で制作されたもので、モデリングからシミュレーション、レンダリングまで全方位でできるという。「CGの制作過程には様々な課題が潜んでいます。これらを自分で試してみることで、アーティストと課題を共有することが容易になります」(鈴木氏)。特にシミュレーションはプログラマーであれば楽しいはずだとして、実際に体験してほしいと呼びかけた。なお、本デモのシーンファイルは後ほど公開予定とのことだ。
Houdini上での制作の様子
HoudiniのHDAを使って機械学習を試す
続いて岸川氏はHoudini Digiital Asset(HDA)を利用した、Houdiniの機械学習における活用事例について解説した。HDAはHoudiniのシーンを構成するノードネットワークをカプセル化し、コントロール用のパラメータを露出させて、1つの独立したノードのように扱うためのしくみだ。これを、「超高機能なスニペット」と呼んでいた。岸川氏は「機械学習のプラットフォームをゼロからつくるのは大変だが、Houdiniを使えば手軽に構築でき、結果がすぐに見られる」と評価した。
他に「入力UIをドラッグ&ドロップでつくることができる」、「開発版とリリース版など、同名ノードの切り替えができる」、「バイナリなどのExtra Fileがもてるので、学習済みパラメータファイルなどを内包して配布できる」、「Asciiでバージョン管理ができるので、Gitでも管理可能」などの長所が挙げられた。
これを受けて紹介されたのが、2Dデータから3Dデータへの推論を行う機械学習ライブラリ「PRNet」の活用方法だ。PRNetは画像の形状をもとに頂点情報と色情報を推測するもので、GitHubで公開されている。これをHoudiniのHDAで実装し、Point Attributeに反映させて、ジオメトリとしてメッシュを表示させるというわけだ。PRNetのAPIを使用することで、比較的手軽に実装できるという。