新機能KineFXをはじめ、今回も魅力的なバージョンアップが盛りだくさんのHoudini 18.5。本記事では、それらの中から特に注目の機能をピックアップして紹介してみました。「進化が早くて追いかけるのが大変!」というそこのあなた、ぜひ参考にしてみてください。

※本記事は月刊『CGWORLD + digital video』vol. 269(2021年1月号)掲載の「バージョンアップの目玉は、一新されたリグシステム KineFX Houdini 18.5 レビュー」を再編集したものです。

TEXT(1〜3ページ)_北川茂臣 / Shigeomi Kitagawa
ブログ_nomoreretake.net 私、テレワーク向いてないなと思いました。

TEXT(4〜5ページ)_太田隆介/ Ryusuke Ota
Twitter_@jyouryuusui 土日Houdinistです。

EDIT_尾形美幸 / Miyuki Ogata(CGWORLD)

SOPベースで構築できる画期的なリグシステムに期待

バージョンアップの度にその進化に驚かされるHoudini。今回のHoudini 18.5も驚きの新機能が満載です。目玉は完全リニューアルされたリグシステムのKineFXではないでしょうか。SOPベースで構築できるリグシステムというだけでも画期的ですが、さらに既存のSOPノードをリグに利用したり、Vellumでリグを制御したりといったことが簡単に行えるようになっています。またリターゲット、アニメーションの読み込みやブレンドなどもSOPで行えるようになっているので、例えば全自動によるアニメーションの量産など、作業の効率化が期待できます。KineFX以外のSOP関連では、トポロジーの異なるモデル同士の形状を一致させるTopo Transfer SOPや、ありそうでなかったPath Deform SOP、鎖が簡単につくれるChain SOPなど、多くの魅力的なノードが追加されています。

エフェクト周りでは、Pyroに対して多くの改良が行われました。爆発に関するノードがいくつか追加・改良され、より高いクオリティの爆発を簡単に作成できるようになっています。またPyro関連では、GPUを用いた高速シミュレーションとインタラクティブなパラメータ変更もチェックしておきたいポイントです。前バージョンで実装されたばかりのKarmaやSolarisにも多くの改良が施され、Physical Lensシェーダの対応、Render Gallery機能の追加、Light Mixerの改良などが行われました。

上記以外にも新機能は盛りだくさんです。Volumetric Fogのビューポート対応、ネットワークエディタ上での新しいショートカット、新しいアトリビュートタイプの追加、Radial Menusのサポート、Python 3.7のサポート等々。以降では、今回のバージョンアップの中から特に注目の機能をピックアップして紹介していきます。

Topic 1:ノードの追加・改良による爆発クオリティの向上

前述したように、エフェクト周りではPyroに対して大きな変更が加えらており、爆発に関する多くのノードの追加・改良と、それによるクオリティの著しい向上が図られています。追加されたノードで特筆すべきものは、【1】Pyro Burst Source SOP、【2】Pyro Trail Path SOP、【3】Pyro Trail Source SOP、【4】Pyro Bake Volume SOPの4つです。【1】〜【3】は、主に爆発の発生源のコントロールに関するノードで、タイミング、規模、初期形状、トレイル作成などを細かく設定できるようになっています。【4】はPyroの質感の著しい向上が可能となるノードです。特筆すべきは、ノード内部で作成したスキャタリング用のボリュームを使い、爆発内部からの光を再現する機能です。従来のライトとレンダリング設定によるスキャタリングよりも、はるかに簡単にねらった効果を得ることができます。なお【4】は新しく追加されたPyro Shaderというノードを内包しており、セットで使用する設計になっています。


爆発クオリティを向上させる4つの新規ノード

▲Houdini 18.5でつくられた爆発のレンダリング画像。これまでのバージョンから爆発のクオリティが大幅に向上したのを実感できます。この爆発のシーンファイルは、SideFX公式ページのContent Libraryで提供されています


