Houdini 19.5 PDG/TOPsを使ってタスクを実行する方法

PDGチュートリアル1 FXワークフロー

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ユーティリティがインストールされている必要があります。

  1. 以下の手順を実行して、あなたのシステム上にFFmpegがインストールされているかどうか確認してください:

    Mac

    TerminalシェルでffmpegとタイプしてEnterを押します。

    Windows

    コマンドプロンプトffmpegとタイプしてEnterを押します。

    Linux

    コマンドシェルでffmpegとタイプしてEnterを押します。

    エラーが返されなければ、あなたのシステム上にFFmpegがインストールされています。手順3に移動してください。

  2. 現在あなたのシステム上にFFmpegがインストール されていない 場合、ここからインストーラをダウンロードしてください。

    • FFmpegをインストールします。

  3. (Windowsのみ) あなたのシステム上にFFmpegがインストールされたら、あなたのシステム環境変数の Path にFFmpegのパスを通してください。

    Windows

    1. コントロールパネル > システムとセキュリティ > システム > システムの詳細設定 を開きます。

    2. システムのプロパティ ウィンドウで、 環境変数 をクリックします。

    3. 環境変数 ウィンドウで、 システム環境変数 > Path を選択して 編集 をクリックします。

    4. 環境変数名の編集 ウィンドウで、 新規 をクリックして、FFmpegのインストールディレクトリのbinフォルダの絶対パスをタイプして OK をクリックします。

チュートリアルのHIPファイルをコピーする

始める前に、このチュートリアルで作業するHoudini HIPファイルをコピーしてください:

  1. ファイルブラウザを開いて、Houdiniインストールディレクトリに移動します。

  2. そのインストールディレクトリから$HH\help\files\pdg_tutorials\intro_to_pdgフォルダに移動します。

  3. \intro_to_pdgフォルダ内のfxworkflow_tutorial.hipファイルをコピーします。

  4. ユーザーディレクトリに移動し、\PDG_TUTORIAL_FILESという名前の新しいフォルダを作成します。

  5. その\PDG_TUTORIAL_FILES作業フォルダにそのHIPファイルをペーストします。

  6. Houdiniを起動します。

  7. fxworkflow_tutorial.hipチュートリアルファイルを開き、その内容を知りましょう。

    このHIPファイルには、以下の内容が見つかります:

    • オブジェクトコンテキスト

      • Smoke Sourcing and Simulationネットワークボックス

        • Pyroシミュレーション用のソースジオメトリ(smoke_srcSOPネットワーク)

        • 煙を生成するPyroシミュレーション(smoke_simDOPネットワーク)

        • Pyroシミュレーションからの出力(smoke_importSOPネットワーク)

      • Renderネットワークボックス

        • 背景シーン用のレンダリング可能なジオメトリ(render_backgroundSOPネットワーク)

        • レンダリング可能なPyroシミュレーション出力(render_smokeSOPネットワーク)

        • レンダリング可能な球(render_sphereSOPネットワーク)

        • ライト(render_light1render_light2)

        • カメラ(render_cam)

    • タスクコンテキスト

      • TOPネットワーク(topnet node)

        • ワークアイテムを実行するローカルスケジューラ(local_scheduler TOPノード)

        • フレームをレンダリングするOpenGLネットワーク(opengl_renderROPネットワーク)

        • レンダリングされたフレームを読み込んで2×2のグリッドモザイクに組み立てるCOP2ネットワーク(mosaic COP2 network)


開始

ステップ 1 - 煙のバリエーションを定義する

このチュートリアルの最初のステップでは、 Wedge TOPノードを使用してバリエーションを作成するアトリビュートセットとそのバリエーションの数を定義することで、下流のPyroシミュレーション(煙)用の一連の バリエーション をセットアップします。

