вторник, 3 февраля 2009 г.

Panda3D: Звук. Часть 1

Для воспрозведения звука в Panda3D используется 3 библиотеки:

FMOD: мультиплатформенный звуковой движок. FMOD поддерживает множество форматов звуковых файлов - MP3, WAV, AIFF, MIDI, MOD, WMA, OGG Vorbis. Но существует одно существенное "НО": лицензией не предусматривается использование данной библиотеки в коммерческих целях, до тех пор, пока она не будет приобретена пользователем.

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.


Комментариев нет:

Отправить комментарий