▲左から順に、爆発の発生源を作成するPyro Burst Source SOP、爆発のトレイルを作成するPyro Trail Path SOP、それを基にエミッタを作成するPyro Trail Source SOP。いずれのノードも、シミュレーションを実行することなく、ビュー上で形状や軌道を確認しながら作成できる点が嬉しいです


  • ◀▼【左】爆発のルックデヴ用ノードとして、Pyro Bake Volume SOPが追加されました。リアルなシェーディングができるのに加え、ビューポート上の見た目もレンダリング結果にかなり近くなっています/【左下】ビューポート表示/【右下】レンダリング結果


また、前述のPyro系ノードのサンプルとして、シェルフやTab MenuにAerial Explosion、Ground Explosionなどが追加されており、新機能を簡単に試すことができるのも嬉しい点です。もうひとつPyroで注目したいのは、Minimal OpenCL Solveです。これはPyro Solverに新たに追加されたオプションで、GPUを用いた高速シミュレーションとインタラクティブなパラメータ変更ができるというすごい機能です。誌面でこのスピード感、インタラクティブ性を伝えるのは難しいので、ぜひ実際に使ってみてほしいです。シミュレーション周りでは、Pyro以外でも様々なアップデートがありました。Vellumでは、ブラシでインタラクティブにシワをつくれるVellum Brush SOP、FEMの新しいコンストレイントが挙げられます。FLIPでは、Viscosity(粘性)のAdaptiveへの対応、前回強化が著しかったRBD周りの改良などが行われています。


新機能を簡単に試せるシェルフや、GPUを用いた高速シミュレーション

  • ◀▲爆発の新しいワークフローに対応したシェルフやConfigureノードが用意され、既存のシェルフも新規ノードに置き換わっていたりします。新しいノードの学習にも最適です


▲Pyro Solver SOPのパラメータのMinimal OpenCL Solveというオプションを有効にすることで、GPUを用いた高速シミュレーションが行えます。パラメータを変更すると、再生中のシミュレーション結果にインタラクティブに反映されます


次ページ:
Topic 2:制作の幅を広げてくれる新規SOPノード

[[SplitPage]]

Topic 2:制作の幅を広げてくれる新規SOPノード

以降では、Houdini 18.5で追加された新規SOPノードをいくつか紹介します。Topo Transfer SOPは任意のポリゴンモデルを高密度スキャンメッシュなどの形状にデフォームさせるノードで、目元や口元などの特徴点をユーザーが設定することで、ターゲット形状に精度よく近づけることが可能です。Path Deform SOPはパスに沿ってジオメトリを変形させるノードで、Twistやスケール、パスアニメーションも可能という高い汎用性を備えています。Chain SOPはその名の通り、鎖のようなジオメトリを簡単に作成できるノードで、複数のジオメトリを様々なパターンで並べる配置ツールとしても優秀です。Vellum Hairと組み合わせることで、シミュレーション結果をそのまま鎖の動きに反映できる点も嬉しいです。


Topo Transfer SOP、Path Deform SOP、Chain SOP

  • ◀▼【左】Topo Transfer SOPを用いて、【下】トポロジーの整ったSource GeometryをTarget Geometry(スキャンされた高解像度モデル)の形状に合うようデフォームさせた結果


▲SourceとTargetの双方にLandmarkと呼ばれる特徴点をビュー上で設定すると、それを基準にデフォームが行われます。最初にSource側でLandmarkを指定し、Targetに切り替えて移動させる、というながれで設定します


  • ◀▼【左】Path Deform SOPを用いて、【下】テストジオメトリのSquabをバスに沿って曲げて捻って潰した結果


  • ◀▼【左】Chain SOPで作成された、【下】列車のレールの作例。Houdiniのサンプルデータとして提供されています


