2015-01-28 2 views
1

Я использую OpenGL с другой библиотекой. Эта библиотека предоставит проекционную матрицу, и я не могу ее изменить. Я должен предоставить только ModelViewMatrix.Матричное умножение на зеркальное отображение и вращение только одной оси?

Однако происходят странные вещи. Перевернуты только оси Y и вращение.

Например, если я увеличиваю x перевод в ModelViewMatrix, тогда объект будет идти вправо, просто отлично. (положительное направление x), но по оси Y он обращается вспять. Я хочу, чтобы он пошел другим путем.

Вращение по оси Y также вспять. Это вращение, противоположное тому, каким оно должно быть.

Я не могу исправить это на ProjectionMatrix, поэтому я думаю, что мне, возможно, придется умножить мою ModelViewMatrix на то, что может перевернуть одну ось, прежде чем отправлять ее в библиотеку. Знаете ли вы что-то? Матрица, которая может отменить 1 ось?

ответ

2

это просто матрица с элементами [1,0,0,0][0,-1,0,0][0,0,1,0][0,0,0,1]

другими словами единичная матрица со вторым диагональным элементом отрицается.

+0

Обратите внимание, что это создаст «зеркальное изображение» оригинала (зеркальное отображение с использованием плоскости XZ, так же, как и масштаб (1, -1,1)). Если модель изменила координаты Y, это нормально, но если это только камера, которая находится на неправильной стороне, вместо этого может потребоваться поворот на 180 градусов. – vesan