このセットアップによって、後のチュートリアルで煙のバリエーションを生成して比較することができます。

  1. Houdiniを起動し、fxtutorial.hipチュートリアルシーンファイルを開きます。

  2. ネットワークエディタ から tasks コンテキストに移動し、topnet1ネットワークに入ります。

  3. Wedgeノードを作成し、名前をsmoke_variationsに変更します。

    Wedge ノードはTOPs⇥ Tabメニューの Data カテゴリにあります。

    Wedgeノードのパラメータでは、アトリビュート値の変化率を構築し、生成するWedgeの数を定義します。

    このチュートリアルでは、Pyroシミュレーションに対して、煙に加えるフォースと煙ソースのサイズを可変させる4個の異なる構成を定義します。

  4. smoke_variationsノードを選択し、forceアトリビュートとsizeアトリビュートを追加して Wedge化 します:

    • Wedge Count4 に設定します。

      これは、生成するバリエーションまたは Wedge の数を決めます。

    • Wedge Attributes2 に設定します。

      これは、可変させるアトリビュートの数を決めます。

    • 1番目Wedge Attributes マルチパラメータでは、以下の設定を行ないます:

      • Attribute Name パラメータフィールドにforceとタイプします。

        これによって、Wedgeでforceアトリビュートを可変させることができます。

      • Wedge Type パラメータドロップダウンメニューから Value List を選択します。

        これによって、各Wedgeのforceアトリビュートに特定の値を設定することができます。

      • Values マルチパラメータフィールドに 4 を入力します。

        Value フィールドが4つ表示されます。

      • Value フィールドに、1つずつこれらの数値を入力します: 1102050

    • 2番目Wedge Attributes マルチパラメータでは、以下の設定を行ないます。:

      • Attribute Name パラメータフィールドにsizeとタイプします。

        これによって、Wedgeでsizeアトリビュートを可変させることができます。

      • Wedge Type パラメータドロップダウンメニューから Range を選択します。

        これによって、各Wedgeのsizeアトリビュートに値の範囲を設定することができます。

      • Start フィールドに 0.5 を、 End フィールドに 2 を入力します。

        これによって、このノードはsizeアトリビュートに対して Start フィールド値と End フィールド値の間でランダムな値を取得するようになります。

    • 他のすべてのパラメータはデフォルト値のままにします。

  5. このノードのワークアイテムを生成してクックします。

    TOPノードが何かの処理を行えるようにするには、まず最初にこのノードのワークアイテムを 生成 することで、そのTOPノードで実行させたいタスクを作成する必要があります。 そして、それらのタスクを実行するには、そのTOPノードをクックする必要があります。

    • smoke_variationsノードをクリックして、そのコンテキストメニューから Generate Node を選択します。

      ネットワークエディタ 内のsmoke_variationsノード上に4つのドットが表示されます。 各ドットはワークアイテムを表現していて、このノードで生成された各ワークアイテムには、forcesizeのアトリビュートのバリエーションまたは Wedges が設定されています。

    • smoke_variationsノードをクリックして、そのコンテキストメニューから Cook Selected Node を選択します。

      ネットワークエディタ 内のsmoke_variationsノードのワークアイテムドットとステータスアイコンの色は、それらのワークアイテムが待機中、クック中、完了のどれなのかを示すために変化します。

      色々なTOPノードUIエレメントについてもっと学習したいのであれば、PDGノードネットワークインターフェースを参照してください。

      今のTOPノード上の各ドットは Wedge までも表現しています。

    Note

    TOPsでは、2つのタイプのノードがあります: 静的(Static) ノードと 動的(Dynamic) ノードです。 静的ノードは、何も入力を使用しないワークアイテムを生成することができます。つまり、これらのワークアイテムは上流データに 依存しません 。 その一方で、動的ノードは、ワークアイテムを生成するために上流からの入力情報が必要になります。 つまり、動的ノードは、クックされた時にのみワークアイテムを生成することができます。

    このチュートリアルのsmoke_variationsは、たくさんある静的ノードのうちの一つです。 静的TOPノードと動的TOPノードとそれらのTOPネットワークでの重要性についてもっと学習したいのであれば、Static vs. Dynamicを参照してください。

    Tip

    TOPノードをクックすると、生成する必要のあるワークアイテムもそのノード上に 生成 されます。


  6. smoke_variationsノード上のワークアイテムドットをクリックしたままにします。

    wedgeindexforcesizeのアトリビュートがWedge毎にどのように値が変わっているのか注目してください。

    smoke_variationsのワークアイテムプロパティ

    Tip

    ワークアイテムドットをクリックしてから[]のキーを使用することで、そのノード上のワークアイテムを前後に進めることができます。

  7. チュートリアルシーンを保存します。

ステップ2 - 煙のソースジオメトリをキャッシュ化する

このステップでは、 ROP Geometry Output TOPノードを使用して、Wedgeバリエーション毎にPyroシミュレーションの入力または ソース ジオメトリをキャッシュ化していきます。 このソースジオメトリは、シーン内で煙を放出するジオメトリを指します。