Attribute系ノードでは、Attribute Adjustという名前の付いた値調整に特化した3種類のノードが追加されています。既存のアトリビュート値に対してのランダム、ノイズ値の加算乗算、Min/Max制限など、多くのユーザーがWrangleなどで行なっていたであろう調整がパラメータとして収まっています。Attribute系ではもうひとつ、Attribute From Pieces SOPというノードが追加されました。Copy to Points SOPとの併用を前提に設計されており、コピー先のポイントに対応させるオブジェクトの割り振りを行なってくれます。同じくCopy to Points SOPとの併用が前提のノードとして、Scatter and Align SOPも追加されました。既存のScatter SOPの上位互換ノードで、よりルールベースなポイントの配置、コピー用アトリビュートの作成などが行えるようになっています。

さらに、ポイント配置をサポートするノードとして、Mask by Feature SOPが追加されています。照明効果を基にMaskというアトリビュートを作成するノードで、前述したAttribute From Pieces SOP、Scatter and Align SOPと組み合わせれば、ライトが当たっているであろう箇所にのみポイントをばら撒き、そこに数パターンのジオメトリを配置する、なんてことが簡単に行えます。


Attribute系ノード、Scatter and Align SOP、Mask by Feature SOP

▲3種類のAttribute Adjustノード。左からFloat、Integer、Vector用で、ノードごとに調整できる内容が少しずつちがっており、扱うアトリビュートのタイプによって使い分けます


  • ◀▼【左】Attribute From Pieces SOPは、【下】コピー先のポイントに対応させるオブジェクトの割り振りを行なってくれるノードで、ノイズなどを用いた領域分けも可能。このノードの情報を基に、Copy to Points SOPなどでオブジェクトを配置するという使い方を前提に設計されています


  • ◀▼【左】Scatter and Align SOPは、【下】コピー時にPscaleやOrientなどのアトリビュートを細かくコントロールできるようになっています。このノードは任意のポイントの周りにだけ別のポイントをばら撒くといった配置を簡単に行えますし、ポイントに対してTagアトリビュートを付けることで、ジオメトリ配置時にそれらのポイントの区別もできます


  • ◀▼【左】Mask by Feature SOPは、【下】任意の方向からの光をシミュレーションし、ジオメトリのどの部分に光が当たっているか、影になっているかという情報をMaskアトリビュートとして返します。オクルージョンにも対応しています


次ページ:
Topic 3:Physical Lensシェーダの対応、Light Mixerの改良

[[SplitPage]]

Topic 3:Physical Lensシェーダの対応、Light Mixerの改良

Houdini 18.5では、ほかにも多くのアップデートが行われています。Karma、Solaris関連では、Physical Lensシェーダがサポートされました。これによりボケの形状、色収差、Lens DistortionなどのレンズエフェクトをKarmaに加えることができるようになりました。またRender Galleryという機能が搭載され、レンダリング画像のストックが可能になっています。Solarisに関しては、Light Mixer LOP、Edit LOPに大きな改良が加えられ、より使いやすくなっています。ノードとしてはExplore Variants LOP、RBD Destruction LOPなどが追加されました。前者はバリアントの管理確認用、後者はジオメトリの分割からシミュレーションまでを簡単に行えるようになっており、USDデータ上で破壊をどのように扱うかの参考にもなります。


Karma、Solaris関連のアップデート

▲Render Galleryの画面下方にはレンダリング画像がストックされます。画像をダブルクリックすると、別途Render Gallery Viewが表示され、ストックされた画像を大きな画面で確認・比較できます


  • ◀▼【左】Physical Lens VOPノードはレンズ効果を再現するノードで、カメラに適用します。Camera LOPに新しくKarma(Beta)タブが追加されており、そこでレンズシェーダを設定できます/【下】Physical Lens VOPノードで色収差の効果を追加したもの


▲Light Mixer LOPのパラメータ右上に追加されたアイコンから新規ライトを作成できます。ネットワークの上流にSubnetがつくられ、その中に作成したライトが格納されます。基本的なライティングはLight Mixer LOPだけで可能になるのではないでしょうか


▲Edit LOPが改良され、複数オブジェクトの編集管理を容易に行えるようになりました。各オブジェクトの編集内容が確認でき、任意のオブジェクトのミュートも可能です


