Форум

Сообщения, созданные пользователем Михаил
22 января 2017 20:14
Проблему решил, всё тривиально, сам наошибался.
Для поворота объекта в сответствии с тремя заданными взаимоперпендикулярными осями использую этот код:
m_tr2.set_rotation_v(object, m_quat.fromMat3(matr3, m_quat.create()));

matr3 - матрица 3x3, строки соответствуют нормализованным векторам x, y, z.
19 января 2017 13:12
Добрый день.

Долгое время мучаюсь с поворотами с помощью кватернионов, не могу понять где ошибка.
Задача следующая.
Есть объект, и есть три взаимно перпендикулярных вектора, до которых нужно довернуть объект из исходной ориентации.
Пробовал разными способами:
- перемножением двух поворотов rotationTo, нормализацию векторов делал;
- создавая матрицу вручную и из неё кватернион с помощью fromMat3;
- с помощью setAxes;
Но во всех случаях в итоге то, что требуется не получалось, объект поворачивается как попало.

Например, с помощью SetAxes, вроде бы совсем элементарно.
Вот этот код не приводит к повороту объекта (на выходе кватернион [0,0,0,1]), из чего делаю вывод по направлению базовых осей (view - ось Y, right - ось X, up - ось -Z):
      m_quat.setAxes([0,1,0],  [1,0,0],  [0,0,-1],  quat_rez); // (view, right, up, rez)
      m_tr.set_rotation_rel_v(obj, quat_rez);

Теперь хочу повернуть объект так, чтобы взгляд вперёд был по оси X, направо - ось -Y, направление на верх не меняем.
      m_quat.setAxes([1,0,0],  [0,-1,0],  [0,0,-1],  quat_rez);
      m_tr.set_rotation_rel_v(obj, quat_rez);

Но объект поворачивается неправильно, ось Z начинает смотреть на -Y.

Может у кого есть простейший пример кода для решения этой задачи (довернуть объект до трёх заданных взаимно перпендикулярных векторов).
27 февраля 2016 23:26
То что надо, спасибо)
27 февраля 2016 00:03
Здравствуйте. Не могли бы Вы привести пример того, какие параметры нужно передавать в функцию target_setup, при установке камеры в этот режим.
К примеру, я хочу на базовой сцене с кубом включить режим камеры Eye, а потом обратно включить Target.
08 февраля 2016 11:19
Да уж… действительно. Что-то я совсем не внимателен, заработался. Добавил нужный параметр напрямую в b4w.min.js, без пересборки, теперь всё работает как надо.
08 февраля 2016 00:37
К сожалению, возникла новая проблема
Сделал два пробных проекта, один реализован с модулем app, другой без него.
В обоих идёт вывод цвета пикселя в консоль.
Но данные выводятся вперемешку с нулевыми данными. Со всеми проектами в составе SDK такой проблемы нет.
Конечно, можно нулевые данные отфильтровывать, но это лишняя нагрузка на систему, хорошо бы получать только значимые данные.
У себя файл SDK/src/config.js изменил в соответствии с вышеуказанным.
Архивы с проектами прикрепил, взгляните пожалуйста.
07 февраля 2016 19:11
Огромное спасибо!!! Работает!
06 февраля 2016 18:47
Разбираясь в том, как считать пиксели в буфер, столкнулся с некоторыми проблемами. Я написал небольшое webGL приложение без blend4web, чтобы понять, как это реализовать эту функцию, и я успешно получил пиксели в буфер. Но перенести на страницу с интегрированным b4w не получается. Причина в следующем: чтобы применить функцию readPixels нужно выполнить одно из двух условий:
1. Установить флаг preserveDrawingBuffer (источник)
2. Перерисовать область canvas перед самым вызовом readPixels
Как реализовать это с b4w, пока не могу понять.
02 февраля 2016 22:08
Здравствуйте.
Я использую встроенный игровой движок blender . Там мне необходимо считывать часть изображения игровой области как набор RGB-значений каждого пикселя. Для этого использую функцию bgl.glReadPixels.
Возможно ли как-либо достичь этого в blend4web? Иначе говоря, можно ли в b4w загрузить в массив цветовые значения отдельной (или всей) области отрисовки?

И второй вопрос. Возможно ли в b4w сохранять изображения (например скриншот области отрисовки) во внешний файл?
Заранее спасибо.