8月22日(水)から24日(金)までパシフィコ横浜で開催されたCEDEC 2018。約8,000名の参加者を数える、国内最大のコンピュータエンターテインメントに関する開発者会議だ。本稿では200以上を数えるセッションの中から、「プログラマーだってHoudini覚えたい!~プログラマーのプログラマーによるプログラマーのためのHoudiniトーーク」のレポート記事をお届けする。
関連記事
ノードベースのVFX制作は怖くない! 日米協業タイトルで実現したUbisoftの取り組み~CEDEC 2018レポート(2)
TAを増やす改善策は「余裕をもつこと」~若手テクニカルアーティストが大いに語ったラウンドテーブル~CEDEC 2018レポート(3)
リアルとバーチャルの境界を技術で超える「バーチャルキャラクターをリアルイベントへ召喚する技術」~CEDEC 2018レポート(4)
『ウイニングイレブン 2019』Enlightenの導入が実現した効率的なライティングワークフローとは~CEDEC 2018レポート(5)
TEXT&PHOTO_小野憲史 / Kenji Ono
EDIT_小村仁美 / Hitomi Komura(CGWORLD)、山田桃子 / Momoko Yamada
独学で学んだHoudiniの先駆者たち
昨今ゲーム業界ではHoudiniブームが再燃しているが、残念ながらプログラマーの関心度はそれほど高くない。一方でHoudiniは他のDCCツールと異なり、プログラマー的思考と親和性が高い側面がある。本セッションでもプログラマーやTAとして活躍中のパネリストから、プログラマー目線でのHoudiniの魅力や、プログラマーが学習するメリットについて、様々なトピックが共有された。
左から長舩龍太郎氏(ミクシィ/司会)、山部道義氏(ポリフォニー・デジタル)、岸川貴紀氏(Cygames)、鈴木英樹氏(YUKE'S LA Inc.)
パネルディスカッションは司会を務めたミクシィの長舩龍太郎氏による、問題意識の共有から始まった。長舩氏が所属するXFLAG ARTS テクニカルアートグループではHoudiniの導入による全社的な効率化を模索中で、アニメ制作やイベント関連では導入実績があるものの、ゲームではまだ導入できていない。そこで有志による勉強会「Tokyo Houdini Meetup」を2017年12月に開催したところ、100名を超える参加者が集まり、大きな手応えを感じたという。なお、本イベントはCGWORLD.jpでもレポート記事が掲載されている。
長舩龍太郎氏(ミクシィ)
もっとも、それ以上に驚かされたのは、参加者の約4割がプログラマーやテクニカルアーティスト(TA)だったことだ。ここで「Houdiniはプログラマーと相性が良いのでは?」という仮説が得られたものの、これを受けて始まった社内勉強会(2018年2月~)ではアーティストの参加が中心で、プログラマーの姿が乏しいのだという。そこで「プログラマーにHoudiniコミュニティに参加してもらうためには、プログラマー目線でHoudiniの魅力を熱く語るしかない」と判断。今回のセッション開催に繋がったとした。
鈴木英樹氏(YUKE'S LA Inc.)
ディスカッションは自己紹介を兼ねて、パネリストの「Houdiniとの出会い」から始まった。ゲーム業界・遊技機業界・米VFXプロダクションを経て2013年にYUKE'S LAに合流した鈴木英樹氏は、「もともとは3ds Maxのプラグインを書く仕事が多かった。映像業界に移り、開発スタイルのちがいからプロトタイプの開発期間短縮を模索していたころ、Houdiniに出会った。習熟に2年くらいかかると聞いて、逆に興味がわいた。やってみたらノードベースの作業と相性が良かった」とふり返った。最初に触ったのはバージョン12で、2012年前後のことだ。
もっとも、業務に導入できたのはYUKE'S LAに入社後のことだった。PS3からPS4への移行期で、大量のモデリングを行う必要に迫られてのことだ。「それまでHoudiniは独学で学んでいて、何となく目星がついていたので、フェイシャルの自動生成に活用し始めました。最近ではライティングなどでも使用しています」という。
岸川貴紀氏(Cygames)
Houdiniについて知ったのは2011年ごろのことで、まだ学生だったというCygames岸川貴紀氏。イギリス留学中に現地のCGスタジオを訪問する機会があり、そこで映像業界では標準的なツールになっていることに驚いたという。その後、映像業界でエフェクトアーティスト、テクニカルディレクターを経て2018年にCygamesに合流した岸川氏。実務で使用し始めたのも前職時代で、最初は十数名いたエフェクトチームの中でも数名から始まり、最終的に全員が使用できるまでになった。現職ではリメッシングの自動化や地形生成などでHoudiniが活用されているとのこと。
山部道義氏(ポリフォニー・デジタル)
映像業界とゲーム業界を渡り歩き、2018年からポリフォニー・デジタルに合流した山部道義氏は、カナダ大使館で開催されたSideFX(Houdiniの開発元)のセミナーに参加したのがきっかけだったと明かした。時期は2013年で、バージョン12~12.5のころだ。Houdiniの導入は前職の映像業界時代で、エフェクトの生成から始まり、群衆シミュレーションなどにも使用していたという。
ここで長舩氏は「2012~2013年はまだ日本語の情報も少なかったと思うが、どのようにHoudiniを学習したのか」と質問した。すると3名とも「独学です」と即答。英語のサイトやチュートリアルをこなしていったという。学習コストが高いとされるHoudiniだけに、長舩氏も驚きを隠せない様子だった。
Houdiniはなぜプログラマーにも相性が良いDCCツールなのか
続いてトピックはプログラマー目線から見たHoudiniのメリットに移行した。岸川氏は「ノードベースによるワークフローが、ブロックを積み上げて形をつくり上げていく感覚に似ていて、ロジカルに使える」。山部氏から「標準ノードの組み合わせで大抵の処理が可能で、不足分だけカスタマイズすれば良い」。長舩氏から「データプロセスを確実に追うことができるため、プログラマーがデバッガでソースを追う感覚で使える」と、それぞれ特徴が示された。
実際、多くのDCCツールは大量の機能が存在するが、ユーザーが自由に機能を拡張することは難しい。その一方でHoudiniではノードの組み合わせによって、より自由度の高い処理を行うことができる。こうした特性から岸川氏は「Houdiniはミクロベースで、他のDCCツールはマクロベースのツール。マクロベースのツールでも、個々のミクロな処理が組み合わさって、全体が構成されている」と整理。そのためHoudiniは内部処理のしくみがわかりやすく、プログラマーと親和性が高いとした。
また、研究開発のプラットフォームに使えるという説明もあった。岸川氏は米PixarがSIGGRAPH 2018で発表した論文「Dynamic Kelvinlets: Secondary Motions based on Fundamental Solutions of Elastodynamics」における事例を紹介。スキンの腕振りや運動量の保存などをダイナミクスとジオメトリだけで実装するもので、研究内容の検証や可視化にHoudiniが使用されているという。他に機械学習や深層学習とHoudiniをからめた研究事例もあり、自身も個人的に研究を進めていると補足した。
Dynamic Kelvinlets: Secondary Motions based on Fundamental Solutions of Elastodynamics
鈴木氏は新技術の検証窓口や、CG技術を学ぶ上での教材として役立つという考えを示した。「モデリング周りのR&Dが多く、その大半をHoudini上でやっています。Houdiniだと作業結果がすぐにビューで表示されるので、画を見ながら調整しやすいですね。すぐに導入できなくても、将来に向けた知見が蓄積できます」(鈴木氏)。他にHoudiniを使い始めて、爆発や水しぶきなどのデータ構成が開けるようになり、技術の勉強にもなったという。これに対して長舩氏も「プログラマーがHoudiniを習得すると、視野が広がってキャリアアップにもつながる」と補足した。
[[SplitPage]]ノードを組み合わせる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を使用することで、比較的手軽に実装できるという。
[[SplitPage]]キャラクターモデルのリダクションをHDAで実現
山部氏からは群衆シミュレーションに活用するためのキャラクターモデルを、HDAで作成する手順について解説が行われた。ベースとなるのは高解像度のキャラクターモデルで、質感設定、スキニング、アニメーションまで付けられた状態のものだ。これを他の情報はそのままに、メッシュだけリダクションすることが目的で、一般的なワークフローは下記となる。
1.各種FBXデータの読み込み/ジオメトリ統合(カスタムスクリプト)
2.ルックデヴ(ビルトインノード)
3.UVパック/不要なUVセットの削除(ビルトインノード)
4.テクスチャベイク(Game Development ToolSet)
5.ジオメトリのリダクション(ビルトインノード)
6.キャプチャ情報(ウェイト情報)の転送(カスタムノード+ビルトインノード)
7.データの微調整と再ベイク(ビルトインノード)
ここでビルトインノードと記されているのは、Houdiniに最初から備わっているノードのこと。UVパックではUV Layout SOP、リダクションではPolyReduce SOP、キャプチャ情報の転送ではAttribute Transfer SOPが、それぞれ使用されている。Game Development ToolSetはSideFXから提供されている追加のツールキットで、ここではその中からGame Baker ROPが使用された。つまりノードやスクリプトを一部生成するだけで、これだけの作業がHoudini上で自動化できるというわけだ。
実際、PolyReduce SOPはモデルのシルエットや印象を保ったままメッシュをリダクションしてくれる優れもので、こうしたノードが標準で使用できる恩恵は大きいという。またプロシージャルならではの強みとして、どのような状態からでも手順を巻き戻して、完成度を高められる点を挙げた。「一度ベイクした後でもリダクションの効き具合などを自由に調整可能です。Houdiniでは、パラメータ操作をするたびに全行程を自動的に再実行できます。他のDCCツールで同じことをする場合、スクリプトの実行とアンドゥを何度も求められるのではないでしょうか? このように作業効率の高いツールを作成できることもHoudini習得の大きな魅力のひとつです」(山部氏)。
結論:プログラマーはHoudiniを触るべき!
このように三者三様で語られたHoudiniのメリット。ここで司会の長舩氏は議論を巻き取り、「プログラム知識はHoudini習得をブーストする」とまとめた。これまで議論されてきたように、Houdiniで求められる論理的思考や、ノードベースでの機能拡張はプログラマーと相性が良い。特にHDAの活用はプログラムそのものだ。機械学習・深層学習の実装効率性も高く、プログラマーとアーティストの関係性強化にもつながる。
一方で長舩氏は学習コストがかかる点にも触れた。他のDCCツールと比べてロジカルなだけに、導入時につまずくと余計な工数や管理コストが発生してしまう。そのためにはHoudiniを使いこなし、初心者を導けるTDやTAの存在が重要になる。また学習時には1人ではなく、仲間を募って共に教え合いながら学ぶと良いという。
ただし、こうした問題もプログラマーが触ると一変する。鈴木氏は「Houdiniで学習コストがかかるとは思っていない」と補足。アーキテクチャの一貫性が高く、動作が堅牢で、ロジカルな点がプログラマー向きだとした。「Houdiniにおけるメッシュの加工とは、極論すればジオメトリの中でアトリビュートを操作しているだけ。それに対していろんな表現をするためのモジュールがあるだけで、それを覚えていくのは、本を読みながら語彙を増やしていくようなもの」(鈴木氏)。いわば、プログラマーが新しい言語を学習していくプロセスに近いというわけだ。
そのためHoudiniの学習時には無理をせず、「できる範囲からはじめて、徐々に広げていく」、「様々な既存の処理をHoudiniで置き換えていく発想で学習を進める」などのTipsを紹介。それでも困ったら、Houdiniコミュニティで質問すると良いとした。また、現行機で無理なことでも、次世代機では可能になるとして、Houdiniを学ぶことのメリットについて強調。これに対して岸川氏、山部氏も「今後ますます情報量が増加していくことは明らかで、人力での対応は困難」だと同意。Houdiniのプログラム的な力を大いに活用するべきだとした。
長舩氏が運営するHoudiniコミュニティ「Tokyo Houdini Meetup」の紹介
最後に長舩氏は「学習コストが高いとされるHoudiniだが、そうではないという意見があることがわかった」と整理。改めてプログラマーとHoudiniは相性が良いと結論づけた。その上でHoudiniコミュニティにプログラマーが加われば、より活性化していくことはまちがいない」と指摘。一緒にHoudiniを盛り上げていきましょうと会場に呼びかけ、セッションを締めくくった。