それ以外の新機能としてビューポート上でのUniform VolumeとVolumetric Fogがサポートされました。前者はシーン全域にわたるボリュームで、後者は特定のボリュームやライトによって生じるFogです。シーンのスケール感や空気感をより把握しやすくなったのではないでしょうか。

操作周りでもいくつか変更がなされています。ネットワークエディタ上で、Jキーを押しながら複数のノードの上をラインを引くようにドラッグすることで、ノード接続が可能になっています。複数のノード、マルチInput/Outputにも対応しています。同じくネットワークエディタ上で、Radial Menusが使用できるようになりました。Nキーを押すことで表示され、ほかのRadial Menusと同様、自由にカスタマイズできます。Dictionary(辞書型)という新しいアトリビュートタイプの登場も見逃せません。それに伴い、Dictionaryアトリビュートを扱うためのVOPノードなども追加されています。また、SideFXの公式ページで提供されているContent LibraryがHoudini 18.5のリリースに合わせて大幅に追加されており、こちらも要チェックです。KineFXのセットアップ、ハイクオリティな爆発、Vellumの材質設定などのシーンファイルが提供されており、どれも非常に参考になるので、ぜひ一度見てみることをオススメします。


ビューポートや操作周りのアップデート

▲Display Optionに新しくFogタブが追加され、Uniform FogとVolumetric Fogを設定できるようになっています。後者はライトの表示設定がHigh Quality Lighting以上の場合に適用されます


▲スポットライトにVolumetric Fogを設定した場合のビューポート


  • ◀ネットワークエディタ上でNキーを押すとRadial Menusが表示されます。【左】はデフォルトの割り当てで、階層やネットワークタイプ間の移動が割り振られています


▲Dictionaryアトリビュートのサポートに伴い、VOPにもそれらを使うためのノードが追加されています。DictionaryアトリビュートはVEX、Pythonでも使用可能です


▲SideFX公式ページに追加されたContent Libraryはどれも非常に参考になります


次ページ:
Topic 4:SOPによる異なるスケルトン間でのリターゲット

[[SplitPage]]

Topic 4:SOPによる異なるスケルトン間でのリターゲット

新機能のKineFXは、従来のオブジェクトレベルのボーンを完全に上書きするために生み出された野心的な機能です。従来はボーン自体が向きと距離をもつボーンベースというシステムを採用しており、設計思想がHoudiniの中核であるプロシージャルではないという問題点を抱えていたため、SideFXは2年前から改革に着手しました。その集大成であるKineFXツールセットは、SOP内のポイントをジョイントに見立てたジョイントベースのシステムを基本設計に採用しており、ジオメトリレベルでボーンの作成・コントロール・アニメーションが可能となったのです。「機能の場所が変わっただけでは?」と感じる方もいるかもしれませんが、この場所こそが重要なのです。Houdiniの自由度は、全データをAttributeとする変幻自在な設計思想が支えています。ジオメトリデータが、ときにポイントクラウド、ときにボリュームとなり、様々な形式を横断します。そのレパートリーにリグが加わったのです。


KineFXの構造と、基本となるRig Pose・Skeleton・Rig Doctor

▲ポリラインにRig Poseを接続するだけでジョイントの回転を実現できます。固有のName Attributeは、Skeleton、Rig Docter、手付けでVEXから付与などの方法で作成します。Skeletonでイチからスケルトンを作成することも可能で、ビューポートでEnterを押すと編集を開始できます。ModeのModifyとCreateを切り替えて、ノード単体でスケルトンを作成することもできます。ポリラインを入力し、スケルトンに変換することも可能です。データはノード内に保持(stash)されるので、上流でデータを変更した場合は更新が必要となります。ジョイントの向きは各ジョイントのパラメータで編集でき、3×3の行列となるTransformに格納されます。Reorient JointsやRig Pose、Skeletonノードでジョイント選択時に「;」を押してオリエンテーションピッキングモードにすることで編集可能です(「Ctrl+LMB」で向きを調整)。親子関係はRig Treeウインドウで確認できます。Skeleton選択時は名前も編集可能です


