Форум

Добавление функционала webplayer'у.

06 апреля 2015 23:22 #1973
Помогите пожалуйста добавить в вебплеер ползунок предоставляющий возможности перехода в отдельные кадры анимации. То есть как я понял тут и работы немного, лишь перетащить часть кода из viewer'а в webplayer, но я оказалось туп и эта задача стала для меня непосильной. Вы последняя надежда.
06 апреля 2015 23:24 #1974
Скриншот забыл
06 апреля 2015 23:25 #1975
Ок. Вставлю ссылкой:
07 апреля 2015 12:20 #1981
Добрый день.
Напомню про условие изменения интерфейса веб-плеера:

Что будет, если я изменю интерфейс веб-плеера (например, удалю/заменю логотип)?
Вы имеете на это право. Однако, в случае использования открытой версии движка, это означает, что вы соглашаетесь со всеми условиями General Public License (GPL) и обязаны опубликовать в открытом доступе код модифицированного веб-плеера и исходные файлы загружаемых им моделей. В случае использования коммерческой версии движка Вы можете делать с веб-плеером все, что пожелаете.
https://www.blend4web.com/ru/faq/#quest_2_2

Относительно самой идеи: в приложении viewer существует отдельное меню для анимации, куда входят не только текущий кадр, но и объект, слот и т.д. Реализация Вашей идеи наложит ограничения на количество анимации на объект.

Подготовил для Вас пример подобного функционала:


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

Пример:
webplayer.zip

Не забудьте прописать путь к json-файлу после открытия приложения. Пример можно посмотреть на картинке. После параметра "?load=" пишется пусть к json'у относительно html-файла webplayer'а
Разработчик Blend4Web
08 апреля 2015 16:14 #1984
Спасибо!
28 сентября 2015 23:46 #4121

Объект подхватывается по клику мышки, используется нулевой слот анимации. При наличии анимации на объекте появляется слайдер управления в верхнем левом углу
Что то не очень понял как сделать такой ползунок.
В примере только плеер и никакого доп. кода
Baasis - vk.com/baasis - vk.com/pro_blender
OS: Mint 18 Sarah x86_64 Linux 4.4.0-21-generic, DE Cinnamon, CPU: Intel Core i7-2600K CPU @ 6.3GHz, GPU: GeForce GTX 680, GeForce GTX 650 Ti, RAM 16Gb
Браузеры: неадекватный FireFox v49, не люблю но тестирую все на Google Chrome v54, вроде сойдет Vivaldi 1.4.589.38
29 сентября 2015 13:10 #4124
Был изменен исходный код плеера.
Слайдер добавляется на страницу в файле webplayer_dev.html в 41-43 строках:
<div id="slider_container" style="width:25%; position:absolute;display:none;">
        <input id="anim_frame_current" data-highlight="true" value="0.0" min="0.0" max="1.0" type="range" step="1.0">
</div>


Обработка выделенного объекта идет в файле webplayer.js в строках 835-860:
function main_canvas_down(e) {

    if (e.preventDefault)
        e.preventDefault();

    var x = m_mouse.get_coords_x(e);
    var y = m_mouse.get_coords_y(e);

    var slider_container = document.getElementById("slider_container");

    var obj = m_scs.pick_object(x, y);
    if (obj) {
        m_anim.apply_def(obj);
        if (m_anim.is_animated(obj)) {
            _anim_obj = obj;
            var frame_slider = document.getElementById("anim_frame_current");
            var range = m_anim.get_anim_length(obj, 0);
            frame_slider.max = range.toString() + ".0";
            m_anim.set_frame(_anim_obj, _current, 0);
            slider_container.style.display = "block";
            return;
        }
    }
    slider_container.style.display = "none";

}


Далее выставление связи между шкалой и объектом, который имеет анимацию. Тот же файл, 177 строка:
bind_control(set_animation_params, "anim_frame_current", "number");


Ну и функция-обработчик движения слайдера (в самом низу того же файла):

function set_animation_params(value) {

    if ("anim_frame_current" in value && _anim_obj) {
        var slot_num = 0;
        if (!m_anim.is_play(_anim_obj, slot_num)) {
            _current = parseInt(value.anim_frame_current);
            if (_current)
                m_anim.set_frame(_anim_obj, _current, slot_num);
        }
    }
}
Разработчик Blend4Web
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.