Created on | Updated on

SolarisでMaterialXファイルを保存して、再利用する

 

この記事はHoudiniアドベントカレンダー2022 9日目の記事です。

前提条件

Houdiniに搭載されているSolarisはLookdevを行うコンテキストです。

これまでは、Houdiniで動作するビルトインレンダーのMantraRendererが提供され、それを使用しレンダリングを行っていました。(もちろんサードパーティーレンダラも使用できますが)

SideFXはMantraを新しいRendererに置き換えることを考え、さらに発展させてルックデブ、レイアウト、ライティングのコンテキストを作成し、そこにKarmaと呼ばれる新しいRendererを供給しました。

この新しいプロセスで特別なのは、SolarisがUSDで動作することです。

Solarisに取り込んだものは、基本的にすべてUSDになります。

このUSDは、同じくPixarのHydraという技術に送られ、USDをビューポートやRendererでレンダリングすることができます。

また、Hydra に接続できるサードパーティのレンダーもたくさんあります。
Solarisの中ではKarmaだけではなく、下記のRendererを使用することができます。

mceclip1.png

Solarisを使用した流れの一つして以下のような図式が考えられます。

OBJは、SOPネットワークを内部に持ち、そこでジオメトリを構築することができます。①
それをLopnetを使用し、USDとして読み込んだジオメトリに対し、コンポーネントビルダーを使用してマテリアル作成、マテリアルの割り当て②、そしてマテリアルとジオメトリが一緒になったUSDアセットをエクスポートします。③

その後、出力されたUSDをアセットを元にレイアウト④、ライティング⑤、カメラの設定とレンダリング⑤が実行することができます。

この時、使用するレンダラはKarmaかもしれないですし、サードパーティーのRendererかもしれません。

mceclip4.png

ジオメトリとマテリアルをセットにしたUSDアセットとして管理したい場合、使用するRendererによって異なるマテリアルを設定する必要があると大変です。Rendererを変えるたびに②の工程をやり直す必要がありますし、これがRendererを変えることができない理由にもなりますね。

Mantraを使用する時のマテリアルはVEXのマテリアルであり、/matのコンテキストで作成されていました。このマテリアルは基本Mantra/Karmaで使用することができますが、他のRendererに対応したものではありません。また、Karma XPUは実はVEXシェーダーを直接読み込んでいるわけではありません。中ではUSDプレビューノードを作成し、USDプレビューノードが、VEXからKarma XPUで使えるように変換してくれるのです。ただし、すべてを変換できるわけではなく、ここで新しい言語が必要になり、採用されたのがオープンソースのソリューションであるMaterialXです。

mceclip5.png

MaterialXはオープンソースですので、言ってしまえばどのRendererでも採用されれば使用することができるものです。

せっかく新しいマテリアルを新しいKarma Rendererで使用できるし、今後、マテリアル付きジオメトリのアセットをどんなRendererでも使用できるようになるかもしれない!と夢は膨らみます。

Solarisでは非常に多くのMaterialXノードを利用することができます。

mceclip6.png

 

※ここから先のデータはSideFXより提供されているKARMA | A BEAUTIFUL GAMEのデータを使用しました。

 

こちらのサンプルでは下記のようにマテリアルにテクスチャを使用しています。

mceclip7.png

他のシーンでもこのマテリアルを使えるようにしたいと思い、これをSave>MaterialXで保存します。

mceclip8.png

mceclip9.png

出力したファイルをテキストエディタでみても一見ちゃんと出力できてそうですが・・・

mceclip10.png

Assign Materialを行ってもテクスチャなどが表示されません。

mceclip11.png

そこで、どうするのかというとmtlximageをSubnetにまとめます。
これだけです。

mceclip13.png

選択して出力します。

mceclip14.png

先ほど出力したものと

mceclip16.png

今回出力されたもの

mceclip17.png

MaterialXファイルをして正しく読み込めるようになりました。

mceclip20.png

マテリアル情報をUSDで保存することもできますが、素材ごとにMaterialXとして保存しておくこともできるので便利ですよね。

ご参考になれば幸いです。

続きはこちらHoudiniでMaterialXを出力して再利用するパート2

問題が解決しない場合は、Born Digital サポートまでお問い合わせ下さい。

※ 問い合わせ対応はBorn Digitalより製品をご購入頂きましたお客様のみのサービスとなります。ご了承下さい。
サポート問い合わせ