Forum

User posts Konstantin Khomyakov
09 February 2018 16:40
I'm trying to get shadows to work with shape keys — to move as the shape key moves. Does anyone have any suggestions?
Hello,

shadows should work fine with shape keys (example: morphing code snippet).
How do you update shape keys values?
Blend4Web Team - developer
Twitter
LinkedIn
07 February 2018 15:50
Добрый день!

По этому поводу есть небольшая тема на английском форуме: https://www.blend4web.com/en/forums/topic/4177/?page=1#post-20270
Blend4Web Team - developer
Twitter
LinkedIn
30 January 2018 21:58
Всё-таки непонятно, почему ваша формула
Math.acos(tmp_quat[3]) * 2

работает только "наполовину" - в точках 180,270,360 ок, а в остальных погрешности в пару градусов. Моих знаний не хватает.
Понятие поворота вокруг одной из локальных осей координат (или оси заданой в локальной системе координат) возникает только при произвдении кватернионов, которое является последовательностью поворотов. Т.е. можно мыслить так: мы повернули локальную систему координат с помощью одного кватерниона, затем совершили еще поворот вокруг оси "зашитой" во второй кватернион, но уже определяя эту ось в повернутой на первом шаге системе координат.
Но в итоге мы получаем результирующий кватернион, в который зашита вообще говоря новая ось вращения (не из 1-го и 2-го исходных кватернионов). То есть угол получаемый по формуле не является углом поворота вокруг локальной (после поворота 1-ым кватернионом) оси Х объекта, отсюда и расхождения.


Наверное не подойдет, т.к. планирую загрузку данных из webstorage (а там еще и историю операций хранить - совсем вешалка), т.е. мне будет видно только последнее состояние системы, без предыстории.
Тут немного другое имелось ввиду, не история операций, но в любом случае, если есть возможность просто в логике приложения хранить необходимый угол, то это будет оптимальным и наиболее надежным способом
Blend4Web Team - developer
Twitter
LinkedIn
30 January 2018 19:00
Получить значение поворота ЛЮБОГО объекта сцены в градусах (т.е. локальное положение относительно мира).
Например (angle_X, angle_Y, angle_Z). Например (45, 267, 310).
Внутри движка ориентация объектов хранится в виде кватернионов. Преобразование кватернион -> углы Эйлера не является однозначным в общем случае.
Не совсем понял про локальное относительно мира…
Если вам необходимо только знать значение поворота вокруг локальной оси Х, который вы производили, то проще всего будет запоминать его в логике приложения в явном виде.
Либо придется вычислять угол между проекциями векторов до и после поворота на кватернион на локальную плоскость YZ.
Blend4Web Team - developer
Twitter
LinkedIn
30 January 2018 17:52
Что-то всё-равно не так.
Во-первых, наверное всё-таки вы имели ввиду
Math.acos(tmp_quat[3]) * 2
Ага, сегодня явно не мой день
1. изменение на реальные 180 градусов.
2. Очень точные значения в точках 180, 270, 360 градусов.
Но в промежуточных углах разброд и шатание, который не уйдет через округление Math.round
Опишите, пожалуйста, задачу в целом:
начальная ориентация объекта, какой поворот нужен и какие значения хотите получать итд так понятнее будет
Blend4Web Team - developer
Twitter
LinkedIn
30 January 2018 17:04
Так. Новые вводные.
Вращаю я так, как мне надо. Сделал даже инкремент вращения на 5 градусов.
Вращаю объект на 180 градусов
Теперь мне нужно ПОЛУЧИТЬ вращение объекта в ГРАДУСАХ.
Делаю так
console.log ((m_transform.get_rotation_euler(obj)[1]*(57.2958)));

Получаю вывод консоли
0..5..10..15.. …..85..90 - казалось бы - получены градусы, но не тут то было поворот от 0 до 180 дает следующий вывод
0..5..10..15.. …..85..90..85..80.. … … 15..10..5.
т.е. до 90 идет нормально, а потом вместо 95 идет 85 и так далее.
т.е. двум положениям соответствует один угол.
Как избежать такой дихотомии?

Или можно как-нибудь получить "человеческие" градусы не через углы Эйлера?
Угол поворота вокруг оси вращения заданной в кватернионе (те по сути угол поворота при вращении через AxisAngle) можно получить как:
Math.acos(tmp_quat[3]) * 2
Blend4Web Team - developer
Twitter
LinkedIn
30 January 2018 15:36
У вас небольшая ошибка. Вы вычисляете просто квадрат кватерниона.
Вот так заработало
Да, это, конечно, очепятка. Сейчас поправим, чтобы случайно забредших в тему не вводить в заблуждение
[UPD] нормализовывать вектор, задающий ось, нужно всегда, для корректной работы m_quat.setAxisAngle
Blend4Web Team - developer
Twitter
LinkedIn
30 January 2018 14:46
Мне нужно получить текущее вращение объекта, но функция

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

Даёт кватерион.
А мне нужен Vec3 для функции m_quat.setAxisAngle.
достаточно взять первые 3 компоненты кватерниона + нормализовать полученный вектор
Blend4Web Team - developer
Twitter
LinkedIn
30 January 2018 14:33
I made a transparent material with transparent BSDF node in cycle render and inside the blend4web material I activated alpha clip for the material, but I cannot do fastprieview, it stops at 43%. While if I change to alpha blend or sort it works but its not the result that I want.
I want to know whats the problem with alpha clip, how can I have it creating the material inside cycle render?
For now BSDF transparent node automatically enables alpha sort transparency.
43% load stop is a bug we'll fix it. We can add alpha clip option for cycles materials if needed
Blend4Web Team - developer
Twitter
LinkedIn
30 January 2018 14:15
Код отлично работает, когда я хочу повернуть объект вокруг ГЛОБАЛЬНЫХ осей X,Y,Z.
А мне нужно чтобы объект поворачивался вокруг ЛОКАЛЬНОЙ оси.
Нужно заменить порядок перемножения кватернионов:
m_quat.multiply(quat_tmp, quat_tmp, quat_tmp2);
m_quat.multiply(quat_tmp2, quat_tmp, quat_tmp2);
Blend4Web Team - developer
Twitter
LinkedIn