У меня есть некоторые модели, которые я хочу вращать, используя кватернионы обычным способом, за исключением того, что вместо поворота вокруг источника я хочу, чтобы он был слегка смещен. Я знаю, что в трехмерном пространстве вы не говорите, что вращаетесь вокруг точки; Вы говорите, что вращаетесь вокруг оси. Так что я визуализирую это как вращение вокруг вектора, хвост которого расположен не у локального источника.
Все аффинные преобразования в моем механизме рендеринга / физики хранятся с использованием SQT (масштаб, кватернион, перевод; идея заимствована из книги « Архитектура игрового движка» ). Поэтому я строю матрицу каждого кадра из этих компонентов и передаю ее вершинному шейдеру. В этой системе применяется перевод, затем масштабирование, затем вращение.
В одном конкретном случае мне нужно перевести объект в мировое пространство, масштабировать его и повернуть вокруг вершины, не центрированной в локальном начале объекта.
Вопрос: Учитывая ограничения моей нынешней системы, описанные выше, как я могу добиться локального вращения с центром в точке, отличной от начала координат? Автоматическое upvote для тех, кто может описать, как это сделать, используя только матрицы :)