VRC Spatial Audio Source
VRC_SpatialAudioSourceを使用して、Unityの Audio Source コンポーネントに3D空間オーディオを適用します。
追加すると、VRC_SpatialAudioSource は自動的にUnityの Audio Source コンポーネントを追加します。
このコンポーネントはアバターとワールドの両方で使用できます。

Unityエディタインターフェース
このコンポーネントは、以下を表示する2つの Unity Gizmos を生成します。
- Far
- Near
さらに、Audio Source コンポーネントは「Volumetric Radius」ギズモを生成します。
ギズモの見た目は以下の通りです。

コンポーネントのすべてのプロパティにはツールチップが含まれています。プロパティ名にマウスを合わせると、短い説明が表示されます。
減衰(Falloff)の仕組み
単位はすべて メートル です。音声強度の減衰は、デフォルトでは下図のように、おおよそ距離の逆二乗に従います。

Audio Source にあるグラフを使用して、曲線をカスタマイズできます。この曲線によって、特定の距離における音声強度が決定されます。
Far の値に近い範囲では、設定に応じて音声がより急速にフェードアウトする場合があります。
2Dオーディオの使用
2Dオーディオとは、ワールド内のどこにいても音声の音量が一定である状態を指します。これは、すでに空間化された音源として録音された環境音(フィールドレコーディング)や、背景音楽などに使用されます。
Use Spatialized Audio オプションを無効にすることで、必要に応じて2Dアバターオーディオを使用できます。別のオーディオ減衰曲線を使用することを選択しない限り、音声の強度はこれまでと同様に距離に応じて減衰しますが、空間化はされなくなります。
以上のことを踏まえ、2Dオーディオの使用は推奨しません。 現実世界のすべての音源には、明確な点音源またはボリューム音源が存在するためです。それでも2Dオーディオを使用したい場合は、必ず以下の手順を行ってください。
VRC_SpatialAudioSourceのUse Spatialized Audioのチェックを外すAudio Sourceの Spatial Blend を100% 2D に調整する
アバターでの空間オーディオ(Spatial Audio)
VRChatではアバター上で VRC_SpatialAudioSource を使用できますが、いくつかの制限があります。これらの制限は、悪用や悪意のあるサウンドを防ぐために設けられています。
これらの制限を除けば、VRC_SpatialAudioSource はワールド内とまったく同じようにアバター上でも動作します。
アバターのオーディオソースに VRC_SpatialAudioSource を追加することを忘れないでください!追加しなかった場合、VRChat SDKによってコンポーネントが自動作成されデフォルト設定が適用されるため、予期しない、文書化されていない望ましくない動作が発生する可能性があります。
既存のアバターの Audio Source を使用する場合は、そこに VRC_SpatialAudioSource コンポーネントが含まれていることを確認してください!
コンポーネントプロパティ
VRC_SpatialAudioSource コンポーネントには以下のプロパティがあります。
実行中にアニメーションを使用してこれらのプロパティを調整することはサポートされていません。これらの値は初期化時に設定されます。
Audio Source のプロパティのうち、pitch(ピッチ)など、空間化設定に関連しないプロパティをアニメーションさせることは引き続き可能です。
| プロパティ | 説明 |
|---|---|
| Gain | 音量への追加ブースト(0~24 dB)。デフォルトでは、ワールドのオーディオソースには10dBのブーストが適用されます。アバターのオーディオソースは最大10dBまでに制限されています。 |
| Far | 音量が減衰して無音になるまでの距離(メートル単位)。デフォルトは40mです。アバターのオーディオは最大40mまでに制限されています。 Farは、VRC_SpatialAudioSourceの「Use Spatializer Falloff」チェックボックスをオンにした場合にのみ、Audio Sourceのカーブを上書きします。 |
| Advanced: Near | 音量の減衰が始まる距離(メートル単位)。リアリズムと効果的な空間化のために、この値は0に保つことを推奨します。デフォルトは0mです。 Nearは、VRC_SpatialAudioSourceの「Use Spatializer Falloff」チェックボックスをオンにした場合にのみ、Audio Sourceのカーブを上書きします。 |
| Advanced: Volumetric Radius | 通常、オーディオソースは点音源としてシミュレートされますが、この値を変更することで、より広い範囲から音が聞こえるようにできます。この設定は慎重に使用する必要があり、主に通り過ぎる際に「大きく」聞こえる必要がある遠方のオーディオソース用です。 最良の結果を得るには、リスナーがこの半径に近づかないようにしてください。特別な意図がない限り、0に保ってください。デフォルトは0mです。 Volumetric Radiusの値は常にFarより小さくする必要があります。 |
| Advanced: Use AudioSource Volume Curve | AudioSourceの「3D Sound Settings」にあるボリュームカーブを使用します。オフの場合、Inverse Square(逆二乗)減衰を使用します。リアルで正確な空間化を確保するため、この設定は無効にしておくことを推奨します。 デフォルトはFalseです。 |
| Advanced: Enable Spatialization | このチェックを外すと、デフォルトの逆二乗減衰カーブが無効になり、代わりにAudio Sourceの空間化設定が使用されます。 デフォルトはTrueです。 |
アバターの制限
アバター上の Audio Sources におけるフォールオフカーブを調整することが可能です。Use AudioSource Volume Curve を True に設定し、Audio Source でカーブを調整するだけで、VRChat はデフォルトの逆二乗則の代わりにそのフォールオフカーブを使用します。
ただし、前述の通り、アバター上の VRC_SpatialAudioSource コンポーネントにはいくつかの制限があります。これらの制限は実行時に適用されます。
Gainは 10db を超えてはなりません。Farは 40m を超えてはなりません。
Player Audio によってこれらの設定を上書きすることも可能です。
アバターにおいては、GameObject 全体を無効化/有効化するよりも、Audio Source コンポーネント自体を無効化/有効化する方が推奨されます。
カーブの圧縮 (Curve Squashing)
通常の Far 距離よりも短いワールドで、カスタムロールオフカーブを持つアバターオーディオを再生しようとすると、VRChat はアバターのオーディオソースの「Max Distance」設定を変更することでカーブを「圧縮」します。Unity 上の Audio Source で「Max Distance」の範囲を調整すると、どのような変化が起こるかを確認できます。
アバターオーディオコンプレッサー
VRChat は、意図的に不快なほど大きな音を出されるのを防ぐため、アバターオーディオチャンネルにコンプレッサーを使用しています。適切な音量レベルのアバターオーディオソースを通常通りに使用する分には、この影響を受けることはありません。
コンプレッサーを回避するためのヒント
アバターにオーディオを設定する場合、コンプレッサーに引っかからないようにするために事前にいくつか対策できることがあります。
- エフェクトのかかっていない「ドライ」なオーディオファイルを使用してください。リバーブやディレイは、コンプレッサーの「ポンピング」現象を引き起こす最も大きな要因となります。
- オーディオファイルには少し余裕を持たせてください。言い換えれば、波形を範囲の上下限ギリギリまで広げないようにします。Audacity(またはその他の波形編集ソフト)で、オーディオを -6db から -12db の間にノーマライズ(正規化)してください。
- 極端に短いアタックで波形が急激に高くなるピークを避けてください。つまり、オーディオの音量を突然非常に高いレベルまで「突き上げる」ようなことはしないでください。ノーマライズを行えば、通常こうしたピークはファイルから除外されるはずです。
古いシーンにおけるONSPの置き換え
Build Control Panelにある「Enable 3D Spatialization on all AudioSources」ボタンを使用すると、ONSPAudioSource が VRC_SpatialAudioSource コンポーネントに変換されるようになりました。これらのソースの一部は、変換後に調整が必要となる場合があります。
最終更新: