Перевод с GLKMATRIX4TransLate, кажется, перемещается по камере, а не исходным

StackOverflow https://stackoverflow.com/questions/8824234

Вопрос

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

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

CGPoint center;

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

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

Любые идеи?

Это было полезно?

Решение

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

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

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

Это говорит о том, что вы хотите, чтобы камера всегда смотрела (0,0,7) с центром AT (Center.x, Center.Y, 0) с осью Y, указывающей на повышение. Назначение глаз является проблемой. Если модель вращается (которая является), вам нужно указать глаз на недавно повернутую точку.

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

GLKMatrix4MakeLookAt(rotation.x, rotation.y, 7,
                     center.x, center.y, 0,
                     0, 1, 0);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top