目次

Wwise Unity Integration Documentation
サーフェスリフレクタ(Surface Reflectors)に関するチュートリアル

このチュートリアルでは、新しいReflectプラグインをSpatial Audioで使う方法を、手順を追いながら説明します。プロジェクトを稼働させるには、Reflectプラグインのライセンスが必要です。

: このチュートリアルの前提として、 Spatial Audioチュートリアルの事前準備 を完了しておいてください。一方、 ルームやポータルに関するチュートリアル とは独立しているので、終了していなくても問題ありません。

A. Wwiseプロジェクト

Wwiseプロジェクトを更新して、Reflectプラグインとアコースティックテキスチャが入ったAuxバスを入れる必要があります。

  1. Auxiliary BusをMaster Audio Busの下に追加します。
    1. Auxiliary Bus Property Editorで、
      1. Effectsタブで、Wwise Reflectエフェクトを追加します。
        AuxBusPropertyEditorEffectsThirdPerson.png
        Auxiliary Bus Property EditorのEffectsタブのReflect
      2. Positioningタブで、 Listener Relative Routing を有効にし、3D Spatializationで None を選択します。
        AuxBusPropertyEditorPositioningThirdPerson.png
        Auxiliary Bus Property EditorのPositioningタブのReflect
  2. Reflect Acoustic Texturesをインポートします: Project > Import Factory Assets...
    1. インポートすると、Project ExplorerビューのShareSetsタブの、Virtual Acousticsフォルダに追加されます。
      ProjectExplorerShareSets.png
      Project ExplorerのShareSetsタブにある、Factory Reflect Acoustic Textures
    2. (オプション)カスタム設定のアコースティックテキスチャは、Default Work UnitVirtual Acousticsフォルダに追加できます。
  3. プロジェクトを保存する。

B. Spatial Audioエミッタ

新たに作成したリフレクトAuxバスを使うには、スペーシャルオーディオのエミッターを調整する必要があります。

  1. Wwise PickerでWwiseプロジェクトをリフレッシュします: Windows > Wwise Picker
    1. サウンドバンクを生成します
      WwisePicker.png
      Wwise Picker
  2. 各ボタンの、Ak Spatial Audio Emitterコンポーネントを変更します。
    1. Reflect Aux BusにReflect Auxiliary Busをピックします。
    2. Reflections Orderに2を選択します。
    3. Reflections Aux Bus Gainに1を選択します。
    4. Reflection Max Path Lengthに100000を選択します。
    5. Debug Drawの下のDraw First Order ReflectionsDraw Second Order Reflectionsにチェックを入れます。
      AkSpatialAudioEmitterReflect.png
      Surface Reflectorの、Ak Spatial Audio Emitter

C. Surface Reflectorコンポーネント

Ak Surface Reflectorコンポーネントを使って、アーリーリフレクションをシミュレーションできます。サーフェスリフレクタを設定する1つの方法として、ゲームの既存のメッシュを利用します。形状が複雑すぎる場合は、サーフェスリフレクタとして新しいオブジェクトを追加した方がよいかもしれません。

C.1. 既存のメッシュを使う

