VRChat
このページを読むと、VRChat 側の制限(パラメーター上限 · メニュー 8 枠 · SDK バージョン)の範囲内で、今の構成がアップロードできるかを判断できます。
必要な SDK
アップロードまで進むには、次のすべてが必要です。
| 項目 | 条件 |
|---|---|
| VRChat Avatars SDK | 3.x |
| NDMF | 1.x |
| アバターのマテリアル | MingToon |
| 接続方式 | Modular Avatar · VRCFury · 空の VRC アバター descriptor のいずれか |
VRCFury を使う場合は 1.1426.0 以上である必要があります。Modular Avatar と VRCFury は任意で、MLC がどちらかを勝手にインストールすることはありません。
VRCSDK Avatars が見つからない場合、ウィンドウに VRCSDK Avatars が見つかりません。コア compile plan は引き続き検証できます。 が表示されます。構成の検証は続けられますが、アップロードはできません。
同期ビット 256
VRChat のアバター 1 体が使える同期ビットは 256 個 で、これはアバター全体で分け合う資源です。MLC のメニューもこの予算の中で作られます。
予算・検証 カードの 同期ビット の行が Smooth ... / Compact ...(予算 ...) の形で 2 つのプロファイルのコストと現在の予算を一緒に表示します。
既定のカタログをすべてオンにした状態のコストは次のとおりです。
| プロファイル | 同期ビット | パラメーター項目 |
|---|---|---|
| Smooth | 84 | 22 |
| Compact | 41 | 51 |
Compact は値を段階に分けて送り、受け取る側で復元する方式なので、ビットを節約する代わりに項目数が増えます。機能をオフにすれば両方の数字が減ります。
プロファイル を 自動 にしておくと、残りの予算を見て Smooth を先に試し、その後 Compact へ下ります。
パラメーター項目数
同期ビットとは別に、Expression Parameters の 項目数 自体にも上限があります。MLC が想定する値は 8192 個です。アップロード直前の検査で、インストールされた SDK が報告する値と照合します。
メニュー 1 ページ 8 枠
VRChat Expressions Menu は 1 ページに最大 8 スロットしか表示しません。メニュー構成 カードのルート行が ルート(n / 8) で現在の個数を表示します。超えた項目はアバターで見えないので、フォルダーにまとめてください。詳しくは メニュー構成 にあります。
すでにアバターにあるパラメーター
MLC が使える分は 他のツールがすでに使って残った分 です。予算・検証 カードの アバター合計 の行が 外部 ... bit / ... entries + MLC(目標 ... bit、... entries) の形でこれを表示します。
高度なオプション の 2 つの目標値は次のように動作します。
| 項目 | 0 にしておくと | 0 以外の値を入れると |
|---|---|---|
同期ビット目標 | 残りの VRC 予算を自動で使います | その値がアバター全体の上限になります |
パラメーター項目数の目標 | VRC の最大値を使います | その値がアバター全体の項目数上限になります |
既存の VRC パラメーターを読めないときだけ使う 不明な予算でも強制インストール オプションが別にあります。これをオンにすると外部予算を空と仮定するので、自分で確認した場合にのみ 使ってください。
アップロード直前の最終検査
アップロードの直前に、完成した Expression Parameters をもう一度検査します。この検査はインストールされた VRChat SDK が報告する上限値を直接読んで MLC の想定と照合するため、SDK を上げて上限が変わっていればここで捕まります。
ここで引っかかると Console に Ming Light Controller final VRC parameter validation failed: で始まるエラーが残り、アップロードが中断されます。
- 項目数の超過 · 同期ビットの超過 · SDK 上限の不一致 → エラー、アップロード中断
- 既定値がその型の許容範囲を外れたパラメーター → エラー、アップロード中断
- 名前が空、または重複したパラメーター → 警告、アップロードは続行
既定値の範囲は型ごとに異なります。
| 型 | 許容される既定値 |
|---|---|
| Bool | ちょうど 0 か 1 |
| Int | 0 以上 255 以下の整数 |
| Float | -1 以上 1 以下 |
NDMF の build clone 段階そのものが通らなかった場合もアップロードは中断されます。このときはパラメーターの検査ではなく準備段階で止まっているので、まずプロジェクトに NDMF があるかを確認してください。
MingToon マテリアル側の準備
メニューを作っても、マテリアル側がその値を実行時に読めなければなりません。MingToon マテリアルインスペクターの 2 つのスイッチがその役割を担います。
| マテリアル側のスイッチ | オンにしておくと |
|---|---|
VRCランタイム操作を使う | VRC Quality Tier とバーチャルライト · マスター調整 · フォトルックのプロパティがベイクで定数に畳まれません |
FXメニューでシャドウ投影を切り替え | シャドウ投影 がベイクで定数に畳まれません |
両方オフにすると、該当する値が定数に畳まれて最も軽い状態になりますが、メニューで動かせなくなります。
パフォーマンス距離 (m) と パフォーマンス距離倍率 の 2 項目は、このスイッチと無関係にベイクで畳まれません。MLC がなくてもマテリアルに値を保存しておけば、アップロード後も距離判定が動作し続けます。ただし 2 つの値の積が 0 だと距離に関係なく常に最も軽い状態で描かれ、MingToon の検証機能が MING-MAT-PERF-DISTANCE-ZERO 警告を出します。ゲーム内のラジアルで 0 まで下げられるようにするのが意図であれば、そのままで構いません。
既知の制約
- Direct Descriptor は、すでに FX コントローラー · Expressions メニュー · Expression Parameters を使っているアバターには統合できません。そうしたアバターには Modular Avatar か VRCFury を使ってください。
- Standalone はアバターに何も付けないため、それ自体では完成した構成になりません。
- VRCFury provider は、その任意アセンブリが正常にコンパイルされて登録されたときにだけ使えます。
- MLC は MingToon マテリアルだけを対象にします。他のシェーダーへの変換やコントロール生成はありません。