このチュートリアルでは、Houdiniパッケージファイルの作成と設定方法を説明します。
チュートリアル内でUnrealが出てきます。もしUnrealを使用して作成したデジタルアセットの確認を行う場合には、Houdini Engine for Unrealが使用できる環境であることを確認しましょう。
本チュートリアルは、下記の素晴らしい動画を元に作成いたしました。
ぜひ日本語にてパッケージファイルの利用方法を確認いただければ幸いです。
また、本チュートリアルはHoudini20を元に作成しています。
Houdini パッケージ ファイルは、環境変数を設定したり、一般的に使用されるパスの変数を作成したりするのに便利な方法です。
$HIP変数
Houdiniを使用したことがあれば、$HIPや$JOBといった変数を見たことがあるかもしれません。
例えば、Houdiniのシーンファイルを保存した後、Fileノードを作成します。
ファイルの選択ウィンドウで$HIPと入力し、Enterキーを押します。
シーンファイルが保存されているディレクトリが開きます。
その場所にFBXがあるので、FBXを選択してロードしました。
読み込んだファイルパスをみてみると下記のようになっています。
$HIPとなっていますが、Geometry Fileパラメータをマウスの中ボタンでクリックします。
すると、パスが $HIPからこの Houdini シーンファイルが現在保存されている場所へのパスに解決されたことがわかります。
つまり、$HIPは、ファイルを参照して Houdini にロードするための便利な方法だということがわかります。ただし、ファイルへのパスは Houdini シーンファイルに対する相対パスとして維持されます。
より大きなファイル構造内で作業したい場合はどうすればよいでしょうか?
$JOB変数
$JOBというプロジェクト ディレクトリを参照する変数を使用するオプションがあります。
FileからSet Project...を使用し、プロジェクトをカレントプロジェクトとして定義します。
これで、ファイルをロードすると、この $JOB を使用できるようになります。
Fileノードからファイルを選択する際に便利なショートカットがあり、これはそのプロジェクト フォルダーを参照することを意味します。
もう一度、このGeometry Fileのラベルををクリックすると、
$JOB変数がそのプロジェクトへのパスに解決されていることがわかります。
したがって、プロジェクト フォルダー構造内に、デジタル アセット、画像や 3D モデルなどのアセット、さらに他の Houdini ファイルやシーンを保存して、 $JOB変数を使用してこれらのファイルを参照することができます。これにより、これらのすべてのファイルがこのプロジェクト フォルダー構造に相対的に保持されます。
ただし、これらの変数はHoudiniシーン内から設定します。では、デジタル アセット内や Unreal で HoudiniEngineを使用する場合、または大規模なチームでプロジェクトやスタジオ全体の変数を管理する場合など、この Houdini シーンの外で変数を使用する必要がある場合はどうすればよいでしょうか。
Houdini パッケージには、同様のカスタム変数を定義する便利な方法が用意されています。
Houdini パッケージ
Houdini パッケージは、Houdini ユーザー設定フォルダーに配置できる Json ファイルです。このフォルダーは、最も一般的にはホームディレクトリに保存されます。
ホームディレクトリには、Houdini バージョンフォルダがあります。
例えば、下記ではHoudini19,19.5,20のフォルダがあります。
今回はHoudini20を使用して説明します。
パッケージファイルはpackagesというフォルダに置く必要があります。
packagesフォルダーが存在しない場合は、手動で作成してください。
packagesフォルダ内に新しいテキストドキュメントを作成し
.jsonという名前のファイルに変更します。
ここではSampleProject.jsonとしました。
ここで重要なことはファイル名の拡張子を変更していることです。
このファイルを右クリックして編集することができ、このファイル内で、さまざまなキーワードを使用してこのパッケージを定義します。
これらのキーワードの詳細については、Houdiniのドキュメントを参照してください。
まずは、波カッコの開、閉を記述します。
そして、これら 2 つの括弧の間に、これらのキーワードを記述します。
最初に追加するキーワードは hpath です。
hpathはHoudiniパスを表すキーワードです。HOUDINI_PATH 変数は、アセットなどのファイルを検索する場所をHoudiniに伝えます。
そのため、Houdini が起動すると、Houdini はこのHOUDINI_PATH 変数をチェックして、デジタル アセットなどをロードできるディレクトリのリストを確認します。
例えば、Houdiniが起動すると、このHoudini 20ディレクトリにotlsやpackagesなどのフォルダがないかチェックし、コンテンツがロードされます。
otlsフォルダにsampletest.hdaというデジタルアセットがあるとします。
Houdini内で確認すると、Houdiniの起動時にsampletest.hdaがロードされています。
しかし、ロードしたいデジタルアセットのライブラリが別の場所にある場合はどうすればよいでしょうか?
たとえば、所属会社や参加しているプロジェクトの デジタル アセットライブラリがあり、Houdini の起動時にロードしたいと考えています。
これらのデジタルアセットはotlsというフォルダに保存しています。
このパスをコピーしてパッケージ・ファイルに追加します。
2 つのダブルクォーテーションで囲み、バックスラッシュをスラッシュに変更する必要があります。
パッケージファイル保存してHoudiniを再起動します。
ネットワークビューで右クリックしてメニューを見ると、(このHDAはSOP内に)デジタルアセットを作成できるようになっていることがわかります。
そのため、Houdini を起動すると、Houdini 設定フォルダーにあるこのパッケージ ファイルがチェックされ、このパスが検索されました。
デジタルアセットについては、otls というフォルダーに保存する必要があることに注意することが重要です。Houdini は、Houdini 内のデジタル アセットについてこの特定のフォルダーをチェックすることを認識しています。
Scene Viewタブの横にあるプラスマークをクリックしNew Pane Tab Type > Inspectors > Package Browserを選択します。
Houdiniがどのようなパッケージを読み込んでいるかを確認することができます。
また、パッケージに関する情報も得られ、先ほどのパスが HOUDINI_PATH変数に追加されていることがわかります。
Houdini 内からこのパッケージを右クリックして編集することもできます。
次に、いくつかのカスタム プロジェクト変数を作成します。
まず、この行の末尾にカンマを追加して新しい行を作成し、環境変数のキーワードである envを追加します。
コロンを追加し、2 つの角括弧を開いて閉じます。
これら 2 つの角括弧の間に、2 つの異なる変数を定義します。
次に、波カッコ(中カッコ)を開いて、閉じて、その後にカンマを追加します。
そしてこの2つの波カッコ(中カッコ)の間に最初の変数を定義します。
最初の変数は SAMPLEDEMOという名前になり、次に
次に、hpathで使用しているのと同じパスをコピペします。
2 つのダブルクォーテーションとともにコピーし、コロンの後に貼り付けます。
このパッケージ ファイルが機能するためには、同じフォーマットに従っていることが非常に重要であるため、同じフォーマットに従っていることを確認してください。
Applyをクリックします
Houdiniがこのパッケージファイルをリロードしたことがわかります。
この SAMPLEDEMO変数が定義されていることがわかります。
Houdiniでファイルノードを作成し
Geometry Fileパラメータに$SAMPLEDEMOと入力します。
マウスの中ボタンをクリックすると、パッケージ ファイルで定義されているパスに解決されることがわかります。
Houdiniデジタルアセットを保存する際、チームとしてこの変数を使用します。
null を作成して、
サブネット化します。
これをSampleDigitalAssetと名前付けします。
右クリックから、Create Digital Assetを選択します。
Save toを展開すると保存先を指定することができ、現在はユーザー設定ディレクトリに保存されています。
これをカスタム ファイル パスに設定し、パスのこの部分を $SAMPLEDEMO に置き換えて、Createをクリックします。
Edit Operator Type Propetiesウィンドウが開き、このデジタル アセットが、 Houdini パッケージで定義されているように、この SampleDemoディレクトリに保存されたことがわかります。
このSampleDemo/otls フォルダー内を確認すると、そのディレクトリに SampleDigitalAssetがあることがわかります。
Houdini がデジタル アセットをロードするには、デジタル アセットを Houdini デジタル アセット用の otlsまたは hdas というフォルダーに保存する必要があることを覚えておいてください。
つまり、この SAMPLEDEMO変数を定義すると、デジタルアセットを特定のディレクトリに保存する便利な方法になります。
デジタル アセットのロードと、変数を使用してデジタル アセットをデジタル アセット ライブラリ フォルダーに保存する方法について説明しました。
しかし、より広範なプロジェクト フォルダー構造で作業する場合はどうなるでしょうか?
たとえば、ここではプロジェクト フォルダー構造にある FBX ファイルをロードしています。
パスは現在絶対パスです。
この Houdini ファイルとプロジェクトのフォルダー構造をチームの別のメンバーと共有すると、ファイルが別のディレクトリに配置され、Houdini ファイルがそのファイルを見つけられなくなる可能性があります。
$JOBを使ってプロジェクトディレクトリを定義するのと同じように、このプロジェクトフォルダを参照する変数をパッケージ内に作ることができます。
パッケージブラウザに戻り、SampleProjectを右クリックし、このパッケージを編集します。
ここに、SAMPLEDEMOPROJECT という変数を作成します。
カンマで行を区切ります。
新しい行に移動し、2つの波括弧(中括弧)で囲んで変数を追加し、SAMPLEDEMOPROJECTという変数を再び2つのダブルクォーテーションとコロンの間に追加して、
プロジェクトフォルダへのパスをコピーします。
繰り返しますが、これらは 2 つのダブルクォーテーションで囲む必要があり、このバックスラッシュをスラッシュに変更する必要があります。
ApplyをクリックするとHoudini はこのパッケージ ファイルをリロードします。
そして今度はFileノードのパスを修正します。
"C:\SampleProject"を$SAMPLEPROJECTに変更しました。
シーンビューを確認するとモデルが問題なくロードされていることがわかります。
このラベルをマウスの中クリックすると、その変数がパッケージ ファイルで定義されているパスに変更されたことがわかります。
ということは、このプロジェクトを誰かと共有できるということになります。
プロジェクトをディスク上の別の場所に保存する必要がある場合は、このパスを変更して別の場所を指すこともでき、この変数を使用して同じフォルダー構造内でファイルの読み込みと保存を行うこともできます。
それでは、 Houdini デジタル アセットとして保存し、変数が Houdini エンジンでも機能することを紹介します。
先ほどのファイル ノードをサブネット化し、LoadFileと名前を付けます。
右クリックからCreate Digital Assetを選択します。
これを [Sample] タブのサブメニューに配置し、Sample Digital Asset Library に保存したいと思います。
Tab SubmenuをSampleと書き換えました。
Save Toを展開し、LocationをCustom File Pathに設定します。
Save Toには$SAMPLEDEMOと書き換えましょう。
Createボタンをクリックし、デジタルアセットを作成します。
Edit Parameter Type Propetiesウィンドウが開き、定義したフォルダーに保存されたことがわかります。
次にパラメータを追加していきます。
このサブネットの内部に入り、FileノードのGeometry FileパラメータをEdit Operator Type Propetiesウィンドウにドラッグ アンド ドロップします。
そしてbasicタブで、maximum inputsをゼロに設定します。
accept "をクリックしてウィンドウを閉じた後、Load Fileデジタルアセット上で右クリックし、"save node type "を選択して、変更をディスクに保存します。
次に、Unreal を起動して空のシーン ファイルをロードし、このデジタル アセットを Unreal でテストします。
Houdini EngineプラグインがロードされたUnrealが起動したら、先ほど作成した Houdini デジタル アセットをインポートしたいと思います。
コンテンツブラウザで右クリックしてImport to
先ほど作成したLoad Fileデジタルアセットを選択して開きます。
これで、デジタルアセットが Unreal にインポートされました、
これをシーンに配置すると、すぐに Houdini Engineが実行されます。
もしモデルが表示されない場合は、Houdini Engineメニューからcreate sessionをクリックしてください。
Houdini Engine がそのデジタル アセットを実行し、そのデジタル アセットで参照されている FBX ファイルにロードされていることがわかります。
このデジタルアセットのパラメータを見ると、$SAMPLEDEMOPROJECT変数が記述されていることがわかります。
これは、Houdini EngineもこのHoudiniパッケージファイルを読み込み、定義した変数を使用していることを示しています。
パッケージで定義した変数が、プロジェクトファイルの整理や参照、特にチームで作業する際に、大変有用だという事がわかるのではないかと思います。
デジタルアセットのインターフェイスで注意しておきたいことがあります、
下記の赤まるで囲んだボタンに移動して別のファイルを選択すると、先ほどの変数はもう使用されておらず、更にその変数を使用できないことがわかります。
それではHoudiniに戻りデジタルアセットを修正します。
Houdiniでデジタルアセットを右クリックし、Type Propeties...を選択します。
パラメータのTypeをFileからStringに変更し、ノード タイプを保存してその変更をディスクに保存することです。
Acceptを押してウィンドウを閉じたら、デジタルアセットを右クリックしSave Node Typeを選択します。
Unrealに戻り、デジタルアセットのRebuildをクリックすると、このデジタルアセットが再インポートされ、リロードされます。
そして、これはファイルパスではなく単なる文字列となります。
FBXファイル名のみ(変数はそのままでファイル名のみ手動で変更)を書き換えることでロードしたモデルを簡単に変更できます。
こうすることで、$SAMPLEDEMOPROJECT変数をデジタルアセット内で使用することができます。
これは役に立つヒントになると思います。
これで、パッケージ ファイルがセットアップされました。このプロジェクト ファイル構造をチームと共有し、このパッケージ ファイルを共有して、この変数を定義できます。
ただし、プロジェクト フォルダーを別の場所に配置する場合は、定義したパスをそれぞれ編集する必要があります。
これらのパスを個別に更新するのは少し面倒なので、最初は簡単に設定できるようにしていきます。
下記でhpathとSAMPLEDEMO変数は同じ場所を指定しています。
そこで、hpathを Pegasus demo 変数に置き換えることができます。
そこで$SAMPLEDEMOと入力してapplyを押すと、Houdiniに保存され、そのパッケージが再読み込みされます。
環境変数を確認すると、Houdini pathはSampleDemoディレクトリを指しています。
さらに、SAMPLEDEMOPROJECT変数で定義されたパスもこのSAMPLEDEMO変数内にあります。
そこで、SAMPLEDEMOの下記部分をSAMPLEDEMOPROJECT変数に置き換えることができます。
変更後
ApplyをクリックするとHoudiniはこのパッケージを保存し、再読み込みします。
環境変数をチェックします。
SAMPLEDEMOとHoudini_PATHは、このSAMPLEDEMOPROJECTと同様に正しいことがわかります。
つまり、ユーザーはSAMPLEDEMOPROJECTに1つのパスを指定し更新するだけで済みます。
これにより、SAMPLEDEMO変数のパスが更新されるだけでなく、SAMPLEDEMOパスが Houdinipath 変数に追加されるため、ユーザーは更新や変更がより簡単になります。
ご参考になれば幸いです。