netlib.narod.ru | < Назад | Оглавление | Далее > |
В главе 2 мы говорили о двухмерных системах координат, включая частный случай такой системы: экранную систему координат. Однако, чтобы говорить о трехмерных системах координат, вы должны постичь достаточно много дополнительных концепций, чтобы понимать, что вовлекается в определение трехмерных виртуальных объектов и преобразование таких объектов в двухмерное представление, отображаемое на экране. Сперва вы изучите основы этих концепций, а затем посмотрите как применять их в играх, использующих XNA.
Имея дело с тремя Декартовыми измерениями, вы сталкиваетесь с двумя типами систем координат: левосторонней и правосторонней. Их названия ссылаются на направление оси Z относительно осей X и Y. Чтобы определить это направление, расположите пальцы одной руки вдоль положительного направления оси X, и согните их против часовой стрелки к положительному направлению оси Y. Ваш большой палец показывает направление оси Z. Эту концепцию иллюстрирует рис. 7.1.
Рис. 7.1. Декартовы трехмерные системы координат
Другими словами, в левосторонней системе координат значение Z становится больше (положительное направление), когда вы перемешаетесь от экрана к удаленной от вас точке (предполагается, что оси X и Y расположены на экране компьютера). В правосторонней трехмерной системе координат все наоборот: значения Z увеличиваются по мере приближения к вам от экрана.
XNA Framework по умолчанию работает с правосторонней системой координат, что, важно отметить, отличается от поведения по умолчанию DirectX. Это значит, что видимы отрицательные значения Z, и чем больше абсолютная величина этого отрицательного значения для данного объекта, тем дальше объект от экрана. Положительные значения не отображаются, пока вы не измените «местоположение камеры», о чем будет рассказано далее в этой главе.
Теперь, когда вы узнали о трехмерных системах координат, следующий шаг — исследование того, как можно отобразить трехмерные объекты на двухмерный экран вашего компьютера.
К счастью, XNA делает всю сложную математическую работу для этого отображения, но вы должны понимать концепцию проекции (projection), и как она применяется в XNA, чтобы дать основные инструкции о том, как представлять объекты на экране.
Подобно другим игровым библиотекам, XNA поддерживает два различных вида проекции:
Перспективная проекция. Наиболее общий тип проекции, который учитывает расстояние до объекта по оси Z и соответствующим образом подстраивает объекты. В этой проекции чем дальше находится объект от экрана, тем он меньше. В зависимости от местоположения объекта на экране также происходит деформация, как в реальном мире. Например, стороны куба, который ближе к экрану, выглядят больше, чем у такого же, но более далекого. На рис. 7.2 показано графическое представление перспективной проекции.
Рис. 7.2. Перспективная проекция
Ортогональная проекция. В этом типе проекции компонент Z просто игнорируется, и объекты не становятся больше, когда находятся ближе к экрану, и меньше, если расположены дальше от него. Эта проекция в основном используется для двухмерных игр (которые используют имитацию трехмерности, просто, чтобы помещать спрайты один поверх другого) или простых трехмерных игр. Ортогональная проекция показана на рис. 7.3.
Рис. 7.3. Ортогональная проекция
Далее в этой главе вы увидите, как использовать каждый тип проекции в XNA. Однако, перед началом кодирования, вам необходимо понять, как трехмерные объекты представляются в игре. Этим мы и займемся в следующем разделе.
netlib.narod.ru | < Назад | Оглавление | Далее > |