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

技術仕様・既知の制限

このページは Real Sweat System v1.1.0 の現在の仕様をまとめたものです。Setupで選択したModule、アバターのRig、選択したEffectによって、実際に生成されるメニュー・Parameter・Objectは変わります。

Module別の技術的な範囲

項目Sweat Base ModuleSweat Effects ModuleFull Pack
肌表面の汗・流れる滴
Body用の汗MaterialとRestデータ
Tess / No Tess・相手側を低負荷
複数Element・追加Skinned Mesh Renderer(実験的)
表示マスク・濡れ肌光沢・Light Volumes切替
落下する滴・床の濡れ跡
息・湯気
2D/3Dパーティクル・Custom Steam
Manual Mode
対応RigでのAuto Mode
Body Material・Body Mesh・Rest構成の変更ありなしBase側のみ

Effects-only構成でも、Particleの放出元としてBody Meshを指定します。ただしBody Material、Body Mesh、Rest Vertex Data、テッセレーション構成は変更しません。

対応環境

  • Unity 2022.3
  • VRChat Avatars SDK3
  • Modular Avatar
  • PC版VRChat(Direct3D 11)

本製品は PC版VRChat向けです。Quest単体版は対応していません。

Humanoidが主な対応対象です。HumanoidでMotion Pendulumを構成できる場合はManual ModeとAuto Modeを利用できます。Non-Humanoid、または必要なBone情報を取得できない構成ではManual Modeへフォールバックします。Rigによる機能差は対応環境・互換性を確認してください。

現在の対応範囲

  • メインBody SkinnedMeshRendererでは、複数のMaterial Elementを同時に追跡できます。
  • 別の SkinnedMeshRenderer は実験的な追加対象として登録できます。対象ごとに専用Material、Restデータ、サイズ・密度・マスクを管理します。
  • 実験的な追加対象には読み取り可能なMesh、有効なSubmesh・Material・Tangent、固有のGameObject/Animation Path、他の対象と共有しない固有Material系統が必要です。
  • 複数Rendererを実行時に差し替える構成、および全ての第三者製Optimizer、Mesh/Material統合、Face Tracking、アップロード時変換との組み合わせは保証されません。

同期Parameter

次の表は、Auto Modeを利用でき、該当Moduleの任意Effectを全て導入した場合の 最大同期値です。Setupは導入していないModule、無効なEffect、利用できない機能のParameterを省略するため、実際の値はこれより小さくなる場合があります。

構成同期コスト(最大)
Base / No Tess21 bit
Base / Tess Support22 bit
Effects23 bit
Full Pack / No Tess26 bit
Full Pack / Tess Support27 bit
Effects + 体の湯気・吐息の濃さ31 bit
Full Pack + 体の湯気・吐息の濃さ34 bit / Tess 35 bit

最大値には、Sweat %、Auto Mode、汗の表示、表示範囲、Module別の切替が含まれます。Effectsの個別切替は、落下する滴・床の濡れ跡・息・湯気を全て導入した場合に最大4個の同期Boolを追加します。テッセレーション対応は同期Boolを1個、任意の体の湯気・吐息の濃さは保存・同期Floatを1個(8bit)追加します。

Animator内部の計算Parameterや、同期しないExertion・Breath Rateは上の同期コストに含みません。

Setupは導入予定のParameter名をAvatar Expression Parametersと他のModular Avatar Parameters宣言(接頭辞・リマップを含む)に照合します。名前の衝突はSetup前に停止し、予測合計が256bitを超える場合は続行前に警告します。運動強度・体熱・落下活動・皮膚の濡れなどの内部信号はNotSyncedで、同期コストを追加しません。

汗Materialと描画数

ここでのMaterial数は、BaseがBodyの汗表面用として管理するMaterialだけを指します。EffectsのParticle用Materialは含みません。

対象ごとのBase導入設定汗表面Materialその対象で同時に描画される汗Material
立体機能を搭載しないNo Tess 1個1個
立体機能を搭載するTess + No Tessの2個1個
Effects-onlyBody用汗Materialを追加しない0個

立体機能を搭載しても、各管理SlotでTessとNo Tessを同時描画するのではありません。ゲーム内のTess切替は、Tess対応として管理されるすべての汗Slotをまとめて切り替えます。

複数のBody Elementまたは追加Rendererを登録した場合、各対象につき上記のMaterial系統と描画(ドローコール)が追加されます。ゲーム内のTess切替は、Tess対応として管理されている全対象をまとめて切り替えます。

PhysBoneとCollider

項目Setupが作成する数
Auto Mode用 VRCPhysBone対応Rigでは1個、Manual-only構成では0個
VRCPhysBoneCollider0個

Auto Mode用PhysBoneは、RealSweat配下の専用Motion Pendulumに作成されます。Real Sweat Systemは、アバターに既に存在する胸・髪・衣装などのPhysBoneやColliderを意図的に変更しません。

既存PhysBoneが動かなくなった場合

Real Sweat Systemの標準Setupが既存PhysBoneを編集する仕様ではありません。別のToolによるBuild時のBone・Component統合、Avatar側のConstraint、またはPlay Modeで生成された最終構成を確認してください。

