今回はリリース目前のHoudini 18をひと足先に紹介する。先日SIGGRAPHで発表されたSolarisを中心に新機能をレビューしたので、ぜひ参考にしてほしい。

※本記事は月刊「CGWORLD + digital video」vol. 256(2019年12月号)からの転載となります。

TEXT_北川茂臣 nomoreretake.net
EDIT_海老原朱里 / Akari Ebihara(CGWORLD)、山田桃子 / Momoko Yamada(CGWORLD)

Houdini 18
リリース:2019年11月
価格:230,000円(Houdini Core/ノードロック)、517,500円(Houdini FX/ノードロック)ほか
販売元:インディゾーン、ボーンデジタル
www.sidefx.com/ja/products/houdini/whats-new-in-18
※今回のレビューは正式リリース前のビルドを基にしたものであり、ここに記載された以外にも新機能が搭載されています。

Houdini 18 Sneak Peek from SideFX Houdini on Vimeo.

より強力に、かつ効率良くHoudiniの進化が止まらない

近年のHoudiniのバージョンアップは単なる機能強化に留まらず、作業効率UPのための考え方やしくみが、より広い視野で提供されているのが印象的です。前バージョン17.5で追加されたPDGに驚いたのも記憶に新しいですが、今回のバージョンアップはそれ以上に驚かされる内容になっています。Houdini 18の目玉は何といってもSIGGRAPH 2019で発表された「Solaris」です。Solarisとは、ルックデヴ、レイアウト、ライティング、レンダリングの工程を、USDを用いて包括的にノードベースで管理運用するためのシステムの総称です。これに伴い、Houidini 18では新たなContextとしてLOPsが追加され、そのための専用ノードなども数多く追加されました。また、その一環として追加された新たなビューポートレンダラ「Karma」の実装も見逃せません。

シミュレーション関連ではPyroが大幅に改良されており、より低コストで効率的なシミュレーションが行えるようになっています。剛体シミュレーションまわりも変更が加えられており、SOPレベルで簡単にネットワークを構築できるようになったり、シミュレーション結果をより直観的にコントロールできる機能が追加されたりと、ユーザーが求める結果をより簡単に得られるよう改良されているのが印象的です。ほかにも、ビューポートの機能追加、新規SOPノードや既存SOPノードの強化改良など、盛りだくさんのバージョンアップとなっています。

本稿ではこうしたHoudini18のアップデート内容から、特に注目すべき機能に焦点を絞って紹介していきたいと思います。なお、今回のレビューで記載する内容は開発中のビルドであるため、実際にリリースされた際には機能や表記に差異がある場合がありますので、ご注意ください。

<1>USDとSolaris

USDによる並列非破壊ワークフローを実現

SolarisはUSD(Universal Scene Description)を用いたレイアウト、ライティング、レンダリングなどのシーン構築作業を包括的に管理運用するためのシステムの総称です。USDとはPixar Animation Studioが開発したオープンソースのシーン記述方法、およびそのファイルフォーマットです。3Dアセットとシーンの効率的な構築、そして並列非破壊ワークフローを目的として開発されたもので、あえて簡単に言うならAlembicやFBXのスゴイ版といったところでしょうか。USDの一番の特徴は、異なる工程のユーザーが同じシーンを非破壊に扱うことができる点です。3DCGの各制作工程(モデリング、アニメーション、エフェクトなど)ごとに独立したUSDファイルをもち、それらをPhotoshopのレイヤーのように、ステージ上に重ねながら合成、更新することで、各工程のUSDの情報を壊すことなく、ひとつのシーンをつくり上げることが可能です。

このUSDを扱うために、Houdini18では様々な機能が追加されています。まず新しいネットワークタイプとしてLOPs(Lighting Operators)が追加されました。LOPsは一見SOPsと似ていますが、扱うデータが異なります。SOPsが扱うのは、Houdiniのジオメトリですが、LOPsはUSDデータを扱います。USDはデータ構造や操作に独自のルールがあり、それに沿ってシーンを合成、構築していく必要があるのですが、LOPsにはそのためのノードが多数用意されています。ユーザーはLOPsネットワーク内で、ノードを繋げ合わせることで、USDにまつわる様々な操作することが可能となっています。Solarisの実装により、プロジェクトでのシーン管理や作成がより効率的に行えるようになることが期待されます。

新しいネットワークタイプLOPsの追加

SolarisのDesktop画面。Solaris作業用に新しくいくつかのPaneが追加されました。例えば画像左上のPaneはScene Graph Treeで、USD内のシーン階層を確認する際に利用するほか、プリミティブごとのビューへの表示などのコントロールも行えます
Images courtesy of Yiquen Cheng and Emily Fung



  • ネットワークビューでLOPsはstageとして表されています



  • LOP Networkノード

LOPsノード。これらのノードを用いてUSDデータを操作、ネットワーク構築します

USDはスケーラビリティも有しており、巨大なアセットや大量のインスタンスでも、それほどパフォーマンスを落とすことなく操作することができます

次ページ:
<2>Karma

[[SplitPage]]

<2>Karma

