Material Linker [Mardini2024]

これはMardini2024のDay6 Material Linkerの動画を視聴してまとめたものです。

[動画](https://www.youtube.com/watch?v=_KTBWtGu79s)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/fb5434f9-3da6-f1af-22d6-f0c411a1e784.png)


[公式のサンプルファイル](https://media.sidefx.com/uploads/contests/mardini2024/moeen_videos/mardini_examples_day6_material_linker.zip)

[Day5 Light Mixer](https://qiita.com/jyouryuusui/items/f6c5d257a2409ae9e267) | Day6 Material Linker | [Day7 MaterialBuilder](https://qiita.com/jyouryuusui/items/3ae85b0a3f3df34ca829)


Material Linkerノードを使うと、シーン内のジオメトリに簡単にマテリアルを割り当てることができます。

# 要約
- Material LinkerノードはLOPコンテキストで動作する
- ノードにはあらかじめ用意されたマテリアルライブラリが読み込まれている
- マテリアルライブラリからマテリアルを選択し、シーン内のジオメトリにドラッグ&ドロップでマテリアルを割り当てられる
- 割り当てたマテリアルの確認や割り当て解除が可能
- マテリアルネットワークにアクセスでき、マテリアルのプロパティを編集できる
- AMDの提供するMaterialXライブラリから高品質マテリアルを読み込める

# サンプルファイル

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/e0e8f90d-b959-f350-b71d-d2da6c401a9b.png)

Stage上にライトとオブジェクトが配置されています

## 操作手順
- Solarisデスクトップを選択します
- Karma XPU Perspに切り替えてレンダーします。現状灰色で何もマテリアルがアサインされていません
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/434faa8e-6a8f-d114-c6a6-e92703331365.png)

- 通常マテリアルを構築するのはMaterial Libraryですが、Material Linkerもマテリアルを追加できます
    - Material Linkerはデータベースから読み取るという点でLayoutノードと同じように機能します
- **Material Linker**ノードを作成し、ジオメトリのノードに挿入します
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/077dae7a-8c37-ad3d-7a84-9686b29a5727.png)
- ノード内のCatalogタブで、使用可能なマテリアルライブラリが表示されます
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/0576e2cb-f3cd-d158-64d4-6abc8ca38f70.png)
    - HoudiniのmaterialCatalog.dbにパスが通っていない場合Open AMD MaterialX Libraryが自動で参照されます
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/aad8c478-450a-6ff2-02d7-dba97595c775.png)

- 使いたいマテリアルをクリックし、Material Listに追加します
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/4817e4f7-4b21-d242-ad77-4279a7202ff3.png)
    - 割り当てたいジオメトリ上もしくは右側のGeometryTreeにドラッグ&ドロップします
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/35500ef8-2a55-d7b0-55b7-3452f3b5e7a9.png)
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/1e20e094-a1f1-22eb-3647-2bc43a6a295d.png)

- Rulesタブで割り当て状況を確認でき、チェックマークボタンで割り当てを解除したり、右の丸いバツボタンをクリックすることで削除が可能です
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/dab9e799-83dd-ac24-2002-3c5576cb723c.png)

### Edit Material Network

- マテリアルを右クリック > Edit Material Networkで、そのマテリアルのノードネットワークを開けます
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/993a01e6-b8a2-828f-0625-0d76224f3b42.png)
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/f61b53a8-f531-d841-edb7-6ddf9b33edfa.png)
    - そのままだと空なので、Loadボタンを押してMaterialVOPを呼び出します
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/e94f9543-72f6-01c1-b71c-a94512856a65.png)
    - Edit Material Networkの中に入るとそのマテリアルのSubnetを参照、マテリアルのプロパティ(色、bump値など)を編集できます
        - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/8a57695f-eca2-a18c-554f-e1096f7b8ac9.png)
        - 入ってもSubnetが見つからない場合Hボタンでホームポジションにして確認できます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/61746f92-c0e6-ef49-1afa-d77e5b9c4813.png)


### Open AMD MaterialX Library
- MaterialLinkerノードの歯車アイコン > Open AMD MaterialX LibraryでAMDのライブラリを開けます
- AMDライブラリからツリービューでマテリアルを探し、同様にドラッグ&ドロップで割り当てできます
- 初回割り当て時にマテリアルがディスクにダウンロードされ、2回目以降は高速です

# まとめ

Material Linkerノードを使えば、シーンへのマテリアル割り当てが非常に簡単になります。AMDの高品質マテリアルも活用できます。