Для воспрозведения звука в Panda3D используется 3 библиотеки:
OpenAL: это также весьма распространенная опен-сорс библиотека, поддерживаемая Panda3D. Можно с легкостью использоваться при создании коммерческого продукта. Единственное, что может в ней не нравится - это нестабильность при работе в unix-средах.
Miles:данная библиотека не идет в комлпекте с движком, поэтому необходимо скачать исходники движка и по шаблону скомпилировать вручную.
Также весьма применимыы библиотеки Pygame и PyOpenAL. (Pygame можно использовать вообще ак отдельное средство для разработки игр на Python`e :) ).
Для выбора желаемой библиотеки для работы с Panda3D необходимо попросту настроить движок (см. статью Panda3D: Настройка).
При конфигурировании параметра audio-library-name использовать следующие варианты: ibp3openal_audio, libp3fmod_audio, or libmiles_audio.
Имейте ввиду: при использовании FMOD на 64-битных системах возможны частые креши.
Теперь немного пошерстим код, позволяющий реализовать музыкальное оформление Ваших будущих проектов.
Логически звук в играх можно разделить на 2 большие категории: звуковые эффекты и собственно музыка. В это плане Panda3D не исключение. Теперь приступим к непосредственному изучению кода.
Импорт звука возможен при использовании "loader" класса. Как нам известно (из прошлых статей) данный класс возможно добавить следующей строкой кода в блоке импорта библиотек и т.д.
import direct.directbase.DirectStart
Теперь используем код для импорта непосредственно звукового файла:
mySound = loader.loadSfx("SoundFile.wav")
Здесь все предельно ясно. В левой части - имя, которое мы присваеваем проигрываемому файлу. Справа расположен код использования класса loader имя и путь к файлу. Важно помнить, что необходимо обязательно указывать расширение файла, а также импортировать форматы, которые поддерживает Panda3D
Чтобы проиграть звук вводим код:
mysound.play()
Для остановки проигрывания:
mysound.stop()
Уровень звука:
Уровень громкости варьируется между 0.1 и 1. Используем код:
mySound.setVolume(0.5) - к примеру
Расположение звукового источника:
Далее приведен код для позиционирования проигрываемого звука. Здесь параметр звука изменяется от -1.0 до 1.0. Следовательно, например, у вас стоит система 2.0, при значении -1.0 - звук будет идти из левой колонк, при 1.0 - из правой. Код:
mySound.setBalance(-0.5)
Это код, как правило, используют для создания в играх эффекта окружения. Также здесь стоит помнить что позиция игрока будет изменяться при движении, поэтому надо будет обновить координаты источника звука. Для этого в движке предусмотрена операция:
base.sfxManagerList[n].update()
Так как каждый кадр рендера воспроизводится отдельно, то данная операция позволяет изменять положение источника звука командой "update".
Данная операция работает и требуется для выполнения только в интерактивном режиме работы с приложениями на Panda3D.
Вообще, я решил разбить статью про звук на несколько частей, чтобы, как можно, подробнее осветить аспекты премудростей звука в данном движке.
С уважением, Dredd.