バージョン
(以下「Wwise Reflectのプロパティ」参照。)
Wwise Reflectプラグインエフェクトは、マルチtapのフィルタ付き時変性( time-varying)delay lineを実装して、スペーシャリゼーション(spatialization)されたアーリーリフレクションのシミュレーションを目的とします。
音響のジオメトリックモデリングを検討す上で、スペーシャリゼーションしたアーリーリフレクションは"image source technique"を使って計算することが典型的です。このアプローチで、アーリーリフレクションをイメージソースとして、まるで音が反射するジオメトリが鏡であるかのように表現できます。下図は、そのイメージ図です。
![]() |
この図では、エミッタEとリスナーLが、囲いのボックス(黒の実線)で表された1つのジオメトリ(部屋)内に存在します。エミッタからリスナまでの反射パスが、緑の実線で表されています。イメージソース手法(image source technique)では、各表面に対して、エミッタの"鏡像(イメージ)"を生成します。イメージソースは、エミッタを通る面に垂直な直線上の、面から同じ距離だけ離れた、面の裏側の場所に配置されます。音が伝わる距離の合計は、イメージソース・リスナーカンの距離に該当します。なお、イメージソースの配置はエミッタのポジションやジオメトリに厳密に依存するもので、リスナーのポジションに関係ありません。
ゲームが、イメージソースのリストを対象となるプラグインインスタンスにプッシュします。イメージソース毎に、その相対的な3Dポジョン、ディスタンスに基づくカーブ、そして関連 「Acoustic Textures」に基づいて、ディレイラインにタップが追加され、フィルタリングされ、パンニングされ、スケール調整されます。
Wwise Reflectはアーリーリフレクションを表現するAuxiliary Busで使うのが典型的です。アーリーリフレクションのシミュレーションは、バスに送られる音を発するゲームオブジェクトがこのバスに関連付いていれば、正しく行われます。
アーリーリフレクション(ER)用にAuxiliary Busを追加します。
Auxiliary Bus Property EditorのGeneral Settingsタブで、Channel Configurationを1.0(モノ)に変更します。Reflectは、マルチチャンネルのインプットサウンドに対応できるものの、最初にそれをダウンミックスしてモノにします。このため、バスをモノにした方が、Wwiseで不用にもボイスのスペーシャリゼーションを計算してAuxiliary Busに送る手間を省けるので、より効率的です。
![]() |
注釈 |
---|---|
バスをモノにしても、Reflectのアウトプットに影響しません(アウトプットはモノになりません)。アーリーリフレクションのスペーシャリゼーションを行うアウトプット側の設定は、ReflectのEffect Settingsで設定します。 |
Effectsタブで、Wwise Reflectのインスタンスを追加します
PositioningタブでListener Relative Routingオプションをチェックしますが、3D Spatializationの設定はNoneのままにします。そうしないとWwise Reflectによって生成され空間配置(spatialize)されたイメージソースを、Wwiseが更に変換(パンニングと減衰)させてしまうからです。
![]() |
注釈 |
---|---|
減衰設定はこのバスで行わず、Reflect Effect Editorで減衰のカスタム設定を行います。 |
反射する音を確認します。
Sound Property EditorのGeneral Settingsタブで、Use game-defined auxiliary sendsオプションをチェックします。
一般的に、サウンドのスペーシャリゼーションを3Dで行い、減衰を適用します。Sound Property EditorのPositioningタブで、Listener Relative Routingオプションをチェックし、3D Spatializationの設定をPosition + Orientationにします。Attenuationグループボックスで、Attenuationを1つ追加します。
Reflect Effect Editorで、エフェクトの設定を行います。
Output Configプロパティを変更し、アウトプットチャンネルのコンフィギュレーションを設定します。Parent Busは、Auxiliary Busの親バスのアウトプットのチャンネルコンフィギュレーションを表します。
イメージソースが見えるように、Max Distanceの数値が低すぎないように注意します。
サウンドバンクを生成します。
Reflectのライセンスを取得してあることを確認します。
最初に 「WwiseプロジェクトでWwise Reflectを設定」 してから、ゲーム側での設定を行います。これには、Spatial Audio APIを使います。
確実にReflectを登録するために AK/Plugin/AkReflectFXFactory.h
を含めます。
Spatial Audioヘッダーファイルである AK/SpatialAudio/Common/AkSpatialAudio.h
を含めます。
リスナーとエミッターを登録します。
// Register the listener. static const AkGameObjectID LISTENER_ID = 10000; AK::SoundEngine::RegisterGameObj( LISTENER_ID, "Listener" ); AK::SpatialAudio::RegisterListener( LISTENER_ID ); // Register the emitter. static const AkGameObjectID LISTENER_ID = 100; AK::SoundEngine::RegisterGameObj( EMITTER_ID, "Emitter" ); AkEmitterSettings emitterSettings = AkEmitterSettings(); // ER is the name of the Auxiliary Bus with a Reflect effect. emitterSettings.reflectAuxBusID = AK::SoundEngine::GetIDFromString( "ER" ); // This represent the maximum distance between the listener and the emitter for the listener to receive reflections from the emitter. emitterSettings.reflectionMaxPathLength = 500.f; AK::SpatialAudio::RegisterEmitter( EMITTER_ID, emitterSettings ); // Associate the emitter with the listener static const AkGameObjectID aLstnrsForEmitter = LISTENER_ID; AK::SoundEngine::SetListeners( EMITTER_ID, &aLstnrsForEmitter, 1 );
Reflectのジオメトリサーフェスをつくるためのジオメトリを定義し設定します。
AkGeometryParams
を作成し、その中に、あなたのジオメトリの三角形、頂点、サーフェスを入れます。
static const AkGeometrySetID GEOMETRY_ID = 200;
AkGeometryParams geometryParam;
// Fill triangles, vertices and surfaces into geometryParam.
// See an example in the Integration Demo.
// ...
AK::SpatialAudio::SetGeometry( GEOMETRY_ID, geometryParams );
エミッターが動くにつれ、エミッターのポジションを更新します。(SoundEngine::SetPosition からのコールを、SpatialAudio::SetPositionに置き換えます)
AK::SpatialAudio::SetPosition( EMITTER_ID, soundPos );
最初に 「WwiseプロジェクトでWwise Reflectを設定」 してから、ゲーム側での設定を行います。
確実にReflectを登録するために AK/Plugin/AkReflectFXFactory.h
を含めます。
Reflectヘッダーファイルである AK/Plugin/AkReflectGameData.h
を含めます。
実行ファイルのインプットライブラリに、AkReflectFX.lib
を追加する必要があるかもしれません。
Reflect APIを使いイメージソースを作成し、音を反射させたい場所に配置します。
// Create an AkReflectGameData object. AkReflectGameData * reflectGameData = nullptr; reflectGameData = (AkReflectGameData *)_alloca(AkReflectGameData::GetSize(1)); // Fill in the data. reflectGameData->listenerID = LISTENER_ID; reflectGameData->uNumImageSources = 1; reflectGameData->arSources[0].uID = 123; reflectGameData->arSources[0].params.sourcePosition = { 200, 0, 0 }; // The following represents a distance factor between the listener and the image source. // If the source position corresponds to the reflective surface, the number should be two. reflectGameData->arSources[0].params.fDistanceScalingFactor = 1.f; reflectGameData->arSources[0].params.fLevel = 1.f; // Associate the image source with Acoustic Textures here if needed. reflectGameData->arSources[0].texture.uNumTexture = 0; reflectGameData->arSources[0].name.SetName("Img src 1"); // Send to Reflect. AK::SoundEngine::SendPluginCustomGameData(AK::SoundEngine::GetIDFromString("ER"), EMITTER_ID, AkPluginTypeEffect, AKCOMPANYID_AUDIOKINETIC, 171, reflectGameData, AkReflectGameData::GetSize(1));
イメージソースのポジションを更新する必要がある時に、新しい AkReflectGameData
を送信する。
イメージソース1つにつき、最大4つのAcoustic Texturesを通せます。Acoustic Textureは「Acoustic Texture Editor」で設定して、素材のプロパティを表します。プラグイン実行に際して、そのTextureに設定された4種類のAbsorption(吸音)バンド(Low、Mid Low、Mid High、High)が、4つの周波数バンドの減衰に変換されます。
2つ以上のAcoustic Textureを適用すると、バンド吸音係数を合算して、信号を順次フィルターにかけたようにします。この結果、複数の面に反響したかのような効果がでます。
![]() |
Wwise ReflectのデフォルトのFrequency Absorption Bandのマッピング
Low: < 250 Hz
Mid Low: > 250 Hz and < 1,000 Hz
Mid High: > 1,000 Hz and < 4,000 Hz
High: > 4,000 Hz
![]() |
ReflectのFrequency Absorption Bandデフォルト値は、変更可能です |
---|---|
ReflectのFrequency Absorptionのデフォルト値を変更できますが、非常に特殊なシナリオ以外では、必要ないはずです。変更するには、 |
Wwise Reflectをプレイヤーから見た第三者の音に適用するには、エミッタに関連付けられたバスのインスタンスに、Wwise Reflectを実行する必要があります。詳細は、3D Bussesや、 AK::SoundEngine::SetGameObjectAuxSendValues()
を参照してください。バスインスタンスを適切に設定するには、AK::SpatialAudio
の機能を利用できます。
Reflectの反響効果を調整できる基本的なパラメータがいくつかあります。
反響とは、インプット信号をダウンミックスして、それをパンニング、フィルター、ディレイしたものになります。ディレイタイムは、ゲーム側で操作するイメージソースの距離と、ReflectのSpeed of Sound(音速)によって左右されます。フィルターやボリュームの増減は、イメージソースの距離と回折係数と、その様々な曲線を比較して決めます。また、フィルターはイメージソースのAcoustic Textureの設定にも、影響されます。
![]() |
ヒント |
---|---|
距離の減衰カーブは、空気の吸収とエネルギーのディケイをシミュレーションします。 |
イメージソースに回折係数が設定することができます。鏡面反射であれば、通常は0ですが、リスナーに到達するまでに反射面の端をまわり込む必要があれば、0以外です。そのような反射は一般的に振幅が小さく、フィルタリングされます。Wwise Reflectが公開する曲線を使い、回折係数に対し、これらのパラメータを微調整できます。回折の詳細や、初期反射との関係や、回折を AK::SpatialAudio
でシミュレーションする方法などについて、詳しくは Spatial Audio Concepts - Diffraction や Geometric Diffraction of Early Reflections を参照してください。なお、 AK::SpatialAudio
のGeometric Diffractionは現在、実験的機能です。
項目 |
内容 |
|||||
---|---|---|---|---|---|---|
Inclusion |
このオブジェクトが含まれるのかどうかを示す。選択すると、このオブジェクトが含まれる。選択しないと、含まれないことを示す。 デフォルトでは全プラットフォームに適用する。プラットフォーム別のカスタマイゼーションの指定や設定を行う場合は、 Linkインジケータ (チェックボックス左)を使う。 チェックなしの場合は、Property Editorのプロパティや動作を設定できない。 Default value: true |
|||||
Name |
エフェクトインスタンスの名前。 エフェクトインスタンスは、エフェクトのプロパティ設定をまとめたものである。カスタムインスタンスとShareSetの2つのタイプがある。カスタムインスタンスは1つのオブジェクトだけに使用できるのに対し、ShareSetは複数のオブジェクト間で共有できる。 |
|||||
Effect |
エフェクトのタイプ。 |
|||||
Shared by (Used by) |
選択されているShareSetに現在サブスクライブされているオブジェクトのリスト。 エフェクトのカスタムインスタンスを編集している場合は、このフィールドが"Used by"となる。 |
|||||
|
検索フィールドが開き、標準的な英数字の検索によってマッチしない項目がビューで非表示となる。詳しくは「表の使用」を参照。 検索フィールドを閉じて検索フィルタを解除するには、Searchアイコン左のCloseアイコンをクリックする。
|
|||||
|
エフェクトのプロパティ設定をデフォルト値に戻す。 エフェクトのカスタムインスタンスを編集している場合のみこのオプションが使用可能。 |
|||||
Notes |
エフェクトに関する追加情報。 |
|||||
General | ||||||
Speed Of Sound |
単位毎秒。単位とは、ゲームで使用してReflectに送信される、距離の単位を指す。空中の音速は、~秒速340m(単位m/s)。ゲームの単位がcmであれば、秒速は約34,000(cm)/sとなる。 Default value: 345 |
|||||
Distance Smoothing |
ディレイラインに送信するリフレクションのレイディスタンス(ray distance)に適用する、平滑化(smoothing)フィルタ。平滑化を増やせばリフレクション時間の更新は遅くなるが、移動で発生するドップラーピッチシフトが制限される。0から1の間の、正規化された値。 |
|||||
Smoothing Type |
平滑化フィルタの、時間で変化するレスポンス形状を決める。IIRやFIRのカーブアイコンは、レイディスタンスの急激な変化をフィルタがどのように形づくるかを示す。 |
|||||
Threshold Mode |
Continousモードは、移動で発生するドップラーピッチシフトを、最大限に許容する。スレッショルドを超えるほど移動が速い場合は、ピッチがスレッショルド未満になるまで、リフレクションのボリュームをダッキングする。スレッショルドを0にすると、移動があれば常にリフレクションのボリュームをダッキングする。 Stepモードは、ディスタンスのスレッショルドを示す半円を設定し、最小限の移動がないとリフレクションが更新されないようにする。スレッショルドを0にすると、移動が起きるたびに、新旧のリフレクションの間でリフレクションのクロスフェードが発生する。クロスフェードは、時間延長のエフェクトとなり、ピッチは変更されない。 |
|||||
Pitch Threshold |
Continuous thresholdモードのときに、リフレクションボリュームをダッキングし始める前の、ドップラーピッチシフトの許容される最大値を設定する。これを0に設定すると、移動があればリフレクションのボリュームがダッキングされる。 |
|||||
Distance Threshold |
モードがStep thresholdの場合、リフレクションのディレイタイムを更新するのに必要なレイディスタンスの最小限の変化(単位はゲームユニット)を設定する。0に設定すると、移動があればリフレクションがクロスフェードする。 |
|||||
Center % |
3Dポジショニングに使うCenter%。Wwiseで扱う3DポジショニングのCenter%については、 Positioningタブ: Audio Bus、Auxiliary Bus を参照。 Default value: 100 |
|||||
Output Level |
wet signal のボリュームレベル(dB)。 Default value: 0 |
|||||
Monitoring List | ||||||
Filter |
ゲームオブジェクトのNameやIDの内容に完全に一致する、または部分的に一致するものを自由に入力する。Monitoring List表にも、グラフビューのカーブカーソル にも、一致するイメージソースのみが表示される。 |
|||||
|
Filterフィールドの内容がクリアされるので、この下の列にも、関連するグラフ中のカーブにも、Wwise Reflectが適用される全てのイメージソースが表示される。 |
|||||
![]() ![]() ![]() ![]() ![]() |
イメージソースのMuteやSoloの状態をコントロールしたり、潜在的なミュートやソロの状態が表示したりする。 イメージソースをミュートすると、現在のモニタリングセッションにおいて音がミュートとなる。イメージソースをソロにすると、Wwise Reflectの現在のインスタンスにおいて、他の全てのイメージソースの音がミュートとなる。 太字のMやSは、このイメージソースが明確にMuteまたはSoloの状態に設定されたことを示す。太字でない薄字のMやSは、このイメージソースのMuteまたはSoloの状態が、他のイメージソースの状態の結果として潜在的に設定されたことを意味する。
|
|||||
Image Source ID |
イメージソースに付けられるID番号。固有の番号をゲームが割り振る。 |
|||||
Image Source Name |
イメージソースの名前。 |
|||||
Game Object ID |
ゲームオブジェクトに付けられるID番号。固有の番号をゲームが割り振る。 |
|||||
Game Object Name |
ゲームオブジェクト名。 |
|||||
Textures |
サウンドが反射するAudio Textureの名前(名前が分からない場合は、ID)。
|
|||||
Distance (距離) |
イメージソースとリスナーの間の距離を、ゲームの単位で示したもの。 |
|||||
Smoothed Distance |
平滑化フィルタを適用したあとの、距離の現在値。 |
|||||
Current Pitch |
モードがcontinuous thresholdのとき、リフレクション距離を変更することで発生する現在のドップラーピッチのシフト(単位cents)。 |
|||||
Displacement |
Step thresholdモードのとき、現在のリフレクション長さから離れ、これから適用する差分距離の蓄積。Distance Thresholdを超過すると、0にリセットされます。 |
|||||
(Image Source Graph View) |
Distance (X軸) とイメージソースのプロパティ値 (Y軸) の関係を図示したもの。 グラフビューに、同時に複数のカーブを表示できる。 |
|||||
Cursor Name Category |
グラフビューで表示(または非表示)するパラメータフラグを指定するリスト。
Default value: No Flag |
|||||
X |
選択したコントロールポイントのX座標。X値は、選択したDistanceの値を表す。 2つ以上のコントロールポイントを選択すると、このフィールドの数値が「0」となり、これを増減させることで、選択中の全てのコントロールポイントを、現在の数値から増減できる。例えば2つのコントロールポイントを選択して、Xスライダを-5だけ移動させると、コントロールポイントが2つとも、左に5単位だけ動く。 |
|||||
Y |
選択したコントロールポイントのY座標。Y値は、プロパティ値(Distance Attenuationボリュームのデシベル値、またはDistance Spread率、またはLow-PassまたはHigh-PassフィルタのHz値)を表す。。 2つ以上のコントロールポイントを選択すると、このフィールドの数値が「0」となり、これを増減させることで、選択中の全てのコントロールポイントを、現在の数値から増減できる。例えば、2つのコントロールポイントを選択して、テキストボックスYに「-5」と入力すると、両方のコントロールポイントが、下に「5」だけ移動する。 |
|||||
|
グラフビューの中心にズームインする。 |
|||||
|
グラフビューの表示を、デフォルトのズーム比「1:1」にリセットする。 |
|||||
|
グラフビューの中心からズームアウトする。 |
|||||
Max Distance |
ゲームの単位で示した、カーブの最大距離。 Default value: 1000 |
|||||
(Pin/Unpin) |
Pinアイコンを選択すると、プロパティが選択されていない時でも、プロパティのカーブの輪郭がグラフビューで表示されたままになる。 |
|||||
色 |
グラフビューのそれぞれのカーブを見分けるための、色の凡例。 |
|||||
Property |
選択すれば、以下の8種類のWwise Reflectイメージソースのカーブがグラフビューに表示された時に、編集できる。
|