Упражнение. Использование реверберации для добавления расстояния в пространственный звук

Завершено

В предыдущем модуле вы добавили пространственное звучание, чтобы придать звуку направление. В этом модуле вы научитесь добавлять эффект реверберации, чтобы добавить ощущение расстояния в звучании.

Добавление группы микшера и эффекта реверберации

  1. Из учебного пособия по настройке пространственного звука по нажатию на кнопку мы узнали, как добавить микшер. Микшер включает одну группу по умолчанию — master. Поскольку мы хотим применить к некоторым звукам только эффект реверберации, добавим вторую группу для этих звуков. Чтобы добавить группу, щелкните правой кнопкой мыши группу master в аудиомикшере, выберите команду Добавить дочернюю группу и укажите подходящее имя, например, Эффекты в помещении:

    Screenshot of Add child group.

  2. Каждая группа имеет собственный набор эффектов. Чтобы добавить действие в новую группу, нажмите кнопку Добавить... в новой группе и выберите пункт Реверберация SFX:

    Screenshot of Add SFX Reverb.

    В специальной терминологии звукорежиссеров оригинальный звук без реверберации называется «прямым», а звук после фильтрации с помощью фильтра реверберации называется «обработанным». Оба сигнала отправляются на аудиовыход, и их относительные сильные стороны в этом миксе называются миксом прямого/обработанного сигнала. Микс прямого/обработанного сигнала существенно влияет на ощущение расстояния.

  3. В результате Реверберация SFX включает элементы управления для корректировки микса прямого/обработанного сигнала в эффекте. Учитывая, что подключаемый модуль Microsoft Spatializer обрабатывает прямой сигнал, мы будем использовать реверберацию SFX только для обработанного сигнала. На панели инспектора Реверберация SFX:

    1. Задайте для свойства Прямой сигнал самое низкое значение (-10000 МБ).
    2. Настройте для параметра Свойство помещение самое высокое значение (0 мБ)

    Screenshot of SFX Reverb properties.

    Остальные параметры определяют характеристики эмуляции помещения. В частности, параметр Время ослабления связан с восприятием размера помещения.

Включение реверберации при воспроизведении видео

Для включения реверберации в источнике звука необходимо выполнить два действия.

  1. Маршрутизация источника звука в соответствующую группу
  2. Настройка подключаемого модуля Microsoft Spatializer для передачи звука в группу для обработки

В следующих шагах вы настроите сценарий для управления маршрутизацией аудиоданных и добавите сценарий управления, доступный в подключаемом модуле Microsoft Spatializer для передачи данных в реверберацию.

  1. Выберите Quad в разделе «Иерархия», нажмите Добавить компонент в окне инспектора и добавьте Уровень эффекта в помещении при отправке (сценарий):

    Screenshot of Add send level script.

    Примечание

    Если не включена функция Уровень эффекта в помещении при отправке в подключаемом модуле Microsoft Spatializer, он не будет отправлять звук обратно в подсистему аудиозаписи Unity для обработки эффектов.

  2. Компонент Уровень эффекта в помещении при отправке включает управление графами, которое задает уровень звука, отправляемого в подсистему аудиозаписи Unity для обработки реверберации. Чтобы открыть управление графами, щелкните Уровень эффекта в помещении при отправке. Щелкните и перетащите зеленую кривую вниз, чтобы задать уровень около-30 дБ:

    Screenshot of Adjust reverb curve.

  3. Затем удалите комментарии из 4 строк с комментариями в сценарии SpatializeOnOff. Теперь сценарий будет выглядеть следующим образом:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.Audio;
    
    [RequireComponent(typeof(AudioSource))]
    public class SpatializeOnOff : MonoBehaviour
    {
        public GameObject ButtonTextObject;
        public AudioMixerGroup RoomEffectGroup;
        public AudioMixerGroup MasterGroup;
    
        private AudioSource m_SourceObject;
        private bool m_IsSpatialized;
        private TMPro.TextMeshPro m_TextMeshPro;
    
        public void Start()
        {
            m_SourceObject = gameObject.GetComponent<AudioSource>();
            m_TextMeshPro = ButtonTextObject.GetComponent<TMPro.TextMeshPro>();
            SetSpatialized();
        }
    
        public void SwapSpatialization()
        {
            if (m_IsSpatialized)
            {
                SetStereo();
            }
            else
            {
                SetSpatialized();
            }
        }
    
        private void SetSpatialized()
        {
            m_IsSpatialized = true;
            m_SourceObject.spatialBlend = 1;
            m_TextMeshPro.SetText("Set Stereo");
            m_SourceObject.outputAudioMixerGroup = RoomEffectGroup;
        }
    
        private void SetStereo()
        {
            m_IsSpatialized = false;
            m_SourceObject.spatialBlend = 0;
            m_TextMeshPro.SetText("Set Spatialized");
            m_SourceObject.outputAudioMixerGroup = MasterGroup;
        }
    }
    
    
  4. После того, как эти строки будут раскомментированы, в инспектор сценария SpatializeOnOff будут добавлены два свойства. Назначьте их в окне "Инспектор" компонента SpatializeOnOff в Quad.

  5. Если объект Quad по-прежнему выбран в иерархии, в окне инспектора выберите компонент Сценарий SpatializeOnOff, а затем:

    1. Задайте для свойства Группа эффектов комнаты новую группу микшеров эффектов комнаты
    2. Задайте для свойства Основная группа основную группу микшеров

    Spatialize On Off Extended.