论坛

由用户创建的信息 Konstantin Khomyakov
21 April 2016 15:13

Работает!!
http://joxi.ru/KAgoNBeIgaOG1A
Спасибо вам большое!
Хеппи блендфоблендинг!
Супер! Рад, что смог помочь
Только не забудьте выход "Miss" в нодах Switch Select зациклить на вход самой ноды
Иначе при клике не по объекту их списка нодовая логика встанет
Blend4Web Team - developer
Twitter
LinkedIn
21 April 2016 14:32

Должна быть возможность делать паузу на любом кадре и сколь угодно долго держать ее. После, по клику, продолжить до конечного маркера.
В таком случае вам необходимо в ноде Play Timeline выставить галочку "Do not wait" далее по условию остановки (например клик по кнопке или объекту) сработает нода Stop Timeline. Если после остановки таймлайна снова использовать ноду Play Timeline, но не указывать в ней начальный маркер, то таймлайн продолжит проигрываться с кадра, на котором произошла остановка.

Примерно так, только вместо нод Delay должны быть условия остановки и выхода из паузы:
Blend4Web Team - developer
Twitter
LinkedIn
21 April 2016 14:02

Всем привет!
Разрабатываю небольшой проект по демонстрации сборки\разборки приусадебных ограждений.
http://joxi.ru/l2ZRZxbs8QlaG2
Анимация элементов сделана с помощью NLA. Запуск ее реализован через ноду Play Tameline в редакторе логики, между парой маркеров. После запуска анимации, она проигрывается от одного маркера до другого, без остановки. Вопрос такой, к уважаемым разработчикам и знатокам blend4web - есть ли возможность, с помощью нодового редактора логики, организовать паузу в проигрывании анимации между двумя маркерами с последующим продолжением этой же самой анимации?
Спасибо за ваши ответы!
Здравствуйте и добро пожаловать на форум!
Если просто хотите добавить паузу в анимации определенной длительности и на определенном кадре, то можно добавить на таймлайн еще один маркер, проигрывать анмиация до него, далее использовать ноду Delay, в которой можно выставить длительность паузы в секундах, затем проиграть анимацию от добавленного маркера
Blend4Web Team - developer
Twitter
LinkedIn
14 April 2016 18:38

Вроде с R1 сработало :) но вот тип переменной оказывается число. А в моём случае параметр текстовый. незадача…..
Тут нужна уже более новая версия движка. Текстовые параметры не так давно добавили
Blend4Web Team - developer
Twitter
LinkedIn
14 April 2016 17:56

Не записывается значение load в переменную text

что делаю не так ? проверяю в Fast Preview - там увидел что есть параметр load.

Может вопрос к версии движка? с какой эта конструкция должна работать? если конечно она должна :)
Проверил. Прокрался баг
На данный момент нода Page Param всегда записывает значение параметра в переменную R1.
Обязательно поправим к следующему релизу.

Если есть желание поправить именно сейчас, то напишите, пожалуйста, какую версию движка используете и я скину вам хотфикс.
Blend4Web Team - developer
Twitter
LinkedIn
14 April 2016 12:53

А где то можно подсмотреть пример? в документации очень скудно об этом
Ну там вроде бы все прозрачно достаточно.
Например, если сцена расположена по адресу:
http://www.iloveb4w.com/?inventory=show#level=2

Тогда нода вида:

запишет в переменную invent строку "show ",

а нода вида:

запишет в переменную level число 2
Blend4Web Team - developer
Twitter
LinkedIn
14 April 2016 10:22

У меня вопрос к специалистам. Могу ли я с помощью нодов понять на каком URL я нахожусь, как то разобрать строку, чтобы потом исходя из его содержимого ветвить своё дерево нодов. Допустим я рисую интерфейс персонажа (прячу либо наоборот показываю кнопки, подсвечиваю их )в зависимости от того, на какую страницу он зашел.
Добрый день!

На данный момент возможно с помощью ноды "Page Param " считывать параметры переданные в URL (в т.ч. и хеш параметры). Думаю эту ноду вполне можно приспособить под ваши нужды

Blend4Web Team - developer
Twitter
LinkedIn
13 April 2016 20:25

Я оставил по горизонтали как у меня было
m_quat.setAxisAngle(AXIS_Y, delta_x*0.01, quat_Y);
, а по вертикали - как Вы посоветовали.
Вроде то, что я хотел, не знаю как потом будет по геймплею, но это уже увижу когда будет чем играть
Спасибо еще раз
Рад, что смог помочь
Вообще тут довольно обширное поле для экспериментов.
Коллеги предложили, как вариант, попробовать поиграться с функцией cal_ray
https://www.blend4web.com/api_doc/module-camera.html#.calc_ray
И строить с ее помощью вектор от центра куба то точки начала и окончания трекинга курсора и на их основе строить вращения.
Так что пошаманить есть над чем определенно
Blend4Web Team - developer
Twitter
LinkedIn
13 April 2016 18:34
Я хочу, чтобы кубик вращался как бы относительно системы координат параллельных экрану.
В данном примере я настроил вращение полностью в системе координат камеры.

Спасибо. вверх и вниз стало работать лучше, а вот вправо-влево - хуже… он как бы "качается" как на качелях. получается непредсказуемо крутится…
Наверно стоит сказать, что это будет что-то типа этого
Вращение по горизонтали можно оставить относительно локальной системы координат кубика, для подобной игры мне такой вариант управления видится весьма интуитивным .

Для этого в вызове функции умножения на quat_Y небходимо поменять операнды местами:
//поворот в локальной системе координат объекта
m_quat.multiply(quat_obj, quat_Y, quat_obj);
Blend4Web Team - developer
Twitter
LinkedIn
13 April 2016 17:48
Итак
Наиболее прозрачный вариант решения, на мой взгляд:
var cam = m_scenes.get_active_camera();
       m_transform.get_rotation(cam, quat_cam);

       //получаем глобальные координат для осей X и Y
       //из локального пространства координат камеры  
       //вокруг этих векторов далее и будет происходить вращение 
       m_util.quat_to_dir(quat_cam, AXIS_X, CAM_X);
       m_util.quat_to_dir(quat_cam, AXIS_Y, CAM_Y);
       
       //получаем кватернионы вращения вокруг "глобальных" осей
       m_quat.setAxisAngle(CAM_Y, delta_x*0.01, quat_Y);
       m_quat.setAxisAngle(CAM_X, -delta_y*0.01, quat_X);

m_transform.get_rotation(_selected_object, quat_obj);

//вращаем наш объект в глобальной системе координат
//порядок операндов важен! в противном случае вращение будет происходить в локальной системе объекта
m_quat.multiply(quat_X, quat_obj, quat_obj);
m_quat.multiply(quat_Y, quat_obj, quat_obj);
m_transform.set_rotation_v(_selected_object, quat_obj);


Обновленный архив с проектом прикрепил
Blend4Web Team - developer
Twitter
LinkedIn