CRI ADX(Unreal Engine) v1
中級編23 ヘッドフォン・イヤホン使用時の自然な3Dサウンド
マニュアルに掲載している「3Dサウンド」は、音の発生源の方向によってパンが左右に振られる機能ですが、「ゲームプレイヤーがスピーカーで音を聴く」ということを前提としているため両耳間時間差や音の回折等は考慮されません。
そのためゲームプレイヤーがヘッドフォンやイヤホンで音を聴く場合は、少し不自然な聴こえ方になってしまう場合があります。
例えばゲームプレイヤーの真横に音源がある場合、音源に近い方の耳には音が届きますが、反対側の耳には音が全く届かない結果となります。
本チュートリアルでは、ヘッドフォン・イヤホン使用時のより自然な3Dサウンドを実装する方法をご紹介します。
「ヘッドフォンバーチャルサラウンド」というエフェクトを使用することで実現可能です。
「ヘッドフォンバーチャルサラウンド」とは?
これはADX で使用できるサウンドエフェクトの1つです。以下のような特徴があります。
- 音声を聴くゲームプレイヤーの左右の耳それぞれの音圧差が考慮されます
- 音が左右の耳にそれぞれ到達するまでの時間差が考慮されます
- 頭部に対する音の回折(回り込み)が考慮されます
- 耳たぶによる音の変化は考慮されません
- 音像定位
- ゲームプレイヤーは水平方向(左,前方,右,後方等)のどの方向から音が鳴っているのかを知覚できます
- ゲームプレイヤーが垂直方向(上方,下方等)のどの方向から音が鳴っているのかを知覚することはできません
注意
本記事ではヘッドフォンバーチャルサラウンドを自然な3Dサウンドを実装する手段として紹介していますが、厳密に言えば、これはサラウンド音声(5.1ch、7.1ch)をヘッドフォン環境で疑似的に再現するためのエフェクトです。
現実世界の音の聴こえ方を正確に再現する機能ではない点に注意してください。
使用方法
ADX のサウンドエフェクトとしてヘッドフォンバーチャルサラウンドを追加するには、CRI Atom Craft 上での設定が必要です。
以下、CRI Atom Craft 上での設定手順を説明します。
DSPバス設定の画面を開きます
DSPバス設定上で右クリックをして新しいバス「Real3D」を作ります
エフェクト横の「+」からヘッドフォンバーチャルサラウンドを追加します
センド先をMasterOutに設定します
キュー設定用バスマップの画面を開きます
バスセンド一覧に「Real3D」を追加します
キューを作ります
波形を選択し、インスペクターのパンタイプから3Dポジショニングに設定します
バスセンドの画面を開き、バスマップの「Real3D」にチェックを入れます
MasterOutにはチェックを入れないようにしてください
ヘッドフォン環境でこのキューを聞けば、自然な3Dサウンドとして聴こえます。
「ヘッドフォンバーチャルサラウンド」エフェクトを動的に有効化・無効化するには
上述のキューをヘッドフォンやイヤホンで聴くと自然な3Dサウンドに聴こえます。
しかしスピーカーで聴くと違和感を感じるかもしれません。これはスピーカーからの発音にHRTFが適用されるためです。
ゲームプレイヤーの視聴環境に応じて「ヘッドフォンバーチャルサラウンド」エフェクト(以下「本エフェクト」と表記)のON/OFFを切り替えると良いでしょう。
「Set Effect Bypass」関数/ノードを使用することで、本エフェクトの ON/OFF を動的に変更することができます。
- 上図では「Bus Name」に「Real3D」を指定していますが、もしAtomCraft側で別の名前を設定している場合はそれと同じ文字列を指定してください。
- 「Effect Name」には必ず「CRIWARE/HeadphoneVirtualSurround」を指定してください。
- 「Bypasses」にチェックを入れることで本エフェクトが掛からなくなります。 この場合、通常の3Dポジショニングと同じ聴こえ方になります。
逆に本エフェクトを掛けたい場合は「Bypasses」のチェックを外した状態でこのノードを実行します。
Tips
既に再生中の音声も「Set Effect Bypass」の影響を受けますか?
はい、影響を受けます。
ゲームプレイヤーがスピーカーで音を聴いているかどうかを検出するにはどうするのですか?
CRI側ではそういった機能はご提供しておりません。
オープンソースのライブラリもしくはコンシューマーゲーム機のライブラリがAPIを提供していないかどうかご確認ください。
もしくは、ゲームのコンフィグ画面でゲームプレイヤー自身に設定してもらうアプローチもご検討ください。