AviUtl ExEdit2 Style.confの反映箇所(Color)を殴り書き(メモ)
はじめに
AviUtl ExEdit2をインストールしたときに生成されるstyle.confにUIの色情報などが格納されているらしい
速度が命だと思うため、殴り書きで書いていく
なお、 AviUtl ExEdit2はベータ版であるため本記事で検証した内容が更新により、誤った情報になる可能性に留意してほしい
(あと、この記事書いてるときは38.4度の高熱でうなされてます。)
Style.confの構成
Font
GUI上で利用されるフォントの情報
Color
GUI上で利用されるカラー情報
Layout
GUI上のレイアウト情報
Format
フッターに表示される項目情報
Colorについて

元々の画面色は上記画像の通り
デフォルトの背景色
Background

ウィンドウの枠線色
WindowBorder

ウィンドウ間の背景色
WindowSeparator

フッターの背景色
Footer

フッターの進捗色
FooterProgress
Grouping
GroupingHover
GroupingSelect
後回し
タイトルヘッダーの背景色
TitleHeader

オブジェクト選択時のボーダー線
BorderSelect
(画像の画像ファイルオブジェクトの破線)

ボーダー色
Border

プロパティ選択時のボーダー色
BorderFocus

テキスト色
Text

テキスト色2(非選択)
TextDisable

テキスト選択色
TextSelect

ボタン色
ButtonBody

ボタン背景色(選択時)
ButtonBodyHover
Hoverと書いてあるけど…

ボタン背景色(無効)
ButtonBodyDisable

ボタン背景色(選択時)
ButtonBodySelect

プロパティのスライドカーソル色
SliderCursor

トラックバーの色
TrackBarRange

レイヤーの拡大縮小バーの色
ZoomGauge

ZoomGaugeHover
Hover時の色

ZoomGaugeOff
マイナス幅の色

ZoomGaugeOffHover
Hover時のマイナス幅の色

タイムラインのカーソル
FrameCursor
わかりやすいように水色にしています。

タイムラインを拡大した時のカーソル色
FrameCursorWide
わかりやすいように水色にしています。

再生中のカーソル色
PlayerCursor
わかりやすいように水色にしています。

タイムラインの最終フレームのガイドライン色
GuideLine

レイヤーの色
Layer

レイヤーヘッダーの色(レイヤー名)
LayerHeader

マウスホバー時のレイヤーの色
LayerHover

無効レイヤーの色
LayerDisable
(レイヤーを無効にする設定にした場合は1レイヤー全体に適用)

すみません、力尽きました
続きは気が向いたら書きます。
InstaMATでガラスの質感を扱う(Opacity、Transmissionの制御)

ガラスの質感とは
※InstaMAT↔ Blenderの環境でガラスを扱うことを前提にした記事です。
他のDCCツールやゲームエンジンでは作業が異なる可能性があります。
Blenderでガラスの質感を作成するとき、Principled BSDFのTransmission(伝播)のウェイトを1.0にすることで再現できます。

加えて、Alpha(アルファ)の設定をすることで多種多様な質感を作成することができます

本記事ではInstaMAT Studioの中でTransmission、Alphaを出力することを目標とします。
既知の不具合
*** グラフィックの描画に関する不具合
community.theabstract.co
作業をするにあたり、描画の不具合が存在するため注意が必要です。
InstaMAT 2025にて描画の不具合が修正されています。
テクスチャペイント
事前準備(チャネルの追加)
Blenderに向けてエクスポートをするテクスチャ群に「Transmission」、「Alpha」用のテクスチャを含ませる必要があります。
まず、プロジェクトエディタの「+チャンネルを追加」を選択します。

表示された項目から「Opacity」を選択します。
このOpacityが「Alpha」になります。

続けて、追加チャネルから「カスタム…スケール」を選択します。
正式名称は「カスタムグレースケール」です。
このカスタムグレースケールが「Transmission」のウェイトになります。


カスタム0の名称だとわかりづらいため名称変更を行います。
本作例では「Transmission」と名称変更を行いました。

また、最終工程のBlenderへのテクスチャインポート時にNode Wranglerアドオンを利用します。
Node Wranglerアドオンはテクスチャの命名から入力ソケットを判別する仕組みのため、用途に合った命名変更が求められます。

下記画像のようにチャネル設定ができていれば事前準備は完了です。

エクスポート設定
テクスチャをエクスポートする方法が複数あるため、自身に合った方法で実行してください。
エクスポート(手動エクスポート方法)

出力のエクスポート設定をします。
出力テンプレートでcutsomマスクを出力する方法が現時点で不明のため、個別の設定をしていきます。

出力テンプレートを「アクティブなテンプレートがありません」に変更します。

出力するチャネルを選択し、輸出をクリックして出力します。

以上のように出力ができました。
「Transmission」が「Custom0」の名称で出力されているため、手動で修正します。
エクスポート(ElementGraphを用いた自動エクスポート方法)

