Спикеры

24 марта 2017 10:50
Привет всем,

Поборолся вчера за работу спикеров - к камере закреплены 22 спикера с разными звуками. Процесс был не прост. Из них 21 шт. - можно объединить в один файл, добавить полсекунды с фэйдами и паузить по кадрам анимации, но почему-то в процессе эксплуатации выяснилось, что если переключаешься из окна браузера, а потом обратно, после какого-то времени пауза отключается, поэтому вынужден был прилепить 21 спикер. Работает нормально на десктопе, а на мобильном устройстве за полсекунды возникает какофония, включая композицию из буфера встроенного в смартфон медиапроигрывателя, а потом звук отключается либо браузер вообще не грузит картинку после прелоадера. Формат и сэмплрейт не влияет. Убирал и снижал количество спикеров - начало работать, но только с одним спикером. Оказалось дело в настройке поведения - если ставить background music - возникает такой глюк, если ставить sound, то все работает.

Для информации. Ну и если с паузой вопрос можно решить, тоже было бы неплохо.
Алексей
25 марта 2017 08:10
Ещё возник глюк с точечной нотацией словаря. При компиляции и использовании exports.словарь_громкостей вызов для двух разных спикеров в одном интервале set_volume приводил к ошибке переменной. А если значение выставлялись вручную или с использованием квадратных скобок - все работает нормально. Мистика какая-то…
Алексей
27 марта 2017 12:32
Добрый день.

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

Может быть вам подойдёт следующий вариант: создать элемент audio и изменять ему атрибут src, когда требуется замена звукового файла. Он так же имеет методы play, pause, cyclic

Не получилось воспроизвести баг с самопроизвольным запуском, делаю следующие действия:
-добавляю спикер на сцену, назначаю ему аудиофайл, выставляю свойства cyclic, autoplay
-ставлю спикер на паузе через sfx.pause
-сворачиваю браузер, меняю вкладки
Разработчик Blend4Web
27 марта 2017 12:42
Ещё возник глюк с точечной нотацией словаря. При компиляции и использовании exports.словарь_громкостей вызов для двух разных спикеров в одном интервале set_volume приводил к ошибке переменной. А если значение выставлялись вручную или с использованием квадратных скобок - все работает нормально. Мистика какая-то…

Давайте рассмотрим 2 случая. Допустим что у нас в сцене есть два спикера с именами name_1 и name_2
Случай 1.
exports.speakers_properties = {
    name_1 : {
        volume : 1
    },
    name_2 : {
        volume : 0.5
    }
}

При таком объявлении произойдёт обфускация свойст name_1 и name_2. И если обратиться к этому объекту следующим образом:
speakers_properties[m_scenes.get_object_name(speaker_object)]

то произойдёт ошибка, поскольку обфускация превратила поля name_1 и name_2 в человеконечитаемый код

Случай 2.
exports.speakers_properties = {
    "name_1" : {
        volume : 1
    },
    "name_2" : {
        volume : 0.5
    }
}

В этом случае мы защитили name_1 и name_2 от обфускации и теперь (после компиляции) они соответсвуют именам объектов в Блендере.

Я правильно понял ситуацию ?
Разработчик Blend4Web
31 марта 2017 06:17
В этом случае мы защитили name_1 и name_2 от обфускации и теперь (после компиляции) они соответсвуют именам объектов в Блендере.

Я правильно понял ситуацию ?

Доброе утро,

У меня как раз идет:

   exports.volume = {"main" : 0.3, "fade" : 0.1};


для громкости и:

    var speakers = {};

    var _speakers_tmp = m_sfx.get_speaker_objects();

    for (var i = 0; i < _speakers_tmp.length; i++){
        if (_speakers_tmp[i].name != "background") {
            speakers[_speakers_tmp[i].name] = _speakers_tmp[i];
            console.log(_speakers_tmp[i].name);
        }
    };


для спикеров.
Вроде здесь нет имен переменных в ключах словаря, поэтому и интересно стало в чем может быть дело.
Алексей
31 марта 2017 11:35
Доброе утро
А не могли бы вы привести листинг кода, который некорректно себя ведёт. Насколько я понимаю, это происходит уже при чтении из словарей
Разработчик Blend4Web
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.