CRI ADX2(Unity)
初級編04 3Dサウンドを再生する

本編では、ADX2を使った3Dサウンドについて説明します。

3Dサウンドとは

3Dサウンドとは、ゲーム空間での位置や向きなどに応じて、音の聞こえ方が変化するサウンド設定です。
ADX2では、3Dポジショニングと呼ばれています。

  • リスナーと音源の速度から、ドップラー効果を得ることができます。
  • リスナーと音源の位置から、各スピーカの出力を自動的に計算し、左右に回り込むような効果を得られます

Atom Craftでの設定

まず、3Dポジショニングの再生にはAtom Craftで音声データに設定を行う必要があります。

すでに3Dポジショニングが有効になっているデータをお持ちのかたは、「Unityでの設定」まで進みましょう

3Dポジショニングの設定

3Dポジショニングを有効にしたい音声ファイルをプロジェクトに追加後、キューシートに追加します。

プロジェクトに追加された時点では3Dポジショニングが無効になっているので設定を変更します。
図の右のように[パン3D]→[3Dポジショニング]または、[オート(パン3D/3Dポジショニング)]に変更します。

※[3Dポジショニング]を選択し、後述のUnity再生側で[3Dポジショニング]が有効になっていない場合エラーになります。
[オート(パン3D/3Dポジショニング)]の場合は、設定に応じて自動で切り替わります。
必ず[3Dポジショニング]で再生したい音声は、 Atom Craftの設定でパンのタイプを[3Dポジショニング]に設定することをお勧めいたします。

データ出力~Unityへインポート

パンのタイプを変更した後は、入門編02 サウンドデータをインポートする の手順を参考にビルド済みデータをUnityへインポートします。

図のようにUnityのシーンへ追加できましたか?
以上でデータ側の準備は終了です。

Unityでの設定

CRI Atom Listenerの追加

次はUnityでの設定です。
3Dポジショニングの基点となるCRI Atom Listenerコンポーネントを追加しましょう。
CRI Atom Listenerは3Dポジショニングを使わない場合は必要ありません。

通常は、メインカメラ(Main Camera)にCRI Atom Listenerコンポーネントを貼り付けます。

サンプルコードの追加

3Dポジショニングの効果を確認するため、ゲームオブジェクトを旋回させましょう。
以下のコードを追加します。

public class RotatePosition : MonoBehaviour
{

    public float RotateSpeed = 100.0f;
    public Vector3 centerPosition = new Vector3(0, 0, 1.5f);

    void Update()
    {
        /* Rotate around a center position. */
        this.gameObject.transform.RotateAround(centerPosition, new Vector3(0, 1, 0), Time.deltaTime * RotateSpeed);
    }
}

3Dポジショニングの有効化

次に3Dサウンドで再生したい[Cri Atom Source]の[3D Positioning]を有効にし、
先ほどのサンプルコードを追加します。

この状態でPlayすると、ヘリコプターが自分の周りを飛んでいるように聞こえます!

Tips

サウンドがうまく聞こえないとき

以下の項目を再度確認してみましょう。

  1. AtomCraftでパンの設定が3Dポジショニングになっているか確認してみましょう。
  2. Main CameraにCRI Atom Listenerコンポーネントが追加されているか確認してみましょう。
  3. ヘリコプターの音が一か所で固定されている場合は、[RotatePosition]スクリプトがうまく追加できていないかもしれません。

3Dポジショニングについて

さらに詳しく知りたい方はUnitySDKマニュアルのこちらの項目、確認してみてください。
CRI ADX2 Tools マニュアル 3Dポジショニング
CRIWARE Untiy Plug-in マニュアル 3Dポジショニング

author:我妻