新たにElement Graphを作成し、ペイントしたLayeringをD&Dします。

Blenderへエクスポートしたいチャネルをグラフ出力に設定します。
本項では「Base Color」、「Rougness」、「Metalness」、「Opacity」、「Transmission(Custom0)」を出力しています。

出力項目を設定し、輸出をクリックして出力します。

以上のように出力ができました。
出力される画像がおかしい問題
前項で2種類の出力方法を紹介しました。
双方の出力で気になる点があると思います。

BaseColorを除く他のマップが「1*1」pxになっている場合があります。
この事象を公式Communityに確認をしたところ、以下のような回答が得られました。
この情報どこにも載ってなかった pic.twitter.com/MrSy4y5uUS
— と り🐔 (@t0rry_) 2025年5月22日
グレースケールの値が1つだけ割り振られている場合、負荷軽減のために1ピクセルの画像として出力されます。
今回のサンプルでは塗りつぶしレイヤーを使って単色の設定をしているため、1ピクセルの画像が出力されています。
楽にUV展開をしたい!~「Ministry of Flat(MoF)」をBlenderで活用をする ~

はじめに
大嫌いなUV展開作業を楽にしたいです。
Blender4.3よりUVアンラップの手法に「アングルベース」のほかに「Conformal」、「Minimum Stretch」が追加されました。
4.3 — blender.org
前バージョンに比べて機能性が向上したものの、未だに満足がいきません。
(ハード系だとスマートUV展開で良いのですが…)
もっと楽かつ高品質なUV展開がしたいです。
そんな中、「Ministry of Flat」というツール及びBlenderとの連携方法を見つけたので記録します。
Ministry of Flat
概要
「Ministry of Flat」はEskil Steenberg氏により開発され、Quel Solaarとしてリリースされたツール及び技術群です。
Cinema4Dなどで知られるMaxon社によりライセンス取得され、2020年4月20日のCinema4D S22のアップデートの一部としてリリースされました。
Maxon社がライセンスを保持していますが、他社へのライセンス供与も可能な形で公開がされています。
出典:Maxonウェブページ
ライセンス形態
※原文を意訳しています。
正しい内容は公式ページを参照ください。
- ソフトウェアをダウンロードして、任意のデバイスで実行できます。
- ソフトウェアを使用して、趣味、学術、または商業目的で利用できます。
- アンラップされたメッシュを販売、利用することは自由です。
- 無料ライセンスでは、いかなる形でもソフトウェアを再配布できません。
- 無料ライセンスでは、クラウドでソフトウェアを実行することはできません。
- 無料ライセンスでは、AI/MLトレーニングには使用できません。
- 無料ライセンスでは、SaaSの一部として機能を提供することはできません
- ソフトウェアが役に立った場合はメールで教えてくれると嬉しいです。
カスタムライセンスを契約することで以下のことが可能です。
特徴
取り込んだモデル(ジオメトリ)から適切なアプローチを算出し、UV展開をします。
伸縮・継ぎ目を最小限に抑え、モデル全体のテクスチャ解像度を均一に保つための最適化を重視しています。また、テクスチャの向き(正しい方向)も重視しています。
Ministry of Flatは優れたUVアーティストの経験から数えきれないほどの特殊なケースやトリックを実装しています。
つまり、最適なUV展開を自動的に行うツールになります。
また、非常に特徴的なUIをしています。

これに対し、開発者であるEskil Steenberg氏は「楽しいからね!シンプルなものが欲しければコマンドラインツールを使ってね」と発言しています。

