2013-04-12 5 views
0

Я борюсь с кодом, чтобы он вращал камеру вокруг объекта. Код, который я использую:opengl camera вращение вокруг объекта

eyeX = (float) (obj.x + 500*Math.cos(Math.toRadians(angle))*Math.sin(Math.toRadians(angle))); eyeY = (float) (obj.y + 500*Math.sin(Math.toRadians(angle))*Math.sin(Math.toRadians(angle))); eyeZ = (float) (obj.z + 500*Math.cos(Math.toRadians(angle))); Matrix.setLookAtM(mViewMatrix, 0, eyeX, eyeY, eyeZ, obj.x, obj.y, obj.z, 0, 1, 0);

Где OBJ является модель, которую я хочу, чтобы вращать камеру вокруг, и угол увеличивается на 1 при каждом розыгрыше. Может ли кто-то пролить свет на эту проблему, что я делаю неправильно?

ответ

0

Какое точное движение камеры вы пытаетесь достичь? Если вы хотите повернуть вокруг объекта на плоскости XZ, оставаясь на постоянной высоте, вы должны сделать:

eyeX = (float) (obj.x + 500 * Math.cos (Math.toRadians (angle)) ;

eyeY = (поплавок) (у0); // постоянная высота

EYEZ = (поплавок) (obj.z + 500 * Math.sin (Math.toRadians (угол));

Кроме того, если y0! = 0, то (0, 1, 0) не является правильным «вверх» вектором и будет искажать вас.

+0

nah, это все равно не помогает. –

Смежные вопросы