2012-01-11 4 views
0

Я пытаюсь включить пользователя для панорамирования вверх/вниз и влево/вправо объекта в OpenGL ES. Я использую GLKit для всего рисования и движения. Я включил сенсорные события, чтобы отслеживать, как пользователь хочет переместить объект. Я использую GLKMatrix4Translate для перемещения панорамирования объекта, но по какой-то причине у него есть вращательный компонент.Перевод с GLKMatrix4Translate Кажется, что перемещение вокруг камеры, а не происхождение

Я соберу точки перевода от прикосновения пользователя и хранить их в CGPoint:

CGPoint center; 

Я использую center.x и center.y для X и Y позиции я хочу перевести. Я выполняю перевод с этой строки:

GLKMatrix4 modelViewMatrix = GLKMatrix4Translate(GLKMatrix4Identity, center.x, center.y, 0.0f); 

Любые идеи?

ответ

0

Я выяснил, в чем проблема была здесь. Я прекратил использование GLKMatrix4Translate и заменил его на GLKMatrix4MakeLookAt. GLKMatrix4MakeLookAt позволяет вам перемещать камеру вокруг которой дает эффект, который я искал.

Просто используя этот код, результаты в той же проблеме я уже видел. Модель вращается, когда она вращается.

GLKMatrix4MakeLookAt(0, 0, 7, 
        center.x, center.y 0, 
        0, 1, 0); 

Что это говорит, что вы хотите, чтобы камера всегда смотреть на (0,0,7) с центром в точке (center.x, center.y, 0) с ось у направлена ​​вверх , Проблема с глазом - проблема. Если модель вращается (она есть), вам нужно указывать глаз на вновь повернутую точку.

Замена вышеприведенного кода, похоже, делает трюк.

GLKMatrix4MakeLookAt(rotation.x, rotation.y, 7, 
        center.x, center.y, 0, 
        0, 1, 0);