使い方
- zipファイルをダウンロード
- zipファイルを解凍
- 「Unwrap3.exe」を起動
- UV展開をする3dモデルをインポート(obj形式のみ対応)
- 作業が完了したら「Save」をクリックし、obファイルを保存
たったこれだけです。
SettingよりUV展開の細かい設定をすることができます。
同梱されている「UnWrapConsole3.exe」はコマンドライン上でMinistry of Flatを実行できるツールになります。「documentation.txt」に詳細な引数が記載されています。
GUIで制御した「Unwrap3.exe」のSetting項目と「UnwrapConsole3.exe」の引数は同様のためGUI上の項目が不明になった場合もドキュメントを参照することで問題解決できます。
(非常にわかりやすいドキュメントです)
設定項目
以下の内容はドキュメントの内容を意訳したものです。
一般的な設定
| オプション名 | 説明 | デフォルト値 |
| `-RESOLUTION |
テクスチャ解像度(UVアイランド間の余白制御に使用) | `1024` |
| `-SEPARATE |
ハードエッジをすべて分離(ライティングやノーマルマップ用) | `FALSE` |
| `-ASPECT |
ピクセルのアスペクト比(非正方形テクスチャ用) | `1.000000` |
| `-NORMALS |
法線を使ってポリゴンを分類 | `FALSE` |
| `-UDIMS |
モデルを複数のUDIMに分割 | `1` |
| `-OVERLAP |
同一パーツを重ねて同じUVスペースを使用 | `FALSE` |
| `-MIRROR |
ミラーパーツを重ねて同じUVスペースを使用 | `FALSE` |
| `-WORLDSCALE |
UVを実寸スケールに合わせてスケーリング | `FALSE` |
| `-DENSITY |
`WORLDSCALE`有効時の、単位当たりのピクセル数 | `1024` |
| `-CENTER |
シームの向きを決定する空間上のポイント | `0.000000 0.000000 0.000000` |
高度な設定(非推奨)
「Minittry of Flat」は自動化を目指して作られてたツールのため、高度な設定をすることでUV展開の品質・速度に影響ができる場合があります。(そのため非推奨です)
| オプション名 | 説明 | デフォルト値 |
| `-SUPRESS |
検証エラーの出力を抑制 | `FALSE` |
| `-QUAD |
トライアングルペアをクワッドに結合 | `TRUE` |
| `-WELD |
重複頂点の統合(ポリゴンデータには影響なし) | `TRUE` |
| `-FLAT |
フラットなソフト面を検出し歪みを抑える | `TRUE` |
| `-CONE |
鋭い円錐形を検出 | `TRUE` |
| `-CONERATIO |
円錐の最小三角比率 | `0.500000` |
| `-GRIDS |
クワッドのグリッドを検出 | `TRUE` |
| `-STRIP |
クワッドのストリップ(帯状配置)を検出 | `TRUE` |
| `-PATCH |
クワッドグリッドのパッチを検出 | `TRUE` |
| `-PLANES |
平面の検出 | `TRUE` |
| `-FLATT |
フラットと見なすポリゴン間の最小法線ドット積 | `0.900000` |
| `-MERGE |
展開によるポリゴン結合 | `TRUE` |
| `-MERGELIMIT |
結合できるポリゴンの最大角度 | `0.000000` |
| `-PRESMOOTH |
カット・投影前にメッシュをスムージング | `TRUE` |
| `-SOFTUNFOLD |
ソフトサーフェスの展開を試行 | `TRUE` |
| `-TUBES |
チューブ形状を円柱投影で展開 | `TRUE` |
| `-JUNCTIONSDEBUG |
チューブ間の接合部検出 | `TRUE` |
| `-EXTRADEBUG |
4クワッド共有していない頂点からカット開始 | `FALSE` |
| `-ABF |
スムース面に角度ベースのフラット化を使用 | `TRUE` |
| `-SMOOTH |
スムース面のカット&展開 | `TRUE` |
| `-REPAIRSMOOTH |
小さなUVアイランドを大きなものに接続(スムース面) | `TRUE` |
| `-REPAIR |
エッジの修正(直線化) | `TRUE` |
| `-SQUARE |
直角を持つポリゴンを検出 | `TRUE` |
| `-RELAX |
歪み最小化のためにスムースポリゴンをリラックス | `TRUE` |
| `-RELAX_ITERATIONS |
リラックス処理の繰り返し回数 | `50` |
| `-EXPAND |
ソフト面の拡張(実験的機能、デフォルトオフ) | `0.250000` |
| `-CUTDEBUG |
不自然な形をカットしてレイアウト効率を改善 | `TRUE` |
| `-STRETCH |
幅が広すぎるUVアイランドを伸ばして収める | `TRUE` |
| `-MATCH |
三角形ごとのUVマッチングでパッキング向上 | `TRUE` |
| `-PACKING |
アイランドを矩形内にパッキング | `TRUE` |
| `-RASTERIZATION |
パッキング時のラスター解像度 | `64` |
| `-PACKING_ITERATIONS |
パッキング反復回数(最適な配置を探す) | `4` |
| `-SCALETOFIT |
空間に合わせてUVアイランドをスケーリング | `0.500000` |
| `-VALIDATE |
各ステージ後にジオメトリを検証しエラー出力 | `FALSE` |
Blenderで「Ministry of Flat」を使う
ここからが本題です。
Blenderでモデリング→obj形式でエクスポート→Ministry of Flatにインポート→obj形式でエクスポート→Blenderにインポート
UV展開をチマチマするよりか数億倍楽になりましたが、減らせる工数は減らしたいものです。
前項で紹介したとおり、Ministry of Flatにはコマンドライン上で動作するツールが同梱されています。
Blender側でobjをエクスポートしつつ、コマンドラインを叩けば自動でUV展開をしてくれるようになりそうです。
調べたところ、BlenderとMinistry of Flatをブリッジするアドオンは複数あります。
※今回紹介するBlenderアドオンは全て「Ministry of Flat」が含まれていません。
ライセンスに記載とのおり、ソフトウェアの再配布が禁止されているため各自で用意してください。
アドオン一覧
mofbridge
github.com
とてもシンプルな設計です。
設定項目は3つのみ、うちMinistry of Flatに関する設定は1つのみです。

| オプション名 | 説明 | |
| `separate edges~` | コマンドライン引数-SEPARATE-を利用する | |
| 'Pack after~' | Ministry of Flatから渡されたUV情報にBlenderのパック(ops.uv.pack_islands)を適用 | |
| 'Show UV~' | UV展開後に編集モードに移行してUVの即時プレビューをする |
modelinghappy.com
ModelingHappyさんの記事で取り上げられていたものです。
AutoUVMOF
github.com
開発中のものです。(本記事執筆時点ではαv0.0.4リリース)
Ministry of FlatのSettingのうち、一般的な設定を網羅しつつユーザーが扱いやすいようにカスタマイズされた設定も存在するアドオンです。
Wrapper for MOF UV Unwrapper
extensions.blender.org
r60d.gumroad.com
github.com
Ministry of Flatの一般的な設定、高度な設定のみが項目として存在するアドオンです。
Ministry of Flatの参照方法がフォルダのパスではなく、zipファイルを参照することに注意が必要です。
mof-integration
github.com
何も設定することなく、Ministry of FlatでUV展開をすることができる(?)アドオンです。
AddonPreferencesの設定が死んでいるため、Ministry of Flatの参照ができないエラーが出ているため利用できません。
共通の注意点
Ministry of Flatの参照時のファイルパスに日本語や空白が入っているとエラーが出ます。
またアドオンによってはオブジェクト名に日本語が含まれていても同様です。
おすすめ度
| 順位 | アドオン名 |
| 1位 | Wrapper for MOF UV Unwrapper |
| 2位 | mofbridge |
| 3位 | AutoUVMOF |
| 4位 | mof-integration |
AutoUVMOFは元々のUVを残しつつ、UVマップスロットにインポートしたUVを登録する設定など、他のアドオンに存在しない実用型の機能が実装されていました。

しかし、出力されたUVのスケールがUVタイルと異なっている問題が発生していました。※Use Normals を有効にすることで回避可能

この不具合が無ければ堂々の1位でした。
mofibridgeは設定項目が少なく、お手頃でしたがresolutionが変更できないためUV間の調整ができない部分が勿体なく感じました。(BlenderのUVパッカーを利用しているから不要なのだと判断)
安定性を考えると元々のMinistry of Flatの設定をそのまま参照している「Wrapper for MOF UV Unwrapper」が一番おすすめだと感じました。
Wrapper for MOF UV Unwrapperの使い方
前項で複数あるMinistry of Flatとの接続アドオンのうち、個人的に使いやすかった「Wrapper for MOF UV Unwrapper」に絞って紹介します。
導入方法
r60d.gumroad.com
Gumroadにアクセス

金額を記入して「I want this!」をクリックします。
※0$入力でも先に進むことができます。

メールアドレスを入力して「Get」をクリックします。

「Download」をクリックします。

zipファイルをダウンロードします。
ダウンロードしたzipファイルをアドオンとしてBlenderに読み込ませます。

プリファレンスからMinistry of Flatのzipファイルを参照します。
毎回zipファイルを参照するため、誤って削除・移動されないディレクトリに格納します。
※本記事ではAddonフォルダ直下に入れています。
参照後は「Check Verision」をクリックします。
さいごに
UV展開は嫌いです。
しかし、避けては通れない道です。
なるだけ手作業は減らしつつ、「Mio3 UV」アドオンを使って細かい設定をするのが、私の最近のアプローチになっています。
全てをBlenderで解決するのではなく良いツールはドンドン使っていきたいです。
InstaMAT Studio ElementGraph「Scene」を使ってみる

- Sceneノードの概要
- Sceneノード群の詳細
- 処理の流れ
- InstaMATで設定をする項目
- オブジェクト名
- マテリアル名
- Sceneノード群の出力値
- Sceneの内容をプレビューする
- 「Scene Material Set」と「Scene Material Set Textures」の違い
- 「Scene Material Set Texture」と「Scene Material Set Textures」の違い
- 既知の問題
- 出力されたfbxがDCCツールで読み込みされない
- 出力されたfbxを読み込むとベースカラーが黒色になる
- キューブが出現して消えない
- fbx以外の形式で出力をするとエラーが起きる
- usd形式の出力ができない
InstaMAT Pipelineを使って自動画像生成ツールを作る

前回の記事
t0rry.hatenablog.com
この記事で作成したもの
Seed値をランダムに設定し、毎回ランダムな画像を作成します。
IMPファイル、出力先をD&D及びプロジェクト名を入力するだけで処理が終了するCUIツールのテストケースです。
(入力したファイルを加工する処理は次回の記事で紹介予定です)
今回作成したものを解説していきます。
出力される画像(サンプル)


注意
batファイルを用いたバッチ処理を行っています。
取り扱いが初めてなので至らぬ点があります。注意ください
仕組み
InstaMAT Studio

