メインコンテンツまでスキップ

コンバイナー

このページを読むと 複数のマスクを 1 枚に削減する方法と、アバター全体をスキャンしてパックを作成する自動最適化が分かります。パックを指す方向にマテリアルを書き直すこともできますが、それは選択肢です。

作成するもの: チャンネルがパック済みのテクスチャ。必要に応じてそれを指し示すように修正されたマテリアル

3 つの手動機能​

機能動作
チャンネルパッキングマスク 4 枚を R/G/B/A チャンネルに 1 つずつ格納して 1 枚にする
マスク合成複数マスクの白い領域を足して 1 枚にする
チャンネル分割パック済みテクスチャをチャンネルごとのグレースケール PNG に展開

手動保存時は保存場所ラベルでどこに保存されるかを事前確認でき、保存前の上書き確認オプションで毎回尋ねるようにできます。

→ チャンネルとパッキング

自動最適化​

アバターのマスクをすべてスキャンして 4 枚ずつ束ね、パックテクスチャを保存します。その後、各マテリアルのスロットとチャンネルを パックに合わせて書き直すこともできますが、その段階は実行前に常にプランを表示し、Ctrl+Z 1 回で戻します。

1. スキャン​

アバター(またはヘア)オブジェクトを選択します。

参照マテリアル数動作
50 個以下選択が変わるたびに自動スキャン
50 個超スキャンボタンを直接クリックする必要があります

シェーダー別プロファイルでマスクスロットを収集します。

プロファイルスロット数チャンネル方式
NiloToon35チャンネルベクトル — 自由配置
Poiyomi29チャンネルインデックス — 自由配置
lilToon6R 固定 + アルファベイク

2. 除外​

既に最適化されたテクスチャは自動的に除外され、リストに除外理由が表示されます。

除外理由説明
チャンネルパック済みチャンネルごとに異なるデータが入っている
グレースケール以外色情報を使用するテクスチャ
複数チャンネル参照1 テクスチャが複数のチャンネルで参照されている

必要に応じて除外リストから含めるをクリックして再度追加できます。

3. グループ編集​

4 枚ずつの自動グループが提案されます。サムネイルとチャンネルバッジで確認します。

状況処理
解像度が異なる大きい方を基準に自動リサイズ
アスペクト比が混在警告表示
内容が全く同じ重複ファイル自動的に 1 枚に統合(色バリエーションマテリアルに効果的)

行を別のグループカードまたは『新規グループ』にドラッグするか、ドロップダウンで移動できます。

4. 実行計画​

合成 + 再割り当て前に実行計画カードで生成されるパックファイルと上書きバッジを確認します。

5. 合成 + 再割り当て​

パックテクスチャを保存して、各マテリアルのテクスチャスロット · チャンネル(R/G/B/A) · 有効化切り替え · シェーダーキーワードを自動的に変更します。マテリアルを変更する段階ですが、1 回の Ctrl+Z で全体が戻ります。 パックテクスチャだけが欲しい場合は、手動チャンネルパッキングを使ってください。

結果はピングボタンと一緒に画面に残り、再スキャンで最初から開始できます。

元のマスクファイルは削除されません

結果を確認した後、直接整理してください。ツールが削除しない理由は、戻す必要が生じた場合に元のファイルがないと復旧が不可能だからです。

シェーダー別処理差​

シェーダー処理
NiloToonチャンネルベクトルを持つマスクスロットをスキャン → RGBA パック + チャンネル自動再割り当て
Poiyomi 9.x…Channel インデックスを持つマスクスロットをスキャン → パック + チャンネルインデックス再割り当て
lilToonR 固定サンプリングなのでパックのR 位置に優先配置。アルファベイクオプションで _AlphaMask を MainTex アルファに焼き込み、スロットを空にします(lilToon 公式方式)

シェーダープロファイル(JSON)​

ビルトイン 3 種(NiloToon · Poiyomi · lilToon)以外のシェーダーを使用するか、ビルトインが見落とした スロットを追加したい場合に使用します。

項目値
フォルダ<プロジェクト>/MaskMakerProfiles/*.json — Assets 外なので、パッケージアップデートで削除されません
組み込みを書き出しNiloToon/Poiyomi/lilToon デフォルトプロファイルを JSON テンプレートとして保存。コピーして編集してください
再読み込みフォルダを再スキャン
名前衝突同じ名前のユーザープロファイルがビルトインをその場で上書きします(マッチング優先順位は保持)。警告行で表示

ファイル読み込みは最初のスキャン 1 回またはボタンをクリックした時のみ実行されます。

スキーマ​

{
"name": "MyToon",
"shaderNameContains": "MyToon",
"caseInsensitiveMatch": true,
"enableLilAlphaBake": false,
"slots": [
{
"texProp": "_MyMaskTex",
"channelProp": "_MyMaskChannel",
"kind": "FloatIndex"
},
{
"texProp": "_MyRimMask",
"channelProp": "_MyRimMaskChannelVector",
"kind": "Vector4Dot"
},
{
"texProp": "_MyFixedMask",
"channelProp": null,
"kind": "FixedR"
}
]
}
フィールド意味
nameプロファイル名。ビルトインと同じ名前なら上書き
shaderNameContainsマテリアルのシェーダー名にこの文字列が入っていれば、このプロファイルを適用
caseInsensitiveMatch大文字小文字を無視して比較するか
enableLilAlphaBaketrue ならば、このプロファイルにマッチしたマテリアルも lilToon アルファベイク候補として収集
slots[].texPropマスクテクスチャプロパティ名(例:_EmissionMask)
slots[].channelPropチャンネルを選択するプロパティ名。kind が FixedR ならば使用しません
slots[].kind"Vector4Dot" / "FloatIndex" / "FixedR" の 3 つのいずれか(文字列)
プロパティ名はヘルプからコピー

ツールヘッダーの**?** ボタン → シェーダー別接続表でプロパティ名をクリックするとそれが選択されてコピー可能になります。このサイトの シェーダー接続 表にも同じ名前があります。

保存​

  • 同じ名前のファイルがある場合は上書き / 新しい名前 / キャンセルを尋ねます。
  • 結果はピングボタンと一緒に画面に残ります。