On this page |
|
このチュートリアルについて ¶
Houdiniでは、TOPノード(Task Operators)を使用してワークアイテム(タスク)を生成することで、処理を自動化したり、情報を保存することができます。 TOPノード ネットワーク を使用すれば、ワークアイテムを生成し、ローカルまたはファーム上でそれらを実行し、すべてのワークアイテム間の依存関係のネットワークを確立し、そのネットワーク全体ができるだけ効率的に処理できる方法を導き出すためのスケーラブルなレシピを作成することができます。 このレシピのことを PDG (Procedural Dependency Graph)と呼びます。
このチュートリアルでは、ジオメトリのレンダリングとコンポジットを一連化して、すべての最終フレームをMP4で出力するリニアTOPネットワークの作成方法について学習します。 物事をシンプルにするために、スクリプトノードを使用したり、何か複雑なネットワークの分岐を組むといったことは 必要ないです 。 これは、もっと複雑なセットアップに移行する前にPDGの基本的なすべての概念を学習するのに良い基本チュートリアルになっています。
Tip
TOPとPDGに関してもっと学習したいのであれば、TOPの紹介を参照してください。
前提条件 ¶
-
PDGの予備知識は不要です。
-
HoudiniのFXの基本を理解していること。
-
SOPs、DOPs、ROPsを使ってFXネットワークを作成した経験があること。
学習内容 ¶
-
一般的なPDGの概念。
-
使用頻度の高いTOPノード。
-
基本的なTOPネットワークセットアップとFX向けのPDGワークフロー。
はじめる前に ¶
FFmpegのインストール ¶
このチュートリアルの最後で、レンダリングしたすべてのフレームを動画に出力する方法を学習します。 動画を出力するために、 FFmpeg Encode Video TOPノードを使用します。
FFmpeg Encode Videoノードを使用できるようにするには、ローカルシステムにFFmpegユーティリティがインストールされている必要があります。
-
以下の手順を実行して、あなたのシステム上にFFmpegがインストールされているかどうか確認してください:
Mac
Terminalシェルで
ffmpeg
とタイプしてEnterを押します。Windows
コマンドプロンプト で
ffmpeg
とタイプしてEnterを押します。Linux
コマンドシェルで
ffmpeg
とタイプしてEnterを押します。エラーが返されなければ、あなたのシステム上にFFmpegがインストールされています。手順3に移動してください。
-
現在あなたのシステム上にFFmpegがインストール されていない 場合、ここからインストーラをダウンロードしてください。
-
FFmpegをインストールします。
-
-
(Windowsのみ) あなたのシステム上にFFmpegがインストールされたら、あなたのシステム環境変数の Path にFFmpegのパスを通してください。
Windows
-
コントロールパネル > システムとセキュリティ > システム > システムの詳細設定 を開きます。
-
システムのプロパティ ウィンドウで、 環境変数 をクリックします。
-
環境変数 ウィンドウで、 システム環境変数 > Path を選択して 編集 をクリックします。
-
環境変数名の編集 ウィンドウで、 新規 をクリックして、FFmpegのインストールディレクトリのbinフォルダの絶対パスをタイプして OK をクリックします。
-
チュートリアルのHIPファイルをコピーする ¶
始める前に、このチュートリアルで作業するHoudini HIPファイルをコピーしてください:
-
ファイルブラウザを開いて、Houdiniインストールディレクトリに移動します。
-
そのインストールディレクトリから
$HH\help\files\pdg_tutorials\intro_to_pdg
フォルダに移動します。 -
\intro_to_pdg
フォルダ内のfxworkflow_tutorial.hip
ファイルをコピーします。 -
ユーザーディレクトリに移動し、
\PDG_TUTORIAL_FILES
という名前の新しいフォルダを作成します。 -
その
\PDG_TUTORIAL_FILES
作業フォルダにそのHIPファイルをペーストします。 -
Houdiniを起動します。
-
fxworkflow_tutorial.hip
チュートリアルファイルを開き、その内容を知りましょう。このHIPファイルには、以下の内容が見つかります:
-
オブジェクトコンテキスト
-
Smoke Sourcing and Simulation
ネットワークボックス-
Pyroシミュレーション用のソースジオメトリ(
smoke_src
SOPネットワーク) -
煙を生成するPyroシミュレーション(
smoke_sim
DOPネットワーク) -
Pyroシミュレーションからの出力(
smoke_import
SOPネットワーク)
-
-
Render
ネットワークボックス-
背景シーン用のレンダリング可能なジオメトリ(
render_background
SOPネットワーク) -
レンダリング可能なPyroシミュレーション出力(
render_smoke
SOPネットワーク) -
レンダリング可能な球(
render_sphere
SOPネットワーク) -
ライト(
render_light1
とrender_light2
) -
カメラ(
render_cam
)
-
-
-
タスクコンテキスト
-
TOPネットワーク(
topnet
node)-
ワークアイテムを実行するローカルスケジューラ(
local_scheduler
TOPノード) -
フレームをレンダリングするOpenGLネットワーク(
opengl_render
ROPネットワーク) -
レンダリングされたフレームを読み込んで2×2のグリッドモザイクに組み立てるCOP2ネットワーク(
mosaic
COP2 network)
-
-
-
ステップ 1 - 煙のバリエーションを定義する ¶
このチュートリアルの最初のステップでは、 Wedge TOPノードを使用してバリエーションを作成するアトリビュートセットとそのバリエーションの数を定義することで、下流のPyroシミュレーション(煙)用の一連の バリエーション をセットアップします。
このセットアップによって、後のチュートリアルで煙のバリエーションを生成して比較することができます。
-
Houdiniを起動し、
fxtutorial.hip
チュートリアルシーンファイルを開きます。 -
ネットワークエディタ から tasks コンテキストに移動し、
topnet1
ネットワークに入ります。 -
Wedgeノードを作成し、名前を
smoke_variations
に変更します。Wedge ノードはTOPs⇥ Tabメニューの Data カテゴリにあります。
Wedgeノードのパラメータでは、アトリビュート値の変化率を構築し、生成するWedgeの数を定義します。
このチュートリアルでは、Pyroシミュレーションに対して、煙に加えるフォースと煙ソースのサイズを可変させる4個の異なる構成を定義します。
-
smoke_variations
ノードを選択し、force
アトリビュートとsize
アトリビュートを追加して Wedge化 します:-
Wedge Count を 4 に設定します。
これは、生成するバリエーションまたは Wedge の数を決めます。
-
Wedge Attributes を 2 に設定します。
これは、可変させるアトリビュートの数を決めます。
-
1番目 の Wedge Attributes マルチパラメータでは、以下の設定を行ないます:
-
Attribute Name パラメータフィールドに
force
とタイプします。これによって、Wedgeで
force
アトリビュートを可変させることができます。 -
Wedge Type パラメータドロップダウンメニューから Value List を選択します。
これによって、各Wedgeの
force
アトリビュートに特定の値を設定することができます。 -
Values マルチパラメータフィールドに 4 を入力します。
Value フィールドが4つ表示されます。
-
各 Value フィールドに、1つずつこれらの数値を入力します: 1 、 10 、 20 、 50 。
-
-
2番目 の Wedge Attributes マルチパラメータでは、以下の設定を行ないます。:
-
Attribute Name パラメータフィールドに
size
とタイプします。これによって、Wedgeで
size
アトリビュートを可変させることができます。 -
Wedge Type パラメータドロップダウンメニューから Range を選択します。
これによって、各Wedgeの
size
アトリビュートに値の範囲を設定することができます。 -
Start フィールドに 0.5 を、 End フィールドに 2 を入力します。
これによって、このノードは
size
アトリビュートに対して Start フィールド値と End フィールド値の間でランダムな値を取得するようになります。
-
-
他のすべてのパラメータはデフォルト値のままにします。
-
-
このノードのワークアイテムを生成してクックします。
TOPノードが何かの処理を行えるようにするには、まず最初にこのノードのワークアイテムを 生成 することで、そのTOPノードで実行させたいタスクを作成する必要があります。 そして、それらのタスクを実行するには、そのTOPノードをクックする必要があります。
-
smoke_variations
ノードをクリックして、そのコンテキストメニューから Generate Node を選択します。ネットワークエディタ 内の
smoke_variations
ノード上に4つのドットが表示されます。 各ドットはワークアイテムを表現していて、このノードで生成された各ワークアイテムには、force
とsize
のアトリビュートのバリエーションまたは Wedges が設定されています。 -
smoke_variations
ノードをクリックして、そのコンテキストメニューから Cook Node を選択します。ネットワークエディタ 内の
smoke_variations
ノードのワークアイテムドットとステータスアイコンの色は、それらのワークアイテムが待機中、クック中、完了のどれなのかを示すために変化します。色々なTOPノードUIエレメントについてもっと学習したいのであれば、PDGノードネットワークインターフェースを参照してください。
今のTOPノード上の各ドットは Wedge までも表現しています。
Note
TOPsでは、2つのタイプのノードがあります: 静的(Static) ノードと 動的(Dynamic) ノードです。 静的ノードは、何も入力を使用しないワークアイテムを生成することができます。つまり、これらのワークアイテムは上流データに 依存しません 。 動的ノードは、ワークアイテムを生成するために上流からの入力情報が必要になります。 つまり、動的ノードは、クックされた時にのみワークアイテムを生成することができます。
このチュートリアルの
smoke_variations
は、たくさんある静的ノードのうちの一つです。 静的TOPノードと動的TOPノードとそれらのTOPネットワークでの重要性についてもっと学習したいのであれば、Static vs. Dynamicを参照してください。Tip
TOPノードをクックすると、生成する必要のあるワークアイテムもそのノード上に 生成 されます。
-
-
smoke_variations
ノード上のワークアイテムドットをクリックしたままにします。wedgeindex
、force
、size
のアトリビュートがWedge毎にどのように値が変わっているのか注目してください。Tip
ワークアイテムドットをクリックしてから[と]のキーを使用することで、そのノード上のワークアイテムを前後に進めることができます。
-
チュートリアルシーンを保存します。
ステップ2 - 煙のソースジオメトリをキャッシュ化する ¶
このステップでは、 ROP Geometry Output TOPノードを使用して、Wedgeバリエーション毎にPyroシミュレーションの入力または ソース ジオメトリをキャッシュ化していきます。 このソースジオメトリは、シーン内で煙を放出するジオメトリを指します。
このノードは、Pyroシミュレーションの初期の煙のポイントをキャッシュ化し、ソースジオメトリをシミュレーションから切り離します。 (Wedgeなどを使って)シミュレーションのパラメータ値を変更する際に、ソースジオメトリも再度クックする 必要がないように するために、このような処理を行ないたいです。 このノードでは、そうするよりも、ソースジオメトリのみを受け取り、Pytoシミュレーションを実行します。
-
ネットワークエディタ でROP Geometry Outputノードを作成し、名前を
smoke_src
に変更してから、その 入力 をsmoke_variations
Wedgeノードの 出力 に接続します。ROP Geometry Output はTOPs⇥ Tabメニューの Geometry カテゴリにあります。
smoke_src
TOPノードには、smoke_src
の SOPネットワーク を指します。 このTOPノードは、Wedgeバリエーション毎に、指定したアトリビュートを使っていくつものワークアイテムを生成し、そのSOPネットワークを1-120フレーム間でクック(実行)します。 -
smoke_src
TOPノードを選択してから、以下のパラメータを設定します:-
Evaluate Using パラメータドロップダウンメニューから Frame Range を選択します。
Frame Range パラメータのデフォルト値には
$FSTART
と$FEND
の変数が設定されています。 これらの変数はHoudiniのビルトイン変数で、Houdini プレイバー の Global Animation Start Frame と Global Animation End Frame の値に相当します。 そのため、プレイバーの Global Animation Frame の値を変更すると、smoke_src
TOPノードの Frame Range 値が自動的に更新されます。-
一時的にプレイバーの Global Animation Frame 値を変更してみて、 Frame Range パラメータフィールドの値がそれに応じて変わることを確認しましょう。
-
プレイバーの Global Animation Frame の開始値と終了値を試し終わったら、それらの値をデフォルト(それぞれ 1 と 120 )に戻してください。
-
-
smoke_src
SOPネットワークの入力パスを指定します。-
SOP Path パラメータフィールドの隣にある Open floating operator chooser ボタンをクリックします。
-
Choose Operator ポップアップウィンドウが表示され、 obj ▸ smoke_src ▸ create_density_volume を選択して Accept をクリックします。
SOP Path パラメータフィールドが以下のパスになります:
/obj/smoke_src/create_density_volume
これで
smoke_src
TOPノードはシミュレーションのソースジオメトリとしてどのジオメトリを使用するのか分かるようになりました。 -
-
smoke_src
TOPノードの出力パスを指定します。毎フレーム4個の出力ファイル(Wedgeバリエーション毎に1個のファイル)がWedgeされるので、出力ファイルがお互いに上書き されない ようにすために、 Wedge番号 を含んだ固有のファイルパスを作成する必要があります。
-
Output File パラメータフィールドに以下のパスを入力します:
$HIP/geo/$HIPNAME.$OS.`@wedgeindex`.$F.bgeo.sc
wedgeindex
は、Wedgeノードで自動的に生成されるアトリビュートです。 このアトリビュートは、Wedge Count中の各Wedge番号を示します。Note
Wedgeの後にWedgeを繋げて Wedgeを入れ子にして 使用していた場合には、各Wedgeは固有の Wedgeインデックス を持ちます。 Wedge番号 は、Wedge Countから決まる番号で、各Wedgeノードから派生しています。 その一方で、 Wedgeインデックス は特定のWedgeバリエーションのグローバルで固有なインデックスです。 つまり、Wedge番号は0,1,2,3のようにWedge Countの連番で番号が上がっていくのに対して、Wedgeインデックスは0から始まって最大でワークアイテムの数-1まで番号が上がっていきます。 このWedgeインデックスの値は固有であることが保証されます。
このチュートリアルではWedgeを入れ子にしていないので、Wedge番号とWedgeインデックスは 同じ値 になりますが、ファイル名が常に固有になるように出力ファイルには
@wedgeindex
変数を使用するべきです。
-
-
他のすべてのパラメータはデフォルト値のままにします。
-
-
smoke_src
TOPノードで生成されるワークアイテムを見ていきましょう。-
このノードのワークアイテムを生成します。
このノードに480個のドットが表示されます。 各ドットは、各Wedgeの各フレームのソースジオメトリワークアイテムを表現しています(120フレーム x 4個のWedge)。
-
smoke_src
ノード内のワークアイテムドットのどれかをクリックします。smoke_variations
ノード上のワークアイテムとsmoke_src
ノード上のそれに関係するタスクの間にラインが表示されていることに注目してください。 このラインとそれを結ぶドットのハイライトは、ワークアイテム間の 接続 を示しています。smoke_variations
ノードは、Wedgeバリエーション毎にフレーム1-120までsmoke_src
ノードのソースジオメトリをクックするワークアイテムを生成します。 -
smoke_variations
ノードでは、以下の設定を行ないます:-
一時的に Wedge Count を 5 に上げます。
-
smoke_variations
ノードをクリックして、そのコンテキストメニューから Dirty and Cook This Node を選択します。 -
smoke_src
TOPノードのワークアイテムを生成します。
smoke_src
ノードは入力ワークアイテム毎にフレーム分のワークアイテム生成プロシージャを適用するので、これによってWedgeバリエーションの数が増えます。 そのため、480フレーム分のワークアイテムだったのが、今では600フレーム分のワークアイテムが生成されました。 -
-
Wedge Count を元の値に戻します。
-
smoke_variations
ノードの Wedge Count を 4 に下げます。 -
smoke_variations
ノードをクリックして、そのコンテキストメニューから Dirty and Cook This Node を選択します。 -
最後にもう一回
smoke_src
TOPノードのワークアイテムを生成します。
-
-
smoke_src
TOPノードのすべてのワークアイテムを確認します。このノード上のすべてのワークアイテムを示したすべてのドットが 表示しきれていない ことに注目してください。
ネットワークエディタ 内のノード内に表示するワークアイテムの数が多すぎた場合、ドット下のバーをクリックするか、 Task Table Graph ウィンドウを開いてそのワークアイテムのスプレッドシートを確認することができます。
-
smoke_src
TOPノードの Task Table Graph ウィンドウを開きます。Task Graph Table ウィンドウを開くには、このノードの右下コーナーにある2列アイコンをクリックします。
Task Graph Table を使用することで、操作しやすくて理解しやすいテーブル書式でこのノード上のすべてのワークアイテムの状態を検査することができます。
-
-
-
smoke_src
TOPのバッチ処理を有効にします。-
smoke_src
ノードのパラメータエディタで ROP Fetch タブを選択します。Frames per Batch パラメータを見てください。
現在の値を使用すると、このノードは、必要な出力をクックして生成するものの、このノードはワークアイテム毎に 1個のプロセス しか作成しないので 非効率 です。 このノードは、ローカルスケジューラによって制御された固有のプロセス内でソースジオメトリに対して各ワークアイテムをクックします。 あなたがクックしようとするネットワークがクックをするのに非常に高速であった場合、プロセスを分散させてそれらのスケジュールを管理するのは実際にワークを処理する時間と比べて無駄に時間を消費してしまいます。
これを高速化するには、バッチサイズを上げる必要があります。
-
Frames per Batch パラメータを 10 に設定します。
10 のバッチサイズは、このノードがプロセス毎に1個ではなく 10 個のワークアイテムをクックすることを意味します。
このようにクックするワークアイテムを収集することで、このノードは、複数のワークアイテムに対してプロセスを起動させるオーバーヘッドを共有します。
-
-
smoke_src
TOPノードをクックします。ネットワークエディタ と Task Graph Table ウィンドウのどちらでも
smoke_src
ノード上の色々なワークアイテムのクック状態が表示されるのが確認できると思います。すべてのワークアイテムのクック状態は、 ネットワークエディタ のTasksメニューバーにも表示されます。
ワークアイテムドットカラーとステータスアイコンについてもっと知りたいのであれば、PDGノードネットワークインターフェースを参照してください。
Note
-
smoke_src
ノード上の各ドットは、アニメーションジオメトリの フレーム も表現します。 -
TOPノードをクックすると、TOPネットワーク内の上流の 未クック のノードもクックされます。 この場合だと、
smoke_variations
Wedgeノードが未クックなら、smoke_src
TOPノードをクックすると、その入力であるsmoke_variations
ノードもクックされます。
-
-
By Batch タスク折り畳みオプションを有効にします。
現在のところ、
smoke_src
TOPノード上のすべてのワークアイテムは、 バッチ ワークアイテムであっても個々のドットとして表示されます。ノード上に表示されるワークアイテムの数を減らすには、 By Batch タスクディスプレイモードを有効にします。
-
ネットワークエディタ で Tasksメニュー ▸ Task Graph Display Options を選択します。
-
Task Graph Display Options ポップアップウィンドウで、 Collapse セクションの By Batch を有効にします。
ノード上のすべてのワークアイテムドットが バッチワークアイテム としてリングで表示されるようになりました。 Frames per Batch が 10 に設定されているので、各リングは、10個のワークアイテムのバッチを表現しています。 このようにワークアイテムを視覚化することで、ノード上のワークアイテムがたくさんあっても管理とデバッグが簡単になります。
-
通常では、このディスプレイオプションを 有効 のままにするのが良いでしょう。 しかし、このチュートリアルでは無効でもタスク間の接続が見えるので、 Collapse ▸ Off にします。 これは By Batch を無効にします。
-
-
ネットワーク内で
@
アトリビュート参照の使われ方を見ていきましょう。-
Objectコンテキストに切り替えます。
-
Smoke Sourcing and Simulation ネットワークボックス内の
smoke_src
SOPネットワークの中に入ります。 -
sphere1
ノードを選択し、 Uniform Scale パラメータの値を見てください。このSphereノードは
@
アトリビュートを使ってsize
PDGアトリビュートを参照していることに注目してください。この
@size
変数は、smoke_variations
Wedgeノード上のワークアイテムのアトリビュートです。 そのWedgeノードに接続されたsmoke_src
TOPノードが指しているsmoke_src
SOPネットワークは、そのsize
PDGアトリビュートを参照することができ、さらに、そのSOPネットワークがそのWedge変数の使い方を知っていることになります。この
@
アトリビュート参照によって、Wedgeプロパティの結果をインタラクティブにプレビューすることができます。 ビューポートにsmoke_src
SOPネットワークを表示して、smoke_variations
Wedge TOPノードのワークアイテムドットをクリックすると、出力されたジオメトリWedgeバリエーションをプレビューすることができます。 他にも、@size
変数が変更される度に、Houdiniはsphere1
SOPを更新して、そのWedgeアトリビュートの新しい値で再評価された結果を表示します。Note
@
アトリビュート参照を使ってこのようなタイプのリレーションシップを作成することを、 Pull形式 Wedgingと呼びます。 別のタイプのTOPs Wedgingテクニックについてもっと学びたいのであれば、Pull vs. Pushを参照してください。 -
sphere1
ノードの Display フラグを有効にします。 -
トップレベルのObjectコンテキストに戻ります。
-
smoke_src
SOPネットワークの Display フラグを有効にします。 -
tasksコンテキストに戻って、
topnet1
TOPネットワークに入ります。 -
smoke_variations
TOPノードのワークアイテムドットをクリックすると、ビューポートにそのWedgeによるジオメトリをプレビューすることができます。
-
-
チュートリアルシーンを保存します。
ステップ3 - 煙のシミュレーション出力を取り込む ¶
このステップでは、 ROP Geometry Output TOPノードを使用して、Wedgeバリエーション毎にPyro(Smoke)シミュレーションの出力を取り込んで実行します。
-
ネットワークエディタ のtasksコンテキストの
topnet1
TOPネットワーク内で、ROP Geometry Output TOPノードを作成し、名前をsmoke_sim
に変更してから、その 入力 をsmoke_src
TOPノードの 出力 に接続します。ROP Geometry Output はTOPs⇥ Tabメニューの Geometry カテゴリにあります。
smoke_sim
TOPノードには、smoke_import
の SOPネットワーク を指します。 このTOPノードは、Wedgeバリエーション毎に、指定したアトリビュートを使っていくつものワークアイテムを生成し、そのSOPネットワークを1-120フレーム間でクック(実行)します。 -
smoke_sim
TOPノードを選択してから、以下のパラメータを設定します:-
ROP Geometry タブの Evaluate Using パラメータは、デフォルト値の Single Frame のままにします。
このパラメータを設定する 必要はありません 。
smoke_sim
TOPノードの入力はsmoke_src
TOPノードに接続されていて、そのsmoke_src
TOPノードには既にワークアイテムがあるので、smoke_sim
TOPノードはその入力上のシミュレーションソースワークアイテム毎に1個のシミュレーションワークアイテムを自動的に生成します。 -
smoke_import
SOPネットワークの _SOP Path を指定します。smoke_sim
TOPノードには、シミュレーションソースではなくて、実際のPyroシミュレーション 出力 を指す必要があります。smoke_sim
TOPノードは、そのシミュレーションのDOPネットワークからの出力を受け取り、それをジオメトリに格納します。-
SOP Path パララメータフィールドの隣にある Open floating operator chooser ボタンをクリックします。
-
Choose Operator ポップウィンドウが表示され、 obj ▸ smoke_import ▸ import_pyrofields を選択して Accept をクリックします。
SOP Path パラメータフィールドが以下のパスになります:
/obj/smoke_import/import_pyrofields
これで
smoke_sim
TOPノードは煙にどのシミュレーション出力を使用するのか分かるようになりました。 -
-
smoke_sim
TOPノードの出力パスを指定します。smoke_src
TOPノードと同様に、出力ファイルがお互いに上書き されない ようにすために、 Wedge番号 を含んだ固有のファイルパスを作成する必要があります。@wedgeindex
によって、 固有の ファイル名で出力ファイルを作成することができます。Output File パラメータフィールドに以下のパスを入力します:
$HIP/geo/$OS.`@wedgeindex`.$F4.bgeo.sc
-
-
シミュレーションのキャッシュ化をセットアップします。
-
ROP Fetch タブの Cache Mode パラメータドロップダウンメニューから Write Files を選択します。
これは、ビューポート内で迅速にWedgeシミュレーションフレームを再生できるようにするために、クックされたシミュレーションフレームを書き出します。
-
-
smoke_sim
TOPノードで生成されるワークアイテムを見ていきましょう。-
このノードのワークアイテムを生成します。
このノードに480個のドットが表示されます。 各ドットは、各Wedgeの各フレームのPyroシミュレーションワークアイテムを表現しています(120フレーム x 4個のWedge)。
-
smoke_sim
ノード内のワークアイテムドットのどれかをクリックします。smoke_sim
ノード上のPyroシミュレーションタスクとsmoke_src
ノード上のそれに関係するソースジオメトリフレームとsmoke_variations
ノード上のそれに関係するWedgeの間にラインが表示されていることに注目してください。 このラインとそれを結ぶドットのハイライトは、ワークアイテム間の 依存関係 を示しています。Tip
PDGは、ファーム上の異なるプラットフォーム(Windows,Linuxなど)に保存されているファイルへのアクセスを可能にする汎用的な特別な書式ですべてのファイルパスを保存します。 この特別な書式では、ファイルパス内に特別なPDG トークン を使用します。
-
smoke_sim
TOPノード上のワークアイテムドットをダブルクリックします。 -
表示された Task Info ポップアップウィンドウで、 Command 、 Input 、 Output のパスを見てください。
デフォルトでは、これらのパスは 人が解読できる 書式で表示されます。
-
この Task Info ポップアップウィンドウの上部にあるフォルダアイコンをクリックします。
すると、 そのままの トークンが入った書式でパスが表示されます。 このようなパスがワークアイテム上のそれぞれのアトリビュートに格納されています。
-
-
-
smoke_sim
TOPノードのすべてのワークアイテムを 1バッチ でクックします。smoke_sim
はシミュレーションを取り込んで実行し、シミュレーションフレーム間で依存関係(例えば2番目のフレームは1番目のフレームに依存)があるので、このノードのすべてのワークアイテムを 単一プロセス または単一ジョブでクックする必要があります。 これは、 All Frames in One Batch パラメータを使って行なうことができます。-
ROP Fetch タブの All Frames in One Batch を有効にすることで
smoke_sim
ノードのバッチ化を有効にすることができます。Warning
シミュレーションを実行する時は常に All Frames in One Batch を有効にしてください。 シミュレーションは 複数のプロセス で実行することが できない ので、これが無効だとシミュレーションで問題に遭遇してしまいます。
-
smoke_sim
ノードをクックします。ネットワークエディタ 、 Task Graph Table ウィンドウ、 ネットワークエディタ のTasksメニューバーのどちらでも
smoke_sim
ノード上の色々なワークアイテムのクック状態が表示されるのが確認できると思います。ノード上の各ドットは、シミュレーションの フレーム も表現しています。
-
-
ネットワーク内で
@
アトリビュート参照の使われ方を見ていきましょう。-
Objectコンテキストに切り替えます。
-
Smoke Sourcing and Simulation ネットワークボックス内の
smoke_sim
DOPネットワークの中に入ります。 -
uniformforce1
ノードを選択し、 Force パラメータの値を見てください。この
uniformforce1
ノードは、あなたが作成した@force
Wedge変数を使ってforce
PDGアトリビュートを参照していることに注目してください。 つまり、シミュレーションはWedgeからforce
アトリビュートを取り込んで、その値を利用しています。smoke_src
TOPノードと同様に、この@
アトリビュート参照によって、シミュレーションでのWedgeプロパティの結果をインタラクティブにプレビューすることができます。 ビューポートにsmoke_sim
DOPネットワークを表示して、smoke_variations
Wedge TOPノードのワークアイテムドットをクリックすると、シミュレーションWedgeバリエーションをプレビューすることができます。 他にも、@force
変数が変更される度に、Houdiniはuniformforce1
DOPを更新して、そのWedgeアトリビュートの新しい値で再評価された結果を表示します。 -
uniformforce1
ノードの Output フラグを有効にします。 -
トップレベルのObjectコンテキストに戻ります。
-
smoke_sim
DOPネットワークの Display フラグを有効にします。 -
tasksコンテキストに戻って、
topnet1
TOPネットワークに入ります。 -
シミュレーションを再生し、
smoke_variations
TOPノードのワークアイテムドットをクリックすると、ビューポートにそのWedgeによるシミュレーションをプレビューすることができます。
-
-
チュートリアルシーンを保存します。
ステップ4 - 煙を含んでいないフレームを除外する ¶
このステップでは、 Filter by Range TOPノードを使用して、シミュレーションの最初の数フレームを除外します。
smoke_sim
TOPノードが取り込むPyroシミュレーション出力は、フレーム25付近まではあまり 目立ちません 。
ほぼ空っぽに見えるフレームを除外すると、上流のフレーム範囲がトリムされるので、(レンダーノードなどの)下流のノードは入力フレーム範囲のサブセットのみを処理するだけで済みます。
このようにすることで、Pyroシミュレーションではシミュレーションの始めからすぐに大量の煙が発生し、下流のレンダラーはシーン内に実際に煙がある状態から始めることになります。
-
ネットワークエディタ でFilter by Range TOPノードを作成し、名前を
render_range
に変更してから、その 入力 をsmoke_sim
TOPノードの 出力 に接続します。Filter by Range はTOPs⇥ Tabメニューの Data カテゴリにあります。
-
render_range
TOPノードを選択してから、以下のパラメータを設定します:-
Filter Range パラメータの 1番目 のフィールドに 25 を入力します。
これは、フレーム25をシミュレーションフレーム範囲の 最初のフレーム として設定します。
-
Filter Range パラメータの 2番目 のフィールドに
$FEND
変数を入力します。これは、現在の Global Animation Frame Range 値をシミュレーションフレーム範囲の 最後のフレーム として設定します。
-
-
render_range
TOPノードをクリックしてコンテキストメニューから Generate Node を選択します。このノード上に生成されたワークアイテムの数が 384 個であることに注目してください。 これは、各Wedgeバリエーションの最初の25フレーム分が
render_range
TOPノードによって排除されたのが原因です(96フレーム x 4個のWedge)。 -
smoke_sim
TOPノード上の最初のワークアイテムドットをクリックします。クリックしたワークアイテムドットと
render_range
ノードのワークアイテムの間に依存関係ラインが 表示されていない ことに気づいてください。 これは、クリックしたフレームがrender_range
ノードによってトリムされた結果、そのフレームのワークアイテムが生成されなかった事が原因です。 ノード内のさらに上のワークアイテムドットを選択すると、依存関係ラインが表示されます。 -
render_range
ノードをクックします。 -
render_range
ノード上のワークアイテムドットをクリックしたままにします。range
アトリビュートが25.0, 120.0, 1.0
に変更されていて、出力される新しいフレーム範囲が反映されていることがわかります。Tip
ワークアイテムドットをクリックしてから[と]のキーを使用することで、そのノード上のワークアイテムを前後に進めることができます。
-
チュートリアルシーンを保存します。
ステップ5 - 煙をレンダリングする ¶
このステップでは、 高品質用 と 低品質用 の2つの ROP Fetch TOPノードを使用して、 Wedgeバリエーション毎にGPU OpenGLでPyro(煙)シミュレーションフレームをレンダリングします。
HoudiniにはOpenGL TOPレンダーノードが 用意されていない ので、これら2つのノードには、既に構築されている2つのOpenGL ROPネットワークを指します。 また、OpenGLはHoudiniのローカルグラフィカルセッションでしか動作できないので、このチュートリアルでは(ファーム上 ではなく )ローカルのみでのレンダリングとなります。
Tip
-
TOPs用の⇥ TabメニューはすべてのROPsに 対応していない のですが、それでもROP Fetch TOPノードを使用することで、ROPのような 挙動 をするノードを指すことができます。 例えば、Vellum I/OノードやFile Cacheノードです。
-
ファーム上でレンダリングしたい、レイトレースを使用したい、USDを使用したいといった場合は、このチュートリアル外でのあなた独自のセットアップには常にROP Mantra Render TOPノード(レイトレースに対応したMantraレンダラー)またはUSD Render TOPノード(USDとLOPsに対応しているKarmaレンダラー)を使用することになります。
-
ネットワークエディタ でROP Fetch TOPノードを作成し、名前を
gl_render
に変更してから、その 入力 をrender_range
TOPノードの 出力 に接続します。ROP Fetch はTOPs⇥ Tabメニューの Render カテゴリにあります。
ここでは、 高品質用 のOpenGLレンダーノードを設定します。
-
gl_render
TOPノードを選択して、以下のパラメータを設定します:-
高品質用のOpenGL ROPネットワークの入力パスを指定します。
-
ROP Path パラメータフィールドの隣にある Open floating operator chooser ボタンをクリックします。
-
Choose Operator ポップウィンドウが表示され、 tasks ▸ topnet1 ▸ opengl_render ▸ opengl を選択して Accept をクリックします。
ROP Path パラメータフィールドが以下のパスになります:
/tasks/topnet1/opengl_render/opengl
これで
gl_render
TOPノードはPyro(煙)シミュレーションのフレームをレンダリングする際にどのROPネットワークを使用するのか分かるようになりました。Note
-
OpenGLレンダリングされるフレームの出力フォルダは、既に
opengl
ROPネットワークで定義されているので指定する 必要はありません 。 -
OpenGLはシステムのグラフィックカード(GPU)を使用してフレームをレンダリングします。
-
-
Frames and Batching タブの Frames per Batch パラメータを 40 に設定します。
レンダーノードに関しては、プロセスがフレームのレンダリングを開始するのを待機する時間に多くの時間を消費 したくない ので、常にいくつかまとめてバッチで実行すると良いでしょう。
このチュートリアル外では、あなたのハードウェアやクックするジョブの特質に合わせてバッチサイズを選んでください。 バッチサイズを大きくしすぎると、少ない数のプロセスの起動だけで済むものの、膨大な数の処理に時間がかかってしまうので、クックがあまり 効率的ではなくなってしまいます 。 バッチサイズを小さくしすぎると、プロセスのオーバーヘッドによるコストが大きくなります。
Tip
バッチサイズを選択する上で参考になるルールは次のとおりです:
ワークアイテムの数
をレンダーマシンのコアの数
で割った数をバッチサイズに設定します。例えば、コアが24個あれば、理想は24個のプロセス(1コア1プロセス)が欲しいです。
-
-
gl_render
TOPノードを選択して、⌃ Ctrl + cを押してから⌃ Ctrl + vを押します。ネットワークエディタ に
gl_render1
という名前の新しく複製されたレンダーノードが追加され、その 入力 は既にrender_range
TOPノードの 出力 に接続されています。-
gl_render1
TOPノードを選択して、名前をgl_render_preview
に変更します。
ここでは、 低品質用 のOpenGLレンダーノードを設定します。
-
-
gl_render_preview
TOPノードを選択してから、以下のパラメータを設定します:-
低品質用のOpenGL ROPネットワークの入力パスを指定します。
-
ROP Path パラメータフィールドの隣にある Open floating operator chooser ボタンをクリックします。
-
Choose Operator ポップウィンドウが表示され、 tasks ▸ topnet1 ▸ opengl_render ▸ opengl_preview を選択して Accept をクリックします。
ROP Path パラメータフィールドが以下のパスになります:
/tasks/topnet1/opengl_render/opengl_preview
これで
gl_render_preview
TOPノードはPyro(煙)シミュレーションのフレームをレンダリングする際にどのROPネットワークを使用するのか分かるようになりました。Note
OpenGLレンダリングされるフレームの出力フォルダは、既に
opengl_preview
ROPネットワークで定義されているので指定する 必要はありません 。 -
-
Frames and Batching タブの Frames per Batch パラメータを 20 に設定します。
-
-
一度に一つずつ
gl_render
ノードとgl_render_preview
ノードをクックします。各ノードでワークアイテムドットが表示されます。 各ワークアイテムドットは、各Wedgeから取り出された各フレームのレンダーワークアイテムを表現しています(96フレーム x 4個のWedge)。
Note
TOPノードをクックすると、生成する必要のあるワークアイテムもそのノード上に 生成 されます。
プレビュー用のOpenGLレンダラーは、ワークアイテムを非常に速くクックするのに対して、高品質用のOpenGLレンダラーはクックに少し時間がかかります。
ネットワークエディタ 、 Task Graph Table ウィンドウ、 ネットワークエディタ のTasksメニューバーのどちらでも
gl_render
やgl_render_preview
のノード上の色々なワークアイテムのクック状態が表示されるのが確認できると思います。これらのレンダーノードをクックすると、 最終 のレンダーフレームが得られます。
-
レンダリングされたフレームを見てみましょう。
-
gl_render
TOPノードを⌃ Ctrl + クリックして表示されるノード情報ウィンドウ内の Output.exr
リンクをクリックします。opengl.exr
動画がMPlayで表示されます。 -
gl_render_preview
TOPノードを⌃ Ctrl + クリックして表示されるノード情報ウィンドウ内の Output.exr
リンクをクリックします。opengl_preview.exr
動画がMPlayで表示されます。 -
両方の
.exr
動画を再生して、それらのレンダー結果を比較します。opengl.exr
動画のほうがopengl_preview.exr
よりも高品質であることに注目してください。
-
-
チュートリアルシーンを保存します。
ステップ6 - レンダラー用のスイッチをセットアップする ¶
このステップでは、 Switch TOPノードを使用して、TOPネットワークで使用する入力レンダラーをgl_render
(高品質用)とgl_render_preview
(低品質用)から選択可能なトグルをセットアップします。
Tip
-
このスイッチを追加すると、ネットワークが2つの ブランチ に分かれます。このチュートリアル外では、これは異なる解像度でフレームを出力する必要があるプロダクション環境で非常に役立ちます(例えば、個人レビュー用、双方用、デイリー用など)。
-
SwitchノードはTOPネットワークのブランチの片方しかクックしませんが、手動でどのTOPレンダーノードもクックすることができます。
-
ネットワークエディタ でSwitch TOPノードを作成し、名前を
select_render
に変更し、その 入力 をgl_render
ノードとgl_render_preview
ノードの 出力 に接続します。Switch はTOPs⇥ Tabメニューの Utility カテゴリにあります。
これで
select_render
ノードは、使用するレンダラーとTOPネットワークでクックするブランチを決めます。select_render
ノードをレンダーノードに接続すると、片方のレンダーノードのワークアイテムが削除されます。-
ワークアイテムが持たなくなったレンダーノードを再クックします。
-
-
select_render
ノードを選択して、そのノードのパラメータエディタを見てみましょう。このノードの入力は、パラメータエディタ内で選択可能な Input Operators として表示されます。
各入力には、この Input Operators リストの順番に基づいて Select Input 番号が振られます。 この
select_render
ノードの場合、gl_render
の入力番号は 0 で、gl_render_preview
の入力番号は 1 になっています。 -
Select Input スライドを使って
gl_render
入力とgl_render_preview
入力を切り替えて、 ネットワークエディタ 内でどのように変化するのか見てみましょう。select_render
とOpenGLレンダーノードを接続しているラインは、そのレンダラーが選択されていれば実線、 選択されていなければ 破線で表示されます。 TOPネットワーク内の現在のアクティブレンダーノードは、select_render
と 実線 で接続されているノードです。Note
-
レンダラー間を切り替える時、その切替先のレンダラーブランチの下流ノードが以前にクックされていなかった場合、それらのノードを再クックする必要があります。
-
レンダラーを切り替えても、上流のノードが以前にクックされていた場合、それらのノードはDirty(変更あり)に なりません 。
-
-
select_render
ノードの入力をgl_render_preview
ノードに切り替えます。これ以降のチュートリアルでは、
gl_render_preview
ノードでレンダリングされたフレームを扱っていきます。 -
チュートリアルシーンを保存します。
ステップ7 - レンダリングしたフレームにキャプションを入れる ¶
このステップでは、特別に事前に設定されている Overlay Text という名前の ROP Composite Output TOPノードを使用して、レンダリングしたフレームの上にキャプションテキストを重ねます。
このテキストには、フレーム番号、Force
値、Size
値などの各フレームに関する重要なWedgeバリエーション情報を入れていきます。
この類のオーバーレイは、(例えば、4個の異なりWedgeバリエーションのフレーム50番において)Wedgeバリエーションの確認と比較をする時に視覚的に情報を表示することができるので便利です。 これによって、あなたが好みのフレームの生成で使用された設定を特定することができ、それはFXをデバッグする際にあると非常に役立つ情報でもあります。
-
ネットワークエディタ で、Overlay Text TOPノードを作成し、名前を
wedge_overlay
に変更し、その 入力 をselect_render
ノードの 出力 に接続します。Overlay Text はTOPs⇥ Tabメニューの Images カテゴリにあります。
-
wedge_overlay
TOPノードを選択してから、以下のパラメータを設定します:-
Overlay タブの Text フィールドに以下のエクスプレッションをタイプします:
Frame: $F3 Size: `@size` Force: `@force`
$F3
は最大3桁のフレーム番号で、(これまでに見てきた@
オペレータを使った)@size
はsize
Wedgeワークアイテムアトリビュートを参照し、@force
はforce
Wedgeワークアイテムアトリビュートを参照しています。このエクスプレッションはワークアイテム毎に評価されます。 これは入力レンダーフレームを受け取り、そのフレームのワークアイテム上のアトリビュートを評価し、レンダリングされたフレームの上に重ねるテキストを決めます。
-
ROP Composite タブの Output Picture パラメータフィールドに以下のパスを入力します:
$HIP/comp/$HIPNAME.$OS.`@wedgeindex`.$F4.exr
-
ROP Fetch タブの All Frames in One Batch を 有効 にします。
このノードは、通常ではバッチの恩恵が得られます。 しかし、このチュートリアルでは、このCOPノードはほぼインタラクティブな速度でクックされるので、 Frames per Batch を使用する 必要がありません 。
-
-
wedge_overlay
TOPノードをクックします。このTOPノードにワークアイテムドットが表示されます。 各ワークアイテムドットは、各Wedgeのレンダリングされた各フレームのオーバーレイ画像ワークアイテムを表現しています(96フレーム x 4個のWedge)。
wedge_overlay
TOPノードがクックされると、合成されたオーバーレイ画像が得られます。 -
オーバーレイフレームを見てみましょう。
-
wedge_overlay
TOPノードを⌃ Ctrl + クリックして表示されるノード情報ウィンドウ内の Output.exr
リンクをクリックします。fxtutorial.wedge_overlay.exr
動画がMPlayで表示されます。 -
fxtutorial.wedge_overlay.exr
動画を再生します。この動画のテキストキャプションに注目してください。
-
-
チュートリアルシーンを保存します。
ステップ8 - オーバーレイ画像を収集して整理する ¶
このステップでは、 Partition by Frame TOPノードを使用して、入力のオーバーレイ画像をバケットまたはパーティションに収集して整理します。
オーバーレイ画像は、ステップ9で作成する モザイクノード に渡せるようにするために、フレーム番号別に整理しておく必要があります。
-
ネットワークエディタ でPartition by Frame TOPノードを作成し、名前を
collect_frames
に変更し、その 入力 をwedge_overlay
TOPノードの 出力 に接続します。Partition by Frame はTOPs⇥ Tabメニューの Partitioner カテゴリにあります。
-
collect_frames
ノードのパラメータはデフォルト値のままにします。このノード上のパラメータ設定はどれも変更する 必要がありません 。
-
collect_frames
TOPノードをクックします。collect_frames
TOPノードは、すべてのオーバーレイ画像からワークアイテムを生成し、それらのワークアイテムをフレーム番号に基づいてパーティションに格納します。各パーティションは、Wedgeバリエーション分の4個のワークアイテムを持ちます。96個の小さな長方形がノード上に表示されます(384枚のオーバーレイ画像 / 4個のWedge)。
collect_frames
は、オーバーレイ画像をパーティションに分けます。各
collect_frames
ワークアイテムは、同じフレーム番号のwedge_overlay
画像 4枚すべて のクックが完了した時にのみクックを完了します。 -
collect_frames
ノード上のワークアイテムドットをクリックしていってみましょう。各ワークアイテムの Output を見てください。 このノードが各パーティションでWedge毎に同じフレーム番号の4枚のフレームをどのようにグループ化しているのか注目してください。
Tip
ワークアイテムドットをクリックしてから[と]のキーを使用することで、そのノード上のワークアイテムを前後に進めることができます。
-
チュートリアルシーンを保存します。
ステップ9 - パーティション化されたオーバーレイ画像を2×2のモザイク画像に組み立てる ¶
このステップでは、 ROP Composite Output TOPノードを使用して、フレーム番号毎にすべての4つのWedgeバリエーションのオーバーレイ画像を2×2グリッドまたは モザイク にアセンブルまたはコンポジットします。
Note
Houdini Apprentice を使用している場合、レンダリング可能な最大解像度は1280×720です。 詳細は、Houdini Apprenticeの制限を参照してください。
これらのモザイクは、Wedge別に各フレームを比較することができます。 例えば、このモザイクですべての4つのWedgeからそれぞれのフレーム50を比較することができます。
-
ネットワークエディタ でROP Composite Outputノードを作成し、名前を
wedge_mosaic
に変更してから、その 入力 をcollect_frames
ノードの 出力 に接続します。ROP Composite Output はTOPs⇥ Tabメニューの Render カテゴリにあります。
-
wedge_mosaic
TOPノードを選択してから、以下のパラメータを設定します:-
ROP Composite タブの Composite サブタブにある Use External COP パラメータを 有効 にします。
-
COP Path パラメータフィールドの隣にある Open floating operator chooser ボタンをクリックします。
-
Choose Operator ポップアップウィンドウが表示され、 tasks ▸ topnet1 ▸ mosaic ▸ mosaic1 を選択して Accept をクリックします。
COP Path パラメータフィールドが以下のパスになります:
/tasks/topnet1/mosaic/mosaic1
これで
wedge_mosaic
TOPノードはオーバーレイ画像を読み込んで合成する際にどのCOPネットワークを使用するのか分かるようになりました。 -
-
Output Picture パラメータ値はデフォルト値のままにします。
このノードはすべての4つのバリエーションのオーバーレイ画像を取り込んでから、それらの画像を1枚の画像に変換するので、このノードの出力パス内にもはや
@wedgeindex
変数を使用する必要はありません。 -
ROP Fetch タブで、 Frames and Batching タブの Frames per Batch パラメータを 5 に設定します。
wedge_mosaic
ノードは、ネットワーク内の他のCOPタイプのノード(wedge_overlay
)よりも処理が重いので、バッチ化による恩恵が少し得られます。
-
-
wedge_mosaic
TOPノードをクックします。このノードに96個のドットが表示されます。 各ドットはモザイク画像ワークアイテムを表現しています(384枚のオーバーレイ画像 / 4個のWedge)。
wedge_mosaic
TOPノードは、各パーティションからオーバーレイ画像を取り込んで、それらの画像を1枚に合成された2×2のグリッド画像にします。 -
モザイク画像を見てみましょう。
-
wedge_mosaic
TOPノードを⌃ Ctrl + クリックして表示されるノード情報ウィンドウ内の Output.exr
リンクをクリックします。出力モザイク画像の動画がMPlayで表示されます。
-
fxtutorial.wedge_mosaic.exr
動画を再生します。この動画がフレーム番号順で順々にすべての2×2モザイク画像が配置されていることに注目してください。
-
-
チュートリアルシーンを保存します。
ステップ10 - すべてのモザイク画像を収集する ¶
このステップでは、 Wait for All TOPノードを使用して、すべての入力モザイク画像を単一パーティションに収集します。
ステップ11で作成するFFmpeg Encode Video TOPノードに渡すことができるように、合成されたモザイク画像が すべて 完了している必要があります。
-
ネットワークエディタ でWait for All TOPノードを作成し、名前をデフォルトの
waitforall1
のままにして、その 入力 をwedge_mosaic
TOPノードの 出力 に接続します。Wait For All はTOPs⇥ Tabメニューの Dependencies カテゴリにあります。
-
waitforall1
TOPノードをクックします。このノード上には、単一ワークアイテムが長方形で表示されます。
このTOPノードは、すべてのモザイク画像を単一パーティションに収集するので、その単一パーティションがそのノード上に長方形として表示されています。
waitforall1
TOPノードは、wedge_mosaic
TOPノードのコンポジット処理がすべて完了するのを待ってから、それらのモザイク画像を下流のFFmpeg Encode Video TOPノードに渡します。これは、FFmpeg Encode Video TOPノードでは動画を生成して出力する前に、 すべて の合成モザイク画像が必要であることが理由です。
-
チュートリアルシーンを保存します。
ステップ11 - モザイク画像を動画に変換する ¶
この最終ステップでは、 FFmpeg Encode Video TOPノードを使用して、waitforall1
TOPノードによって保持されたすべてのモザイク画像を1個のMP4動画に変換します。
Note
FFmpeg Encode Videoノードを使用可能にするには、ローカルマシン上にFFmpegユーティリティがインストールされている必要があります。 FFmpegがインストールされているかどうか確認する方法またはユーティリティのインストール方法に関しては、FFmpegのインストールを参照してください。
-
ネットワークエディタ でFFmpeg Encode Video TOPノードを作成し、名前を
make_movie
に変更して、その 入力 をwaitforall1
TOPノードの 出力 に接続します。FFmpeg Encode Video はTOPs⇥ Tabメニューの Images カテゴリにあります。
-
make_movie
TOPノードのパラメータ設定はデフォルトのままにします。 -
make_movie
TOPノードをクックします。このノード上には、単一ワークアイテムがドットで表示されます。
make_movie
TOPノードは、waitforall1
パーティション内のすべての合成モザイク画像を取り込み、それらの画像を動画に変換して、MP4動画ファイルとして出力します。 -
最終のMP4動画を見てみましょう。
-
make_movie
TOPノードを⌃ Ctrl + クリックして表示されるノード情報ウィンドウ内の Output.mp4
リンクをクリックします。ネットワークの最終出力を含んだ
make_movie_#.mp4
動画があなたのローカルのデフォルトの動画プレーヤーで再生されます。
-
-
チュートリアルシーンを保存します。
おめでとうございます! FXワークフローPDGチュートリアルが完了しました。
この最終TOPネットワークを見たいのであれば、Houdiniサンプルファイルディレクトリ($HH\help\files\pdg_examples\top_rop\
)にあるrop_wedge.hip
を見てください。
PDGワークフローについて学習を継続したいのであれば、このHoudiniドキュメントの他の初心者向けチュートリアルシリーズを進めるのも良いし、 私どものウェブサイトの Pipeline|PDG ラーニングパスにアクセスするのも良いでしょう。