このノードは、Pyroシミュレーションの初期の煙のポイントをキャッシュ化し、ソースジオメトリをシミュレーションから切り離します。 (Wedgeなどを使って)シミュレーションのパラメータ値を変更する際に、ソースジオメトリも再度クックする 必要がないように するために、このような処理を行ないたいです。 このノードでは、そうするよりも、ソースジオメトリのみを受け取り、Pytoシミュレーションを実行します。

  1. ネットワークエディタ でROP Geometry Outputノードを作成し、名前をsmoke_srcに変更してから、その 入力smoke_variations Wedgeノードの 出力 に接続します。

    ROP Geometry Output はTOPs⇥ Tabメニューの Geometry カテゴリにあります。

    smoke_src TOPノードには、smoke_srcSOPネットワーク を指します。 このTOPノードは、Wedgeバリエーション毎に、指定したアトリビュートを使っていくつものワークアイテムを生成し、そのSOPネットワークを1-120フレーム間でクック(実行)します。

  2. smoke_src TOPノードを選択してから、以下のパラメータを設定します:

    • Evaluate Using パラメータドロップダウンメニューから Frame Range を選択します。

      Frame Range パラメータのデフォルト値には$FSTART$FENDの変数が設定されています。 これらの変数はHoudiniのビルトイン変数で、Houdini プレイバーGlobal Animation Start FrameGlobal Animation End Frame の値に相当します。 そのため、プレイバーの Global Animation Frame の値を変更すると、smoke_src TOPノードの Frame Range 値が自動的に更新されます。

      $FSTARTと$FENDの変数
      • 一時的にプレイバーの Global Animation Frame 値を変更してみて、 Frame Range パラメータフィールドの値がそれに応じて変わることを確認しましょう。

        ノードのFrame Range End($FEND)値に影響を与えるGlobal Animation End Frame値
      • プレイバーの Global Animation Frame の開始値と終了値を試し終わったら、それらの値をデフォルト(それぞれ 1120 )に戻してください。

    • 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変数を使用するべきです。

    • 他のすべてのパラメータはデフォルト値のままにします。

  3. smoke_src TOPノードで生成されるワークアイテムを見ていきましょう。

    • このノードのワークアイテムを生成します。

      このノードに480個のドットが表示されます。 各ドットは、各Wedgeの各フレームのソースジオメトリワークアイテムを表現しています(120フレーム x 4個のWedge)。

    • smoke_srcノード内のワークアイテムドットのどれかをクリックします。

      smoke_variationsノード上のワークアイテムとsmoke_srcノード上のそれに関係するタスクの間にラインが表示されていることに注目してください。 このラインとそれを結ぶドットのハイライトは、ワークアイテム間の 接続 を示しています。

      smoke_variationsワークアイテムとsmoke_srcワークアイテムの間の接続

      smoke_variationsノードは、Wedgeバリエーション毎にフレーム1-120までsmoke_srcノードのソースジオメトリをクックするワークアイテムを生成します。

    • smoke_variationsノードでは、以下の設定を行ないます:

      • 一時的に Wedge Count5 に上げます。

      • smoke_variationsノードをクリックして、そのコンテキストメニューから Dirty and Cook This Node を選択します。

      • smoke_src TOPノードのワークアイテムを生成します。

      smoke_srcノードは入力ワークアイテム毎にフレーム分のワークアイテム生成プロシージャを適用するので、これによってWedgeバリエーションの数が増えます。 そのため、480フレーム分のワークアイテムだったのが、今では600フレーム分のワークアイテムが生成されました。

    • Wedge Count を元の値に戻します。

      • smoke_variationsノードの Wedge Count4 に下げます。

      • 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ノードのワークアイテムを表示したTask Graph Table
  4. smoke_src TOPのバッチ処理を有効にします。

    • smoke_srcノードのパラメータエディタで ROP Fetch タブを選択します。

      Frames per Batch パラメータを見てください。

      現在の値を使用すると、このノードは、必要な出力をクックして生成するものの、このノードはワークアイテム毎に 1個のプロセス しか作成しないので 非効率 です。 このノードは、ローカルスケジューラによって制御された固有のプロセス内でソースジオメトリに対して各ワークアイテムをクックします。 あなたがクックしようとするネットワークがクックをするのに非常に高速であった場合、プロセスを分散させてそれらのスケジュールを管理するのは実際にワークを処理する時間と比べて無駄に時間を消費してしまいます。

      これを高速化するには、バッチサイズを上げる必要があります。

    • Frames per Batch パラメータを 10 に設定します。

      10 のバッチサイズは、このノードがプロセス毎に1個ではなく 10 個のワークアイテムをクックすることを意味します。

      このようにクックするワークアイテムを収集することで、このノードは、複数のワークアイテムに対してプロセスを起動させるオーバーヘッドを共有します。

  5. smoke_src TOPノードをクックします。

    ネットワークエディタTask Graph Table ウィンドウのどちらでもsmoke_srcノード上の色々なワークアイテムのクック状態が表示されるのが確認できると思います。

    Task Graph Tableウィンドウ

    すべてのワークアイテムのクック状態は、 ネットワークエディタ のTasksメニューバーにも表示されます。

    Tasksメニューバー

    ワークアイテムドットカラーとステータスアイコンについてもっと知りたいのであれば、PDGノードネットワークインターフェースを参照してください。

    Note

    • smoke_srcノード上の各ドットは、アニメーションジオメトリの フレーム も表現します。

    • TOPノードをクックすると、TOPネットワーク内の上流の 未クック のノードもクックされます。 この場合だと、smoke_variations Wedgeノードが未クックなら、smoke_src TOPノードをクックすると、その入力であるsmoke_variationsノードもクックされます。

  6. By Batch タスク折り畳みオプションを有効にします。

    現在のところ、smoke_src TOPノード上のすべてのワークアイテムは、 バッチ ワークアイテムであっても個々のドットとして表示されます。

    ノード上に表示されるワークアイテムの数を減らすには、 By Batch タスクディスプレイモードを有効にします。

    • ネットワークエディタTasksメニュー ▸ Task Graph Display Options を選択します。

    • Task Graph Display Options ポップアップウィンドウで、 Collapse セクションの By Batch を有効にします。

      ノード上のすべてのワークアイテムドットが バッチワークアイテム としてリングで表示されるようになりました。 Frames per Batch10 に設定されているので、各リングは、10個のワークアイテムのバッチを表現しています。 このようにワークアイテムを視覚化することで、ノード上のワークアイテムがたくさんあっても管理とデバッグが簡単になります。

      Task Collapse Mode
    • 通常では、このディスプレイオプションを 有効 のままにするのが良いでしょう。 しかし、このチュートリアルでは無効でもタスク間の接続が見えるので、 Collapse ▸ Off にします。 これは By Batch を無効にします。

  7. ネットワーク内で@アトリビュート参照の使われ方を見ていきましょう。

    • Objectコンテキストに切り替えます。

    • Smoke Sourcing and Simulation ネットワークボックス内のsmoke_src SOPネットワークの中に入ります。

    • sphere1ノードを選択し、 Uniform Scale パラメータの値を見てください。

      このSphereノードは@アトリビュートを使ってsize PDGアトリビュートを参照していることに注目してください。

      この@size変数は、smoke_variationsWedgeノード上のワークアイテムのアトリビュートです。 そのWedgeノードに接続されたsmoke_src TOPノードが指しているsmoke_src SOPネットワークは、そのsizePDGアトリビュートを参照することができ、さらに、そのSOPネットワークがそのWedge変数の使い方を知っていることになります。

      この@アトリビュート参照によって、Wedgeプロパティの結果をインタラクティブにプレビューすることができます。 ビューポートにsmoke_src SOPネットワークを表示して、smoke_variationsWedge TOPノードのワークアイテムドットをクリックすると、出力されたジオメトリWedgeバリエーションをプレビューすることができます。 他にも、@size変数が変更される度に、Houdiniはsphere1SOPを更新して、そのWedgeアトリビュートの新しい値で再評価された結果を表示します。

      Note

      @アトリビュート参照を使ってこのようなタイプのリレーションシップを作成することを、 Pull形式 Wedgingと呼びます。 別のタイプのTOPs Wedgingテクニックについてもっと学びたいのであれば、Pull vs. Pushを参照してください。

    • sphere1ノードの Display フラグを有効にします。

    • トップレベルのObjectコンテキストに戻ります。

    • smoke_src SOPネットワークの Display フラグを有効にします。

    • tasksコンテキストに戻って、topnet1 TOPネットワークに入ります。

    • smoke_variations TOPノードのワークアイテムドットをクリックすると、ビューポートにそのWedgeによるジオメトリをプレビューすることができます。

      煙ソースジオメトリのsizeバリエーション

  8. チュートリアルシーンを保存します。

