Forum

User posts VoidVolker
30 January 2015 00:52
Для 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)
29 January 2015 16:29
Насколько я понял, вы повернули сцену так, что камера в блендере смотрит на куб снизу вверх, тогда и ось Z для неё будет вертикальной.
Да, примерно так. Я же на почту кидал линк на сцену. А тут нет системы ЛС?

Теперь по вращениям:

А где у объектов/камры их матрицы? Я заглянул внутрь объектов и увидел там огромное количество параметров и несколько матриц.

- для поворотов используются кватернионы.

API-методы для поворота объектов содержатся в модуле transform.js:
get_rotation()
set_rotation()
set_rotation_v()
Там также можно и через углы Эйлера, но не рекомендуется.
Это-то понятно, это все я уже нашел в документации. Но меня интересует где сама матрица-то?

А вообще, какое поведение камеры требуется? Честно говоря, пока не уверен, стоит ли начинать писать свою модель движения.
Чтобы когда двигаешь в сторону курсором сцену - камера двигалась в соответствующую сторону независимо от текущего положения, а не застревала в шарнирном замке.
27 January 2015 18:56
Ааа, вот оно где. Спасибо! Сменил с таргет на Hover - этот тип камеры двигается, но не вращается. Нашел опции вращения:
Ответ на сообщение пользователя
Blend4Web > Use horizontal rotation
Доступно в режиме Hover при включенной опции Blend4Web > Use distance limits. Разрешить вращение камеры в горизонтальной плоскости относительно опорной точки.
Это конечно здорово, но вот при загрузке сцены в бразуере камера оказывается на оси Z - т.е. почему-то поворачивается на -90 градусов.
Таргет вблизи шарнирного замка в браузере получает лишнее вращение и сцена выглядит под другим углом, нежели в блендере.
В общем, надо делать свое вращение камеры. Я так понимаю, камера - это типа объект и к ней применимы стандартные трасформации объектов? А где у объектов/камры их матрицы? Я заглянул внутрь объектов и увидел там огромное количество параметров и несколько матриц.
27 January 2015 17:57
Камера стандартная, ничего нигде не менялось. Хорошо, попробую. Хмхмх, а где переключить-то?
26 January 2015 23:44
Ага, вот оно как значит. А почему бы не сделать кнопочку в блендере, которая вращала бы оси сразу в блендере и в экспортируемой сцене оси уже были бы по стандарту? Или даже как опцию в настройках экспорта.
Того что есть в движке в принципе достаточно, поэтому свой код писать не нужно, если это только не что-то оригинальное.
Если есть проблемы с конкретной сценой, можете скинуть на почту ivan@blend4web.com, посмотрим.
Так я же говорю в чем проблема: камера попадает в шарнирный замок и нужен иной механизм её вращения вокруг сцены. Собственно, это я и спрашивал - видимо надо таки написать свое. Ну да ладно, раз нету - то напишу. Тогда, такой вопрос: а как вращать камеру? И где у объекта находится его матрица? У меня идея такая: конвертировать движение курсора в вектор, сделать проекцию этого вектора на сферу и уже по сфере кватернионом вращать. Ну или как-то так. Надо бы поэкспериментировать.
26 January 2015 11:51
Всем добра

Есть ли какие-то опции у камеры, чтобы она вращалась не через углы эйлера, а более свободно? Или может какой-то плагин? Или может можно как-то повернуть мир на -90 по иксу и оси b4w и блендера совпадут?
Дело вот в чем: есть простая сцена, в идеале в ней ось Z должна идти вверх (как в блендере). Если в коде поворачивать по иксу на -90 для конвертации осей блендера в b2w оси - то все нормально. Вот только неудобно так работать с кодом, сценой и объектами в браузере. (и вообще - зачем это было сделано? неудобно же).
Так вот, решил попробовать повернуть сцену в блендере и сместить камеру - и тут камера попала в шарнирный замок и невозможно её разместить в наиболее удобном положении ни в блендере ни в браузере. Даже если её как-то направить на сцену - то вид в блендере и в браузере будет различаться - видимо все из-за того же шарнирного замка.
Или таки надо писать свой код для вращения камеры?