On this page

このチュートリアルについて

PDGを使ってプロジェクトまたはプロダクションからフレームを操作したり共有する色々な方法がたくさんあります。

このチュートリアルでは、外部メディアの取り込み、画像ファイルの抽出と圧縮、フレームの取り出し、画像の変換、フレームを画像モンタージュに配置、フレームを動画に変換する方法を学習します。

このチュートリアルの各パートでは、PDGによる画像操作を色々な方法で進めて行きます。

Tip

TOPとPDGに関してもっと学習したいのであれば、TOPの紹介を参照してください。

前提条件

  • TOPネットワークのセットアップの基本を理解していること。

  • 少しPDGワークフローの経験があること。

Tip

FXワークフロー初心者向けチュートリアルを進めることでPDGの基本を学習することができます。

学習内容

  • メディアのインポート/エクスポート。

  • 画像アーカイブファイルのアンパック/生成。

  • メディアの変換。

  • 色々な種類の画像出力や動画出力の生成。

はじめる前に

ImageMagickのインストール

このチュートリアルのパート12では、PDGを使って一連の画像操作の方法を学習します。 これをするために、 ImageMagick TOPノードを使用します。

ImageMagickノードを使用できるようにするには、ローカルシステムにImageMagickユーティリティがインストールされている必要があります。

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

    Mac

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

    Windows

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

    Linux

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

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

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

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

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

    Windows

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

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

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

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

FFmpegのインストール

このチュートリアルのパート3では、一連の画像ファイルを動画に変換する方法を学習します。 これをするために、 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 をクリックします。

チュートリアルの画像アーカイブをコピーする

始める前に、このチュートリアルで作業する画像アーカイブファイル(.zip)をコピーしてください:

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

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

  3. \top_imagemanipulationフォルダ内のbrimstone_images_compressed.zipstock_pictures_compressed.zipのファイルをコピーします。

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

  5. その\PDG_TUTORIAL_FILESフォルダにそれらの.zipファイルをペーストします。


開始

最初のステップ - アーカイブファイルを取り込んで画像を抽出する

このチュートリアルの最初のステップでは、外部メディアをTOPネットワークに取り込んで、そのアーカイブファイルから内容を抽出する画像操作ワークフローを学習します。 File Pattern TOPノードを使用して外部アーカイブを取り込み、 File Decompress TOPノードを使用してTOPネットワーク内の各ブランチで個々に画像を使用できるようにするためにそのアーカイブを解凍します。