ステップ3 - 煙のシミュレーション出力を取り込む

このステップでは、 ROP Geometry Output TOPノードを使用して、Wedgeバリエーション毎にPyro(Smoke)シミュレーションの出力を取り込んで実行します。

  1. ネットワークエディタ のtasksコンテキストのtopnet1 TOPネットワーク内で、ROP Geometry Output TOPノードを作成し、名前をsmoke_simに変更してから、その 入力smoke_src TOPノードの 出力 に接続します。

    ROP Geometry Output はTOPs⇥ Tabメニューの Geometry カテゴリにあります。

    smoke_sim TOPノードには、smoke_importSOPネットワーク を指します。 このTOPノードは、Wedgeバリエーション毎に、指定したアトリビュートを使っていくつものワークアイテムを生成し、そのSOPネットワークを1-120フレーム間でクック(実行)します。

  2. 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ネットワークの入力パスを指定します。

      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
  3. シミュレーションのキャッシュ化をセットアップします。

    • ROP Fetch タブの Cache Mode パラメータドロップダウンメニューから Write Files を選択します。

      これは、ビューポート内で迅速にWedgeシミュレーションフレームを再生できるようにするために、クックされたシミュレーションフレームを書き出します。

  4. smoke_sim TOPノードで生成されるワークアイテムを見ていきましょう。

    • このノードのワークアイテムを生成します。

      このノードに480個のドットが表示されます。 各ドットは、各Wedgeの各フレームのPyroシミュレーションワークアイテムを表現しています(120フレーム x 4個のWedge)。

    • smoke_simノード内のワークアイテムドットのどれかをクリックします。

      smoke_simノード上のPyroシミュレーションタスクとsmoke_srcノード上のそれに関係するソースジオメトリフレームとsmoke_variationsノード上のそれに関係するWedgeの間にラインが表示されていることに注目してください。 このラインとそれを結ぶドットのハイライトは、ワークアイテム間の 依存関係 を示しています。

      smoke_simとsmoke_srcとsmoke_variationsのワークアイテム間の接続

      Tip

      PDGは、ファーム上の異なるプラットフォーム(Windows,Linuxなど)に保存されているファイルへのアクセスを可能にする汎用的な特別な書式ですべてのファイルパスを保存します。 この特別な書式では、ファイルパス内に特別なPDG トークン を使用します。

      • smoke_sim TOPノード上のワークアイテムドットをダブルクリックします。

      • 表示された Task Info ポップアップウィンドウで、 CommandInputOutput のパスを見てください。

        デフォルトでは、これらのパスは 人が解読できる 書式で表示されます。

      • この Task Info ポップアップウィンドウの上部にあるフォルダアイコンをクリックします。

        すると、 そのままの トークンが入った書式でパスが表示されます。 このようなパスがワークアイテム上のそれぞれのアトリビュートに格納されています。

  5. 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ノード上の色々なワークアイテムのクック状態が表示されるのが確認できると思います。

      ノード上の各ドットは、シミュレーションの フレーム も表現しています。

  6. ネットワーク内で@アトリビュート参照の使われ方を見ていきましょう。

    • Objectコンテキストに切り替えます。

    • Smoke Sourcing and Simulation ネットワークボックス内のsmoke_sim DOPネットワークの中に入ります。

    • uniformforce1ノードを選択し、 Force パラメータの値を見てください。

      このuniformforce1ノードは、あなたが作成した@forceWedge変数を使ってforcePDGアトリビュートを参照していることに注目してください。 つまり、シミュレーションはWedgeからforceアトリビュートを取り込んで、その値を利用しています。

      smoke_src TOPノードと同様に、この@アトリビュート参照によって、シミュレーションでのWedgeプロパティの結果をインタラクティブにプレビューすることができます。 ビューポートにsmoke_sim DOPネットワークを表示して、smoke_variationsWedge TOPノードのワークアイテムドットをクリックすると、シミュレーションWedgeバリエーションをプレビューすることができます。 他にも、@force変数が変更される度に、Houdiniはuniformforce1DOPを更新して、そのWedgeアトリビュートの新しい値で再評価された結果を表示します。

    • uniformforce1ノードの Output フラグを有効にします。

    • トップレベルのObjectコンテキストに戻ります。

    • smoke_sim DOPネットワークの Display フラグを有効にします。

    • tasksコンテキストに戻って、topnet1 TOPネットワークに入ります。

    • シミュレーションを再生し、smoke_variations TOPノードのワークアイテムドットをクリックすると、ビューポートにそのWedgeによるシミュレーションをプレビューすることができます。

    煙シミュレーションのforceバリエーション
  7. チュートリアルシーンを保存します。

