悪のVRChatワールド制作記 第1弾「ショー舞台の音響設定」
記録日:
みなさんごきげんよう。怪人開発部 助手 兼 実験動物 兼 VRヴィランショー外伝 ワールド担当 プラナビットです。
VRヴィランショー 外伝 ヴァリ☆ドキ サマービーチ・フェスティバル。お楽しみいただけましたか? 来てくれた方はありがとうございます。見れた方も見れなかった方も、現在鋭意製作中のアーカイブ動画を楽しみにしていてくださいね。
VRヴィランショーに関する動画はこちらをチェック: https://youtube.com/playlist?list=PLN_odbWvHvf12bJAMAi-HJ99rGwBz4i7X&si=x-tiBsj6kBXI8AQM
さて、「悪のVRChatワールド制作記」と題しましたこちら。私が外伝ワールドや何やらを作るうえで使った技術や獲得したノウハウを書き残すための報告書です。皆様のワールド作りに役立てていただけますと幸いです。
第1弾のテーマは「ショー舞台の音響設定」です。ショーを彩る最重要要素にして最難関、音の設定をご紹介いたしましょう。
プレイヤー音声の制御 (拡声器とミュートエリア)
ヴィランショー外伝のワールドでは、演者の声を大きくしたり、スタッフルームの声を外に漏れない設定をしています。使用ツールはUdonVoiceUtils。
GitHub – Guribo/UdonVoiceUtils: https://github.com/Guribo/UdonVoiceUtils
プレイヤーの音声を操作する上で覚えておくべき最も大切なことは「違う作者同士の音声操作ギミックを同時に使うとほぼ確実にバグる」です。これを使う場合、他の音声操作ギミックは捨てましょう。
基本的なインストール方法はリンク先の説明書やサンプルシーンを見て頑張ってもらうとして、外伝ワールドでの設定を記載していきます。
ワールドに配置したPrefabは以下の通り。それぞれ役割を説明していきます。
TLP_Logger
おそらくデバッグ用のなにかです。デフォルトのPrefabから特に変更していません。置くだけ。
TLP_PlayerAudioController
おそらくこのギミックの親機で、デフォルト音声設定の変更も担当しています。
デフォルト音声設定を変更するためはこの中のLocalConfiguration, DefaultConfigurationの調整が必要です。MasterConfigurationは役割がよくわかりませんが、とりあえず適当に3つとも同じ設定値にしました。
この3オブジェクトについているコンポーネント、PlayerAudioConfigurationModelの設定を変更しています。
Occlusion Mask(遮蔽物によるリアルな音量減衰) = Nothingに変更。
デフォルトのOcclusion Factorが0なので働かないとは思いますが、負荷になるとよくないため。どのprefabに対してもこの項目はNothingに設定。
Voice Distance Far(ギリギリ声が届く距離) = 32, Voice Gain(音量)=10 に変更。
客席の端から端まで声が届くが、うるさくならない調整。
VoiceOverrideTriggerZone
範囲を指定して音声設定を変更するためのPrefabです。ワールド各所の設定を説明していきます。
スタッフルームの設定
Provecy Channel Id =1, Mute Outsiders = □ に設定。
部屋の外から音は聞こえるが、外に声が漏れないように。
PlayerAudioControllerの欄には別途シーンに配置したPlayerAudioControllerを当てはめる。
他のところでも同じ名前の設定欄を見つけたら同様の対応をします。子機と親機をつなぐイメージ
ステージの設定
Voice Distance Near(最大音量で聞こえる範囲)=1000, Voice Distance Far = 1001
遠くまで声を届ける設定です。
Voice Gain = 0
遠くまで声を届ける設定にした場合、Gainが元のままだと音割れしてしまうためゼロにします。
Voice Volumetric Radius=0
これを大きくしてしまうと音の方向性がなくなってしまうためゼロに。好みの問題ですが、演者の声は演者方向から聞こえたほうが違和感がないと思います。姿の見えないナレーターであればVolumetricRadiusを大きい数値にして方向性を無くすのもよいと思います。
Target Avatar Near Radius , Far Radius = 151
演者アバター仕込みの音声の届く距離は大きくします。
スポーン地点案内所の設定
Privacy Channnel ID =5, Mute Outsiders = ☑
ステージからの音声が聞こえないように、エリア外をミュートします。
インタビュー場所の設定
Privacy Channnel ID =5, Mute Outsiders = ☑
インタビューの邪魔にならないよう、エリア外をミュートします。
このVoiceOverrideTriggerZone は、インタビュー時間のみスイッチにてアクティブ化して使用します。
PickupMicrophone
持つと声が大きくなる、拡声器のPrefabです。設定方法はVoiceOverrideTriggerZoneと変わりません。
Priority=5に設定し、範囲指定よりは拡声器のほうが処理優先度が高くなるようにします。
その他はステージの設定と同じく声を大きくするようにします。
※注意 UdonVoiceUtlisは「1フレーム毎に1人ずつ順番に走査し音声設定を変更する」という挙動をします。インスタンスに60人いる場合、音声設定の変更には最悪60フレームかかります。演者は拡声エリアに立ち入ったりマイクを持ってから1~2秒後に話し始めないといけない、ということを覚えてください。走査速度は変更可能ですがその分毎フレームの負荷が若干増えます。
ワールド音声(効果音やBGM)
さて、今度は効果音やBGM、ワールド設置のAudio Sourceから出る音について説明します。
Unityで設定する音には「2D」「3D」の違いが存在します。ワールド音声ではこれをしっかり使い分けないとかなり違和感のある音響になってしまいます。
聞き手の頭の向きが変わると聞こえ方が変わる、方向感のある音源を「3D音源」とか「空間化音源」とか「Spatialize Sound」だとか言います。空間上のある点から発生しているべき効果音は3D設定にします。
逆に、頭の向きに関わらず一定に聞こえるものを2D音源といいます。BGMは2D設定にします。
下記のページを参考にしつつ設定してみてください。
VRChatでの音の付け方 ~AudioSource周りのあれこれ~ : https://note.com/watahumi_mina/n/n64972d18b2b3
2D音源(BGM等)
Spatializeはオフ。Spatial Blendは2Dにする。
3D音源(効果音等)
Spatializeはオン。Spatial Blendは3Dに。
また、VRC Spatial Audio Sourceコンポーネントを取り付け、設定を調整します。正直、設定項目の意味については自分もよくわかっていません……。
Far(ギリギリ聞こえる範囲)、Near(最大音量で聞こえる範囲)、Gain(音量の底上げ)、Volumetric Radius(おそらく指向性を減らす範囲)の設定を調整していい感じにします。
SE発生Udonギミック
Active Relay · mimyquality/FukuroUdon Wiki · GitHub https://github.com/mimyquality/FukuroUdon/wiki/Active-Relay
MimyLab様のActive RelayというUdonギミックは「このUdonがついたオブジェクトのアクティブ状態がオン・オフになるたびに何かをする」効果を持つUdonの詰め合わせです。
オブジェクトをオンオフできるあらゆるもの…スイッチギミックやAnimatorと組み合わせれば、発想次第で色々なことができてしまいます。
通常はUdonが書けなきゃできないようなあらゆるあれこれが、コード記述無しでできるようになる…特にプログラミングアレルギー持ちの方には革命となるでしょう。詳しくは公式の説明を見てみてくださいね。
これに含まれる「ActiveRelay to Effect」とAnimatorを組み合せることで、「花火を発射しながら音を鳴らす」ギミックを製作しました。
アバター音源の罠
ワールドではなく、アバターに音声を入れることもあるでしょう。ワールド配置の音声と設定方法はほぼ同じですが、ひとつ大事な注意点があります。
アバターに仕組んだAudio Sourceで最も注意すべきこと…それは、Audio Sourceと同一オブジェクトにVRC Spatial Audio Sourceがついていなければ、アバタービルド時にデフォルト設定のものが強制付与されるということです。
VRC Spatial Audio Sourceは前述の通り、音声の届く距離や指向性を制御するコンポーネントです。Audio Source側の設定を一部上書きする挙動をする、強情なやつです。
アバターに仕組んだ音源を調整するときは、必ずVRC Spatial Audio Sourceを一緒に付与し、VRC Spatial Audio Sourceの設定のほうを調整するとよいでしょう。
おわりに
ここまで見てくださりありがとうございました。皆さまのワールド作りの一助になれたのなら幸いです。それでは、今後とも悪役結社ヴァリアールの活躍をお楽しみに。