VRChat
このページはVRChat PCにMingToonアバターをアップロードする方のためのものです。 アップロードの手順と、深度エフェクトがどこまで表示されるかを扱います。
VRChat PCはMingToonの主対象です。Unity 2022.3.22f1 を使ってください。
デプスリムライト・デプスシャドウ・SSAO・インナーアウトラインはカメラの深度テクスチャを読みます。 VRChatではその深度をワールドとホストが決めます。アバターから強制することはできません。
ノーマルアウトライン・フレネルリム・フォームシャドウ・Face SDFをフォールバックとして併せて用意してください。
アップロードのチェックリスト
- ConsoleのC#・シェーダーエラーを0件にします。
- MingToonマネージャーで 子レンダラーを再検索 を実行します。
StudioRaming > MingToon > Validate Projectを実行し、エラーを解決します。- VRChat SDK Builderでアップロードします。手動のBakeは必要ありません。
- SDKの処理後、build cloneで
RuntimeComponentCount = 0になっているか確認します。 - ゲーム内で自分の画面・ミラー・Photo Cameraをそれぞれ確認します。
MingToonコンポーネントは削除しないでください
VRC SDKはMingToonのランタイムコンポーネントを IEditorOnly として扱います。その表示が削除を保証するわけではありません。
オーサリングシーンのマネージャーを手で削除すると、最適化の範囲が失われます。
RuntimeComponentCount はオーサリング用のMingToonコンポーネントだけを数えます。build cloneに残っている場合は、アップロード前にcloneから直接取り除いてください。
WARUDOはスクリプトを保持する逆のルールを使います。 → Warudo
Expressionsメニュー
MingToonマネージャーはExpressionsメニュー・パラメーター・FXを自動インストールしません。自分で作った構成は、SDK Builderの最終build cloneで確認してください。
ゲーム内メニューが必要な場合は別売アドオンを使います。 → Ming Light Controller
品質ティアとランタイム切り替え
品質ティアは、オーサリング値を上書きしない上限です。既定値はHighです。
| ティア | 機能 |
|---|---|
| High | オーサリング値をそのまま使います。上限はありません |
| Mid | デプスリム・SSAO・投影フェザーのサンプル数を下げます |
| Low | 深度エフェクト全体と投影フェザーをオフにします |
メニューで扱うマテリアルは VRCランタイム操作を使う をオンにする必要があります。オンにしていないマテリアルは、ベイクでHighに畳まれて最も軽くなります。
- FXアニメーターで深度エフェクトを切り替え — 深度エフェクトのマスターをアニメーションさせます。
- FXメニューでシャドウ投影を切り替え — メニューから投影影だけをオフにします。
アップロードで自動的に処理されること
アップロードフックは元のシーンアセットに触れません。SDKが作ったコピーだけを変更します。
- 編集用シェーダーを軽量シェーダーに差し替えます。
- 顔ノーマルをアップロード用MeshのUV7にベイクし、終わったら元に戻します。
- プロジェクトに設定したスロット別のテクスチャ解像度上限をコピーに適用します。
- 深度の可用性 の値はそのまま残します。AutoはAutoのまま出荷されます。
- VRC Light Volumesのバリアントを自動でオンにします。
1つの項目が失敗しても、残りは復元します。無関係なアセットをグローバルに保存することはありません。
深度エフェクトはどこまで保証されるか
| 状況 | 深度 |
|---|---|
| Photo Cameraが有効な間 | 対応 |
| ワールドがScreen Camera depthをオンにしている場合 | 対応 |
| 一般プレイヤーの画面の既定状態 | 保証されません |
| ミラー | 意図的にブロック |
ミラーのカメラは、プレイヤーカメラの古い深度を読みます。他人のシルエットが影として出ないよう、ミラーでは深度モジュールをオフにします。
ワールド制作者は VRC Camera Settings文書 のScreen Camera設定で深度をオンにできます。
誰に見せるかを決める
既定値は、自分とフレンドにだけ見える状態です。 はじめに タブの フレンド以外にも深度エフェクトを表示 をオンにすると全員に見えます。相手側の描画負荷が大きくなります。
ゲーム内で深度エフェクトをオフにすると、この設定に関係なくオフになります。
VRChat深度ライト
深度エフェクトを使うアバターは、アップロード用のコピーにDirectional Lightを1つ載せます。影をオンにしたこのライトが、カメラの深度パスを誘導します。
| 項目 | 現在の値 |
|---|---|
| Render Mode | Not Important |
| カリングレイヤー | StereoLeft(15)とMirrorReflection(18) |
| 適用範囲 | ビルドクローンのみ。シーン・プレハブ・マテリアルはそのまま |
深度パスはカメラごとに1回ですが、そのパスがワールドのすべてのレンダラーを描き直します。 ミラーでは動作せず、Avatar Safetyがライトをオフにする場合があります。
はじめに タブ 4. ビルド・アップロードの自動処理 の ビルド時に深度ライトを削除 をオンにすると強制的に外します。深度マスターがオフの場合や、深度エフェクトがすべてオフの場合は、このトグルに関係なく外れます。
顔の投影影のフォールバック
Faceマテリアルの 深度オフ時は投影影 は既定でオフです。オンにすると、深度がない画面でも顔に投影影が残ります。
VRC Light Volumes
Built-inのVRChatアバターはLight Volumesを使えます。間接光・スペキュラー・ポイントライトの影が入ってきます。
- アバターのアップロードで必要なバリアントが自動でオンになります。
- VRC Light Volumes 3ワールドが公開する旧v2バッファーも読みます。基本の間接光・ポイントデータ互換です。
- v3ネイティブの影・クラスタリング・ライト別シェーディングはまだ使用しません。
- Light Volumesがないワールドでは、Unityのライトプローブに戻ります。
- インスペクターの VRCライトボリューム(テスト用) はエディターでの確認用です。
- 最終的な結果はワールドのボリュームデータが決めます。
- 既知の問題: v2・v3ワールドのVRC Light Volumeキャスト影は、0.1.10とまだ見え方が異なります。
他のビルドツールと併用するとき
MingToonのフックは遅い順序で実行されます。Modular AvatarやVRCFuryがマテリアルとAnimatorを処理したあとの最終状態を分析します。アップロード後にConsoleのエラーとbuild cloneを再確認してください。
照明を制御できないという前提
ワールドごとに照明は異なります。 ベースカラー保持 、 最終最小明るさ 、 最終最大明るさ 、 シーン照明色の影響 を実際のワールドの範囲に合わせてください。 → ライティングと影
知っておくこと
ハードウェア — シェーダーモデル4.5が必要です。満たせないとマテリアルがマゼンタで表示されます。 → ハードウェア要件
Quest — MingToonシェーダーを直接実行しません。 → VRChat Quest
URP — VRChatはURPを使いません。Built-inの制作物を使ってください。