Нестандартные звуки анимаций

Добавлен , опубликован
Раздел:
Моделлинг

О статье

Доброго времени суток, уважаемые пользователи XGM!
В данной статье мы подробно рассмотрим как прикрепить к анимациям модели нестандартные звуки. План:
  1. Выбор модели и анимаций.
  2. Выбор звуков и конвертирование их в корректный формат.
  3. Работа с таблицами AnimLookups.slk и AnimSounds.slk.
  4. Присоединение звуков к анимациям.
  5. Импорт в игру.
(Весь используемый мной материал).
Ну что, приступим!

Подготовка

Используемые программы:

  1. Любой MPQ редактор. (Я использую Ladik's MPQ Editor v3.6.0).
  2. Любой аудио-конвертер, который умеет в wav.
  3. War3 Model Editor (Я использую 1.07).
  4. Любой редактор, который умеет работу с таблицами, например Microsoft Excel.

Выбор модели и анимаций.

Здесь вы можете выбрать любую модель, но я рассмотрю на примере своей модели Военачальника Горианской Империи. Сразу определимся к каким анимациям мы хотим прикрепить звуки. Я выбрал Attack, Attack 2, Attack 3, Attack Slam, Death.

Выбор звуков и конвертирование их в корректный формат.

Для анимаций Attack, Attack 2, Attack 3, я выбрал:
OgreNewAttackEffort1
OgreNewAttackEffort2
Для анимации Attack Slam, я выбрал:
OgreNewCriticalAttack1
Для анимации Death, я выбрал:
OgreNewDeath1
Важно: Для того, чтобы звук воспроизводился в игре корректно и вообще воспроизводился, нужно обязательно сконвертировать в wav:
  1. Sample rate: 22 050 Частота дискретизации
  2. Bit Depth: 16 Битрейт
  3. Channels: Mono аудио-каналы

Работа с таблицами AnimLookups.slk и AnimSounds.slk

С помощью MPQ редактора, мы открываем war3x.mpq до 1.29 включительно, я прикрепил таблицы к статье для тех, у кого 1.30 и выше. Проходим по пути UI\SoundInfo\ и экспортируем файлы: AnimLookups.slk и AnimSounds.slk.

Открываем AnimLookups.slk

Видим три столбца:
AnimSoundEvent, SoundLabel, InBeta.
  1. AnimSoundEvent - здесь вводим 4-х значный идентификатор. Придумываем любой, но отличный от уже существующих. Я выбрал MNR1, MNR2, MNR3 (MNR сократил мой ник Monoroh :))
  2. SoundLabel - здесь что-то вроде описания того, какой звук будет воспроизводиться. Можно написать все, что угодно, но рекомендую писать под название анимаций, для которых этот звук будет воспроизводиться, чтобы самим не запутаться. Я выбрал OgreNewDeath, OgreNewAttack, OgreNewCriticalAttack.
  3. InBeta - от него ничего не зависит, я так полагаю это идентификатор версий. Я везде проставил 1.
На выходе получается вот такая табличка:
AnimSoundEventSoundLabelInBeta
MNR1 OgreNewDeath 1
MNR2 OgreNewAttack 1
MNR3 OgreNewCriticalAttack 1
Фото из Excel
Сохраняем, закрываем.

Открываем AnimSounds.slk

  1. Опускаемся в самый низ и в первый столбец (SoundName) вводим значение столбца SoundLabel из таблицы AnimLookups.slk. Соответственно это будет OgreNewDeath, OgreNewAttack, OgreNewCriticalAttack.
  2. Во второй столбец FileNames вписываем название аудиофайла, который будет воспроизводиться. Соответственно: OgreNewDeath1.wav; OgreNewAttackEffort1.wav,OgreNewAttackEffort2.wav; OgreNewCriticalAttack1.wav. Обратите внимание, что в строку OgreNewAttack, во второй столбец мы вписали два звука OgreNewAttackEffort1.wav,OgreNewAttackEffort2.wav через запятую. Это значит, что при воспроизведении анимаций атак, мы будет слышать либо первый, либо второй звук (рандомно).
  3. В третий столбец DirectoryBase мы прописываем путь, где буду находиться наши звуки. Я выбрал Units\Creeps\OgreNew.
  4. Остальные столбцы я заполнял по образцу соответствующих стандартных звуков. Например для OgreNewDeath я взял значения стандартного звука смерти Огра OgreDeath, а для OgreNewAttackEffort1.wav, OgreNewAttackEffort2.wav, OgreNewCriticalAttack1.wav я взял значения звуков атак Повелителя зверей BeastmasterAttack. Параметры очень гибкие, например можно отстроить дистанцию слышимости, изменяя параметры столбцов MinDistance, MaxDistance, DistanceCutoff, но я решил не импровизировать и оставить стандартные значения Blizzard.
