Урок по программированию перемещения объектов
02 августа 2016 16:18
Андрей Прахов написал урок, который наверняка очень поможет новичкам в написании приложений на Blend4Web. Если вам не совсем очевидно, как оживить и заставить двигаться объекты с помощью программного кода, вам обязательно стоит обратить на него внимание.
Ссылка на урок.
Ссылка на урок.
28 июля 2017 15:22
Добрый день,
Статья хорошая. Использовал ее в своем обучении. Но у меня есть вопрос. Где можно прочитать про все углы, измерения про вращения? Всякие кватернионы, радианы, градусы и то, что в Blender.
А как получить градус поворота объекта? Разницу между двумя значениями по кватернионам? А еще выполнить плавное вращения объекта по кватернионам. Углы в начале не 60 градусов, как в документации о Кватернионах, а случайные.
Спасибо.
Статья хорошая. Использовал ее в своем обучении. Но у меня есть вопрос. Где можно прочитать про все углы, измерения про вращения? Всякие кватернионы, радианы, градусы и то, что в Blender.
А как получить градус поворота объекта? Разницу между двумя значениями по кватернионам? А еще выполнить плавное вращения объекта по кватернионам. Углы в начале не 60 градусов, как в документации о Кватернионах, а случайные.
Спасибо.
01 августа 2017 12:13
Здравствуйте,
Вообще, в движке здесь 2 принципа: для вращений использовать кватернионы, а углы представлять в радианах - API также на этом завязано. Если вращение нужно получить в другой форме, то можно использовать специальные методы для преобразования, например: util.quat_to_euler и util.euler_to_quat для перевода кватернионов в углы Эйлера и наоборот, также util.rad_to_deg и util.deg_to_rad для перевода из радианов в градусы.
Вообще для проведения различных преобразований есть много полезных методов в модулях vec3/vec4/mat3/mat4/quat - это по сути популярная библиотека glMatrix.
Где можно прочитать про все углы, измерения про вращения? Всякие кватернионы, радианы, градусы и то, что в Blender.- сейчас информация об этом есть, пожалуй, только в разделе про кватернионы, на который вы ссылаетесь.
Вообще, в движке здесь 2 принципа: для вращений использовать кватернионы, а углы представлять в радианах - API также на этом завязано. Если вращение нужно получить в другой форме, то можно использовать специальные методы для преобразования, например: util.quat_to_euler и util.euler_to_quat для перевода кватернионов в углы Эйлера и наоборот, также util.rad_to_deg и util.deg_to_rad для перевода из радианов в градусы.
А как получить градус поворота объекта?Вот как-то так:
var m_trans = require("transform");
var m_util = require("util");
var quat = m_trans.get_rotation(my_obj);
var euler = m_util.quat_to_euler(quat);
var x = m_util.rad_to_deg(euler[0]);
var y = m_util.rad_to_deg(euler[1]);
var z = m_util.rad_to_deg(euler[2]);
Разницу между двумя значениями по кватернионам?Тут надо перемножить кватернион на обратный второго:
var m_quat = require("quat");
// quat1 - quat2
var quat_diff = m_quat.mul(quat1, m_quat.invert(quat2, quat2));
А еще выполнить плавное вращения объекта по кватернионам.Есть функция quat.slerp для интерполяции кватернионов - её можно использовать анимируя входной параметр t от 0 до 1:
var m_time = require("time");
var m_quat = require("quat");
// в течение 5 сек.
m_time.animate(0, 1, 5000, function(value) {
m_quat.slerp(quat1, quat2, value, res_quat);
m_trans.set_rotation_v(my_obj, res_quat);
});
Вообще для проведения различных преобразований есть много полезных методов в модулях vec3/vec4/mat3/mat4/quat - это по сути популярная библиотека glMatrix.
01 августа 2017 22:18