らくとあいすの備忘録

twitter : lactoice251

雑記20210512

この雑記は、少し試してみたいことが出来たときに、それを手短にまとめて置いていこうと思っているものです。 最近時間が分断気味な状態がしばらく続いているので、ちょくちょくと手を動かす理由付けとしてはじめてみました。 身の回り (極めて局所的) で良く書かれている「日記」に触発された部分は多分にあると思いますが、題材としてその日あったことを取り上げるつもりでは今のところありません。目下は、この雑記を書こうと思った発端の一つでもある、Unity/VRChatの3D Audioについてちまちまと調べものをしたり、検証したりして書いていきたいと思っています。 ある程度継続して続いて、それなりにまとまったらタイトルのついた記事になるかもしれませんが。今のところは未定です。三日坊主で終わる可能性もなきにしもあらずなので。

Unity/VRChatの3D Audioわからんの話

雑記のハードルを下げるためにも、今日はわからんという話だけを書こうと思います。 3年ほどではありますが...しばしばUnity/VRChatで3D Audioを触ってきましたが、よくわからんな?と思いながら都度調整してきた部分が色々とあります。 特に、VRC_SpatialAudioSource は、毎度雰囲気で使っているところがあります。 (あるいは使ってません...。)

ドキュメントを見るぐらいのことはしているんですが、あんまり詳しいことは書いていないようです。 Spatializationに関連する事項として書かれているのは逆二乗減衰ぐらいのようですが、まさか音量を調整する処理しか入ってないということはないでしょう。 実際、音量が距離で変わるだけであれば、自分の前方の音源と後方の音源は区別が出来ないはずですが、VRChat上でVRC_SpatialAudioSourceを付けた音源はその区別があると信じています (そう感じてはいるんですが、厳密に波形を比較したりはしていないの意味)。人間が、前方の音と後方の音を区別出来るのは、耳や頭の形が前後対称でないからです。このような人間の頭部構造に由来する音の伝達の違いは頭部伝達関数 Head-Related Transfer Function (HRTF) によって表現されますが、VRC_SpatialAudioSourceが前後を区別出来るものであるとするならば、そういった効果が (どんな程度であれ) ある程度含まれていることになります。また、現実をシミュレートしているのだとすると、空気を通過することで高音の方が素早く減衰する効果を反映するために多少ローパスフィルタがかかっているかもしれません。

VRC_SpatialAudioSource以前に使われていた、ONSPAudioSourceについては、公式で説明があるように、上記のようなSpatializationの効果は十分に実装されているようです (VRChat内でどの程度動いていたのかはわかりませんが...)。VRC_SpatialAudioSourceもこれを引き継いでいるものと思っているのですが、明確な記述は見つけられていません (もし知っている人がこれを見ていたら、良かったら教えて下さい)。仮に完全にONSPだと同じだとして、実際VRChatでどう動作しているのかは、いくらか検証しておきたいところです。

今のところ思いついている確認したい項目は次のようなものです:

  • HRTFの効果は入っている? (前後の区別は、思い込みではなく本当についているか?)
  • 距離減衰についてどんな効果が含まれているか。
  • VRC_SpatialAudioSourceをつけなかった場合は何が変わるか。
  • Unity上での再生とVRChat上での再生は違うように感じる (VRC_SpatialAudioSourceはUnity上で動いていない?)。何が違うのかは確認しておきたい。
  • VRC_SpatialAudioSourceを付けた場合に、Unityの標準のAudioのパラメータの影響のかかり方はどのように変化するか (あるいはしないか)。

今後の雑記ではこのあたりを、少しずつ調べられたらと思っています。 場合によっては実験をするという方向ではなく、ソースを探して読むという方向になるかもしれませんが。