まずは、InstaMAT内で画像を生成する機構を作成します。
外部からSeed値を指定し、毎回異なる画像を出力したいため独自のSeed値「InstanceSeed」をUInt32型で定義しています。
InstanseSeedパラメータは「模様」に関連するノードである「Fabric Patern Generator」、「色」に関連するノードである「HSL」に接続しています。
また、色情報はFloat型のためUintからFloatの変換処理を簡単に行っています。
インプット値であるInstanceSeedの値が極端に増加することによる色の視覚上の不具合を回避するために「Clamp UInt」で値の上限値を制限しています。
また、入力値である「InstanceSeed」は「Seed」と名付けることは行っていません。
外部から参照するパラメータ名「Seed」はユーザーが作成したパラメータより優先してInstaMAT Studio側の全体環境のSeed値が参照されてしまうためです。
出力はカラーイメージを設定します。名称はこだわりがないため、「Output」のままにしています。
![]()
プロジェクト名を命名します。
「noise」に設定しました。
プロジェクトを保存します。
パッケージの配置場所は次項で説明します。
これにてInstaMAT Studio側の設定は完了です。
フォルダ階層

前項で作成したプロジェクトを「graphic.IMP」として保存します。
CUI側でD&Dしてファイル参照するので名前は何でもいいです。
次項以降で説明をするbatファイル、画像出力用のフォルダ、bachのモジュール格納するフォルダの階層になっています。
(batchが正しい名称でしたね汗)
InstaMAT Studio Pipelineと同一のディレクトリにファイル群が存在しないことが肝です。
バッチファイルを作る(概要)
自動生成ツールのコードをゴリゴリ書く前に記述内容を考えていきます。
ちなみにInstaMAT PipelineでLibrary Graphを実行するときのサンプルコードは以下のとおりです。
InstaMATPipeline -mode Execute "IMPファイル" -graph "グラフ名" 1024 1024 Normalized8 "出力先"
起動の度に「IMPファイルの場所」、「グラフ名」、「出力先」含めた全てのコードを修正するのは非常に手間なので対話型のバッチファイルを作ることが目的です。
処理の順番は以下のとおりです。
- バッチファイルの起動 -A
- InstaMAT Pipelineの実行(参照)
- ユーザーが実行するIMPファイルを指定 -A
- ユーザーが出力する先のフォルダを指定 -A
- 処理を行うことの確認 -A
- 実行するグラフ名を指定 -B
- 実行する回数の指定(forループ) -B
- 実行 -B
これらを以下の機能を分けてバッチファイルを作成しました。
ファイル参照をする機構
→A
機能実行
→B
バッチファイルを作る(コード編)
実行内容を大まかに理解したところで、実際のコードを見ていきます。
@echo off echo InstaMAT Pipelineの確認 InstaMATPipeline rem ################### ユーザーに入力してもらう。 ################### echo "IMPファイルをD&Dしてください" set /p input_from_user= echo "出力先のフォルダをD&Dしてください" set /p output_folder= rem ################### 分岐 ################### set /p yn_check="処理を続ける(y/n)" IF %yn_check%==y ( echo 処理を開始します。 call .\module\image_out.bat %input_from_user% %output_folder% ) ELSE ( echo 処理を行わず終了します) pause
一番冒頭に「InstaMATPipeline」の実行をしていますが、無くても動きます。
見てわかるとおり、 /pを渡すことで変数をユーザーが入力できるようになります。
自動的に処理が進んでしまうことを防ぐために(y/n)を間に入れています。
処理を進める場合は別モジュールで定義したIMPファイルを実行するバッチファイルを呼び出しています。
echo グラフ名を設定します set /p graph_name= rem ################### pipelineのパス ################### set pp=C:\Program Files\InstaMAT Studio Cd %pp% rem ################### 処理を実行 ################### echo 繰り返し回数を入力 set /p count1= rem ############# 繰り返し処理(開始) ################### setlocal enabledelayedexpansion for /l %%i in (1,1,%count1%) do ( set rand1= set /a rand1=!random!*1500/32768 InstaMATPipeline -mode Execute %1 -graph %graph_name% 1024 1024 Normalized8 "%2\!rand1!.png" -parameter InstanceSeed !rand1! echo !rand1! ) endlocal rem ############# 繰り返し処理(終了) ###################
IMPの中に保存されているプロジェクトを参照することを目的にプロジェクト名を入力します。
InstaMAT Pipelineは「C:\Program Files\InstaMAT Studio\InstaMATPipeline.exe」を参照する必要があるため、カレントディレクトリを移動する必要があります。
pipeline path 略してpp変数にファイルパスを直接入力しています。
前の記事との差別化も兼ねてループ処理を実行します。
ユーザー側でループ回数を設定できるようにしています。
ループ処理内で「InstanceSeed」に代入する値をランダム生成しています。
プロジェクト側で設定したInstanceSeedの上限値(Clamp UInt)と同様に最大値1500の乱数を定義しています。
定義した乱数やユーザーがCUI上で設定した各種ファイルパスなどを用いてメインの処理部分の実行を行っています。
課題など
InstaMAT Pipelineで繰り返し処理をする場合、都度InstaMAT Pipelineを再起動しているため、動作が若干もっさりします。
今回は入力値を乱数に割り当て、「自動的に画像を生成するツール」を作ってみましたが次回はメッシュデータを入力したら「自動でUV展開をした上にルールに則ったテクスチャペイントをし、PBRテクスチャを書き出す」機構を自動化してみようかと思っています。
InstaMAT Pipelineを試してみる

