Что такое «мировое пространство» и «пространство глаз» в разработке игр?

16

Я читаю книгу о 3D-концепциях и OpenGL. Книга всегда говорит о мировом пространстве , пространстве глаз и так далее.

  • Что такое мир на экране монитора компьютера?

  • Что такое мировое пространство?

  • Что такое глазное пространство? Это синоним проекции?

gamdevNoobie
источник

Ответы:

25

Прежде чем понять, что такое мир или пространство глаз, что такое пространство?

В абстрактном смысле геометрическое пространство (например, евклидово пространство) представляет собой безграничную степень, в которой объекты стремятся существовать. Пространство определяет основные свойства, которым должны удовлетворять объекты, живущие в этом пространстве. Например, в евклидовом пространстве расстояние определяется как Sqrt( vector dot product with itself).

Большинство людей склонны смешивать определения пространства и системы координат. Пространство как евклидово пространство определяет свойства, но не определяет систему координат, я бы сказал, «глазное пространство» лучше называть «глазные координаты».

В компьютерной графике мы почти исключительно имеем дело с евклидовым пространством. Когда вы определяете вершину (X, Y, Z) в евклидовом пространстве, это ничего не значит для нас.

Более осязаемым определением было бы определение его относительно некоторой системы координат. Например, вершина (X, Y, Z) относится к координатам глаза. Так что если вершина = (0,2,3) относительно координат глаза. это означает, что эта вершина:

  • 0 в направлении X от положения глаза X.
  • 2 в направлении Y от положения Y глаза.
  • 3 в направлении Z от положения глаза Z.
  • А расстояние до вершины от глаза составляет sqrt (0 ^ 2 + 2 ^ 2 + 3 ^ 2) = sqrt (13) единица.

Но что такое глазные координаты и как мы определяем систему координат?

Мы определяем систему координат путем предоставления трех ортогональных базисных (читай: единичная длина и перпендикулярно) векторов, которые напоминают ориентацию и положение (перевод). введите описание изображения здесь

Поэтому, если камера в openGL была определена (обратите внимание, что это относительно мировых координат):

 - Position (0,3,10)
 - Up       (0,1,0)
 - Forward  (0,0,-1)
 - Right    (1,0,0)

Это означает, что зритель устанавливает в (0,3,10) от мира (0,0,0), и его право выровнено относительно оси X мира, и его вперед назад мир Z, и его вверх выровнен в мир Y.

введите описание изображения здесь

Но вы слишком много говорили о координатах глаза, что такое мировые координаты?

Мировые координаты - это просто фиксированная родительская система координат. Координаты глаза должны быть относительно чего-либо. Это глобальная система координат, с которой все определено.

Мировая координата имеет фиксированное значение i = (1,0,0) в направлении X, j = (0,1,0) в направлении Y, k = (0,0,1) в направлении Z. Это векторы, которые определяют декартову систему координат.

Но это не имеет смысла! По каким координатам определяются Мировые координаты?

Я бы сказал, что это относительно себя, на самом деле это будет центр вселенной (но это слишком упрощенно).

Но в более практическом смысле я бы сказал, что в компьютерной графике удобно определять мировое пространство как центр вселенной (игровой мир), чтобы мы могли представить, как вещи могут соотноситься друг с другом.

concept3d
источник