ステップ4 - 煙を含んでいないフレームを除外する

このステップでは、 Filter by Range TOPノードを使用して、シミュレーションの最初の数フレームを除外します。

smoke_sim TOPノードが取り込むPyroシミュレーション出力は、フレーム25付近まではあまり 目立ちません 。 ほぼ空っぽに見えるフレームを除外すると、上流のフレーム範囲がトリムされるので、(レンダーノードなどの)下流のノードは入力フレーム範囲のサブセットのみを処理するだけで済みます。 このようにすることで、Pyroシミュレーションではシミュレーションの始めからすぐに大量の煙が発生し、下流のレンダラーはシーン内に実際に煙がある状態から始めることになります。

  1. ネットワークエディタ でFilter by Range TOPノードを作成し、名前をrender_rangeに変更してから、その 入力smoke_sim TOPノードの 出力 に接続します。

    Filter by Range はTOPs⇥ Tabメニューの Data カテゴリにあります。

  2. render_range TOPノードを選択してから、以下のパラメータを設定します:

    • Filter Range パラメータの 1番目 のフィールドに 25 を入力します。

      これは、フレーム25をシミュレーションフレーム範囲の 最初のフレーム として設定します。

    • Filter Range パラメータの 2番目 のフィールドに$FEND変数を入力します。

      これは、現在の Global Animation Frame Range 値をシミュレーションフレーム範囲の 最後のフレーム として設定します。

  3. render_range TOPノードをクリックしてコンテキストメニューから Generate Node を選択します。

    このノード上に生成されたワークアイテムの数が 384 個であることに注目してください。 これは、各Wedgeバリエーションの最初の25フレーム分がrender_range TOPノードによって排除されたのが原因です(96フレーム x 4個のWedge)。

  4. smoke_sim TOPノード上の最初のワークアイテムドットをクリックします。

    クリックしたワークアイテムドットとrender_rangeノードのワークアイテムの間に依存関係ラインが 表示されていない ことに気づいてください。 これは、クリックしたフレームがrender_rangeノードによってトリムされた結果、そのフレームのワークアイテムが生成されなかった事が原因です。

    render_rangeワークアイテム
  5. render_rangeノードをクックします。

  6. render_rangeノード上のワークアイテムドットをクリックしたままにします。

    rangeアトリビュートが25.0, 120.0, 1.0に変更されていて、出力される新しいフレーム範囲が反映されていることがわかります。

    Tip

    ワークアイテムドットをクリックしてから[]のキーを使用することで、そのノード上のワークアイテムを前後に進めることができます。

  7. チュートリアルシーンを保存します。

