Векторы, вершины и кватернионы
На протяжении Direct3D вершины описывают положение и ориентацию. Каждая вершина в примитиве описывается вектором, который дает его положение, цвет, координаты текстуры и обычный вектор, который дает ей ориентацию.
Quaternions добавляет четвертый элемент в значения [x, y, z], определяющие трехкомпонентный вектор. Кватернионы являются альтернативой методам матрицы, которые обычно используются для трехмерных поворотов. Кватернион представляет ось в трехмерном пространстве и поворот вокруг этой оси. Например, кватернион может представлять ось (1,1,2) и поворот 1 радиан. Кватернионы несут ценные сведения, но их истинная сила исходит из двух операций, которые можно выполнять на них: композиция и интерполяция.
Выполнение композиции на кватернионах похоже на объединение их. Композиция двух кватернионов выглядит так, как показано на следующем рисунке.
Композиция двух кватернионов, примененная к геометрии, означает "поворот геометрии вокруг оси ₁ поворотом, а затем поворот вокруг оси₁ по повороту₁". В этом случае Q представляет поворот вокруг одной оси, которая является результатом применения qfx, а затем q₁ к геометрии.
С помощью интерполяции кватерниона приложение может вычислить гладкий и разумный путь от одной оси и ориентации к другой. Таким образом, интерполяция между q₁ и qfx обеспечивает простой способ анимации от одной ориентации к другой.
При совместном использовании композиции и интерполяции они предоставляют простой способ управления геометрией таким образом, который представляется сложным. Например, представьте, что у вас есть геометрия, которую вы хотите повернуть на заданную ориентацию. Вы знаете, что вы хотите повернуть его r₁ градусов вокруг оси, а затем повернуть его r₁ градусов вокруг оси₁, но вы не знаете окончательного кватерниона. Используя композицию, можно объединить два поворота в геометрии, чтобы получить один кватернион, который является результатом. Затем можно интерполировать от исходного кватерниона, чтобы добиться плавного перехода от одного к другому.
Связанные темы