こんにちは、Steemです。
今回はマテリアル操作に関するスクリプトを紹介します。
動画
機能紹介 (2025.12.14更新)
こちらは、マテリアルの操作に使える便利な機能を集めたスクリプトです。
- マテリアルのアサイン
- 一つ目の選択と同じマテリアルを他の選択に適用
- リストから選択して適用
- マテリアルノード選択 + HyperShade を開く
- マテリアルがアサインされているオブジェクト・フェースを全選択
- マテリアルに接続しているFileノードのテクスチャパスの書き換え
以下で順に説明していきます。
マテリアルのアサイン
操作は二種類に分かれています。
・「同じマテリアルを適用(転写)」
:はじめに選択したオブジェクトと同じマテリアルを二番目以降の選択にも適用します。
※オブジェクトに割り当てられているマテリアルが一種類の時に使用できます。
(日本語UIでは「マテリアルを転写」という表現をしていますが、UV転写とは無関係です。)
・リストから選択してアサイン
:選択したオブジェクトにアサインされているマテリアルをUI上のリストに取得し、そこから選択して他オブジェクトに適用できます。
オブジェクトに複数マテリアルがアサインされている場合や、コンポーネント間でマテリアルを移したい場合にこの機能を使用します。
「選択からリストに追加」:
選択したオブジェクトに適用されているマテリアルを全てリストに追加します。
マテリアル(シェーダー)ノードを直接選択しての追加も可能です。
「検索からリストに追加」:(2025.12追加)
シーン内にあるマテリアルの中からUI内のボックスに入力した文字列と名前の一致するものがリストに追加されます。
半角スペースを挟むことで複数語のAND検索が可能です。(例えば "plant leaf" などで検索すると、シーン内の植物の葉のマテリアルを一覧できます。)
HyperShadeで開く
マテリアル(シェーディングノード)を選択した上でHyperShadeを開きます。こちらはシェーディングネットワークを手軽に編集するための機能です。
Hypershade を開いた後、Input and Output Connections のアイコンをクリックすることで、シェーディングネットワークを開きます。複数のマテリアルを選択できるので、ノードを複製して別のマテリアルに流用するといった操作も容易です。
こちらのシェーディングネットワークを開くための機能ですが、UI表示とネットワーク表示のコマンドを続けるとクラッシュが頻発するため、安定性を取りシェーディングネットワークは自分でボタンを押して開く形式にしています。
アサイン済みのオブジェクトを選択
マテリアルが適切にアサインされているかどうかの確認を目的とした機能です。プレビュー用のマテリアルが適用されている対象に、一括で別のマテリアルを適用し直したいといった場合にも有用です。
注意点として、非表示オブジェクトも選択対象のため、一括で操作を加える場合はビューパネルに表示されていないものにも注意する必要があります。
(最近別のスクリプトで非表示オブジェクトを選択からはじく仕組みがあるものを作成しました。もし需要があれば手を加えて当スクリプトに追加するかもしれません。)
(こちらはオブジェクトだけでなくフェースも選択対象で少々手がかかりそうなので後回しです)
Isolate Selection などうまく使えば表示されているもののみを再選択することは可能なので、非表示オブジェクトも選択対象であることだけ知っておいて下さい。
テクスチャパスの書き換え
(動画内では触れていませんが、)この機能が一番のお気に入りかもしれません。
マテリアルに関連するFileノードをシェーディングネットワークから探し出し、さらにそこで指定されていたテクスチャの名称を、シーンが保存されているプロジェクトのsourceimagesフォルダ内から自動で探し出し、同じものを見つけ次第パスを書き換えます。
このパスの書き換えは手作業だとファイルの探索を含めてかなりストレスフルな作業ですので、カラー・ラフネス・オパシティ・ノーマル、その他マスクまで、全てを一発で書き換えられるのは控えめに言っても爽快です。
(これでもう、テクスチャファイルの管理は怖くありません…)
なお、これを適切に実行するためにはテクスチャの名称がユニークであることが必要です。
追加説明
なお今回、ウィンドウを日本語・英語の両方に対応させてみました。
MayaのUI言語によって表示が変わり、日本語UIでは日本語ウィンドウ、その他の言語では英語版ウィンドウが開きます。
※UI言語は英語だがスクリプトは日本語で使用したいという方は、MELファイルの名称をstmMaterialPaletteJa.mel に変更し、コマンドもその名称で呼び出すと日本語のウィンドウが開きます。
おわりに
このスクリプトがあれば「アサインしたいマテリアルを HyperShade のリストから名前で探す」という作業はほぼなくなるのではないかと思います。
個人的に処理が重めのときにHyperShadeを開こうとしたら落ちてしまうなんてこともあったので、作業を快適に、そして安全にしてくれるスクリプトでもあるのではないでしょうか。
=================
こちらのスクリプトを無料配布しています↓
ダウンロードページはこちら
(2025.12.14更新)
=================

