Created on | Updated on

Houdiniチュートリアル:PROJECT GREYLIGHT3  ツールキットオーバービュー

前の記事:Houdiniチュートリアル:PROJECT GREYLIGHT2 USDの用語解説 & 問題点

ツールキットのデータダウンロードなどはSideFX Webサイトから

では、ツールキットそのものに入りましょう。まずは全体像をざっと見ていきます。

大規模なスタジオであれば、独自のパイプラインや、FTrackやShotGridとの連携などを構築していますが、このツールキットはもっと一般的なユーザー、つまり「普通の人」向けに作りたかったのです。そのため、ある程度「自己完結型」でありながら、USDの機能性を保った構成を目指しました。

このツールキットはテックデモでもあり、インスピレーションを提供すること、そして「こういうこともできるんだよ」という例として機能することを意図しています。もちろん、使えるものとして設計されているので、もし自分のスタジオのニーズに合わせてカスタマイズしたい場合は、他のシステムとの連携を手助けすることもできます。

ツールキットは基本的に4つのノードで構成されています(画面上には5つありますが)。すべては「Baseノード」から始まります。Baseノードは操作全体の「頭脳」であり、すべての処理をコントロールしています。

次に「Contextノード」は、フィルターの役割を果たします。ここで「どのショットを操作するか」を選択できます。Contextノードは複数作成でき、それらを「Context Switch」に接続することで、実質的にオン・オフの切り替えスイッチのように使えます。

「Outputノード」は、各コンテキストに対して再利用可能な出力ノードで、USD出力やレンダリングに使用されます。

そして「Submitノード」は、コンテキストと出力の組み合わせをまとめてバッチとして実行するためのノードで、可能な限りシンプルでクリーンな作りになっています。

デモファイルを作成するために、私はスウェーデンの群島に行って、iPhone 12と無料のスキャンアプリを使って環境をスキャンし、リフレクションマップなどを作成しました。

では、Houdini上の実際のセットアップを見ていきましょう。

画面上部にあるのが「Baseノード」です。まずここでプロジェクトを設定します。

これはHoudiniのProject設定に似ていますが、それに加えて必要なフォルダ構成を自動的に作成し、FPSや解像度などの初期設定もここで行います(他の設定で上書きされなければ、これが使われます)。

また、ショットフォルダ内にプレートが存在する場合は、そのフレーム範囲を読み取って自動でショットの範囲に設定できます。プレートをカメラに読み込んでビューポートに表示させる機能もあります。

まだプレートがない場合でも、サムネイル画像を使ってショットのビジュアルを表示することもできます。たとえば編集段階のスクリーンショットだけしかないようなときに便利です。

作業対象となる「部署(department)」もここで選びます。モデリングやルックデブの場合は少し挙動が異なりますが、それ以外は、ここで選んだスタックが自動的に読み込まれます。一般的にはレイアウトから作業を始めることが多いでしょうが、ライティングだけを担当するケースもあります。

「Manifest」は、たとえばショットのフレーム範囲や設定、プレースホルダーなどだけを設定して、それ以外は行わないといった用途に適しています。

