Наша новая игра 8 сентября в раннем доступе на steam



Автоматическая синхронизация звука с событиями в сцене 3ds Max

Один хороший человек поделился автоматическим способом синхронизации звуков с помощью программы SoX. Причём, звуки создаются синхронно с анимацией, сделанной в 3ds Max. И не просто синхронно (к примеру, во время падения капли), но также учитывается положение капли относительно камеры, чтобы правильно распределить звук между левым и правым ухом (можно работать как в стерео режиме, так и со звуком 5.1).

Сначала посмотрите вот эту пятнадцатисекундную анимацию. Включенные две колонки или наушники на ушах обязательны (!):

Как видно, особенно на последних секундах анимации, каждый раз когда кладётся планочка паркета, вы слышите звук, который автоматически был вставлен в нужный кадр. Причём звук также зависит от положения планочки относительно слушателя (относительно камеры). Т.е., если досочка упала справа, то и звук будет в правом ухе. Если досточка упала далеко слева, то и звук будет тише и больше слышен в левом наушнике.

Для реалистичности я также добавил задержку поступления звука в определённое ухо в зависимости от того, где упала планка. А еще, чтобы звуки не были однородными, я внёс некоторый разброс в звучание каждого падения.

Вот послушайте, как бы всё звучало без этих небольших улучшений:

Применение может быть чрезвычайно разнообразным. От капель дождя и падения разнообразных 3D объектов, до моушен дизайна, когда каждое изменение какого-то объекта генерирует свой звук.

Теперь о том, как всё это сделано. Пайплайн работы прост.

  1. С помощью двух строчек скрипта из 3ds Max в обычный текстовый файл выводится информация о времени, в котором должен появиться определённый звук.
  2. С помощью программы SoX обрабатывается этот текстовый файл и в нужный момент времени на аудио дорожку ложится указанный вами звук.

Поскольку всё это работает в автоматическом режиме, то можно озвучивать огромное множество объектов в кадре.

Как работает SoX и что это за программа.

SoX - это аналог отличной программы по работе со звуковыми файлами Audacity, с той лишь разницей, что SoX работает через командную строку, а не через графический интерфейс. Именно командная строка и открывает такие большие возможности для совместной работы с 3ds Max.

SoX бесплатна и работает под любой операционной системой. Она может конвертировать звуковые файлы из одного формата в другой, накладывать эффекты на звук, редактировать (резать, миксовать, работать с каналами и много всего другого).

К примеру, наберите вот такую строчку в командной строке (о ней ниже). Конечно, после того, как вы установите SoX:

sox -m звук1.wav звук2.wav результат.wav

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

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

Причин нелюбви к русским буквам и к транслитерации две: нет проблем с совместимостью и постоянная практика английского :). Кстати, я когда-то написал статью о том, как правильно обзывать объекты и какой структуры проекта нужно придерживаться. Уверен, она многим будет полезна.

Как запустить командную строку.

Командную строку можно вызвать в Total Commander'е:

Командная строка в Total Commander

или запустить виндовую командную строку через ввод команды cmd в поле Выполнить (Win+R):

cmd.exe Windows командная строка

Чтобы команда запустилась, нужно в Тотал Командере или в cmd.exe находится в папке программы SoX и чтобы там же были файлы звук1.wav и звук2.wav.

Простые эффекты в SoX.

Можно сдвигать звук:

sox пип.wav результат.wav pad 2000s

В примере выше берётся файл пип.wav, добавляется 2000 сэмплов тишины в начале, а результат записывается в новый аудио файл результат.wav.

Можно изменять высоту звука:

sox пип.wav медленный-пип.wav speed 0.5

Аудио клип пип.wav будет замедлен в половину (а значит звук станет на октаву ниже) и результат будет оформлен в виде нового файла медленный-пип.wav.

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

Таким образом, чтобы в существующий клип вставить звук "бздыньк" на третьей секунде достаточно выполнить две операции;

sox бздыньк.wav новый-бздыньк.wav pad 144000
sox -m новый-бздыньк.wav существующий-клип.wav новый-клип.wav

Первая команда создаёт временную копию бздыньк.wav - файл новый-бздыньк.wav с тремя секундами тишины в начале (это если частота дискретизации звука 48000 Гц или 48000 семплов в секунду. Семпл - это, если грубо, такой маленький кусочек аудио, который получается, если разделить одну секунду звука на 48000 частей. Обычно, для mp3-записей эта величина равняется 44100 Гц; для речи, которая передаётся по телефону хватает 8000 Гц; а для высококачественного DVD-аудио - это будет 48000, 96000 или больше герц).

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



Подпишитесь на обновление блога (вот 3 причины для этого).
Введите ваш e-mail:


Читайте продолжение во второй части - Озвучивание событий в 3ds Max.

Урок я написал на основе тутора:

Using SoX to automate audio creation for 3D Studio Max.

P.S. Горилла против тигра на заглавной картинке сделана в Modo, Photoshop и ZBrush. Автор картинки Damian Buzugbe создал всё в Modo 401, кроме тигра (его создал другой человек в 3ds Max). Волосы, шерсть и рендер - тоже Модо, а потом много всего дорисовано в Фотошопе (та же шерсть и задний план, к примеру). Смотрите оригинал тут.




Вам понравилась статья? Хотите отблагодарить автора? Расскажите о ней друзьям.
Или подпишитесь на обновление блога по E-Mail.

Введите ваш e-mail (используется только для отправления обновлений блога):

комментариев 6 к статье “Автоматическая синхронизация звука с анимацией в 3ds Max, часть 1”

  1. Интересная оказывается прога SoX . А вот второй файл (без улучшений) не открывается..

  2. Можно узнать, а как вы так красиво паркет уложили?

    • В каком смысле «так красиво»?

      • в прямом смысле красиво. понравился эффект укладки. только как это реализовать не понимаю. это maxscript?

        • Сначала я просто красиво уложил паркет с помощью инструмента Array. А потом скриптом анимировал переворот каждой паркетинки в своё рандомное время.
          Ссылку на скрипт я добавил в начале второй части статьи.

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

Извините, в данный момент комметарии закрыты.

© 2008 - 2018 3dyuriki.com
Для связи со мной 3dyuriki@gmail.com