ルックデヴやライティングの作業効率を上げるビューポートレンダラ

KarmaはLOPsで使用することのできるUSD準拠の高速ビューポートレンダラです。レンダリング用の中間ファイルを用いないため、従来までのビューポートレンダラよりも高速にレンダリング結果を確認することが可能になっています。もともとUSDはレンダリングまで見据えられたフォーマットで、Hydraと呼ばれるビューポートレンダリング用のメカニズムを備えており、KarmaはこのHydraを利用したレンダラとなります。

Karmaはビューポートレンダラなので、ビューの表示を切り替えるだけで簡単に利用可能です。カメラやライト、マテリアルの変更がリアルタイムに反映されるので、ルックデヴやライティング作業の効率化が期待できます。個人ユーザーや小規模スタジオでは、LOPsの導入に利点を見出しにくいかもしれませんが、Karmaの使用は検討の余地があるのではないでしょうか。注意点としては、先に述べたようにKarmaはUSD準拠のレンダラという点です。つまりLOPsでのみ利用可能なレンダラとなります。Karmaは現在CPUベースのIPRレンダラですが、GPUベースのKarmaも今後のバージョンアップで実装予定とのことなので、そちらも今から期待されます。

Karmaによるビューポートレンダリング

Karmaでのレンダリング画面。ビューポートレンダリングなので、作業画面を切り替えてレンダリングを行います。切り替え直後からレンダリングが行われ、レンダリング開始までの時間が非常に短いです



  • Houdini GL 通常のビューポート



  • Karma Karmaの結果。Karmaではボリュームもレンダリングされているのがわかります

ビュー右上の操作メニューで通常ビューとKarmaの切り替えが行えます。一時的なレンダリングのPauseやRestartも可能です

DisplacementとSSS

KarmaはDisplacementやSSSにも対応



  • 通常ビュー



  • Karmaでのレンダリング画面

ライトの調整

Solarisでは複数のライトを一括で制御できるのもうれしい点。LightMixa(r LOP)、もしくはLight Mixarペインを用いることで、それが可能です。画像は、LightMixarの制御画面。これらで行われたライトの調整もKarmaにすぐに反映されます

次ページ:
<3>Pyro SparseとCombustion

[[SplitPage]]

<3>Pyro SparseとCombustion

Sparse Modeの実装とCombustionのSOP制御

バージョンアップごとに改良が加えられている印象のあるPyroですが、Houdini 18でも魅力的な改良がなされています。まず「Sparce Mode」なるものが実装されました。これを用いることで、流体の計算を領域内の必要な箇所のみ行うことができます。そのため、従来よりも計算コストが下がり、より早く効率的に煙や炎のシミュレーションを行えるようになりました。シミュレーション領域を自動で最適化してくれるため、従来のシミュレーションで用いていたGas Resize Fluid Dynamicノードも必要としません。これまでは、SmokeTrail 系のシミュレーションでは、Instancingの機能を利用して計算領域の最適化を行うなど、工夫が必要な場面が多々ありましたが、このSparse Modeが実装されたことにより、ユーザーは難しいネットワークを組む必要がなくなり、より画づくりに時間を割くことができるようになります。Sparse Modeが組み込まれた専用のノードであるSmoke Solver (Sparse)ノード、Pyro Solver(Sparse)ノード、および対となるSmoke Object(Sparse)ノードを用いることで、これらが利用可能です。

もうひとつ、Combustion(燃焼)に関する変更も行われました。従来のバージョンでは、CombustionはPyro Solverのパラメータのひとつとして、シミュレーション内で管理されてきましたが、今バージョンでは、それがSOPでの制御に変更となりました。炎が燃え広がるようなシミュレーションの場合、従来の方法では、炎が燃え広がる速さやその度合いはシミュレーションしてみるまでわからず、それを調整する度に再度シミュレーションし直す必要がありました。燃焼に関するコントロールがSOPレベルで行えるようになったことで、それらを直観的に制御することが可能になっています。

SOP制御によるCombustion(燃焼)

Pyro Solver(Sparse)を用いた煙のシミュレーションでVelocityを表示したもの。シミュレーション領域内のうち、煙の到達していない部分にはVelocityデータがないことがわかります

SOP制御でのCombustion(燃焼)の様子。上図がSOPによるCombustionの燃え広がり方、下図がそれによる炎のシミュレーション。SOPで制御した燃焼度合いとシミュレーションでの炎の燃え広がり方が大体同じになっているのがわかります

Combustion制御のネットワーク図とパラメータ。Combustionノードが新たにSOPに追加され、それを用いることで燃焼に必要なアトリビュートを付与できるようになっています

Combustionノードには、Visualize機能も付いており、温度や燃料、燃焼度合いなどを視覚的にも確認できます

<4>剛体シミュレーション

RBD Bullet Solver(SOP)のGuide Simulation機能が強力

