Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Настройка камеры в XNA

Преимущества HTML5 | Работа с медиа элементами | Работа с графическими элементами | Построение геометрии | Модель освещения | Статические объекты в UDK | Общий обзор Kismet | Написание простейшего мувера |


Читайте также:
  1. MS PowerPoint. Демонстрация слайд-фильма и настройка анимации
  2. ВКЛЮЧЕНИЕ И ВЫКЛЮЧЕНИЕ КАМЕРЫ
  3. Выравнивание камеры
  4. Занятие. Настройка кампаний через ЯД Коммандер, запуск целевого трафика и прохождение модерации. Результат: Готовые к запуску кампании с объявлениями.
  5. ИСПОЛЬЗОВАНИЕ КАМЕРЫ HERO3 C ПРИЛОЖЕНИЕМ GOPRO APP
  6. Камеры непрерывного действия
  7. Ключевая тема первой части - создание и настройка матрицы в матрице. Матрица в матрице, по сути есть антиматрица.

 

Начнем с того, что в области глобальных переменных класса Game1 объявим три матрицы:

Matrix world;

Matrix view;

Matrix proj;

Как видно из названий матриц, это те самые три матрицы (мировая, видовая и проекционная), используемые для представления объектов в трехмерном пространстве. Дополнительно структура Matrix в XNA Framework имеет большой набор встроенных методов, с помощью которых можно выполнить любые матричные преобразования.

Далее в области глобальных переменных класса Game1 создаются четыре новые переменные.

static float aspectRatio;

static float FOV = MathHelper.PiOver4;

static float nearClip = 1.0f;

static float farClip = 1000.0f;

Все четыре переменные принимают участие в матричных расчетах, и это часть давно отлаженного механизма, передающегося по наследству от старых версий DirectX. Первая переменная aspectRatio в исходном коде представляет так называемый коэффициент сжатия, на базе которого ведется расчет перспективы модели для правильного соотношения геометрических размеров в пространстве.

Следующая переменная FOV призвана определять поле зрения. Здесь типичное значение равно MathHelper.PiOver4. Две оставшиеся переменные nearClip и farClip позволяют задать соответственно переднюю и заднюю области отсечения и участвуют в проекционных расчетах.

Затем в исходном коде у нас следует объявление объекта model класса Model.

private Model model;

private Vector3 positionModel

Переменная positionModel необходима для выбора позиции модели на экране. В конструкторе класса Game мы задаем позицию модели в пространстве нулевыми значениями.

positionModel = new Vector3(0, 0, 0);

Нулевые значения для позиции модели при нахождении камеры в центре экрана устанавливают модель четко в центр экрана.

Используя в исходном коде три ранее созданные матрицы (мировую, видовую и проекционную), мы создадим для объекта свою локальную систему координат.

После этих действий все свои установки объектов на позиции в трехмерном мире вам придется вести относительно локальной системы координат объекта и позиции камеры. Если камера стоит в центре экрана (X = 0 и Y = 0, по оси Z камера либо приближается, либо удаляется от центра экрана) и у объекта нулевые координаты, то местоположение объекта всегда будет точно в центре монитора.

Переходим в тело метода Initialize(). Здесь появляется новая запись, которая инициализирует переменную aspectRatio значением, равным делению половины ширины экрана на половину высоты экрана.

aspectRatio = (float)screenWidth / (float)screenHeight;

Эта стандартная запись, но ранее до метода Initialize() мы не могли использовать такую запись, поскольку лишь в этом методе несколькими строками выше определили свойства видеоадаптера, установленного в системе. Если использовать эту запись прежде, до определения настроек адаптера, то переменная aspectRatio получит системное значение, равное по умолчанию размеру 800/600 пикселей, и тогда ваш коэффициент сжатия будет некорректным.

Значение этой переменной можно также определять и числовыми значениями (например, 1024/768), но тогда вы «привяжете» себя к конкретному размеру дисплея.

 


Дата добавления: 2015-11-14; просмотров: 57 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Создание логики ИИ| Загрузка модели в игру

mybiblioteka.su - 2015-2024 год. (0.007 сек.)