ステップ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レンダラー)を使用することになります。

  1. ネットワークエディタ でROP Fetch TOPノードを作成し、名前をgl_renderに変更してから、その 入力render_range TOPノードの 出力 に接続します。

    ROP Fetch はTOPs⇥ Tabメニューの Render カテゴリにあります。

    ここでは、 高品質用 のOpenGLレンダーノードを設定します。

  2. 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 per Batch パラメータを 40 に設定します。

      レンダーノードに関しては、プロセスがフレームのレンダリングを開始するのを待機する時間に多くの時間を消費 したくない ので、常にいくつかまとめてバッチで実行すると良いでしょう。

      このチュートリアル外では、あなたのハードウェアやクックするジョブの特質に合わせてバッチサイズを選んでください。 バッチサイズを大きくしすぎると、少ない数のプロセスの起動だけで済むものの、膨大な数の処理に時間がかかってしまうので、クックがあまり 効率的ではなくなってしまいます 。 バッチサイズを小さくしすぎると、プロセスのオーバーヘッドによるコストが大きくなります。

      Tip

      バッチサイズを選択する上で参考になるルールは次のとおりです: ワークアイテムの数レンダーマシンのコアの数で割った数をバッチサイズに設定します。例えば、コアが24個あれば、理想は24個のプロセス(1コア1プロセス)が欲しいです。

  3. gl_render TOPノードを選択して、⌃ Ctrl + cを押してから⌃ Ctrl + vを押します。

    ネットワークエディタgl_render1という名前の新しく複製されたレンダーノードが追加され、その 入力 は既にrender_range TOPノードの 出力 に接続されています。

    • gl_render1 TOPノードを選択して、名前をgl_render_previewに変更します。

    ここでは、 低品質用 のOpenGLレンダーノードを設定します。

  4. 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 per Batch パラメータを 20 に設定します。

  5. 一度に一つずつgl_renderノードとgl_render_previewノードをクックします。

    各ノードでワークアイテムドットが表示されます。 各ワークアイテムドットは、各Wedgeから取り出された各フレームのレンダーワークアイテムを表現しています(96フレーム x 4個のWedge)。

    Note

    TOPノードをクックすると、生成する必要のあるワークアイテムもそのノード上に 生成 されます。

    プレビュー用のOpenGLレンダラーは、ワークアイテムを非常に速くクックするのに対して、高品質用のOpenGLレンダラーはクックに少し時間がかかります。

    ネットワークエディタTask Graph Table ウィンドウ、 ネットワークエディタ のTasksメニューバーのどちらでもgl_rendergl_render_previewのノード上の色々なワークアイテムのクック状態が表示されるのが確認できると思います。

    これらのレンダーノードをクックすると、 最終 のレンダーフレームが得られます。

    クックされたgl_renderノードとgl_render_previewノード
  6. レンダリングされたフレームを見てみましょう。

    • 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よりも高品質であることに注目してください。

      gl_render EXR動画
      gl_render_preview EXR動画
  7. チュートリアルシーンを保存します。

ステップ6 - レンダラー用のスイッチをセットアップする

このステップでは、 Switch TOPノードを使用して、TOPネットワークで使用する入力レンダラーをgl_render (高品質用)とgl_render_preview(低品質用)から選択可能なトグルをセットアップします。

Tip

  • このスイッチを追加すると、ネットワークが2つの ブランチ に分かれます。このチュートリアル外では、これは異なる解像度でフレームを出力する必要があるプロダクション環境で非常に役立ちます(例えば、個人レビュー用、双方用、デイリー用など)。

  • SwitchノードはTOPネットワークのブランチの片方しかクックしませんが、手動でどのTOPレンダーノードもクックすることができます。

  1. ネットワークエディタ でSwitch TOPノードを作成し、名前をselect_renderに変更し、その 入力gl_renderノードとgl_render_previewノードの 出力 に接続します。

    Switch はTOPs⇥ Tabメニューの Utility カテゴリにあります。

    これでselect_renderノードは、使用するレンダラーとTOPネットワークでクックするブランチを決めます。

    select_renderノードをレンダーノードに接続すると、片方のレンダーノードのワークアイテムが削除されます。

    • ワークアイテムが持たなくなったレンダーノードを再クックします。

  2. select_renderノードを選択して、そのノードのパラメータエディタを見てみましょう。

    このノードの入力は、パラメータエディタ内で選択可能な Input Operators として表示されます。

    各入力には、この Input Operators リストの順番に基づいて Select Input 番号が振られます。 このselect_renderノードの場合、gl_renderの入力番号は 0 で、gl_render_previewの入力番号は 1 になっています。

  3. Select Input スライドを使ってgl_render入力とgl_render_preview入力を切り替えて、 ネットワークエディタ 内でどのように変化するのか見てみましょう。

    select_renderとOpenGLレンダーノードを接続しているラインは、そのレンダラーが選択されていれば実線、 選択されていなければ 破線で表示されます。 TOPネットワーク内の現在のアクティブレンダーノードは、select_render実線 で接続されているノードです。

    Note

    • レンダラー間を切り替える時、その切替先のレンダラーブランチの下流ノードが以前にクックされていなかった場合、それらのノードを再クックする必要があります。

    • レンダラーを切り替えても、上流のノードが以前にクックされていた場合、それらのノードはDirty(変更あり)に なりません

  4. select_renderノードの入力をgl_render_previewノードに切り替えます。

    これ以降のチュートリアルでは、gl_render_previewノードでレンダリングされたフレームを扱っていきます。

  5. チュートリアルシーンを保存します。

ステップ7 - レンダリングしたフレームにキャプションを入れる

このステップでは、特別に事前に設定されている Overlay Text という名前の ROP Composite Output TOPノードを使用して、レンダリングしたフレームの上にキャプションテキストを重ねます。 このテキストには、フレーム番号、Force値、Size値などの各フレームに関する重要なWedgeバリエーション情報を入れていきます。

