Форум

* костяк JS проекта, помогите с выбором последовательности вызовов.

15 июля 2016 13:23
Пишу 1й проект с B4W

Модель уже готова( есть пока вопрося с некоторыми материалами коорые не желают вести себя в рендере как написано)) … но это пока мелочи.
( для упрощения, допустим это - циферблат часов КВАРЦЕВЫХ с хертбитом 1 сек или 1/10 сек )
с видом из одной камеры прямо на плоскость циферблата с парой источнико света солнце и прожектор.

Анимации, а точнее трансформации запускаемые из JS :
1. вращение стрелок относительно пивотов центра циферблата ( поворот на угол от нач. положения)
2. перемещение источника света (ПРОЖЕКТОРА) по периметру с привязкой его цели к 0.0.0
3. остальных анимаций пока не будет(для упрощения)

Условия. полная остановка и обратный запуск рендера( не выгружая модель итд) при внешних условиях, событиях например уход фокуса с окна, переход в спящий режим (событие) , переход в энергосбер. режим( собыите) итд. Рендер по требованию а не с приоритетом FPS.

ВОПРОСЫ:

Возможно ли все это с B4W если да то помогите набросать схему вызовов и процедур
особенно что касаемо приостановки и запуска рендера и рефреша по запросу.

костяк готов в браузере работает но пока все статичное с приоритетом ФПС как в примерах.

стандартно

переменные, инициализация, загрузка, запуск.

может есть пример какой с подобной логикой ?

Спаисбо заранее
Денис
15 июля 2016 13:40
Что бы поставить на паузу, вызовете метод pause из модуля main.
Соответсвенно есть и функции
is_paused()
resume()

Как рендерить по одному кадру, пока не знаю, но можно залезть в исходник модуля main.js и увидеть там метод loop, именно он рендерит каждый кадр. Можно чутка переписать/дописат и получить рендер в каждую сек или 1/10 секунды.

Для поворота стрелок на циферблате можно использовать модуль transform. Не забудьте в блендере отметить стрелки как динамические.

И где то я уже видел тут часики, если найду скину линк следующим постом.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
15 июля 2016 14:36
Как рендерить по одному кадру, пока не знаю, но можно залезть в исходник модуля main.js и увидеть там метод loop, именно он рендерит каждый кадр. Можно чутка переписать/дописат и получить рендер в каждую сек или 1/10 секунды.

если можно по подробнее какой такой МАЙН ? )))

Для поворота стрелок на циферблате можно использовать модуль transform. Не забудьте в блендере отметить стрелки как динамические.

конечно трансформ , а вот про СТАТ и ДИН объекты в доке то написно что их надо выбрать а вот скрина
где это меняется нет ! и даже нет текстового указания где оно,я так и не нашел(


PS У меня это все есть готовое и работает на Three.JS но там таике глюки вылезли с тенями и нормалями, что вот пробую что тут получится.. но как оказалось тут совсем другая песня с управлением элементами мешамиитд.. (((

по сему прошу помощи времни угорохал на это больше чем планировал ((((
Денис
15 июля 2016 15:04
если можно по подробнее какой такой МАЙН ? )))
https://github.com/TriumphLLC/Blend4Web/blob/master/src/ext/main.js#L385
Но лучше пока туда не лезьте
конечно трансформ , а вот про СТАТ и ДИН объекты в доке то написно что их надо выбрать а вот скрина
где это меняется нет ! и даже нет текстового указания где оно,я так и не нашел(
https://www.blend4web.com/doc/ru/objects.html#object-tab тут ищите Force Dynamic Object

ThreeJS ахаха! Добро пожаловать! Я такой же! :D

Ещё рекомендую посмотреть как всё работает на практике тут https://www.youtube.com/watch?v=QGL709n19zY
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
15 июля 2016 15:32
Но лучше пока туда не лезьте

Да я уже нашел ))) в доках по API
мне удивительно, что такой элементарной функциикак обновление по запросу нет (

просто не хотелось бы преписывать исходник ((
а интересно если локаль написать тот же кусок он подменит тот что в основном исходнике?

Про ФОРС ДИНАМИК ОБЖЕКТ, СПАСИБО.. да оно точно там.. )))) поставил галки..
Денис
15 июля 2016 15:50
Я пробовал делать копию всего модуля изменять его и импортить. Но тут может не выйти… Хотя… Короче надо пробовать, так не скажу…

Ну зато есть функция, которая вешает колбэк на каждый кадр отрисовки рендера. Можно запустить, а в колбеке сразу на паузу поставить после отрисовки первого кадра… Профит
Только не помню, функция до или после отрисовки срабатывает… Были когда то какие то изменения по этой функции…
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
15 июля 2016 17:31
Ну зато есть функция, которая вешает колбэк на каждый кадр отрисовки рендера.

как то замутно получатеся ((
Денис
15 июля 2016 17:38
Да оно и правильно, как мне кажется, если захочешь по крутить модель, то тебе нужно макс фпс. К тому же в b4w сразу имеется инерция, при повороте камеры. Поэтому вешать на событие мыши колбек на отрисовку не вижу смысла, хотя на слабых компьютерах может отзывчивость подняться.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
15 июля 2016 18:33
Ответ на сообщение пользователя Кирилл
Да оно и правильно, как мне кажется, если захочешь по крутить модель, то тебе нужно макс фпс. К тому же в b4w сразу имеется инерция, при повороте камеры. Поэтому вешать на событие мыши колбек на отрисовку не вижу смысла, хотя на слабых компьютерах может отзывчивость подняться.

в том то и все тело у меня по тапу происходят только некоторые изменения(планирую) с поворотами итд части модели.. мне надо минимизировать потребление ресурсов т.е. чтоб оно не рендерило если нет изменений в сцене!
а был виден последний кадр готовый , а тем более если дивайс спит или перешел в пониж энергопотребление илии фокус ушел с окна итд.
Денис
15 июля 2016 18:42
Насколько я знаю при потере фокуса активной вкладки все ставится на паузу и тэто вроде не отключить… А так ставьте вручную паузу после окончания анимации.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.