「Ignoere loading current department exports( Current Departmentsが出力したデータを読み込まない)」設定や、「Ignore loading later departments(以降のDepartmentsを無視する」設定も可能です。たとえばアニメーターが作業していて、CFXのクロスシムなどが邪魔になる場合、そうした後工程を無視できます。また、「Ignore loading any department(すべてを読み込まない)=Rogueモード」も選択できます。

この「Template settings」では、今見えているこの「骨組み」を自動で構築します。また、テンプレートに関してはいくつかの設定項目があります。

たとえば、縦方向のスペースや、いくつの「コンテキスト(context)」を生成するか、といったことがあらかじめ指定できます。

さらに、「最初の1つを除いて、コンテキストやカメラを追加しない」というオプションもあります。これは、すべてを自動生成するのではなく、最小限の構造だけ欲しい場合に便利です。

たとえば、「最初に配置される仮のノード(プレースホルダーのようなドット)」だけが欲しくて、あとは自分の好きなように接続したい──そういう使い方ができるようになっています。

 

また、「Default Render Delegate」もここで選択できます。Arnold や Redshift などがインストールされていれば、それらもここに表示されるはずです。

ただし、このツールキットは基本的に Karma を前提に作られているので、Karmaを使う場合にはよりスムーズに動作するように設計されています。

では、次は「Contextノード」について見ていきましょう。

このノードは、作業対象を選ぶ場所です。フィルターのような役割を果たしており、ここでどのショットやアセットを扱うかを指定します。たとえば、ショットを1つだけ選ぶこともできますし、2つ、あるいはそれ以上をまとめて選択することも可能です。

また、「新しいショット」をここで作成することもできます(この作業は後ほど行います)。

ここで選択したすべてのショットに対して、以降の操作が一括で適用されます。

たとえば、このノードの下にライトを配置したり、トランスフォームを加えたりすれば、選択した全ショットに対してその操作が影響します

たとえばライトを置いたり、トランスフォームをかけたりすると、すべての対象ショットにそれが適用されます。

ただし、Contextノード自体にはデータの読み込み機能はありません。実際に読み込みを担当しているのは「Baseノード」です。ContextノードとContext Switchの間に挟まれた部分は、基本的に「オン・オフを切り替えるスイッチのようなもの」です。

また、サムネイル表示のオン・オフも切り替えることができます。

「Local Preview」という機能もあり、これは、作業中にビューがContextノードとSwitchの間にある場合、自動的に対象コンテキストを切り替えてくれるというものです。もしこの機能が邪魔だと感じたら、オフにすることも可能です。

さらに、フレームレンジを個別にオーバーライド(上書き)することも可能です。たとえば、フルCGのショットを扱っていて、レイアウト段階で特別なフレーム範囲を設定したいといった場合に便利です。

すべてのノードには上部に3つのボタンがあります。

最初のボタンは「Preview Switcher」です。

たとえばこのセクションでは、2つのショットが選択されています。そのため、このスイッチャーを使えば、それらのショットを簡単に切り替えて確認することができます

 

さらにノードネットワークの下の方へ行くと、すべてのショットだけでなく、出力ノードも一覧として見ることができ、それらもスイッチャーで切り替えることが可能です。

また、現在選択しているショットに関する情報や、そのショットに適用される設定内容なども、このUI上で確認することができます。

「Publish History」についても説明します。

この履歴には、プロジェクト内でこれまで行われたすべてのパブリッシュ(出力・保存)作業の情報が記録されています。そして、リストの中でグレーアウトされているものは、画面下部に表示されている日付よりも古いバージョンです。

この日付はスライダーで調整することができ、スライダーをドラッグすることで、どの時点の履歴を基準にするかを細かくgranularly選択できます。スライダーより右にあるものはすべて「新しいもの」として扱われます。

また、ある特定のコンテキストに絞って履歴を表示することもできます。そのためのボタンがあり、それをクリックすると、自分が現在選択しているショットやアセットに関する履歴だけを見ることができます。

さらに「REJECT Selected」機能もあります。たとえば、「ある出力ファイルが壊れている」「使いたくない」という場合に、それをリジェクトすることでファイル名に「reject」と追記され、他の人からも「これは破棄されたファイルだ」と認識されるようになります

一方で「ignore」という機能もあり、これは自分だけに適用される設定です。リジェクトと違って他人には影響しません。つまり、自分の作業時には無視したいけれど、他の人には見えていて問題ない、というような使い方ができます。

さらに、もし「Update All」して「うわ、変な状態になった……」となってしまった場合には、「Revert to previous date(前の状態に戻す)」ボタンで元に戻すことができます。これは非常に便利な機能で、何かを更新して「見た目が壊れた」とか「変なデータが入ってしまった」といった場合に役立ちます。

この「Revert」はContextノード単位で行うこともでき、「Lock update」という設定が可能です。もしその後全体を更新したとしても、そのノードの状態は変わらずロックされたままとなります。

 

「なぜContextノードごとにもっと細かく個別設定できないの?」という疑問が出るかもしれません。

これは良い質問です。ただ、このツールは「複数ショットをまとめて同時に扱う」という設計思想に基づいているため、コンテキストを積み重ねるように使うことを前提にしています。

仮にこれを完全にショット単位で個別管理しようとすると、毎回1ショットずつ独立したContextノードを作成しなければならず、「マルチショットを一括で扱う」という本来の目的と矛盾してしまいます。

そのため、完全な細分化は行わずに、「リジェクト」「無視」「更新のロック」「元に戻す」などのオプションを組み合わせて、柔軟に運用できるようにしてあるわけです。これでほとんどのユースケースはカバーできると思います。

続いて「Outputノード」についてです。

このノードは現在「レンダリング」出力として設定されています。そのため、指定されたベース部署(たとえばレイアウトやライトなど)に対して出力が行われます

この名前は自由に変更可能ですし、「所属部署」を上書きすることもできます(ただしこれは予期しない結果を招く可能性があるので注意が必要です)。

レンダラー関連の設定では、「デリゲート(レンダーエンジン)」を上書きすることもできますし、その他にもMantraで期待されるような設定項目の多くを変更することができます。

また、Basノードであらかじめ作成したAOV(AOVセット/レンダー設定プリセット)から選ぶこともできます。たとえば「この出力ではこのAOVだけを使いたい」といった設定ができます。

さらに、オーバースキャン(over scan)、解像度倍率(resolution multiplier)、サンプル数(samples)なども指定可能です。なお、「samples」は現時点ではKarmaレンダー用にしか適用されません。

他にもいくつかの処理を無効化したり、Cryptomatteを追加したりすることもできます。

「Outputノード」は、ノードツリーの末端に配置するのが理にかなっています。というのも、レンダリングでは「Phantom(見えないが存在するジオメトリ)」や「非表示処理」などを行いたい場合があり、それらはたいてい上流の処理と関係しているからです。

一方で、「export」用のOutputノードもあります。

これは設定が異なり、Base Departmentをオーバーライドすることもできます。つまり、「どうしてもこの出力だけは先の工程ではなく、前段階に渡したい」といった特殊なケースにも対応可能です(このあたりは後ほど詳しく解説されます)。

エクスポート出力ノードは、レンダーと違って上流の内容に依存しないため、ツリーのどこにでも配置可能です。ノードの上の方でも、ブランチの途中でも、好きな場所に置けます。

たとえば、異なる部署ごとに出力を分けたいような場面では、このノードの機能が活躍します。

特に便利なのが「Local Layerbreak」の機能です。これは、ノードより上にあるすべての情報を無視して、下にある変更だけをエクスポートするというものです。Contextノードが持つオーバーライドの仕組みによく似ています。

たとえば「船用のシミュレーションだけをエクスポートしたい」といった場合でも、そのパートだけを個別に出力できるようになります。そして、同じようなノードをいくつも重ねてスタックすることも可能です。下に複数のContextノードを接続することで、より柔軟な構造が作れます。この仕組みについては、後ほどさらに詳しく説明します。

 

もうひとつ知っておくと便利なのが、「Contextノード」と「Outputノード」の内部にジャンプして作業できるという点です。

つまり、ノードをダブルクリックするなどして中に入り、そこで独自の処理や設定を行うことが可能です。

これは特に、レンダーや出力に関して作業スペースが必要な場合に便利です。たとえば「ターンテーブルだけはこのレンダーにだけ含めたい」といったとき、ノード内部に入ってターンテーブルを追加することができます。

最後に紹介するのが「Submitノード」です。

Submitノードはデフォルトで1つのコンテキストを持っており、たとえば「preview」といった名前で設定することができます。

このSelectionエリアでは、初期状態ではすべての出力を対象にしますが、プレビューの場合は「レンダーだけを対象」にするといった使い方ができます。

このSubmitノードは複数作成可能です。たとえば「これは前景レンダー用」「これはエクスポート専用」など、用途に応じて自由に構成できます。

送信の準備が整ったら、すべての送信対象を一覧で確認できるようになっていて、

個別の「コレクション(バッチ)」ごとに処理することも可能です。

また、出力内容、適用される設定、バージョン管理なども一目で把握できるようになっており、非常に扱いやすく設計されています。

送信方法としては、バックグラウンドで送信するか、レンダーキューにクローンとして追加するかが選べます。

Preview Switcherで何か特定の出力が選ばれていれば、その部分だけをテンプレートとしてレンダーに回すことも可能です。

必要であれば、「Use Scenegraph settings」を使用してシーングラフのベイクも行うことができます。

以上がこのツールキットの概要です。

このツールキットは、「モジュール性が高く」、「再利用可能」であり、できる限り「堅牢(バグやミスに強い)」な構成を目指して設計されています。どんなプロジェクト規模でも活用できる柔軟な基盤を提供することがコンセプトです。

問題が解決しない場合は、Born Digital サポートまでお問い合わせ下さい。

※ 問い合わせ対応はBorn Digitalより製品をご購入頂きましたお客様のみのサービスとなります。ご了承下さい。
サポート問い合わせ