Transformation
Transformation | ПреобразованиеЛинейная операция над геометрией (обычно набором вершин).
Под преобразованием в графических движках обычно подразумевается аффинное преобразование - то есть, преобразование, сохраняющее прямые линии прямыми, а плоские поверхности - плоскими. К таким преобразованиям относят сдвиг, поворот, масштабирование, смещение и зеркальное отображение, а также их комбинацию в любом порядке. Но к преобразованиям также относится, например, перспективная проекция, которая не является аффинным преобразованием.
Для представления аффинных преобразований используют, как правило, матрицы 4x4, где левая верхняя подматрица задает вращение и масштаб, правый столбец - смещение, а нижняя строка всегда равна [0, 0, 0, 1]. Перемножение двух матриц преобразования дает матрицу, в которой эти два преобразования скомбинированы (в том порядке, в каком производилось умножение). В игровых графических движках обычно используют следующий порядок перемножений: перенос * вращение * масштабирование. Получившаяся в результате матрица (ее еще называют модельной) передается графическому конвейеру. Также аффинную матрицу можно инвертировать, то есть, вычислять ее обратную матрицу - она будет представлять обратное преобразование, которое очень часто используется в компьютерной графике. Благодаря некоторым свойствам аффинных матриц, их можно инвертировать очень эффективно.
Говорят, что модельная матрица переводит вершины из модельного пространства (где координаты вершин заданы относительно центра модели) в мировое пространство (где координаты заданы относительно абсолютного центра сцены). Этот процесс является первой стадией графического конвейера и выполняется вершинным процессором видеокарты. При использовании шейдеров программист имеет возможность по-своему запрограммировать эту стадию в вершинном шейдере. Помимо матриц, аффинные преобразования также возможны с использованием кватернионов и дуальных кватернионов. Кватернионы используются для хранения вращения (в том числе накапливаемого), дуальные кватернионы - для одновременного хранения вращения и переноса.
Основные преимущества кватернионов - вычислительная эффективность и экономия памяти (4 числа вместо 16 у матриц) и возможность интерполяции. Кватернионы широко применяются в скелетной анимации, кинематике и физике, но в графический конвейер они обычно не передаются - все преобразования для этого переводятся в матрицы.
См. также Matrix, Vector.