Местоположение цели LookAt не имеет значения, если это z = 0 или z = 1000 или -1000?

Я пробую LookAt в OpenGL ES,

    gluLookAt(512, 384, 2000,
              512, 384, 0,
              0.0f, 1.0f, 0.0f);

Второй ряд - это позиция цели... так что мне интересно, поменяю ли я z от 0 в 1000 или же -1000не должно ли то, что видно по-другому? Они оказываются все одинаковыми, почему это так?

2 ответа

Решение

От спецификации OpenGL для gluLookAt, это заявляет входные данные как:

gluLookAt(GLdouble eyeX , GLdouble eyeY , GLdouble eyeZ , 
          GLdouble centerX , GLdouble centerY , GLdouble centerZ , 
          GLdouble upX , GLdouble upY , GLdouble upZ );

Ваши текущие значения только перемещают center вектор вдоль z самолет, так что вы на самом деле смотрите вниз с вашего eye вектор. В зависимости от того, что вы делаете, вы можете вообще не увидеть никаких изменений (куб будет выглядеть одинаково как сверху, так и снизу).

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

Поскольку координаты x и y одинаковы для камеры и цели, изменение координаты z вообще не влияет на направление, в котором находится вид, и для этого имеет значение только направление.

Другие вопросы по тегам