InstaMAT Studioの機能の一部であるPipelineを試してみました。
InstaMAT Piplelineの概要
この記事を作るにあたってVoidberg氏、the_tux氏には多くの協力をいただきました。
ありがとうございます。
InstaMAT Pipelineとは
InstaMAT PipelineはInstaMAT Studioとは別に提供されるツールの一種になります。
特徴として、GUIを用いずコマンドライン上でElement Libraryを書き出すことができます。
使用する上での注意点
InstaMAT PipelineはPionear Licenseでは利用ができません。
利用するためにはPionear License以外のライセンスを導入する必要があります。

筆者はPro Lisenceを導入しているため、どの他のライセンスでは動作などが異なる場合がございます。
(未検証のため)
実際に触ってみる
筆者の環境について
OS:Windows 11
InstaMAT Lisence:Pro License
Date:2025/01/22
導入

Pro Lisence導入後のInstaMAT初回起動時に「InstaMAT パイプラインの設置」のポップアップが起動します。
Pipelineを利用する前提なので、「パスの追加」を選択します。
![]()
環境変数を確認するとCドライブのInstaMAT Studioが参照されていることがわかります。
コマンドプロンプトやPowerShellなどで動作確認をします。
InstaMATPipeline

無事にInstaMAT Piplelineを実行することができました。
helpを叩いて中身を確認してみる
前項で実行した出力に「INFO: No application mode specified use '-help' to show help.」、つまりhelpを表示して中身を確認しろ!と注意を受けてしまいました。
まずは、helpの実行からしてみます。
InstaMATPipeline -help

画面を埋め尽くす量のhelpが表示されたかと思います。
helpの出力内容はInstaMAT Pipeline Documentで確認ができます。
InstaMAT Pipeline | InstaMAT Documentation
helpの内容を大まかにまとめる
前項で出力されたhelp中で紹介されている引数をざっくり紹介します。
※コマンド内、「<、>」が記法の関係で表記が面倒なので「(、)」で代替しています。
区別はDocumentのhelpを参考ください。
| 引数 | 説明 | 補足 |
| -env [Path] | PipelineとInstaMAT Studioの連携します | InstaMAT PipelineがInstaMATと別の場所にインストールされている場合、InstaMATのインストールディレクトリを指定します |
| -software | GPUではなく、CPUで処理をするときに指定します | - |
| -mode (ApplicationMode) (Path) | コマンドラインからAtomグラフやElementグラフを操作するときに利用します。 | Application ModeはExecute、Info、Search、UnitTest、GenerateDOcumentation、GeneratePreviews、Cook、Packageのいずれかを設定する必要があります。続けてパッケージのパスを指定します。パッケージへの参照パスが存在しないとき、ライブラリ内で利用可能なAtomグラフ、Elementグラフのみ使用可能です。 |
| -graph (Name) (OutputWidth) (OutputHeight) (OutputFormat) (OutputPathFormat) | 実行するグラフ、および出力方法を設定します | 各パラメータに関しては後述 |
| -grayscale | 出力結果はグレースケールに置換(変換)します | グラフがグレースケール非対応の場合は置換せずに出力されます |
| -exportTemplate(ExportTemplatePath) | 指定されたパスから出力テンプレートを読み込みます | ModeでExecuteを指定する必要があります。また、出力テンプレートはInstaMATStudioで作成され、json形式で保存されます。*1 |
| -parameter(Name) (ParameterValue) | パラメータを制御します | ModeをExecuteで実行する必要があります。ParameterValueはjson表記をするよう必要があります。また、Seed値を変更する場合はNameに"Seed"、ParameterValueを「0から100000」の整数を使用します。 |
| -compositionParameter(ConpositionNodeName)(OutputParameter)(InputParameter)(ParameterValue) | 実行されるグラフの出力に入力パラメータを指定したノードを加えて出力ができます | ModeをExecuteで実行する必要があります。 |
| -outputFilter(FilterPattern) | 出力される要素のうち命名フィルタをかけた内容を抽出します | ModeをExecuteで実行する必要があります。フィルタは画像だけでなくメッシュ出力含むすべての出力に適用されます。例えば、「Ambient」、「Tangent」をフィルタにした場合、「Tangent Space Normal」、「Ambient Occlusion」は出力されますが、それ以外の出力は無視されます。 |
| -outputMeshFormat (FileExtension) | メッシュを出力するときのフォーマットを指定します | ModeをExecuteで実行する必要があります。fbx、obj、ilmeから選択する必要があり、指定されないときはfbxが使用されます。 |
| -outputPointCloudFormat(FileExtension) | PointCloudのフォーマットを指定します | ModeをExecuteで実行する必要があります。現在はply形式のみがサポートされているようです。 |
| -graphInfo (Name/ID/GURL) | コマンドライン上でノードの構成を確認できます | ModeをInfoで実行する必要があります。 |
| -graphSerch (Query)(Category) | ライブラリ、パッケージから情報を検索できます | ModeをSerchで実行する必要があります。検索結果はjson形式で出力されます、 |
| -package (context) (task)(value) | パッケージに関する操作(外部リソース・プロジェクト(Atomグラフ・ElementGraph)の追加・削除やパッケージ情報の変更)を行えます | ModeをPackageで実行する必要があります。 |
| -outputFolder (path) | 出力先を指定します | ModeをUnitTest, GenerateDocumentation, GeneratePreviews, Cookで実行する必要があります。 |
| -referenceFolder(path) | 参照画像の出力先を指定します | ModeをUnitTestで実行する必要があります。 |
| -missmatchFolder(path) | 不一致画像の出力先を指定します | ModeをUnitTestで実行する必要があります。 |
| -HTMLOutput(path) | 生成されたHTMLレポートの出力先を指定します | ModeをUnitTestで実行する必要があります。 |
| -HTMLTemplate(TemplatePath) | 生成されたHTMLレポートのテンプレートを設定します | ModeをUnitTest 、HTMLOutputで実行する必要があります。 |
| -validateDocs | グラフを検証し、ドキュメント生成が可能か確認します | ModeをUnitTestで実行する必要があります。 |
| -category | カテゴリを指定するときに利用します | ModeをUnitTest, GenerateDocumentation, GeneratePreviewsで実行する必要があります。複数回指定することで複数のカテゴリを指定できます。また、ModeがGenerateDocumentationの場合、カテゴリが指定されていない場合は全てのカテゴリが出力されます。 |
| -includeTemplates | テストカテゴリにあるグラフテンプレートをユニットテストに含めます | ModeをUnitTestで実行する必要があります |
| -excludeGraph (graphID) | 指定されたグラフIDを持つグラフを単体テストから除外します | ModeをUnitTestで実行する必要があります。また、同時に複数回利用し、複数のグラフを追加することもできます |
| -excludeCategory (Category) | 指定されたカテゴリを除外カテゴリリストに追加します | ModeをGenerateDocumentation, GeneratePreviews, Cookで実行する必要があります。また、同時に複数回利用し、複数のカテゴリを追加することもできます。 |
| -imageFolderBase(URL) | 生成された画像のベースURL(?)を設定します。 | デフォルトは「"/"」です |
| -authorize(email)(LicenseKey) | InstaMAT Pipelineのマシン認証 | 詳細はドキュメント*2 |
| -deauthorize(email)(LicenseKey) | InstaMAT Pipelineのマシン認証解除 | 認証解除が完了するまで24時間かかります |
| -machineKey | マシンの固有番号(認証キー)を取得します | - |
| -authorizeKey(machinekey)(filename)(Email)(LisenceKey) | machinekeyでマシン認証をしたうえでライセンスファイルをfilenameに書き込みます | マシンの代替としてライセンス認証をするために使用されます |
| -ingestLicense(path) | 指定されたパスにあるライセンスファイルでマシン認証を実施します | - |
| -liceneinfo | ライセンス情報を表示します | - |
サンプルコードの実行
では、実際にDocumentに掲載されているサンプルコードを実行してみます。
グラフ実行時の注意
コマンドプロンプトやPowerShell等の実行はInstaMAT Pipleline直下で実行してください。

InstaMAT StudioとInstaMAT Pipelineが同一階層に入っていない場合は以下のコードをあらかじめ実行する必要があるそうです。
InstaMATPipeline -mode Execute -env (InstaMAT Studioのファイルパス)
グラフを出力(ファイル指定なし)
早速、実際にグラフを出力してみましょう。
まずデフォルトで登録されている「Pavement」を出力してみます。
※ドキュメントでは「Arc Pavement」になっていますが、「Pavement」に命名変更されたそうです。

InstaMATPipeline -mode Execute -graph "Pavement" 1024 1024 Normalized8 "ここに格納先を指定\{GRAPH.NAME}_{OUTPUT.NAME}.png"
格納先ですが、CLIを管理者権限で実行していない場合、当然Cドライブ直下やProgram Filesにファイルを格納できませんの注意ください。

処理が完了すると実行ログが出力されます。
<参照エラー>
![]()
→正しい名称を指定することで解決
<書き込みエラー>
![]()
→保存先を管理者権限外にするかCLIを管理者権限で実行
今回実行したものは「InstaMAT Studio」に既に保存されているパッケージを出力しました。
では、InstaMAT Studioに登録していないパッケージはどのように出力するのでしょうか
グラフを出力(ファイル名指定)

簡単なElementグラフを作成しました。

パッケージ名を「Pipeline_test」、プロジェクト名を「pipeline_test(graph)」にします。

InstaMAT Studioと全く関係ない場所に保存します。
保存するIMP
(今回はデスクトップ上に「delete_mat」フォルダを作成し、格納しました)
InstaMATPipeline -mode Execute "C:\Users\**ユーザー名**\Desktop\delete_mat\pipeline_test(file).IMP" -graph "pipeline_test(graph)" 1024 1024 Normalized8 "C:\Users\**ユーザー名**\Desktop\delete_mat\test.png"

無事に画像が出力できました。
このように、外部のIMPファイルを読み込ませてファイルをエクスポートすることもできます。
3dモデルの出力


InstaMATのロゴの高さ情報からメッシュを生成するグラフ、およびパッケージを作りました。
ファイル名:mesh_out.IMP
グラフ名:MAT_logo
InstaMATPipeline -mode Execute "C:\Users\ユーザー名\Desktop\delete_mat\mesh_out.IMP" -graph "MAT_logo" 1024 1024 Normalized8 "C:/Users/ユーザー名/Desktop/delete_mat/mat.obj" -outputMeshFormat .obj

mat.objとmat.mtlが出力されました。

Blenderに読み込むとメッシュ化されたInstaMAT Logoが表示されました。
uv展開をする

前項で出力されたロゴはUV展開が適切にされていません。

作成段階で「Mesh UV Unwrap」を挟めば処理は終わりますが、ここでは先ほど作成したグラフを利用するのではなく、出力された3dモデルを利用します。
(あくまで試すためであって、実運用だったら元データを修正します)
InstaMATPipeline -mode Execute -graph "Mesh UV Unwrap" 1024 1024 Normalized8 "C:\Users\ユーザー名\Desktop\delete_mat\uv\uv.obj" -parameter Mesh "file://C:\Users\ユーザー名\Desktop\delete_mat\mat.obj" -outputMeshFormat .obj
このように元々MAT内に備わっている機能を -parameterの引数でファイル参照することで処理を行えます。

ちなみに出力されたUVは画像の通り、InstaMAT Studio側の結果とは何やら異なるようです。
ノードのパラメータを見てみる
先ほど実行した「Mesh UV Unwrap」のパラメータをみてみます。
InstaMATPipeline -mode Info -graphInfo "Mesh UV Unwrap"

該当ノード(グラフ)のパラメータをみることができました。
グレースケール出力


「Blue Noise」ノードのようなグレースケール変換を標準でもつグラフには -grayscale引数を渡すことで出力がグレースケールになります。
InstaMATPipeline -mode Execute -graph "Blue Noise" 1024 1024 Normalized8 "C:\Users\ユーザー名\Desktop\delete_mat\img\test.png" -grayscale
フィルター
複数の出力がある場合に -outputfilter 引数を利用することで出力を制限できます。
メッシュを読込み、ベイクをしたときの出力画像を制限してみます。
ドキュメントの生成
InstaMATPipeline -mode GenerateDocumentation -env "Environment/" -outputFolder "C:\Users\ユーザー名\Desktop\delete_mat\doc2"
上記のコマンドでLibrary.IMPに含まれるすべてのグラフのドキュメントを自動生成できます。
(全件対象のため、実行注意)
ドキュメントはマークダウン記法でエクスポートされます。

範囲を絞る場合は以下のように変更をします。
InstaMATPipeline -mode GenerateDocumentation -env "Environment/" -outputFolder "C:\Users\ユーザー名\Desktop\delete_mat\doc2" -category "Noise"
Noiseカテゴリのみを抽出してエクスポート
InstaMATPipeline -mode GenerateDocumentation -env "Environment/" -outputFolder "C:\Users\bp_19\Desktop\delete_mat\doc3" -excludeCategory "Noise"
Noiseカテゴリのみを除外してエクスポート
おわりに
ここまでInstaMAT Pipelineを参考にわかる範囲で色々と試してみました。
Pipelineの使用用途は単純明快。アセットを作る際に非常に便利かと思いました。
例えば、同じ命名規則で作成されたメッシュ群をテクスチャペイントするときにLayeringプロジェクトでMesh Maskを利用し「サブメッシュ単位」でマスクを作成します。
この内容をElementGraphにインポートし、テクスチャペイントを行う。加えて -parameter引数にメッシュを渡すほか、色情報、シード値を加えることでコマンドライン上でアセットを作ることができるかもしれません。
ただ、グラフ同士を連続的に実行することはできないので、例えばBatファイルなどを作成して連続的に処理をするなど工夫が必要かもしれません。
1から機構を作ることはできませんが、グラフやAtom上で作成された情報をコマンドライン上で実行できる。これが本当に面白いところでした。
また、この記事を書くにあたりInstaMAT Pipelineを触った時間は4時間ほどです。
非常にわかりやすい操作性でした。
*1:InstaMAT Studio> Environment > Output Templates