На выходе получается такая табличка:
SoundNameFileNamesDirectoryBase
OgreNewDeath OgreNewDeath1.wav Units\Creeps\OgreNew
OgreNewAttack OgreNewAttackEffort1.wav,OgreNewAttackEffort2.wav Units\Creeps\OgreNew
OgreNewCriticalAttack OgreNewCriticalAttack1.wav Units\Creeps\OgreNew
Остальные столбцы
Сохраняем, закрываем.

Присоединение звуков к анимациям.

Итак, приступаем к самому вкусному, а именно присоединение звуков к анимациям. Делать мы это будем в War3 Model Editor'е. Но сначала подготовим его.
Идем в директорию, куда вы распаковали War3 Model Editor. Заходим в папку Data и там с помощью любого текстового редактора открываем файл SoundData. Спускаемся в самый низ и дописываем строчки:
MNR1 OgreNewDeath
MNR2 OgreNewAttack
MNR3 OgreNewCriticalAttack
Сохраняем, закрываем.
Для чего эти манипуляции?...
Дело в том, что War3 Model Editor берет значения идентификаторов звуков не из таблиц как нам всем казалось и хотелось AnimLookups и AnimSounds, которые благополучно лежат в файлах игры, а как раз таки из этого SoundData файла. Проще говоря, если бы мы не добавили эти строчки в SoundData, то War3 Model Editor не увидел бы наши новые значения.

Ключевые кадры

Теперь открываем War3 Model Editor.
File>Open>Наша модель.mdx.
Теперь нам нужны ключевые кадры анимаций, с которых будет воспроизводиться звук. Для этого идем в Windows > Sequence Manager. Открывается список анимаций. Делаем двойной клик по анимации Attack. Открывается окно Sequence: Запоминаем значение графы From:
Так же проделываем для анимаций Attack 2, Attack 3, Attack Slam, Death.
Вот мы получили значения нужных нам кадров.

Привязка

Далее идем во вкладку Windows>Node Manager.
Перед нами список костей. Все событийные объекты привязываются к главной кости. Часто эти кости называются по-разному. Например bone root, root и т.д. В нашей модели это кость bone_b0 .
Кликаем на bone_b0 правой кнопкой мыши, и жмякаем Create Event Object. Появился объект под названием UNNAMED.
Кликаем по нему два раза, или правой кнопкой мыши>Edit . Открывается окно:
Правый клик по области Event Tracks > Create New.
Открывается окошко Enter a Track Time. В него мы вводим номер кадра, с которого будет воспроизводиться наш звук. Соответственно для анимации Attack вводим значение 74195.
Type оставляем SND (Sound).
Data разворачиваем список и ищем MNR2 - OgreNewAttack. либо в строку ниже вводим MNRH2
Т.к. анимации Attack 2 и Attack 3 будут воспроизводить те же звуки, что и анимация Attack, то мы сюда же добавляем значения анимаций Attack 2, Attack 3. По итогу должно получиться вот так:
Жмем Ок и видим наш объект. Вот, собственно, мы и добавили звуки атак :)
Так же проделываем и для остальных анимаций:
Attack Slam
Death
Итог. Объекты переименовались в тип объекта x идентификатор.
Сохраняем модель. File > Save
Добавление звуков закончено. Осталось только правильно импортировать в игру.

Импорт в игру

Способы:

Осталось дело за малым. Импортировать в игру. Выделю несколько способов:
  1. Добавить в архив war3x.mpq с заменой где нужно. до 1.29 включительно
  2. Добавить в карту.
  3. Создать отдельный архив war3mod.mpq и закинуть туда, не заменяя стандартные файлы. до 1.29 включительно

Пути импорта:

Для таблиц:
UI\SoundInfo\AnimLookups.slk
UI\SoundInfo\AnimSounds.slk
Для звуков:
Units\Creeps\OgreNew\OgreNewAttackEffort1.wav
Units\Creeps\OgreNew\OgreNewAttackEffort2.wav
Units\Creeps\OgreNew\OgreNewCriticalAttack1.wav
Units\Creeps\OgreNew\OgreNewDeath1.wav
Для модели и текстур:
Убрать war3imported из пути.

