Перейти к содержимому
Процедурная система звука двигателя - демо Unity
Процедурная система звука двигателя - плагин REAPER
Процедурная система звука двигателя - 2D Wavetable

ПРОЦЕДУРНАЯ СИСТЕМА ЗВУКА ДВИГАТЕЛЯ

Полностью процедурная система звука двигателя, основанная на физическом моделировании внутреннего сгорания. Вместо использования заранее записанных семплов система математически вычисляет давление сгорания, события клапанов и пульсации выхлопа — затем сохраняет результаты в компактную 2D-волновую таблицу (wavetable) для эффективного воспроизведения в реальном времени.

Плагин принимает на вход RPM и положение дросселя от любого игрового движка или аудио-мидлвара и выдает непрерывный, бесшовный звук двигателя. Поддерживается любая конфигурация четырехтактного двигателя — при наличии реальных спецификаций (число цилиндров, порядок работы, диаметр цилиндра, ход поршня, тип коленвала) система способна воспроизвести акустическую сигнатуру практически любого серийного двигателя.

Разработано Александром Хилько как внутренний R&D-проект студии AK Audio на основе более семи лет исследований в области синтеза звука двигателей для игр с техникой.



Проблема

Традиционное игровое аудио двигателей опирается на заранее записанные семплы на фиксированных диапазонах RPM с кроссфейдом при воспроизведении. Такой подход требует дорогостоящих полевых записей, дает слышимые артефакты зацикливания на статичных оборотах и плохо масштабируется — для каждой новой единицы техники нужен новый набор записей.

Двигатели танков Второй мировой войны представляют особую сложность: они низкооборотистые, и заставить их держать стабильные обороты во время записи крайне трудно. Приходится постоянно бороться с исходным материалом.

Во время производства World of Tanks: HEAT некоторые единицы техники не удалось записать вовсе — локдауны COVID сделали полевые записи невозможными, а некоторые танки были недоступны по политическим или логистическим причинам. Мы ресинтезировали звуки двигателей с помощью аддитивного синтеза, смешивая их с имеющимся семпл-материалом. Например, американский M1 Abrams оснащен газотурбинным двигателем — очень характерным, который вполне поддается ресинтезу. Но даже тогда мы использовали результат как статичные семплы. У нас просто не было ресурсов, чтобы написать кастомный плагин-синтезатор реального времени для Wwise на тот момент.

Этот опыт подтвердил необходимость подхода на основе синтеза, способного генерировать любой звук двигателя исключительно на основе спецификаций — процедурно, в реальном времени, внутри любого аудио-мидлвара.


Как это работает

В основе лежит физическая модель четырехтактного двигателя внутреннего сгорания. Симуляция вычисляет:

Геометрию поршня — объем камеры, площадь сечения цилиндра, перемещение поршня — для получения мгновенного объема камеры сгорания при любом угле поворота коленвала.

Давление в цилиндре — динамику давления на протяжении всего четырехтактного цикла: впуск, сжатие, сгорание, выпуск.

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

Выходной аудиосигнал представляет собой отклонение давления выхлопной трубы от атмосферного давления — то есть именно то, что физически слышит человек от реальной выхлопной трубы.

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

Поскольку вся система основана на математике и физике, при наличии полной спецификации двигателя теоретически можно воссоздать все что угодно. Система была протестирована на пяти различных конфигурациях двигателей с стабильными результатами — технология выглядит очень масштабируемой.


Оптимизация 2D Wavetable

Хотя физическая модель может работать в реальном времени на настольном CPU, игровое производство требует минимальных накладных расходов. Решение: предварительно вычислить полные циклы сгорания по двумерной сетке RPM × положение дросселя и сохранить их в компактную бинарную волновую таблицу.

Плотность дискретизации неравномерная — плотнее на низких RPM, где тональные изменения наиболее заметны, и реже на высоких RPM, где звук по природе более гладкий. Это было настроено эмпирически для оптимального соотношения качества к размеру.

Для двигателя Pontiac G8 полная высококачественная таблица занимает примерно 22 МБ — покрывая все диапазоны RPM и положения дросселя. В рантайме плагин интерполирует между предвычисленными циклами, обеспечивая физически точный звук при минимальных вычислительных затратах.


Полная аудиосистема техники

Синтезатор двигателя — это один компонент полной аудиосистемы техники, продемонстрированной в Unity с физическим контроллером VPP. Контроллер передает на удивление хорошие данные в Wwise — переходы дросселя, поведение под нагрузкой/без нагрузки, изменения RPM — все ощущается отзывчиво и реалистично.

Полная система включает несколько дополнительных слоев:

Конволюция выхлопа — сырой сигнал сгорания проходит через конволюционный этап с импульсной характеристикой, имитирующей акустику выхлопного тракта. Замена IR меняет характер выхлопа — тип глушителя, длину трубы, профиль резонанса. Некоторые процедурные решения моделируют звук математически через весь выхлопной тракт, но для модульной системы замена IR практичнее и гибче, чем замена всей матрицы двигателя.

Система столкновений — импульс удара измеряется в точках столкновения, нормализуется и мапится на интенсивность звука. Легкое касание — короткий удар. Сильное столкновение — более тяжелый, резонансный звук.

Аудио подвески — импульсы подвески модулируют выделенный звуковой слой пропорционально интенсивности неровности. Большая кочка — громче и выразительнее отклик.

Система шин / поверхностей — тип поверхности и скорость техники управляют переключением слоев для различных типов грунта.

Пространственная конволюция — кастомный конволюционный реверб обеспечивает окружающую акустику, заменяя встроенные реверб-плагины мидлвара для экономии на лицензионных расходах.


Производительность

Плагин синтезатора двигателя работает примерно на 5–6% CPU. Полная аудиосистема техники — двигатель, несколько конволюционных ревербов, столкновения, подвеска, шины — достигает пика около 8% CPU.

Оптимизация для NPC-техники пока не реализована и может существенно снизить стоимость на единицу техники. Подход на основе wavetable по своей природе легковесный — это интерполяция по таблице, а не симуляция в реальном времени — что делает его подходящим для проектов с большим количеством одновременной техники на экране.


Совместимость

Плагин воспроизведения wavetable может быть скомпилирован под любую целевую платформу и мидлвар:

Аудио-мидлвар: Wwise, FMOD Studio
Игровые движки: Unity, Unreal Engine
Инструменты звукового дизайна: REAPER (для тестирования, прототипирования и проектирования сценариев на основе огибающих)

Бинарный формат wavetable не зависит от движка. Одни и те же вычисленные данные двигателя работают на всех платформах без модификаций. При наличии полного набора спецификаций — конфигурация коленвала, порядок работы, число цилиндров, диаметр, ход поршня — новый двигатель можно вычислить и развернуть за несколько часов.

ИНТЕРЕСУЕТ КАСТОМНЫЙ ЗВУК ДВИГАТЕЛЯ ДЛЯ ВАШЕГО ПРОЕКТА?

Расскажите нам о вашем парке техники, мидлваре и пайплайне доставки — мы обсудим, как эта система может вписаться в ваше производство.