Форум

Вращение камеры не через углы Эйлера

30 января 2015 00:52 #1227
Для dev-версии библиотеки мировая матрица на каждом объекте будет здесь: obj._render.world_matrix, но в скомпилированной версии многое подвергается обфускации, поэтому может быть что-то вроде: obj.D.K. Матрицы недоступны через API, т.к. всегда хватало кватернионов. Да и в будущем мы планируем полностью избавиться от необходимости держать матрицы на js.
Ага, ясно, спасибо. Я думаю, что матрица - штука удобная очень, особенно когда надо сразу сделать несколько трансформаций. И смысла прятать её куда-то далеко не вижу.

Шарнирный замок тут не причем - это специфика режима TARGET, а именно: вращение слева направо - это вокруг мировой оси Y. В вашем случае - нужно вращать локально. Действительно, такого режима у нас нет. И вообще, все текущие режимы построены с выравниванием относительно вертикали, т.е. со слежением за up-вектором камеры, иначе её ориентация быстро нарушится, ну т.е. будет как в космосе.
Ааа, так вот оно что. А можно ли как-то повернуть матрицу камеры на теже -90 градусов вслед за осями и она вращалась бы стандартно?

Еще такой вопрос есть: для работы непосредственно с вертексами и фэйсами объекта есть модуль geometry и функции extract_index_array и extract_vertex_array. А что за третий параметр у extract_vertex_array?
attrib_name String Attribute name (a_position, a_normal, a_tangent)
30 января 2015 13:11 #1233
Ага, ясно, спасибо. Я думаю, что матрица - штука удобная очень, особенно когда надо сразу сделать несколько трансформаций. И смысла прятать её куда-то далеко не вижу.

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

glMatrix позволяет нормально работать и с тем и с другим; сейчас неудобно только, если уже есть готовая матрица и её пришлось бы раскладывать на отдельные составляющие и переводить вращение в кватернион.

Также проще будет в перспективе передавать на шейдер комбинацию из перемещения поворота и масштабирования (всего 8 значений) вместо матрицы 4x4.


Ааа, так вот оно что. А можно ли как-то повернуть матрицу камеры на теже -90 градусов вслед за осями и она вращалась бы стандартно?
Вряд ли, вращение в мировом пространстве относительно Y не будет зависеть от ориентации камеры. Тут надо менять сам поворот, он, кстати, реализован в функции rotate_pivot(). Но я бы посоветовал не вращать саму сцену. Можно ведь просто изменить представление, не трогая логику.


Еще такой вопрос есть: для работы непосредственно с вертексами и фэйсами объекта есть модуль geometry и функции extract_index_array и extract_vertex_array. А что за третий параметр у extract_vertex_array?
Указывает какой именно буфер данных возвращать: координаты вершин, нормали, тангенты, текстурные координаты и т.д.
Команда Blend4Web
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.