既存メッシュを使うメリットは、新しいオブジェクトを作成する必要がなく、メッシュごとに別々のアコースティックテキスチャを設定できることです。デメリットは、形状が複雑すぎるとSpatial Audio APIに大量の三角形を送り込むことになり、ゲームが遅くなるかもしれないことです。また、1つのメッシュに1つのテキスチャしかアサインできないのも難点です。例えばこのチュートリアルのケースでは、屋内と屋外のアコースティックテキスチャを変えることができません。 Unityインテグレーションで提供されたシーンでは、サーフェスリフレクタ用にこの方式を採用しています。

  1. セクション 3.A. 環境 で壁、天井、床を選択して、Ak Surface Reflectorコンポーネントを1つ追加します。
    1. Acoustic Textureパラメータで、アコースティックテキスチャを選択するか、フィルタなしのリフレクションにする場合はNoneを選択します。
      AkSurfaceReflector.png
      Ak Surface Reflectorコンポーネント
  2. ゲームをスタートする。
    1. セクション \sub_surface_reflector_emitter のDebug Drawでリフレクションの作図を有効にしたので、Sceneウィンドウでエミッターからリスナーに向かうレイ(光線)が表示されます。(下図ではレイを見やすいように天井を除いてあります)青のレイは、1つの面に反射してからリスナーに到達するファーストオーダーリフレクションで、黄色のレイはセカンドオーダーリフレクションです。三角形の名前が反射点に表示されます。名前は、ゲームオブジェクト名と三角形の番号の組み合わせです。Cubeは12個の三角形で構成され、一面につき2個あります。
      DebugDraw2ndOrderTop.png
      上から見た、既存メッシュのサーフェスリフレクタのアーリーリフレクション図
    2. 下図のとおり、GameウィンドウでGizmosを有効にするとレイが表示されます。この視点だと、Debug Drawオプションによって反射面の三角形が作図されているのが見て分かります。このビューで天井を確認すると、天井でも、三角形7と6で音が反射するのが分かります。
      DebugDraw2ndOrderGame.png
      既存メッシュのサーフェスリフレクタの場合に、ファーストパーソン視点からみたアーリーリフレクション
    3. Wwiseでゲームに接続して、Profilerレイアウトを開きます。Button Small Roomが音を発信すると、同じようなグラフが表示されます。
      VoiceGraphReflect.png
      Reflectエフェクトを使ったButton Small Roomのボイスグラフ
    4. グラフで、Reflectエフェクトを設定したAuxバスをダブルクリックします。Effectsタブに移動して、Reflectエフェクトをダブルクリックします。音の再生中に、Reflect Effect Editorのグラフとリストに、現在のリフレクションが表示されます。下図は、壁と天井にDrywall(石こうボード)、床にTile(タイル)のアコースティックテキスチャを設定した例です。リストにテキスチャが2つ記載されているので、これはセカンドオーダーのリフレクションです。
      ReflectEffectEditor.png
      ReflectのEffect Editorビュー

C.2. 別の方法: 新しいボリュームを作成する

メッシュレンダラのない新しいゲームオブジェクトを作成すれば、複雑な形状をシンプルにできます。このセクションの操作はオプションで、小さい部屋でサーフェスリフレクタのボリュームを設定する方法を説明します。 一部のメッシュをサーフェスリフレクタに利用して、同時にメッシュレンダラのないオブジェクトを設定すると、2つの方式をミックスできます。例えば。家の中では全てのメッシュをサーフェスリフレクタにして壁ごとにテキスチャを変えて、家の外では屋外ボリュームを追加して全く違うテキスチャにすることもできます。 また、必要に応じてCubeの代わりにQuadsを使えば、テキスチャを変えられます。ただしQuadsを使う場合は交差部分に注意が必要で、音が形の外に出ないようにします。

  1. Cubeを使って、シンプルなレンダリングなしのメッシュを作成するには: GameObject > 3D Object > Cube
    Object Name Position Rotation Scale
    Small Room Interior (-2, 2.875, -6) (0, 0, 0) (11, 5.25, 7.5)
    -# <b>Mesh Renderer</b>コンポーネントを除きます
    -# <b>Box Collider</b>コンポーネントの、<b>Is Trigger</b>にチェックを入れます
    -# Ak <b>Surface Reflector</b>を追加します。
    
  2. ゲームをスタートする。
    1. 部屋の形状をシンプルにしたので、ドアが反射面の一部となりました。屋外に立っているときは、Button Small Roomのリフレクションが全くありません。ドアが開くと、Button Outsideのリフレクションまで、聞こえます。リフレクションポイントの名前に、Small Room Interiorがレファレンスとして入っているのに気づいたかもしれません。
      DebugDraw2ndOrderTopOutsideInterior.png
      エミッターが外のときに、上から見た新サーフェスリフレクタのボリュームのアーリーリフレクション図
    2. 小部屋に入ると、Button Small Roomのデバグ図が表示されてButton Outsideの図が消えます。
      DebugDraw2ndOrderTopInsideInterior.png
      エミッターが中のときに、上から見た新サーフェスリフレクタのボリュームのアーリーリフレクション図