この類のオーバーレイは、(例えば、4個の異なりWedgeバリエーションのフレーム50番において)Wedgeバリエーションの確認と比較をする時に視覚的に情報を表示することができるので便利です。 これによって、あなたが好みのフレームの生成で使用された設定を特定することができ、それはFXをデバッグする際にあると非常に役立つ情報でもあります。

  1. ネットワークエディタ で、Overlay Text TOPノードを作成し、名前をwedge_overlayに変更し、その 入力select_renderノードの 出力 に接続します。

    Overlay Text はTOPs⇥ Tabメニューの Images カテゴリにあります。

  2. wedge_overlay TOPノードを選択してから、以下のパラメータを設定します:

    • Overlay タブの Text フィールドに以下のエクスプレッションをタイプします:

      Frame: $F3
      Size: `@size`
      Force: `@force`
      

      $F3は最大3桁のフレーム番号で、(これまでに見てきた@オペレータを使った)@sizesizeWedgeワークアイテムアトリビュートを参照し、@forceforceWedgeワークアイテムアトリビュートを参照しています。

      このエクスプレッションはワークアイテム毎に評価されます。 これは入力レンダーフレームを受け取り、そのフレームのワークアイテム上のアトリビュートを評価し、レンダリングされたフレームの上に重ねるテキストを決めます。

    • ROP Composite タブの Output Picture パラメータフィールドに以下のパスを入力します:

      $HIP/comp/$HIPNAME.$OS.`@wedgeindex`.$F4.exr
    • ROP Fetch タブの All Frames in One Batch有効 にします。

      このノードは、通常ではバッチの恩恵が得られます。 しかし、このチュートリアルでは、このCOPノードはほぼインタラクティブな速度でクックされるので、 Frames per Batch を使用する 必要がありません

  3. wedge_overlay TOPノードをクックします。

    このTOPノードにワークアイテムドットが表示されます。 各ワークアイテムドットは、各Wedgeのレンダリングされた各フレームのオーバーレイ画像ワークアイテムを表現しています(96フレーム x 4個のWedge)。

    wedge_overlay TOPノードがクックされると、合成されたオーバーレイ画像が得られます。

  4. オーバーレイフレームを見てみましょう。

    • wedge_overlay TOPノードを⌃ Ctrl + クリックして表示されるノード情報ウィンドウ内の Output .exrリンクをクリックします。

      fxtutorial.wedge_overlay.exr動画がMPlayで表示されます。

    • fxtutorial.wedge_overlay.exr動画を再生します。

      この動画のテキストキャプションに注目してください。

  5. チュートリアルシーンを保存します。

ステップ8 - オーバーレイ画像を収集して整理する

このステップでは、 Partition by Frame TOPノードを使用して、入力のオーバーレイ画像をバケットまたはパーティションに収集して整理します。

オーバーレイ画像は、ステップ9で作成する モザイクノード に渡せるようにするために、フレーム番号別に整理しておく必要があります。

  1. ネットワークエディタ でPartition by Frame TOPノードを作成し、名前をcollect_framesに変更し、その 入力wedge_overlay TOPノードの 出力 に接続します。

    Partition by Frame はTOPs⇥ Tabメニューの Partitioner カテゴリにあります。

  2. collect_framesノードのパラメータはデフォルト値のままにします。

    このノード上のパラメータ設定はどれも変更する 必要がありません

  3. collect_frames TOPノードをクックします。

    collect_frames TOPノードは、すべてのオーバーレイ画像からワークアイテムを生成し、それらのワークアイテムをフレーム番号に基づいてパーティションに格納します。各パーティションは、Wedgeバリエーション分の4個のワークアイテムを持ちます。

    96個の小さな長方形がノード上に表示されます(384枚のオーバーレイ画像 / 4個のWedge)。

    collect_framesは、オーバーレイ画像をパーティションに分けます。

    collect_framesワークアイテムは、同じフレーム番号のwedge_overlay画像 4枚すべて のクックが完了した時にのみクックを完了します。

  4. collect_framesノード上のワークアイテムドットをクリックしていってみましょう。

    各ワークアイテムの Output を見てください。 このノードが各パーティションでWedge毎に同じフレーム番号の4枚のフレームをどのようにグループ化しているのか注目してください。

    Tip

    ワークアイテムドットをクリックしてから[]のキーを使用することで、そのノード上のワークアイテムを前後に進めることができます。

  5. チュートリアルシーンを保存します。

ステップ9 - パーティション化されたオーバーレイ画像を2×2のモザイク画像に組み立てる

このステップでは、 ROP Composite Output TOPノードを使用して、フレーム番号毎にすべての4つのWedgeバリエーションのオーバーレイ画像を2×2グリッドまたは モザイク にアセンブルまたはコンポジットします。

これらのモザイクは、Wedge別に各フレームを比較することができます。 例えば、このモザイクですべての4つのWedgeからそれぞれのフレーム50を比較することができます。

  1. ネットワークエディタ でROP Composite Outputノードを作成し、名前をwedge_mosaicに変更してから、その 入力collect_framesノードの 出力 に接続します。

    ROP Composite Output はTOPs⇥ Tabメニューの Render カテゴリにあります。

  2. 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 per Batch パラメータを 5 に設定します。

      wedge_mosaicノードは、ネットワーク内の他のCOPタイプのノード(wedge_overlay)よりも処理が重いので、バッチ化による恩恵が少し得られます。

  3. wedge_mosaic TOPノードをクックします。

    このノードに96個のドットが表示されます。 各ドットはモザイク画像ワークアイテムを表現しています(384枚のオーバーレイ画像 / 4個のWedge)。

    wedge_mosaic TOPノードは、各パーティションからオーバーレイ画像を取り込んで、それらの画像を1枚に合成された2×2のグリッド画像にします。

  4. モザイク画像を見てみましょう。

    • wedge_mosaic TOPノードを⌃ Ctrl + クリックして表示されるノード情報ウィンドウ内の Output .exrリンクをクリックします。

      出力モザイク画像の動画がMPlayで表示されます。

    • fxtutorial.wedge_mosaic.exr動画を再生します。

      この動画がフレーム番号順で順々にすべての2×2モザイク画像が配置されていることに注目してください。

  5. チュートリアルシーンを保存します。