機能群の中でも特に目玉となるのがリターゲットです。大元となるスケルトン入力データは、FBX、従来のOBJスケルトン、USD、モーションキャプチャデータ(.amc、.bvh、.trc)からの読み込みが用意されています。これらのノードに共通する主な入出力は、【1】キャプチャ情報が付与されたジオメトリ、【2】レストポーズのスケルトン、【3】アニメーションされたスケルトンの3つです。最終的には、これらのデータをBone Deformに流し込みます。まったく同じスケルトン構造の異なるアニメーションであれば、【3】の入力に付け替えるだけで動作します。

一方で、ジョイントの名前や構造自体が異なるスケルトンはデータが壊れてしまいます。そこで、異なるスケルトン内のジョイントに付与されたName Attributeを手がかりに、Match Poseで2つのスケルトンの位置や回転角を近似させ、Map Pointでマッピング(対応表づくり)を行います。マッピング時には、ビューポート上で追従してほしい箇所のジョイントに接続します。マッピングされたスケルトンは、Full Body IKによってターゲットに追従します。Full Body IK内の設定からジョイントのウェイト調整も可能です。Full Body IKで全て処理するのではなく、手首から指先までは別のMap Pointを登録しておき、FK Transferで手先の制御を行うこともできます。アニメーションの完成後は、そのままレンダリングしたり、ROP FBX Character Outputを適用してFBXファイルとしてエクスポートしたりできます。PDGによる自動リターゲットで作業効率を大幅にアップしたり、ゲームエンジンにリアルタイムで情報を転送してもいいかもしれません。


3つのデータ入出力と、リターゲットのマッピング

  • ◀▲【上】データ入出力を3つに分けることで、【左】ジオメトリでポリゴンの削減処理(Poly Reduce)を行なってもリターゲットしたアニメーションが破綻しません。


  • ◀▲同様にウェイト調整後のスケルトンの増減も破綻なく処理されます。マッピングは「アニメーションされたスケルトン」に適用させます。マッピングの対応表はjsonとして出力できるため、スケルトンの命名規則が同じであれば、次回からマッピング作業まで省略可能です。また、マップが共通であればPDGでフォルダ内のアニメーションをまとめてリターゲットできるため、大量のアニメーションを処理する際の強力な武器になります。Attribute名を変更することで、マッピングをFull Body IK用のMap Point、FK Transfer用のMap Pointに分けて格納することもできます。FK Transferは回転・移動・スケールを個別に指定して適用できるので、組み合わせて活用することで、さらに高精度のリターゲットが可能となります


次ページ:
Topic 5:SOPによるアニメーションの読み込みやブレンド

[[SplitPage]]

Topic 5:SOPによるアニメーションの読み込みやブレンド

KineFXには大前提となるルールがあります。KineFXの処理ではジョイントの固有性確保のため、固有のName Attributeが必須となり重複は許されません。また、Parentは必ずひとつしか許されません。KineFXの使用時には、このルールを守ることが求められます。なお、KineFXはリターゲットだけに特化しているわけではなく、通常のアニメーション機能も実装されています。Full Bodyではない通常のIKを付与する最も簡単な方法は、IK Chainsノードを使用することです。IK Chainsノードの中を見ると、Rig Attribute VOPが実体であることがわかります。VOP内でジョイントに対してGet Point Transformを行い、必要となる処理(Two Bone IK、Parent Constraint、Look Atなど)を施した後、Set Point Transformを実行します。この組み合わせが、Rig VOPにおける処理の基本となります。

ほかにも、パス追従アニメーションを実現するTransform From Pathや、Vellum Hairの結果をボーンに転写するCurve Solverなど、非常に多くのノードが用意されています。2つのスケルトンを準備し、片方は上半身、もう片方は下半身の動きを適用したい場合などは、Skeleton BlendやBlend Shapesなどを駆使して、ほしい結果を導き出します。


アニメーションブレンド

