【Project Acoustics 連載記事:第3回】Project Acousticsを使ったプロジェクトを一から作ってみた
新人の長谷川です。
Unreal Fest. West 2022でブースに来ていただいた方ありがとうございます!!
イベントでは今回の記事についてのデモを出していたのですが、そちらも好評でモチベーションがうなぎ上りです。
これまで二回に分けて Project Acoustics (以下、Acoustics)について記事を書いてきました。
第一回では Acoustics の紹介について、
第二回では Microsoft 社が公開している Acoustics のサンプルプロジェクトの動かし方について書きました。
そちらもぜひ見てくださいね。
さて、今回は Acoustics を実際のプロジェクトに組み込んでみよう!!って方向けにベイク(事前計算)の手順からエフェクトの適用までの流れを説明しますね。
作業の流れ
だいぶ作業量があるので、まずはざっと簡単にまとめてみました。
今回はテンプレートプロジェクトを使って解説しますね。
- Acousticsプラグインの有効化
- Acousticsのベイク処理の準備
- Acousticsの設定
- Sound Waveへの適用
Acousticsプラグインの有効化
まず、Acousticsプラグインが有効になっているかを確認します。
プラグインを有効化するには、次の二点の設定が必須です。
- 「すべてのプラグイン」メニューの「インストール済み」=>「Audio」=>「Project Acoustics for Unreal Audio」のチェックが”オン”になっていることを確認してください。
注意
「インストール済み」の項目に「Project Acoustics for Unreal Audio」がない場合は「マーケットプレイス」から「Project Acoustics」をインストールしてください。
・「プロジェクトの設定」の「プラットフォーム」->「Windows」->「オーディオ」->「ソースデータオーバーライド」に「Project Acoustics」を選択します。
空間情報のベイク処理準備
Acousticsを使うにあたって、レベル上に配置が必須となるアクタがあります。
ベイク処理に必要となる「AcousticsProbeVolume」
Acousticsは「AcousticsProbeVolume」アクタをレベル上に配置することが必須となっています。
このアクタはAcousticsの音響を適用する空間を指定します。
空間情報のベイク処理では「AcousticsProbeVolume」アクタで囲われた空間内が計算の対象となります。
そのため、範囲外は音響に影響しない、つまり空気として仮定されます。
補足
複数配置が可能で「詳細」の「Volume Type」からその範囲をベイク処理に含めるか(Include)、除くか(Exclude)を選択できます。デフォルトは「Include」になっています。
空間情報のベイク結果を適用するための「Acoustics Space」
ベイク結果にはレベルのどの位置かについて情報がありません。
このままではレベル上のどの空間にベイク結果を適用するかわからないので、「Acoustics Space」で指定します。
今回はベイク時の配置と変わらないので「AcousticsProbeVolume」の絶対位置を原点にします。
補足
「AcousticsProbeVolume」がずれてしまうと、音響効果がずれて適用されてしまいます。
「AcousticsSpace」アクタの「Debug Controls」=>「Draw Voxels」にチェックを入れるとずれているか確認できます。
チェックを入れることで以下のように確認ができます。
・ベイク結果の適用先の座標が一致している場合
・ベイク結果の適用先の座標がずれている場合
AcousticsSpaceの位置を原点からずらした場合、矢印の位置のように位置がずれてしまいます。
位置がずれ状態では適用されるパラメータがずれるため、本来響くはずの位置で響かないといった現象が発生します。
Acousticsの設定
ベイク処理には4つの工程があります。
今回はAcousticsの公式サイトを引用し、個人的に躓きそうな点を補足していきます。
- オブジェクトにタグ付け(Objectsタブ)
https://learn.microsoft.com/ja-jp/gaming/acoustics/unreal-baking-objects
ベイク処理をするには空間を定義しなければなりません。
そこで、Acousticsではオブジェクトに対して2種類のタグをつけて定義をします。
・「Geometry」タグ
音響に影響を与えるオブジェクトであることを示します。
このタグが付けない限りベイク処理に考慮されません。
例えば、ホログラムのような音響に影響を与えたくないオブジェクトであれば、あえてタグをつけないという選択肢もあります。
・「Navigation」タグ
プレイヤーが移動できる地面を指定します。
ベイク処理ではプローブと呼ばれる位置での音響特性を計算します。
このプローブは自動的に配置されますが、どのメッシュ上に配置するかを決めるために必要です。
なので、イメージとしてはプレイヤーが移動できる範囲を網羅するようにタグをつけておけば問題ないです。
2つのタグを一つのオブジェクトにつけることも可能です。
地面とかは2つのタグが付いていることになりますね。 - 材質の指定(Materialsタブ)
https://learn.microsoft.com/ja-jp/gaming/acoustics/unreal-baking-materials
いくつか材質を選べるようになっていますが、パラメータは吸収係数一つです。
大きな値になるほど、音が響かなくなり、
小さな値になるほど、音が響きやすくなります。 - ベイク処理に必要な情報を計算(Probesタブ)
https://learn.microsoft.com/ja-jp/gaming/acoustics/unreal-baking-probes
Objectタブで説明したプローブの配置方法を指定するタブになります。
プローブの間隔が広いということは精度がそれだけ粗くなりますが、事前計算が早く終わります。
自動とは言えども、配置しすぎるといつまでたっても計算が終わらなくなりますから要注意です。 - ベイク処理(Bakeタブ)
https://learn.microsoft.com/ja-jp/gaming/acoustics/unreal-baking-bake
最後のベイク処理では「Microsoft Azure」を使った高速な計算とロカールPCで計算する2通りがあります。
ローカルPCはお金がかからないので気楽に試せますが、
時間がかかるので注意が必要です。
Sound Wave への適用
やっと音声にエフェクトをつける作業になります。
ここまでできればあと一息です。
ここでは例として音声ファイル「Voice」をインポートした場合を説明します。
「Voice」の詳細を開き、「減衰設定」から「新規アセットを作成」の「サウンド減衰」を選択してアセットを作成します。
「サウンド減衰」の詳細を開き、「ソースデータオーバーライドの有効化」にチェックを入れて、「ソースオーバーライドプラグイン設定」のエレメントを一つ追加してください。
追加したエレメントに「新規アセットを作成」の「Project Acoustics Source Data Override Source Settings」を選択してアセットを作成してください。
このアセットの詳細から Acoustics が生成した音響パラメータ(オクルージョンや減衰)に対しての調整を行うことができます。
まとめ
かなりの文量になってしまいましたが、いかがだったでしょうか。
サンプルは動かしたけど、難易度が高すぎてできなかった人の手助けになるとうれしいですね。
次回はなんと、CRI ADX も登場します。
Unreal Fest. West 2022に行けなかった方も現地で展示したデモを体験できる記事なので、
お楽しみに!!
Project Acoustics 連載記事
【Project Acoustics 連載記事:第1回】空間音響のためのキラーエンジンProject Acousticsに触れる!!
【Project Acoustics 連載記事:第2回】Acoustics Sampleを動かしてみる
ピンバック: 【Project Acoustics 連載記事:第4回】Acousticsを使ってADXの可能性を検証してみた - CRIWARE Portal