ステップ10 - すべてのモザイク画像を収集する

このステップでは、 Wait for All TOPノードを使用して、すべての入力モザイク画像を単一パーティションに収集します。

ステップ11で作成するFFmpeg Encode Video TOPノードに渡すことができるように、合成されたモザイク画像が すべて 完了している必要があります。

  1. ネットワークエディタ でWait for All TOPノードを作成し、名前をデフォルトのwaitforall1のままにして、その 入力wedge_mosaic TOPノードの 出力 に接続します。

    Wait For All はTOPs⇥ Tabメニューの Dependencies カテゴリにあります。

  2. waitforall1 TOPノードをクックします。

    このノード上には、単一ワークアイテムが長方形で表示されます。

    このTOPノードは、すべてのモザイク画像を単一パーティションに収集するので、その単一パーティションがそのノード上に長方形として表示されています。

    waitforall1 TOPノードは、wedge_mosaic TOPノードのコンポジット処理がすべて完了するのを待ってから、それらのモザイク画像を下流のFFmpeg Encode Video TOPノードに渡します。

    これは、FFmpeg Encode Video TOPノードでは動画を生成して出力する前に、 すべて の合成モザイク画像が必要であることが理由です。

  3. チュートリアルシーンを保存します。

ステップ11 - モザイク画像を動画に変換する

この最終ステップでは、 FFmpeg Encode Video TOPノードを使用して、waitforall1 TOPノードによって保持されたすべてのモザイク画像を1個のMP4動画に変換します。

Note

FFmpeg Encode Videoノードを使用可能にするには、ローカルマシン上にFFmpegユーティリティがインストールされている必要があります。 FFmpegがインストールされているかどうか確認する方法またはユーティリティのインストール方法に関しては、FFmpegのインストールを参照してください。

  1. ネットワークエディタ でFFmpeg Encode Video TOPノードを作成し、名前をmake_movieに変更して、その 入力waitforall1 TOPノードの 出力 に接続します。

    FFmpeg Encode Video はTOPs⇥ Tabメニューの Images カテゴリにあります。

  2. make_movie TOPノードのパラメータ設定はデフォルトのままにします。

  3. make_movie TOPノードをクックします。

    このノード上には、単一ワークアイテムがドットで表示されます。

    make_movie TOPノードは、waitforall1パーティション内のすべての合成モザイク画像を取り込み、それらの画像を動画に変換して、MP4動画ファイルとして出力します。

  4. 最終のMP4動画を見てみましょう。

    • make_movie TOPノードを⌃ Ctrl + クリックして表示されるノード情報ウィンドウ内の Output .mp4リンクをクリックします。

      ネットワークの最終出力を含んだmake_movie_#.mp4動画があなたのローカルのデフォルトの動画プレーヤーで再生されます。

  5. チュートリアルシーンを保存します。


終了

おめでとうございます! FXワークフローPDGチュートリアルが完了しました。

この最終TOPネットワークを見たいのであれば、Houdiniサンプルファイルディレクトリ($HH\help\files\pdg_examples\top_rop\)にあるrop_wedge.hipを見てください。

PDGワークフローについて学習を継続したいのであれば、このHoudiniドキュメントの他の初心者向けチュートリアルシリーズを進めるのも良いし、 私どものウェブサイトの Pipeline|PDG ラーニングパスにアクセスするのも良いでしょう。

PDG/TOPsを使ってタスクを実行する方法

基本

初心者向けチュートリアル

次のステップ

リファレンス

  • すべてのTOPsノード

    TOPノードは、データをネットワークに送り込んでワークアイテムに変換し、色々なノードでそれを制御するワークフローを定義します。たいていのノードは、ローカルマシンまたはサーバーファーム上で実行可能な外部プロセスを表現しています。

  • プロセッサ系ノードコールバック

    プロセッサ系ノードはスケジューラで実行可能なワークアイテムを生成します。

  • パーティショナー系ノードコールバック

    パーティショナー系ノードは複数の上流ワークアイテムを単一パーティションにグループ化します。

  • スケジューラ系ノードコールバック

    スケジューラ系ノードはワークアイテムを実行します。

  • 独自のファイルタグとハンドラー

    PDGはファイルタグを使用して出力ファイルのタイプを決めます。

  • Python API

    ディペンデンシーグラフを扱うためのPython PDGパッケージのクラスと関数。

  • Job API

    ジョブスクリプトで使用するPython API

  • ユーティリティAPI

    Python pdgutilsパッケージのクラスと関数は、PDGノードでの使用だけでなく、スクリプトやプロセス外のジョブスクリプトでの使用も想定されています。