Rest Vertex Data

Base Moduleは選択した表示Meshに対応する、頂点単位の次の3つのRestデータTextureを作成します。

  • Rest Position
  • Rest Normal
  • Rest Tangent

Rest Vertex Data Bakerは元のFBX、sharedMesh、UV、BlendShape、他のMaterialを直接変更せず、Meshを読み取って生成したTextureを対象の汗Materialへ割り当てます。RestデータはMeshの頂点構成に対応するため、異なるMesh間で同じ汗Materialを共有できません。追加対象にもMeshごとのRestデータが必要です。

Setup後にBody Meshの置換、頂点構成の変更、Submesh統合を行った場合は、Restデータと最終表示Meshの対応が無効になることがあります。

Render Queueと影

  • 自動描画順では、汗MaterialのRender Queueを 2455 に設定します。
  • 選択したBody Materialは 2454以下にします。
  • 実験的な追加対象は max(2455, 選択元MaterialのRender Queue + 1) を使用します。
  • 自動描画順を使用できない構成では手動Queueを使用できますが、2501以上ではTransparent Sortの影響を受けます。
  • ボディのShadow Strengthに合わせるを有効にすると、Setupまたは「FXに適用」時に対象Body Materialの_ShadowStrengthを汗Materialへ反映します。

詳細と例外は対応環境・互換性を確認してください。

Tess・相手側を低負荷・Effectsの技術的な動作

Tessellation

Base Moduleの任意機能です。No Tessより滑らかな輪郭と水滴の立体的な変位を追加しますが、GPU負荷が増加します。搭載しない場合はNo Tess Material 1個だけをアップロードします。

相手側を低負荷

Base Module導入時に利用できます。有効にすると、他のユーザーから見える汗をNo Tessの内蔵Lite経路へ切り替えます。

  • Tess Support搭載時: 他のユーザーにはNo Tess Material + Lite経路を使用
  • Tess Support非搭載時: 同じNo Tess MaterialのLite経路を使用
  • 自分側: 自分が選択したTess / No Tess状態を維持
  • 同時描画: 汗Materialは常に1個

Effects

Effects ModuleはParticleを使用して落下する滴、床の濡れ跡、息、湯気を表現します。各EffectはSetupで導入したものだけがメニューとParameterへ追加され、独立した エフェクト サブメニューで個別に無効化できます。

  • 2D品質は従来の軽量Particleです。3D品質は任意の高負荷Mesh Particleで、Setupの再実行によって切り替えます。
  • 3D落下水滴では任意の衝突スプラッシュを使用できます。
  • 床の濡れ跡は落下水滴の衝突サブエフェクトです。落下水滴が無効なら生成されません。
  • 体の湯気はミラーで Full / Low / Hidden を選べます。2DのLowはぼかしを省略しますが、3DのLowは現在Fullと同じ見た目・負荷です。
  • Custom Steam Pointは有効スロット最大4個、左右ペアは2スロットを使用します。内蔵/Custom合計12個が上限で、10個を超えると警告します。発生量Weightの合計が4.0を超える場合は、全Emitterを同じ比率で下げて正規化します。有効なAnimatorとMA Bone Proxyを解決できることが必要です。

床の濡れ跡はWorldのFloor ColliderとDefault/Environment Layer構成の影響を受けます。息と湯気は必要なHead・Chest Anchorを解決できる構成で生成されます。一人称吐息にはMA Visible Head Accessoryが必要です。

Build時にMeshを変更するTool

Unity Editorでは正常で、VRChat内だけ汗の位置・形・表示が崩れる場合は、アップロード時に別のToolが次のいずれかを変更している可能性があります。

  • 対象Body RendererまたはMesh
  • 頂点・Submesh構成
  • Material Slotの順序
  • Restデータを参照する最終表示Mesh

この場合、該当Toolに除外リストがある場合は、Real Sweatが使用するBody Rendererを最適化・統合の対象から除外してください。Body Rendererを除外する機能が無い場合、そのToolとの互換性は保証できません。

Mesh変更を先に確定できるWorkflowでは、最終Meshへ変更した後にReal Sweat SystemのSetupを実行してください。Build時にのみ変更される構成では、最終結果との互換性を個別に確認する必要があります。

追加対象の整合性とビルド停止

導入済み対象の生成RealSweat MaterialまたはRenderer Slotを直接削除、空欄化、移動、置換、統合すると、対象を意図的に無効にしたのではなく導入状態の破損として扱います。Tuningに 修復が必要 と表示し、別Slotへのフォールバックや黙った省略を行わず、アバタービルドを停止します。

RealSweatSystem Tuning追加対象を管理... または Setupで修復... から現在の対象を読み込んだSetupを開きます。維持する場合は完全なSetupで修復し、削除する場合は一覧から対象を外して完全なSetupを実行してください。RealSweatSystemの案内本文は選択中のツール言語に従いますが、Unity/NDMFの例外タイトルとスタックトレースは英語のままの場合があります。