▲IK Chainsの第2インプットにはIKアニメーション用のIKドライバ(Name付きのTwistとGoalジョイント)を入力します。複数のIK Chainsの同時登録もできます。注意点はBlendの初期値が0になっており、1にしなければアニメーションが適用されないことです。0である理由は、Kine FX全体で様々なアニメーションをブレンドすることを前提にしているからでしょう


▲アニメーションブレンドの手法は、従来のBlend ShapeのほかにSkeleton Blendなどがあり、接地アニメーションの足首の微調整や、IK Chainsとのブレンドなどによって、理想とするアニメーションをつくり出せます


KineFXでは、スケルトンでの最終的なデフォームをBone Deformが担います。FBXの場合は、ウェイト付きのスキンが入力されるため問題なく動作します。一方でイチからキャプチャする場合は、第1インプットにボーンキャプチャ用のノードを付与する必要があり、従来のオブジェクトノードで使用していた手法を踏襲してBone Capture Biharmonicを使用します。ウェイトの微調整が必要な場合は、Capture Layer Paintノードで編集します。ロボットのようなハードサーフェスをスケルトンに追従させる場合は、Capture Packed Geometryでキャプチャします。これは入力するジオメトリをPackして、ひとかたまりのパーツに見立ててボーンにアタッチする手法です。Rig Attribute VOPと組み合わせれば、ピストン構造の補助パーツを付けることも可能です。


Bone Capture Biharmonicと、Capture Packed Geometry

▲アニメーションに対するスキンをHoudini内でつくり出す場合は、【上】人や動物の動きであればBone Capture Biharmonicを、【下】ロボットなどの動きであればCapture Packed Geometryを用います


Rig Attribute VOPと、Rig Attribute Wrangle

  • ◀▼VOPにGet Point TransformとSet Point Transformを配置する場合は、ビューポート上でジョイントを選択し、のpoint_2と書かれた丸印をVOP内にドラッグ&ドロップすると便利です(上の丸がGet、下の丸がSet)


▲こちらのWrangleではrotate関数の参照演算子となるlocaltransformに値が代入されています。通常のWrangleとは異なり、ジョイントごとに親の座標が継承された上で計算されます


KineFXは、ゲームエンジンなどで採用されているステートマシンの考え方に基づくアニメーション処理方法にインスパイアされています。そのステートマシンの特徴が顕著に表れている機能が、Motion Clipジオメトリで、単一のアニメーションのポーズをPackしたプリミティブで構成されています。


時間に依存しないMotion Clip

▲Motion Clipノードにスケルトンデータを入力すると、スケルトンアニメーション全体が単一のジオメトリにカプセル化され、複数のフレームを一度に視覚化できます。視覚化した後、Motion Clip Retimeでモーションクリップをシフト・スケーリング・トリミングしたり、Motion Clip Cycleでループ処理したり、Extract Locomotionで特定の位置に留めたり、Motion Clip Blendでアニメーションのブレンドを行なったりします。特定箇所の動きを確認したい場合は、Motion Clip Extractを使用して、指定のグループをPackされていないポイントのリストとして出力します。この抽出したデータは、SOPレベルであり、時間に依存しない状態であるため、既存のSOPで一度に複数のフレームを簡単に操作できます。抽出したデータはMotion Clip UpdateによってMotion Clipに再度マージさせます。Motion Clipの調整が完了した後、単一フレームを計算して出力する際には、Motion Clip Evaluateを使用します


KineFXは、さらに機能強化を図っていくロードマップが敷かれています。OBJからSOPへの完全移行を目指すHoudiniアニメーション機能の動向から、今後も目が離せません。



  • 月刊CGWORLD + digital video vol.269(2021年1月号)
    第1特集:Unreal Engine ここが好き!
    第2特集:映画『STAND BY ME ドラえもん 2』
    定価:1,540円(税込)
    判型:A4ワイド
    総ページ数:112
    発売日:2020年12月10日
    cgworld.jp/magazine/cgw269.html