вычисление матрицы, которая превращает один набор координат в другой - PullRequest
0 голосов
/ 09 декабря 2010

Я играю с некоторыми моделями для игры glest .

Эти модели состоят из одной или нескольких сеток;каждая сетка состоит из множества кадров, которые описывают положение каждой вершины для каждого кадра анимации.В показанной ниже модели положение каждой вершины в каждом колесе в каждом кадре находится в массиве.

Эти модели были экспортированы из 3D-инструментов, таких как Blender.У кого-то где-то есть оригиналы.

Но мне интересно, для простой анимации, такой как поворот колеса, как вы можете вычислить преобразования - шаги поворота,масштабировать и переводить, или матрицу, которая при применении к предыдущему кадру приведет к созданию нового кадра?

(Очевидно, что не все кадры будут иметь такие преобразования, поскольку они могут искажать модели и тому подобное.)

Кроме того, как вы можете обнаружить зеркальное отображение и другие возможности уменьшить количество данных вершин, применяя матрицу и снова визуализируя те же вершины?

Скорость бега - если ее измерять за считанные минуты - не будетбыть проблемой.

A glest catapult

1 Ответ

1 голос
/ 10 декабря 2010

Прежде всего, некоторые предположения:

  • Вы имеете дело с трехмерными аффинными преобразованиями (линейное преобразование плюс перевод).
  • У вас есть вершины для каждого кадра в вашей анимации
  • Вы можете связать как минимум 4 вершины в кадре с 4 вершинами в следующем кадре

Тогда вы можете взять 4 вершины в качестве 4-мерных столбцов (добавляя 1 в 4-й элемент каждого вектора) в исходном пространстве и объедините их, чтобы создать матрицу 4x4, называемую X. Сделайте то же самое для их соответствующих векторов в преобразованном пространстве и назовите их Y, которая также будет матрицей 4x4.Маленькая линейная алгебра предоставляет вам метод для нахождения матрицы 4x4 A, который при применении к X дает вам Y. Таким образом:

AX = Y
A = YX<sup>-1</sup>

Использование этого для получения поворотов и масштабирования не является тривиальным.Однако самый правый столбец A будет содержать перевод объекта между последовательными кадрами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...