Форум

Сообщения, созданные пользователем ice99
30 января 2018 14:01
Запутался с векторами поворота и кватерионами.
Значит так.
Вот такая конструкция вращает объект вокруг Vec3, который я задаю:

var AXIS_X = new Float32Array([1, 0, 0]); // Ось Х

m_quat.setAxisAngle(AXIS_X, (-Math.PI/360 ) * increment, quat_tmp); // Определяем кватерион из текущего положения и приращения
m_transform.get_rotation(obj, quat_tmp2); // Получаем текущее вращение в кватерион
m_quat.multiply(quat_tmp, quat_tmp2, quat_tmp); // Перемножаем текущее положение и требуемый поворот
m_transform.set_rotation_v(obj, quat_tmp); // Поворачиваем объект в новую позицию


Код отлично работает, когда я хочу повернуть объект вокруг ГЛОБАЛЬНЫХ осей X,Y,Z.
А мне нужно чтобы объект поворачивался вокруг ЛОКАЛЬНОЙ оси.

Мне нужно получить текущее вращение объекта, но функция

m_transform.get_rotation(obj, opt_destopt) → {Quat}

Даёт кватерион.
А мне нужен Vec3 для функции m_quat.setAxisAngle.

Как быть в данной ситуации?
25 января 2018 21:08
спасибо за ответ, правда про этот способ я уже где то читал но так и не понял как его реализовать, поскольку в програминг не сильно вьезжаю, но по небольшой инструкции сделать смог бы, правда пока не нашёл ее на просторах).
Не пытайтесь сразу сделать игру, где "можно грабить корованы".
Кнопки "сделать красиво" в b4w пока нет, расковыряйте готовые примеры из дистрибутива. Любые.
Проект создавал с такими настройками - Aplication Type - Web player JSON
Сразу забудьте про webplayer, делайте проект.
Сначала сюда
Потом сюда

P.S. "За выходные" - не получится.
25 января 2018 13:57
Есть модель, в ней есть 3 цветовые плажки сделанные простым меш обьектом, к этим 3м цветовым плажкам подвязана нодовая логика и при нажатии на цветовую плажку модель меняет в соответствии свой цвет.
для работы это должны быть 3 разные меша


Возник вопрос как можно сделать эти цветовые плажки активными html элементами, для того чтоб можно было навешать на них каких то стилей. как минимум cursor:pointer при ховере, transition, и тд.
3d объекты активными html-элементами никак не сделать. Можно мониторить по канве "нахождение мышки над плашкой", и менять в зависимости от этого курсор (Javascript\Jquery)

Все элементы засунуты в canvas и обратится к ним увы я не понимаю как,
делаете в mousemove по канве pickobject вашей сцены, если это плашка - меняете курсор например, или стиль через JS
21 января 2018 20:10
Ответ на сообщение пользователя URAHOV
НЕ отображаются текстуры в браузере, но в блендере отображаются. Помогите как правильно устанавливать текстуры в Blend4Web. В сиклес движке все нормально, а тут незнаю как уже все перерыл и уроков никаких нет.
Открывайте консоль браузера (F12) и смотрите красные сообщения (ошибки). Может быть они просто "not found" в вашей папке. Либо они супернавороченные \ неподдерживаемые. Киньте в ЭТУ ЖЕ сцену plane с простым diffuse, и сделайте превью. Если на plane-e текстура есть - проблема в ваших текстурах.
14 января 2018 16:11
Ответ на сообщение пользователя kokon
Спасибо за ответ! Возможно ли данный функционал реализовать с помощью визуального редактора логики?
Я бы не налегал на визуальный редактор логики. Шаг влево/вправо уже проблема с реализацией. Пишите сразу обычный JavaScript код.
14 января 2018 16:08
В соседней теме ссылкаподнял проблематику, и понял что "разговоры были, но в движке не реализовано". Хотелось, бы, конечно.
14 января 2018 01:22
Ответ на сообщение пользователя kokon
Приветствую всех! Появился новый вопрос. Как продолжить анимацию автоматически, после короткой паузы с того же кадра, на котором она была остановлена. Останавливается анимация кубика, в данному случае, щелчком на невидимой плоскости. В приложении моя попытка это сделать, но анимация всякий раз стартует с первого кадра.
Спасибо за ваши ответы!
Перед запуском анимации выставляйте кадр, с которого нужно начать.
set_frame(obj, slot_numopt) → {number}
можно запомнить на каком кадре была остановлена анимация
get_frame(obj, slot_numopt) → {number}

В настройке Блендера есть опция цикличности анимации loop , e.t.c.
14 января 2018 01:18
Ответ на сообщение пользователя Никита Корнеев
А для какой задачи это необходимо? Если не секрет. Просто я не совсем представляю сцену для загрузки в неё объектов, при этом для демонстрации обязательно нужно использовать больше 4х источников света, допустим, еще enviroment lighting
Всё просто. Демонстрируется не столько объект, сколько рисунок светом на нём. Отсюда и необходимость множества источников с тенями. Свет здесь первичен, объект вторичен.
13 января 2018 20:42
Ответ на сообщение пользователя Никита Корнеев
Можно в материале трубы подкрутить хаки, чтобы игнорировать внутри трубы действие ноды Material (Extended Material), если материал объекта нодовый, тогда не будет засвета. Но скорее всего, это не то, что вам нужно

Ответ на сообщение пользователя sunsetrain
Ну а если через front/back не рисовать спекуляр на обратной стороне полигонов? Материал тот же будет

Дело в том, что трубу я показал для примера. Ситуация "осложняется" 2-мя обстоятельствами
1. Модель может быть абсолютно любой геометрии
2. Модель автоматически конвертируется блендером (питон), без моего участия. Ну максимум я могу поставить пару галочек в свойствах через тот же питон. Так что "ручного" доступа к модели нет. т.е. стоит задача не конкретной модели, а решения задачи в общем виде.

Коллеги по продукту подсказали что это можно решить через three.js и deffered rendering/shading , но я так понимаю у разработчиков b4w нет четких планов. ( Почитал комменты здесь https://www.blend4web.com/ru/community/article/172/ )


Поскольку deferred shading-а нет в Blender, мы его так же не внедряем. Сейчас идет довольно активное обсуждение планов по будущему Viewport-y (в котором мы тоже участвуем). Тема отложенного рендеринга так же поднимается. Но он не будет стандартом де-факто. Потому что помимо очевидных плюсов в виде возможности использовать большое количество "быстрых" источников света у deferred shading-а есть и серьезные минусы, которые не позволят к примеру с нынешней гибкостью настраивать материалы.

С удовольствием бы пожертвовал гибкостью материалов при deffered.

А можно ли вручную\через костыль реализовать это в приложении? Может системой камер, работой с буфером, рендерингом в текстуру и т.д. ?
12 января 2018 21:09
В мануале к движку написано, что тень могут давать максимум 4-ре источника (либо 3 + Ambient occlusion).
Я подсвечиваю объект 6-ю прожекторами.
Мне нужно не столько кастовать тени, а не подсвечивать закрытые плоскости одного и того же объекта.
Ниже пример.
Взял трубу, свечу на неё сбоку. На внешней стенке блик - отлично. Но что он делает внутри?
Есть ли какой-нибудь способ ограничить проникновение света на закрытые участки объекта для 6-ти прожекторов (ну, 5-ти и более в общем виде)?
P.S. Инверсия нормалей и другой внутренний материал не подойдут.