Заключение

Вот мы и научились прикреплять нестандартные звуки к анимациям :).
Спасибо за внимание! :)
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
17
5 лет назад
0
Э. Зачем это?

Но статья хорошая. Хоть одна качественная и полезная статья появилась в библиотеке статей xgm.
2
9
5 лет назад
2
Хорошая статья!
Кстати, Sound Data править совсем не обязательно, достаточно просто забить ИД звука вручную в графу EventData. Ещё можно написать, что в AnimSounds есть интересные параметры priority (приоритет звука над другими, например при более высокой priority для звука смерти он будет заглушать звуки выстрелов и наоборот) и Volume - уровень громкости, правда, там сильно увеличить громкость не получится.
0
3
5 лет назад
Отредактирован Lame Stallion
0
Все вроде сделал по аналогии, но звук в игре не проигрывается. Звук, правда, взят не из Варкрафта, а из другой игры, может, это в нем проблема - он даже по триггеру не проигрывается в позиционном режиме, только в обычном (хотя я заредачил его в wav со всеми указанными параметрами). Или это я ошибся с редактированием файлов. Хелпаните, плеаз. Параметр звука в Model editor (SoundData) - GGSS GnollShot. В таблицах введен в самом низу.
UPD. По триггеру позиционно (в 3D-формате) заработал нормально, надо было только поднять с нуля значение минимальной дистанции. Несмотря на то, что в AnimSounds у него стоит 600, при анимации выстрела все равно тишина. Значит, проблема не со звуком, а с моими руками. Кто поможет - пришлю ведро чая.
Загруженные файлы
0
9
5 лет назад
0
Lame Stallion:
Все вроде сделал по аналогии, но звук в игре не проигрывается. Звук, правда, взят не из Варкрафта, а из другой игры, может, это в нем проблема - он даже по триггеру не проигрывается в позиционном режиме, только в обычном (хотя я заредачил его в wav со всеми указанными параметрами). Или это я ошибся с редактированием файлов. Хелпаните, плеаз. Параметр звука в Model editor (SoundData) - GGSS GnollShot. В таблицах введен в самом низу.
UPD. По триггеру позиционно (в 3D-формате) заработал нормально, надо было только поднять с нуля значение минимальной дистанции. Несмотря на то, что в AnimSounds у него стоит 600, при анимации выстрела все равно тишина. Значит, проблема не со звуком, а с моими руками. Кто поможет - пришлю ведро чая.
Привет. Ты не добавил в Node Manager Event Object с этим звуком :)
Попробуй.
Загруженные файлы
0
26
5 лет назад
0
Monoroh, он его прикрепил выше к Bone_Hand_L. Пробовал поставить, как обычно и много других изменений, но не воспроизводился звук.
1
10
5 лет назад
1
Всё сделал как в статье, но звук проигрывается, только если в самой игре добавить измененные SLK, если их добавить в карту то 0 эффекта.
Этот комментарий удален
0
2
4 года назад
0
Осталось дело за малым. Импортировать в игру. Выделю несколько способов:
  1. Добавить в архив war3x.mpq с заменой где нужно. до 1.29 включительно
  2. Добавить в карту.
  3. Создать отдельный архив war3mod.mpq и закинуть туда, не заменяя стандартные файлы. до 1.29 включительно
  • Первый пункт сработает только у вас, в смысле если вы будете играть в вашу карту с другом, звук будет воспроизводиться только у вас. Чтобы сработал звук у друга, необходимо не просто скачать карту, а еще и заменить файлы в архиве war3x.mpq у друга.
  • Второй пункт тоже бредовый. Автор предлагает импортировать измененные .slk в карту, однако не все .slk можно просто так импортировать и задать им стандартный путь, потому что они загружаются еще до инициализации карты. Наши AnimSounds.slk и AnimLookups.slk относятся к таким. Список можно посмотреть тут.
  • Третий пункт к сожалению я сам не понял, простите я уж слишком тупой.
P.S. Если я не прав на счет первого и второго пункта, исправьте меня. Мне самому очень нужно добавить свои звуки в анимацию, вдруг способы отличные, а я на них клевечу...
P.S.S. И помогите мне разобраться с третьим способом. Я так понял нужно заархивировать наши .slk и музычку. Но как же импортировать этот файл в карту плюс как это вообще может сработать???
Чтобы оставить комментарий, пожалуйста, войдите на сайт.