手動Bakeと復元
このページは手動Bakeを初めて使う方のためのものです。 ほとんどの方は読まなくても構いません。5分ほどかかります。
まず: ほとんどの配布では必要ありません
| 状況 | 使うもの |
|---|---|
| VRChatへのアップロード | 自動最適化。何もしなくて構いません |
| WARUDOモッドのビルド | 自動最適化。何もしなくて構いません |
| 一般のPlayerビルド | 自動最適化。何もしなくて構いません |
| baked シェーダー・マテリアルアセットをファイルで渡す | 手動Bake |
| 最適化の結果をシーンで比較しながら承認する | 手動Bake |
| 自動フックを使えない外部パイプライン | 手動Bake |
自動最適化はビルドの間だけ変更して元に戻します。手動Bakeは新しいアセットを作り、Rendererのスロットを実際に変更します。
顔ノーマルのUV7、アウトラインのUV8、キャラクター高さのUV4はメッシュチャンネルのBakeです。このページのシェーダーBakeとは別物です。 → メッシュUVベイク
実行前の確認
- 元の
.mat、Animator Controller、AnimationClipをバージョン管理に記録します。 - 対象がすでに MingToon マテリアルになっているか見ます。変換ウィザードで作ったコピーなら終わった状態です。手で切り替えた場合は、先に手動変換を終えます。Bake はコピーの Manager で実行します。
- Manager の 見た目 タブで、ルックと 輪郭・顔・高さの準備 セクションのメッシュチャンネルベイクの結果を確認します。ウィザードはメッシュチャンネルをベイクしないので、必要なものはここでベイクします。
- ランタイムスクリプトが変更する値は、その行の ベイク除外(実行時変更) で印を付けます。
AnimationClipは自動的に分析します。別途印を付ける必要はありません。
ベイク時点でオフになっている機能はコードから取り除かれます。 レイヤー数、Alpha Mask、Emission、Occlusionがこれに該当します。 保存対象として検出されないと、あとでオンにしても動作しません。
Bakeの実行
Manager の 見た目 タブの 軽量シェーダーベイク(エディター専用) セクションを展開します。一番上に このアバターの手動ベイク最適化方式 があります。アップロードと同じ結果をプレビューするには、ビルド時の自動最適化の このアバターのビルド・アップロード最適化方式 と同じにしてください。この選択は手動 Bake にだけ適用されます。そのあと 子MingToonを軽量シェーダーへベイク を押します。
Assets/StudioRaming/MingToonGeneratedの下にシェーダー・マテリアル・テクスチャ・Manifestが作られます。- Rendererの現在のスロットがbaked マテリアルに置き換わります。
- キャンセルしたり途中で失敗したりした場合は、その実行で作られたアセットとスロットの変更を元に戻します。
- Consoleの
MingToon bake:の要約で、処理したマテリアル数を確認します。
Prefabインスタンスで実行すると、変更はインスタンスのoverrideとして残ります。Prefabアセットに反映するには、Unityの Overrides > Apply All を別途使ってください。
復元
baked マテリアルを1つだけ戻す
baked マテリアルを選択し、インスペクター上部の 編集用マテリアルへ復元 を押します。
Manifestに記録された元のGUIDとRendererのスロットを使います。
プロジェクトの手動Bakeをすべて整理する
StudioRaming > MingToon > Advanced > Restore And Clean Bake Output を実行します。
このコマンドは順序を保証します。
- Manifestに従ってRendererのスロットを元の編集用マテリアルに戻します。
- 復元されたシーン・Prefabの参照を保存します。
- すべての記録済みスロットが実際の元を指しているか再確認します。
- 復元を確認できたあとにだけ、生成アセットを削除します。
復元や保存に失敗した場合、生成フォルダーは削除しません。失敗した項目をConsoleに残し、確認を求めます。
変換を元に戻す(MingToon以前のマテリアルへ) は変換前のシェーダーに戻します。
Restore And Clean Bake Output はbaked マテリアルから編集用のMingToonマテリアルに戻します。
変換を元に戻す(MingToon以前のマテリアルへ) ボタンは、Manager の 開始 タブの 既存の対象を変換・復元 セクションにあります。変換ウィザードが作ったコピーは元を変更していないので、ウィザードの結果をなくすには、コピーを削除して、オフにしておいた元をオンに戻します。
復元ボタンが無効なとき
- ベイクのManifestが残っているか確認します。
- 元の編集用マテリアルのGUIDが生きているか確認します。
- Bake以降にRendererの階層やマテリアルスロットが変わっていないか確認します。
- Consoleの古い手動ベイクの警告を確認します。
テクスチャ処理のポリシー
手動Bakeはアップロードのプレビューです。そのためテクスチャのポリシーもアップロードと同じ値を使います。
基準は MingToon Manager の 軽量化 タブの アップロード時の自動最適化 カードにある アップロード時もテクスチャ再書き込み(オプトイン) 1つだけです。そのカードの最初のスイッチ(ビルド・アップロード時に自動最適化(全体共通))がオフのときはこのトグルは表示されませんが、保存された値は手動 Bake がそのまま読み取ります。
損失なし(LosslessOnly) — 既定値
オプトインがオフのときの動作です。元のテクスチャのピクセルを書き直しません。
数学的に恒等なマスクの除去と、同じテクスチャ・同じUV式の共有だけを許可します。
レビュー済み高品質(ReviewedHighQuality)
オプトインをオンにしたときの動作です。サーフェス・ノーマルの平坦化とマスクの再パッキングを許可します。
読み取り、色空間、mipの再生成、プラットフォーム圧縮によってピクセルが変わることがあります。 baked 前後の結果を、目標のプラットフォームで直接比較してください。
マスクの再パッキングは複数のマスクを1つのテクスチャにまとめます。シェーダーのテクスチャサンプル数が必ず減るわけではありません。
ベイク除外(Keep Editable)
ベイク除外(実行時変更) はマテリアル単位の記録です。
AnimationClipは自動的に分析するため、印を付ける必要はありません。
ランタイムスクリプトが変更する値や、外部システムが名前でアクセスする値に使ってください。
グループ全体をまとめて外すには このグループ全体をベイク除外 を使います。
次へ
ビルド時の自動最適化 · VRChat · Warudo · トラブルシューティング