Форум

Использование NLA

03 июня 2015 18:08 #2650

Слоты не получается запустить путем нажатия на HTML элемент

Да, они имеют дело с объектами сцены.

ВОт для этих целей СЛОТЫ удалить?

Лучше удалить NLA-скрипт, чтобы не возникло конфликтов в управлении анимацией.

запускать НЛА треки программно

В настоящее время существует модуль "nla", можно попробовать работать с ним. Функций set_frame, stop, play должно хватить. Но придется отключить NLA-скрипт
Разработчик Blend4Web
03 июня 2015 18:50 #2653

существует модуль "nla",
Я пока на 15.04. И проект на нем.
Думаю сделать так:
за пример взять " суетящиеся шарики",
нарезать нла-трек на подтреки с уникальными названиями,
удалить цепочку слотов нла,
отключить галочки с циклик нла, ЮЗ нла,
поставить анимационный бихейвор финиш-стоп,
по нажатию проверять условие и запускать по названию необходимый нла трек.

Я ничего не упустил?
Коплю деньги на коммерческий B4W.
04 июня 2015 11:41 #2664
Еще раз здравствуйте.

Я ничего не упустил?

Если я понял вас правильно, то вы разбиваете NLA-стрип на части, даете им уникальные имена и уже в вашем приложении хотите использовать их через методы apply и play из модуля animation. Дело в том, что эти функции работают с action'ом, а не с NLA-стрипом и, увы, такой подход не приведет к желанному результату.

Лучше всего вам будет создать action, это как первый вариант.
Или же использовать API метода nla.js

Но я бы подождал релиза этого месяца, где появится функция play_range(start_frame, end_frame) в модуле nla.js, специально для подобных задач. Кстати, ее функционал можно повторить через уже имеющиеся функции модуля nla
Разработчик Blend4Web
04 июня 2015 12:07 #2668

с action'ом, а не с NLA-стрипом
То есть в Dope Sheets для арматуры сделать actions?


подождал релиза этого месяца,
Не могу. Срок поджал, сдавать нужно было позавчера.
Коплю деньги на коммерческий B4W.
04 июня 2015 12:34 #2670
Если я все правильно понял, у вас имеется один большой экшн, в котором вся анимация объекта. Вы хотели выдернуть из него куски, используя стрипы NLA-анимации. Почему бы не создать новые маленькие экшены из большого? И уже использовать их в коде приложения для запуска анимации
Разработчик Blend4Web
05 июня 2015 09:51 #2678

Почему бы не создать новые маленькие экшены из большого? И уже использовать их в коде приложения для запуска анимации

Я Вас правильно понял?


Спасибо! Работает!


Коплю деньги на коммерческий B4W.
24 июля 2015 07:43 #3167
А NLA поможет мне решить вот такую задачу?

Есть у меня два объекта. Объект А (подставка) вращается вокруг оси Z, объект Б (располагается на подставке) вращается вокруг оси X. В блендере создаю для обоих объектов экшны. В приложении всё хорошо, оба объекта крутятся сами по себе. Но мне нужно, чтобы то, что на подставке, вращалось вместе с подставкой и при этом еще вращалось само. Для этого я добавляю к объекту Б (тому, что на подставке) ограничитель

constraints.append_semi_stiff(obj, parent, offset);


После этого объект Б вращается вместе подставкой, но перестаёт вращаться сам. Сначала думал, что где-то я накосячил, но потом родилось предположение, что после создания ограничителя, дочерний объект игнорирует свой собственный угол поворота и перекрывает его родительским по всем трём осям. То есть анимация дочернего объекта на самом деле проигрывается, но изменений из-за этого не видно.

И вот вопрос, спасёт ли меня NLA или не видать мне счастья?
Гале подарили мяч, Гале подарили торт, Галю поздравляют все - Галя сделала аборт
24 июля 2015 11:20 #3170
Добрый день.

Сначала думал, что где-то я накосячил, но потом родилось предположение, что после создания ограничителя, дочерний объект игнорирует свой собственный угол поворота и перекрывает его родительским по всем трём осям.

Это верно.

И вот вопрос, спасёт ли меня NLA или не видать мне счастья?

Я бы попробовал покодить.
Насколько я понял вас, вам надо иметь постоянное вращение вокруг оси двух объектов. По какому-либо событию (например, клик мышки по объекту) добавлять вращение к выбранному объекту (сохраняя при этом вращение, которое он имел). Подготовил для вас пример с таким функционалом.



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

example_30.zip
Разработчик Blend4Web
24 июля 2015 18:05 #3183
Ухты!!! Огромное спасибо за пример!!!! Узнал о существовании append_loop_cb и прочих временнЫх штук. Видать надо пролистать весь апи в поисках новых для меня методов…

Покодить хотелось, но на данном этапе увы не получится. Дело в том, что о том, какие объекты будут на сцене, есть у них анимации или нет, что это за анимации, кто чей родитель\потомок и пр. мы можем узнать только в момент выполнения программы. Список объектов которые надо загрузить лежит в БД. Там же у объекта может быть указано с каким именем анимацию запустить при определенном действии. Объектов предполагается огромное количество и все они абсолютно разные. Прописать в коде поведение для каждого - нереально. Вот и хотелось анимации сделать не программными и дать им всем определенные имена (use_action, destroy_action и т.п.)

Но в любом случае большущщее спасибо.
Гале подарили мяч, Гале подарили торт, Галю поздравляют все - Галя сделала аборт
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.