Я делаю игру, и мне нужен снаряд, в каком направлении он идет. Я знаю, в каком направлении он движется, и мне нужно сделать матрицу преобразования, которая позволила бы выровнять направление модели снаряда (1, 0, 0) или положительную ось Х любому произвольному вектору. Как я могу это сделать в glm?GLM Make Rotation Matrix от vec3
1
A
ответ
2
Эй, я понял ответ из, который был близок к @Mr_Pouet, но здесь это:
const glm::vec3 a = ...;
const glm::vec3 b = ...; // in my case (1, 0, 0)
glm::vec3 v = glm::cross(b, a);
float angle = acos(glm::dot(b, a)/(glm::length(b) * glm::length(a)));
glm::mat4 rotmat = glm::rotate(angle, v);
Вы можете заменить или б все, что вы хотите, где вектор вы хотите для перевода, и b, где вы находитесь. Мы можем оптимизировать это, если Ь (1, 0, 0) или оси х, как и в моем случае:
glm::vec3 v = glm::vec3(0, -a.z, a.y);
float angle = acos(a.x/glm::length(a));
glm::mat4 rotmat = glm::rotate(angle, v);
Я надеюсь, что это поможет кому-то!
1
Вы используете для правильного направления?
Вы могли бы сделать что-то вроде этого:
glm::mat4 transform = glm::eulerAngleYXZ(euler.y, euler.x, euler.z);
Или с помощью кватернионов:
glm::quat rot = glm::angleAxis(glm::radians(angle_in_degrees), glm::vec3(x, y, z));
glm::mat4 rotMatrix = glm::mat4_cast(rot);
Если вы не искали что-то же просто, как glm::lookAt
?
detail::tmat4x4<T> glm::gtc::matrix_transform::lookAt
(
detail::tvec3<T> const & eye, // from
detail::tvec3<T> const & center, // to
detail::tvec3<T> const & up // up
)
Смежные вопросы
- 1. glm quaternion rotation merge
- 2. glm :: vec3 precision C++
- 3. Использования GLM для создания матрицы модели, основанной от трех Vec3
- 4. Как glm :: vec3 и glm :: mat4 инициализирован?
- 5. glm comb rotation and translation
- 6. openGL/glut & glm ModelView Matrix
- 7. glm :: vec3 и сравнение epsilon
- 8. Multiply vec3 с mat4 использованием GLM
- 9. GLM - Quaternions and Rotation
- 10. Matlab Matrix Rotation, размеры
- 11. AS3 Matrix Rotation
- 12. Rotation + Matrix + JSFL
- 13. Преобразование glm :: lookat matrix в quaternion and back
- 14. Weird аварии на asigning в GLM :: Vec3 постоянная ссылка на другой GLM :: Vec3
- 15. GLM :: vec3 массив передать шейдера -OpenGL -GLSL
- 16. Возврат glm :: vec3 x value возвращает null
- 17. C++ Cast float * to glm :: vec3
- 18. glm translate matrix не переводит вектор
- 19. Reposition UIButton Matrix On Rotation
- 20. Современные OpenGL: VBO, GLM и Matrix Stacks
- 21. Функция glm Quaternion lookat
- 22. Что происходит, когда я бросаю glm :: vec3 * в double *?
- 23. рисовать вектор <glm::vec3> OPENGL C++
- 24. Opengl Billboard matrix
- 25. Модельная матрица в GLM
- 26. Можно ли использовать Matrix для этого Android View Rotation?
- 27. make matrix mean of columns = 1
- 28. matlab make matrix из векторов с пробелами
- 29. Quatterion to Rotation Matrix, неправильные значения с использованием собственной библиотеки
- 30. Нарисуйте 2 куба в OpenGL, используя GLM