On this page |
このチュートリアルについて ¶
PDGを使ってプロジェクトまたはプロダクションからフレームを操作したり共有する色々な方法がたくさんあります。
このチュートリアルでは、外部メディアの取り込み、画像ファイルの抽出と圧縮、フレームの取り出し、画像の変換、フレームを画像モンタージュに配置、フレームを動画に変換する方法を学習します。
このチュートリアルの各パートでは、PDGによる画像操作を色々な方法で進めて行きます。
Tip
TOPとPDGに関してもっと学習したいのであれば、TOPの紹介を参照してください。
前提条件 ¶
-
TOPネットワークのセットアップの基本を理解していること。
-
少しPDGワークフローの経験があること。
Tip
FXワークフロー初心者向けチュートリアルを進めることでPDGの基本を学習することができます。
学習内容 ¶
-
メディアのインポート/エクスポート。
-
画像アーカイブファイルのアンパック/生成。
-
メディアの変換。
-
色々な種類の画像出力や動画出力の生成。
はじめる前に ¶
ImageMagickのインストール ¶
このチュートリアルのパート1と2では、PDGを使って一連の画像操作の方法を学習します。 これをするために、 ImageMagick TOPノードを使用します。
ImageMagickノードを使用できるようにするには、ローカルシステムにImageMagickユーティリティがインストールされている必要があります。
-
以下の手順を実行して、あなたのシステム上にImageMagickがインストールされているかどうか確認してください:
Mac
Terminalシェルで
convert -version
とタイプしてEnterを押します。Windows
コマンドプロンプト で
magick
とタイプしてEnterを押します。Linux
コマンドシェルで
convert -version
とタイプしてEnterを押します。エラーが返されなければ、あなたのシステム上にImageMagickがインストールされています。手順3に移動してください。
-
現在あなたのシステム上にImageMagickがインストール されていない 場合、ここからインストーラをダウンロードしてください。
-
ImageMagickをインストールします。
-
-
(Windowsのみ) あなたのシステム上にImageMagickがインストールされたら、あなたのシステム環境変数の Path にImageMagickのパスを通してください。
Windows
-
コントロールパネル > システムとセキュリティ > システム > システムの詳細設定 を開きます。
-
システムのプロパティ ウィンドウで、 環境変数 をクリックします。
-
環境変数 ウィンドウで、 システム環境変数 > Path を選択して 編集 をクリックします。
-
環境変数名の編集 ウィンドウで、 新規 をクリックして、ImageMagickのインストールディレクトリの絶対パスをタイプして OK をクリックします。
-
FFmpegのインストール ¶
このチュートリアルのパート3では、一連の画像ファイルを動画に変換する方法を学習します。 これをするために、 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 をクリックします。
-
チュートリアルの画像アーカイブをコピーする ¶
始める前に、このチュートリアルで作業する画像アーカイブファイル(.zip
)をコピーしてください:
-
ファイルブラウザを開いて、Houdiniインストールディレクトリに移動します。
-
そのインストールディレクトリから
$HH\help\files\pdg_examples\top_imagemanipulation
フォルダに移動します。 -
\top_imagemanipulation
フォルダ内のbrimstone_images_compressed.zip
とstock_pictures_compressed.zip
のファイルをコピーします。 -
PDG 作業ディレクトリに移動し、
\PDG_TUTORIAL_FILES
という名前の新しいフォルダを作成します。 -
その
\PDG_TUTORIAL_FILES
フォルダにそれらの.zip
ファイルをペーストします。
最初のステップ - アーカイブファイルを取り込んで画像を抽出する ¶
このチュートリアルの最初のステップでは、外部メディアをTOPネットワークに取り込んで、そのアーカイブファイルから内容を抽出する画像操作ワークフローを学習します。 File Pattern TOPノードを使用して外部アーカイブを取り込み、 File Decompress TOPノードを使用してTOPネットワーク内の各ブランチで個々に画像を使用できるようにするためにそのアーカイブを解凍します。
このチュートリアルのパート1、2、3では、3つの異なる画像操作ワークフローを学習するために、その3つの異なるネットワークブランチを作成したいと思います。
-
Houdiniを起動し、新しいセッションを開始します。
-
新しいシーンを保存します。
-
シーンファイルの名前を
imagemaniptutorial.hip
にします。 -
\PDG_TUTORIAL_FILES
フォルダディレクトリに.hip
を保存します。
これが以降のチュートリアルの作業プロジェクトファイルとなります。
-
-
ネットワークエディタ からtasksコンテキストに移動し、
topnet1
ネットワークの中に入ります。 -
File Pattern TOPノードを作成し、名前を
import_archives
に変更します。File Pattern はTOPs⇥ Tabメニューの Files カテゴリにあります。
このノードは、
$HIP
ディレクトリに配置されているすべての外部.zip
画像アーカイブファイルを取り込みます。 -
import_archives
TOPノードを選択してから、以下のパラメータを設定します:-
Operation セクションの Pattern パラメータフィールド内をクリックして以下をタイプします:
-
Work Item セクションの Split Files into Separate Items パラメータを 有効 にしてください。
これは、このノードがマッチしたファイル毎に別のワークアイテムを作成し、各ファイルのファイル名データをこのノードのアトリビュートに格納するように指示します。
-
他のすべてのパラメータはデフォルト値のままにします。
-
-
import_archives
TOPノードをクックします。import_archives
TOPノード上に2個のワークアイテムが表示され、それらのワークアイテムがクックされます。 1つ目のタスクはbrimstone_images_compressed.zip
アーカイブファイルを示し、2つ目のタスクはstock_pictures_compressed.zip
アーカイブファイルを示しています。 -
import_archives
TOPノードをクリックしてノード情報を見てみましょう。Outputs にファイルがリストされていることに注目してください。 このノードの Pattern パラメータフィールドでワイルドカードファイルパターンを指定しているので、このノードはこのように 両方 の画像アーカイブファイルを識別して取り込むことができています。
-
File Decompress TOPノードを作成し、名前を
extract_images
に変更します。File Decompress はTOPs⇥ Tabメニューの Files カテゴリにあります。
このノードは、
import_archives
TOPノードで取り込まれたアーカイブファイルから画像を抽出して、それらをディスクに保存します。 -
extract_images
TOPノードを選択して、以下のパラメータを設定します:-
Output セクションの Output Folder パラメータフィールド内をクリックして以下をタイプします:
$HIP/inputs/
これは、このノードがそれらの抽出した画像ファイルを作業ディレクトリ内の
/inputs
という名前の新しいフォルダに保存するように指示します。 -
他のすべてのパラメータはデフォルト値のままにします。
-
-
extract_images
TOPノードの 入力 をimport_archives
File Pattern TOPノードの 出力 に接続します。これらのノードによって、画像操作TOPネットワークの最初の部分を構成することができました。
-
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ノードはそれらのアーカイブファイルから画像を抽出してそれらをディスクに保存します。 -
抽出した画像ファイルを見てみましょう。
ファイルブラウザウィンドウで
$HIP/inputs/
に移動し、そこにある画像ファイルを見てみましょう。 -
チュートリアルシーンを保存します。
これから扱う画像ファイルすべてがアクセス可能になったので、このチュートリアルの以下のパートで説明するワークフローを使用してそれらの画像を操作できるようになりました。
パート1 - 画像を変換してアーカイブファイルに圧縮する ¶
このチュートリアルのパート1では、画像を別のファイルフォーマットに変換して画像アーカイブに圧縮するための画像操作ワークフローを学習します。
ImageMagick TOPノードを使用して、最初のステップで解凍した画像ファイルを変換し、
File Compress TOPノードを使用して、変換した画像を新しい.zip
アーカイブファイルに圧縮します。
この工程は、ある部分のパイプラインではフレーム用の画像ファイルフォーマットを使用し、別の部分のパイプラインでは別の画像ファイルフォーマットを使用する場合で役立ちます。
-
ImageMagick TOPノードを作成し、名前を
convert_images
に変更してから、その 入力 をextract_images
File Decompress TOPノードの 出力 に接続します。ImageMagick はTOPs⇥ Tabメニューの Images カテゴリにあります。
このノードは、画像アーカイブから抽出したすべての
.jpg
画像ファイルを.png
画像ファイルに変換します。 -
convert_images
TOPノードを選択してから、以下のパラメータを設定します:-
Operation パラメータドロップダウンメニューから Convert を選択します。
これは、このノードが入力画像に対して変換処理を行なうように指示します。
-
Operation セクション:
-
Image Quality Percentage パラメータを 100 に設定します。
これは、このノードが画像を変換して出力する際に使用する圧縮レベルを指示します。 100のパラメータ値は 無圧縮 (完全品質)を意味します。 100未満のパラメータ値は、圧縮の割合を示し、小さいほど品質が下がります。 例えば、80のパラメータ値は変換された画像を20%圧縮します。
-
Convert セクションの Output Filename パラメータフィールド内をクリックして以下をタイプします:
$HIP/images/{inputfilename}.png
この内部変数である
{inputfilename}
は、このノードが変換元の.jpg
画像と同じ名前で各.png
画像の名前を付けるように指示します。 -
他のすべてのパラメータはデフォルト値のままにします。
-
-
-
File Compress TOPノードを作成し、名前を
export_archives
に変更してから、その 入力 をconvert_images
ImageMagick TOPノードの 出力 に接続します。File Compress はTOPs⇥ Tabメニューの Files カテゴリにあります。
このノードは、
.png
画像を新しい.zip
アーカイブファイルに圧縮します。 -
export_archives
TOPノードを選択して、以下のパラメータを設定します:-
Ouput セクション:
-
Compress Method パラメータドロップダウンメニューから ZIP を選択します。
これは、このノードが新しい画像アーカイブをZIPファイルとして保存するように指示します。
-
Output セクションの Output File フィールド内をクリックして以下をタイプします:
$HIP/archives/newarchive.`@pdg_index`.zip
$HIP/archives
は、このノードが新しいアーカイブファイルを作業ディレクトリ内の/archives
という名前の新しいフォルダに保存するように指示し、newarchive
は、このノードが各アーカイブファイル名の頭に newarchive を付けるように指示します。 -
他のすべてのパラメータはデフォルト値のままにします。
-
-
-
export_archives
TOPノードをクックします。convert_images
TOPノード上には、Brimstone画像シリーズとStock Pictures画像シリーズを表現した2個のワークアイテムが表示され、それらのワークアイテムがクックされます。export_archives
TOPノード上には、新しい画像アーカイブを表現した2個のワークアイテムが表示され、それらのワークアイテムがクックされます。convert_images
TOPノードは、すべての.jpg
画像ファイルを.png
画像ファイルに変換してディスクに保存します。export_archives
TOPノードは、.png
画像のBrimstone画像シリーズとStock Pictures画像シリーズをそれぞれ新しい.zip
アーカイブファイルに圧縮してディスクに保存します。 -
生成されたPNG画像とZIPアーカイブファイルを見てみましょう。
-
ファイルブラウザウィンドウで
$HIP/images/
に移動し、それらの変換後の画像ファイルを見てみましょう。変換後の各画像は変換前の画像のファイル名が付けられていることに注目してください。 これは、
convert_images
TOPノードの Output Filename パラメータフィールド内に内部変数の{inputfilename}
を使用したからです。 -
$HIP/archives/
に移動して、新しいZIPアーカイブファイルを見てみましょう。
-
-
チュートリアルシーンを保存します。
これで簡単に変換後の画像を共有/配布できるようになりました。
パート2 - 画像をモンタージュに並べる ¶
このチュートリアルのパート2では、一連の画像を一枚のモザイク または モンタージュ に変換するための画像操作ワークフローを学習します。 ImageMagick TOPノードを使用して、最初のステップで展開した画像ファイルを2枚の画像シリーズのモンタージュに並べます。
この工程は、シミュレーションでWedgeフレームバリエーションを比較した時と同様に、一枚の合成画像内に一連のフレームを並べて確認して評価したい場合で役立ちます。
-
ImageMagick TOPノードを作成し、名前を
make_montages
に変更してから、その 入力 をextract_images
File Decompress TOPノードの 出力 に接続します。ImageMagick はTOPs⇥ Tabメニューの Images カテゴリにあります。
このノードは、画像アーカイブから抽出した画像ファイルを受け取り、それらの画像を画像シリーズ別に1枚のモンタージュ(グリッドモザイク)画像に並べます。
-
make_montages
TOPノードを選択してから、以下のパラメータを設定します:-
Node タブを選択します。
-
Operation パラメータドロップダウンメニューから Montage を選択します。
これは、このノードが入力画像に対してモンタージュ処理を行なうように指示します。
-
Output Filename パラメータフィールド内をクリックして以下をタイプします:
$HIP/montage/mosaic.`@pdg_index`.png
$HIP/montage
は、このノードがモンタージュ画像ファイルを作業ディレクトリ内の/montage
という名前の新しいフォルダに保存するように指示し、mosaic
は、このノードが各モンタージュファイル名の頭に mosaic を付けるように指示します。
-
-
他のすべてのパラメータはデフォルト値のままにします。
-
-
make_montages
TOPノードをクックします。このノード上には、Brimstone画像シリーズとStock Pictures画像シリーズを表現した2個のワークアイテムが表示され、それらのワークアイテムがクックされます。
このノードは、すべてのBrimstone画像を1枚のモンタージュに並べ、すべてのStock Picture画像をもう1枚のモンタージュに並べてから、それら両方の画像をディスクに保存します。
-
生成されたモンタージュ画像を見てみましょう。
ファイルブラウザウィンドウで
$HIP/montage/
に移動し、それらのモンタージュ画像ファイルを見てみましょう。 -
チュートリアルシーンを保存します。
これでBrimstone画像シリーズとStock Picture画像シリーズ内のすべての画像をそれぞれ別のモンタージュ画像として表示/比較することができるようになりました。
パート3 - 画像を動画に変換する ¶
このチュートリアルのパート3では、一連の画像を動画に変換するための画像操作ワークフローを学習します。 Filter by Expression TOPノードを使用して、入力からStock Picture画像シリーズを除外し、 FFmpeg Encode Video TOPノードを使用して、残りのBrimstone画像シリーズを動画に変換します。
この工程は、フレームを動画として表示したり配布したい場合で役立ちます。
-
Filter by Expression TOPノードを作成し、名前を
filter_images
に変更してから、その 入力 をextract_images
File Decompress TOPノードの 出力 に接続します。Filter by Expression はTOPs⇥ Tabメニューの Data カテゴリにあります。
このノードは、カスタムエクスプレッションを使用して、不要な入力を除外します。
-
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 に設定されていることを示します。
-
他のすべてのパラメータはデフォルト値のままにします。
-
-
FFmpeg Encode Video TOPノードを作成し、名前を
make_movie
に変更してから、その 入力 をfilter_images
Filter by Expression TOPノードの 出力 に接続します。FFmpeg Encode Video はTOPs⇥ Tabメニューの Images カテゴリにあります。
このノードは、すべての入力画像を受け取り、それらの画像を動画に変換します。
-
make_movie
TOPノードを選択してから、以下のパラメータを設定します:-
Cache Mode パラメータドロップダウンメニューから Write Files を選択します。
これは、このノードが常にそのノード上のワークアイテムで動作し、ディスクから何も既存のクック結果を使用しないように指示します。
-
Output セクションの Output File Path パラメータフィールド内をクリックして以下をタイプします:
$HIP/movie/brimstonevideo.mp4
$HIP/movie
は、このノードが動画ファイルを作業ディレクトリ内の/movie
という名前の新しいフォルダに保存するように指示し、.mp4
は、このノードが動画をMP4フォーマットで保存するように指示します。 -
他のすべてのパラメータはデフォルト値のままにします。
-
-
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 パラメータを入力画像と同じドライブ内の任意の場所に変更してください。
-
make_movie
TOPノードで生成されたワークアイテムを見てみましょう。-
make_movie
TOPノード上のワークアイテムをクリックします。ネットワーク内の
make_movie
ノード上のワークアイテムと上流タスク上のそれに関係するワークアイテムの間にラインが表示されていることに注目してください。 このラインとそれを結ぶドットのハイライトは、ワークアイテム間の 接続 を示しています。 -
extract_images
TOPノード上の1つ目のワークアイテムドットをクリックしてから、同じノード上の2つ目のワークアイテムドットをクリックします。extract_images
TOPノード上の 1個 だけのワークアイテムがmake_movie
TOPノード上のワークアイテムに繋がっていることに注目してください。 これは、filter_images
TOPノードがTOPネットワークの動画ブランチからStock Picture画像シリーズを除外したのが理由です。
-
-
生成された動画を見てみましょう。
ファイルブラウザウィンドウで
$HIP/video/
に移動し、そのMP4動画を見てください。 -
チュートリアルシーンを保存します。
おめでとうございます! Image Manipulation PDGチュートリアルを完了しました。
この最終TOPネットワークを見たいのであれば、Houdiniサンプルファイルディレクトリ($HH\help\files\pdg_examples\top_imagemanipulation
)にあるtop_imagemanipulation.hip
を見てください。
PDGワークフローについて学習を継続したいのであれば、このHoudiniドキュメントの他の初心者向けチュートリアルシリーズを進めるのも良いし、 私どものウェブサイトの Pipeline|PDG ラーニングパスにアクセスするのも良いでしょう。