このチュートリアルのパート123では、3つの異なる画像操作ワークフローを学習するために、その3つの異なるネットワークブランチを作成したいと思います。

  1. Houdiniを起動し、新しいセッションを開始します。

  2. 新しいシーンを保存します。

    • シーンファイルの名前をimagemaniptutorial.hipにします。

    • \PDG_TUTORIAL_FILESフォルダディレクトリに.hipを保存します。

    これが以降のチュートリアルの作業プロジェクトファイルとなります。

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

  4. File Pattern TOPノードを作成し、名前をimport_archivesに変更します。

    File Pattern はTOPs⇥ Tabメニューの Files カテゴリにあります。

    このノードは、$HIPディレクトリに配置されているすべての外部.zip画像アーカイブファイルを取り込みます。

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

    • Operation セクションの Pattern パラメータフィールド内をクリックして以下をタイプします:

      $HIP/*.zip

      これは、このノードがファイルを検索するシステム上の場所とマッチさせるファイルパターン(例えば、ファイルタイプ)を決めます。

      $HIP/は、このノードがTOPネットワークのデフォルトの(Schedulerノードで指定されている)作業ディレクトリから画像アーカイブファイルを検索するように指示し、*.zipワイルドーカードは、このノードがすべてのZIPアーカイブファイルを検索して返すように指示します。

      Tip

      パターンワイルドカードについて学習したいのであれば、パターンを参照してください。

    • Work Item セクションの Split Files into Separate Items パラメータを 有効 にしてください。

      これは、このノードがマッチしたファイル毎に別のワークアイテムを作成し、各ファイルのファイル名データをこのノードのアトリビュートに格納するように指示します。

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

  6. import_archives TOPノードをクックします。

    import_archives TOPノード上に2個のワークアイテムが表示され、それらのワークアイテムがクックされます。 1つ目のタスクはbrimstone_images_compressed.zipアーカイブファイルを示し、2つ目のタスクはstock_pictures_compressed.zipアーカイブファイルを示しています。

  7. import_archives TOPノードをクリックしてノード情報を見てみましょう。

    Outputs にファイルがリストされていることに注目してください。 このノードの Pattern パラメータフィールドでワイルドカードファイルパターンを指定しているので、このノードはこのように 両方 の画像アーカイブファイルを識別して取り込むことができています。

  8. File Decompress TOPノードを作成し、名前をextract_imagesに変更します。

    File Decompress はTOPs⇥ Tabメニューの Files カテゴリにあります。

    このノードは、import_archives TOPノードで取り込まれたアーカイブファイルから画像を抽出して、それらをディスクに保存します。

  9. extract_images TOPノードを選択して、以下のパラメータを設定します:

    • Output セクションの Output Folder パラメータフィールド内をクリックして以下をタイプします:

      $HIP/inputs/

      これは、このノードがそれらの抽出した画像ファイルを作業ディレクトリ内の/inputsという名前の新しいフォルダに保存するように指示します。

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

  10. extract_images TOPノードの 入力import_archives File Pattern TOPノードの 出力 に接続します。

    これらのノードによって、画像操作TOPネットワークの最初の部分を構成することができました。

  11. extract_images TOPノードをクックします。

    extract_images TOPノード上に2個のワークアイテムが表示され、それらのワークアイテムがクックされます。 1つ目のタスクはBrimstone画像シリーズを示し、2つ目のタスクはStock Pictures画像シリーズを示しています。

    Note

    ネットワークエディタ 内のextract_images TOPノードの隣に紫色のアイコンが表示されていることに注目してください。

    このアイコンは、このノードが 動的 であることを示しています。

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

    静的TOPノードと動的TOPノードとそれらのTOPネットワークでの重要性についてもっと学習したいのであれば、Static vs. Dynamicを参照してください。


    import_archives TOPノードは外部ZIPアーカイブファイルを取り込み、extracted_images TOPノードはそれらのアーカイブファイルから画像を抽出してそれらをディスクに保存します。

  12. 抽出した画像ファイルを見てみましょう。

    ファイルブラウザウィンドウで$HIP/inputs/に移動し、そこにある画像ファイルを見てみましょう。

    結果: 抽出されたBrimstone画像シリーズ
    結果: 抽出されたStock Pictures画像シリーズ
  13. チュートリアルシーンを保存します。


これから扱う画像ファイルすべてがアクセス可能になったので、このチュートリアルの以下のパートで説明するワークフローを使用してそれらの画像を操作できるようになりました。

パート1 - 画像を変換してアーカイブファイルに圧縮する

このチュートリアルのパート1では、画像を別のファイルフォーマットに変換して画像アーカイブに圧縮するための画像操作ワークフローを学習します。 ImageMagick TOPノードを使用して、最初のステップで解凍した画像ファイルを変換し、 File Compress TOPノードを使用して、変換した画像を新しい.zipアーカイブファイルに圧縮します。

この工程は、ある部分のパイプラインではフレーム用の画像ファイルフォーマットを使用し、別の部分のパイプラインでは別の画像ファイルフォーマットを使用する場合で役立ちます。

  1. ImageMagick TOPノードを作成し、名前をconvert_imagesに変更してから、その 入力extract_images File Decompress TOPノードの 出力 に接続します。

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

    このノードは、画像アーカイブから抽出したすべての.jpg画像ファイルを.png画像ファイルに変換します。

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

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

      これは、このノードが入力画像に対して変換処理を行なうように指示します。

    • Operation セクション:

      • Image Quality Percentage パラメータを 100 に設定します。

        これは、このノードが画像を変換して出力する際に使用する圧縮レベルを指示します。 100のパラメータ値は 無圧縮 (完全品質)を意味します。 100未満のパラメータ値は、圧縮の割合を示し、小さいほど品質が下がります。 例えば、80のパラメータ値は変換された画像を20%圧縮します。

      • Convert セクションの Output Filename パラメータフィールド内をクリックして以下をタイプします:

        $HIP/images/{inputfilename}.png

        この内部変数である{inputfilename}は、このノードが変換元の.jpg画像と同じ名前で各.png画像の名前を付けるように指示します。

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

  3. File Compress TOPノードを作成し、名前をexport_archivesに変更してから、その 入力convert_images ImageMagick TOPノードの 出力 に接続します。

    File Compress はTOPs⇥ Tabメニューの Files カテゴリにあります。

    このノードは、.png画像を新しい.zipアーカイブファイルに圧縮します。

  4. export_archives TOPノードを選択して、以下のパラメータを設定します:

    • Ouput セクション:

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

        これは、このノードが新しい画像アーカイブをZIPファイルとして保存するように指示します。

      • Output セクションの Output File フィールド内をクリックして以下をタイプします:

        $HIP/archives/newarchive.`@pdg_index`.zip

        $HIP/archivesは、このノードが新しいアーカイブファイルを作業ディレクトリ内の/archivesという名前の新しいフォルダに保存するように指示し、newarchiveは、このノードが各アーカイブファイル名の頭に newarchive を付けるように指示します。

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

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

    convert_images TOPノード上には、Brimstone画像シリーズとStock Pictures画像シリーズを表現した2個のワークアイテムが表示され、それらのワークアイテムがクックされます。

    export_archives TOPノード上には、新しい画像アーカイブを表現した2個のワークアイテムが表示され、それらのワークアイテムがクックされます。

    各convert_imagesタスクが完了しないとexport_archiveノード上のそれに該当するタスクはクックできません

    convert_images TOPノードは、すべての.jpg画像ファイルを.png画像ファイルに変換してディスクに保存します。

    export_archives TOPノードは、.png画像のBrimstone画像シリーズとStock Pictures画像シリーズをそれぞれ新しい.zipアーカイブファイルに圧縮してディスクに保存します。

  6. 生成されたPNG画像とZIPアーカイブファイルを見てみましょう。

    • ファイルブラウザウィンドウで$HIP/images/に移動し、それらの変換後の画像ファイルを見てみましょう。

      変換後の各画像は変換前の画像のファイル名が付けられていることに注目してください。 これは、convert_images TOPノードの Output Filename パラメータフィールド内に内部変数の{inputfilename}を使用したからです。

      結果: 変換後のBrimstone画像シリーズ
      結果: 変換後のStock Pictures画像シリーズ
    • $HIP/archives/に移動して、新しいZIPアーカイブファイルを見てみましょう。

      結果: 新しいZIPアーカイブファイル
  7. チュートリアルシーンを保存します。


これで簡単に変換後の画像を共有/配布できるようになりました。

パート2 - 画像をモンタージュに並べる

このチュートリアルのパート2では、一連の画像を一枚のモザイク または モンタージュ に変換するための画像操作ワークフローを学習します。 ImageMagick TOPノードを使用して、最初のステップで展開した画像ファイルを2枚の画像シリーズのモンタージュに並べます。

この工程は、シミュレーションでWedgeフレームバリエーションを比較した時と同様に、一枚の合成画像内に一連のフレームを並べて確認して評価したい場合で役立ちます。

  1. ImageMagick TOPノードを作成し、名前をmake_montagesに変更してから、その 入力extract_images File Decompress TOPノードの 出力 に接続します。

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

    このノードは、画像アーカイブから抽出した画像ファイルを受け取り、それらの画像を画像シリーズ別に1枚のモンタージュ(グリッドモザイク)画像に並べます。

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

    • Node タブを選択します。

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

        これは、このノードが入力画像に対してモンタージュ処理を行なうように指示します。

      • Output Filename パラメータフィールド内をクリックして以下をタイプします:

        $HIP/montage/mosaic.`@pdg_index`.png

        $HIP/montageは、このノードがモンタージュ画像ファイルを作業ディレクトリ内の/montageという名前の新しいフォルダに保存するように指示し、mosaicは、このノードが各モンタージュファイル名の頭に mosaic を付けるように指示します。

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

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

    このノード上には、Brimstone画像シリーズとStock Pictures画像シリーズを表現した2個のワークアイテムが表示され、それらのワークアイテムがクックされます。

    このノードは、すべてのBrimstone画像を1枚のモンタージュに並べ、すべてのStock Picture画像をもう1枚のモンタージュに並べてから、それら両方の画像をディスクに保存します。

  4. 生成されたモンタージュ画像を見てみましょう。

    ファイルブラウザウィンドウで$HIP/montage/に移動し、それらのモンタージュ画像ファイルを見てみましょう。

    結果: Brimstone画像シリーズのモンタージュ
    結果: Stock Pictures画像シリーズのモンタージュ
  5. チュートリアルシーンを保存します。


これでBrimstone画像シリーズとStock Picture画像シリーズ内のすべての画像をそれぞれ別のモンタージュ画像として表示/比較することができるようになりました。

パート3 - 画像を動画に変換する

このチュートリアルのパート3では、一連の画像を動画に変換するための画像操作ワークフローを学習します。 Filter by Expression TOPノードを使用して、入力からStock Picture画像シリーズを除外し、 FFmpeg Encode Video TOPノードを使用して、残りのBrimstone画像シリーズを動画に変換します。

この工程は、フレームを動画として表示したり配布したい場合で役立ちます。

  1. Filter by Expression TOPノードを作成し、名前をfilter_imagesに変更してから、その 入力extract_images File Decompress TOPノードの 出力 に接続します。

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

    このノードは、カスタムエクスプレッションを使用して、不要な入力を除外します。

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

    • Filter Expression パラメータフィールド内をクリックして⌃ Ctrl + eを押して Edit Expression ウィンドウを開きます。

    • Edit Expression ウィンドウで、以下の操作を行ないます:

      • マルチラインフィールド内をクリックします。

        Edit Expressionウィンドウ内のマルチラインフィールド

      • 0 を削除してから、以下のPythonエクスプレッションをタイプします:

        len(pdg.workItem().outputFilesForTag('file/image')) < 10

        これは、このノードが入力から10枚未満の画像シリーズを除外するように指示します。 このチュートリアルの場合、それに該当する画像シリーズはStock Picture画像シリーズです。これは4枚の画像だけで構成されています。

    • Accept をクリックします。

      Filter Expression パラメータフィールドが に変わります。 これは、そのパラメータにエクスプレッションが含まれていて、そのエクスプレッション言語が現在 HScript に設定されていることを示します。

    • タイプしたエクスプレッションはPythonであり、その Filter Expression パラメータが現在HScriptに設定されているので、そのパラメータの エクスプレッション言語 を変更する必要があります。

      Filter Expression パラメータをクリックして表示されるコンテキストメニューから Expression ▸ Change Language to Python を選択します。

      Filter Expression パラメータフィールドが に変わります。 これは、そのパラメータのエクスプレッション言語が Python に設定されていることを示します。

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

  3. FFmpeg Encode Video TOPノードを作成し、名前をmake_movieに変更してから、その 入力filter_images Filter by Expression TOPノードの 出力 に接続します。

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

    このノードは、すべての入力画像を受け取り、それらの画像を動画に変換します。

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

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

      これは、このノードが常にそのノード上のワークアイテムで動作し、ディスクから何も既存のクック結果を使用しないように指示します。

    • Output セクションの Output File Path パラメータフィールド内をクリックして以下をタイプします:

      $HIP/movie/brimstonevideo.mp4

      $HIP/movieは、このノードが動画ファイルを作業ディレクトリ内の/movieという名前の新しいフォルダに保存するように指示し、.mp4は、このノードが動画をMP4フォーマットで保存するように指示します。

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

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

    filter_images TOPノード上には、Brimstone画像シリーズを表現した1個のワークアイテムが表示され、そのワークアイテムがクックされます。

    make_movie TOPノード上には、動画を表現した1個のワークアイテムが表示され、そのワークアイテムがクックされます。

    filter_images TOPノードは、入力からStock Picture画像シリーズを除外します。

    make_movie TOPノードは、すべてのBrimstone画像をMP4動画ファイルに変換してディスクに保存します。

    Note

    Frame List File パラメータで指定されているファイルが入力画像と同じドライブになければクックは失敗します。 その場合は、 Frame List File パラメータを入力画像と同じドライブ内の任意の場所に変更してください。

  6. make_movie TOPノードで生成されたワークアイテムを見てみましょう。

    • make_movie TOPノード上のワークアイテムをクリックします。

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

      make_movieノードのワークアイテムに呼応するワークアイテム
    • extract_images TOPノード上の1つ目のワークアイテムドットをクリックしてから、同じノード上の2つ目のワークアイテムドットをクリックします。

      extract_images TOPノード上の 1個 だけのワークアイテムがmake_movie TOPノード上のワークアイテムに繋がっていることに注目してください。 これは、filter_images TOPノードがTOPネットワークの動画ブランチからStock Picture画像シリーズを除外したのが理由です。

      extract_imagesノードのワークアイテムに呼応するワークアイテム
  7. 生成された動画を見てみましょう。

    ファイルブラウザウィンドウで$HIP/video/に移動し、そのMP4動画を見てください。

    結果: Brimstone動画
  8. チュートリアルシーンを保存します。


終了

おめでとうございます! Image Manipulation PDGチュートリアルを完了しました。

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

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

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

基本

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

次のステップ

リファレンス

  • すべてのTOPsノード

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

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

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

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

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

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

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

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

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

  • Python API

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

  • Job API

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

  • ユーティリティAPI

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