剛体シミュレーションに関しても、大幅に改良が加えられました。今回のアップデートで、SOP階層でRBDシミュレーション用のネットワークを構築することができるようになりました。Vellumのネットワーク構築と似た印象になっています。それにあたっていくつか新しいノードが追加されました。主なものとしては、RBD Configure(SOP)、RBD Bullet Solver(SOP)の2つです。これまでWrangleノードを用いて行なっていた下準備の多くが、RBD Configure(SOP)で行えるようなっており、それをRBD Bullet Solver(SOP)に繋ぐだけで、RBDのシミュレーションができるようになっています。またRBD Bullet Solver(SOP)は、DOPネットワークを内包しており、ユーザーが任意のフォースなどを追加することも可能です。

RBD Bullet Solver(SOP)には、他にも様々な機能が内包されていますが、筆者が最もインパクトを受けたのがGuide Simulation機能です。ガイドアニメーション用のジオメトリを用意することで、RBD Bullet Solver(SOP)がそのガイドの動きに沿ったシミュレーション結果を作成してくれます。どのくらいガイドに沿ったシミュレーションにするかはパラメータで調整可能ですし、ガイドの動きに沿いつつも強い力のかかった個所はコンストレイントを外すなどもできるので、動きを演出しつつも自然なシミュレーションが行えます。難しいことを考えずシミュレーション結果を直観的にコントロールできる感覚は新鮮でした。

RBDシミュレーションとガイド

シミュレーションに必要な情報を付与するRBD Configure(SOP)【1】。そして実際にシミュレーションを行うRBD Bullet Solver(SOP)【2】。これらノードに以前のアップデートで実装されていた、RBD Material Fracture(SOP)やRBD Constraint Properties(SOP)をコネクトするだけで、SOPレベルでのRBDシミュレーションが可能となっています

ガイドジオメトリ。BoxをBend(SOP)で左右に曲げたもの

ガイドを元に行われたシミュレーション。ガイドの動きに近いものになっているのがわかります。どれだけガイドに沿ったシミュレーションにするかも調整できるので、直観的にシミュレーションの動きをコントロールできるようになりました

ガイドシミュレーションの作例
Images courtesy of Artem Smirnov

RBD Bullet Solver(SOP)には、Constraint情報をヒストグラムとしてビュー上に表示する機能もあります。これにより、様々なConstraint情報を俯瞰して見ることが可能となりました

Chipping 機能の強化

RBD material Fracture SOPのChippingの機能が、以前のバージョンと比べてより洗練され、より自然に細かな破片が生成されるようになりました
Images courtesy of Jonathan Gaspari

次ページ:
<5>そのほかの注目すべき機能

[[SplitPage]]

<5>そのほかの注目すべき機能

ノードやプリセットの追加多数

ここまで紹介した機能以外にも多くの追加改良がなされています。SOPでは、Copy to Point(SOP)、Remesh(SOP)、Sweep(SOP)などが、2.0としてリニューアルされています。グループ系ノードでは、Group Expand(SOP)、Group Promote(SOP)、Group by Lasso(SOP)ほか、新ノードが多く追加。新たな条件系ノードとしてSwitch-if(SOP)が追加。Attribute系ノードでは、今までありそうでなかったAttribute Remamp(SOP)が追加されています。既存のノードも、Bend(SOP)がパラメータとハンドルを一新し、より扱いやすくなっています。

ほかには、ビュー上での2D PANとZoomの機能が追加されていたり、Rampパラメータにプリセットが搭載されたのも、細かいところですがうれしい改善点です。FLIPでは計算方法が改良され、より低コストでのシミュレーションが可能になっているほか、Vellumではシミュレーション精度の向上や、新しいコンストレイントも追加がなされています。ここで紹介した機能以外にも、多くのノードや機能が追加改良されており、実際のリリースが待ち遠しい、そんなバージョンアップ内容となっています。

Velocity Blend機能の追加

Vellum Constraintの「Attatch to Geometry」にVelocity Blend機能が追加されました。これを使うことで、拘束対象のVelocityがVellumオブジェクトにどのくらい影響を与えるかをコントロールできます。画像はその比較。Velocity Blendを有効にした方が、布の不自然な暴れが少なくなっています
Images courtesy of Isabel Kokuti

FEMの圧縮に対する挙動の改良

FEMも圧縮に対しての挙動が改良されました。画像は前バージョンとの比較です。圧縮に対しての挙動が改良され、ソフトボディが隙間なく変形しているのがわかります
Images courtesy of Emily Fung

輪でグループを作成するGroup by Lasso(SOP)

新しく追加されたGroup by Lasso(SOP)は、ビュー上で描いた輪によってグループを作成するユニークなノードです



  • グループ作成用に描いた輪



  • それを別のビューから見たものです

Rampパラメータのプリセット

Rampパラメータにプリセットが追加されました。パラメータの右上にアイコンが追加され、そこからプリセットを適用したり、上下左右の反転なども簡単にできるようになっています。プリセットは、ColorとSplineそれぞれに用意されています



  • 月刊CGWORLD + digital video vol.256(2019年12月号)
    第1特集:今気になる、男性アイドル
    第2特集:CGエフェクト再考
    定価:1,540円(税込)
    判型:A4ワイド
    総ページ数:144
    発売日:2019年11月9日