TGViewer
Звук на уровень выше Звук на уровень выше @highlevelsound · 177 subscribers
Post #26 234
Технота: FlyBy

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

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

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

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

Далее я собрал архитектуру в Wwise.

В рамках теста я попробовал реализовать четыре направления пролета снаряда:
- Back_L_Front_R
- Back_R_Front_L
- Front_L_Back_R
- Front_R_Back_L

Я реализовал два подхода к переключению контента: через бленд-контейнер и через свитч. Свитч показался более оптимальным, так как в отличие от бленд-контейнера, он вызывает в момент пересечения снаряда и сферы только один голос, а не всю пачку (оставляя актуальный с нормальной громкостью а остальные уводя в минус бесконечность), как это делает бленд-контейнер. Это позволяет сэкономить ресурсы.

Для управления свитч-группой необходим RTPC, который будет управляться со стороны Unreal Engine, передавая параметры под каким углом произошел пролет снаряда.

Далее необходимо создать систему в Unreal Engine. На уровне блупринта персонажа я создал сферу, которая может регистрировать пересечение снаряда с гранями сферы с помощью ивента Get Component Overlap. Мысленно разделив сферу на четыре части, я определил следующие зоны:
- Back_L_Front_R (-180° – -90°)
- Back_R_Front_L (180° – 90°)
- Front_L_Back_R (-90° – 0° )
- Front_R_Back_L ( 90° – 0° )

Затем, используя информацию о результате пересечения из Sweep Result, я извлек данные о нормали и применил функцию Get Azimuth and Elevation. Извлекая информацию из азимута, я получил значения пересечения снаряда со сферой в градусах и передал их в RTPC.

Вариантов реализации системы пролета снарядов может быть несколько. Например, можно воспроизводить звук непосредственно в точке пересечения снаряда и сферы, используя 3D-звук (что более актуально для FPS). Также можно привязать звук к летящему объекту и рассчитывать эффект Доплера. Возможен и комбинированный подход, сочетающий несколько методов. Я продолжу развивать этот проект и поделюсь результатами!

#Технота #UnrealEngine
  • 🔥 9
  • 👍 4
  • 💯 1
  • 🍾 1
More from @highlevelsound
  1. Oct 9, 2026Александр Sensorica Шукаев Выступит с докладом: «Нужна ли студия в современном саунд-дизай…
  2. Oct 8, 2026Sound Event Forum 2026 уже совсем скоро! 7 ноября мы встретимся по адресу: г. Москва, Дмит…
  3. Oct 5, 2026Алексей Иванин (AK Audio, XSSR Academy, NINAVI, REZTM.COM) Выступит с докладом: «Spatial A…
  4. Oct 3, 2026Раний доступ "Война миров: сибирь" подьехал. Думаю на пару вечеров хватит!)
  5. Oct 2, 2026Post #156
  6. Oct 1, 2026Post #155
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →