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

Загрузка модели в игру

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


Читайте также:
  1. A) проанализируйте модели образования слов, прочтите и переведите слова и словосочетания, созданные на их основе.
  2. Benefits of simulations- Преимущества моделирования
  3. Boot (англ. загрузка. Пример: основной загрузочный сектор) -вирусы
  4. CRON модели для газетной и газетно-коммерческой печати
  5. D-моделирование) автобусной остановки
  6. А) проанализируйте модели образования слов, прочтите и переведите слова, созданные на их основе.
  7. Аддитивные и субтрактивные цветовые модели

 

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

Например, в Starter Kit Spacewar студии XNA Game Studio Express для всех моделей задан каталог Models, а для текстур этих моделей определена папка Textures. В соответствии с этим, если вы используете в своих проектах графику из Starter Kit Spacewar, модели и текстуры у вас должны располагаться в папках с точно такими названиями. Если изменить базовое местонахождение моделей или текстур, то в момент компиляции программы студия разработки игр выдаст вам ошибку, из контекста которой будет следовать, что компилятор не нашел того или иного графического компонента.

Определившись с расположением модели в проекте, нужно объявить и создать объект системного класса Model, затем загрузить в него модель из файла и нарисовать ее на экране.

Переходим к методу LoadGraphicsContent(). Строка кода по загрузке модели из рабочего каталога программы выглядит следующим образом:

model = content.Load<Model>(“Content\\Models\\Soccerball”);

Для рисования или представления модели на экране монитора в исходном коде класса Game создан метод DrawModel().

private void DrawModel(Model m)

{

Matrix[] transforms = new Matrix[m.Bones.Count];

m.CopyAbsoluteBoneTransformsTo(transforms);

world = Matrix.CreateTranslation(positionModel);

view = Matrix.CreateLookAt(new Vector3(0.0f, 0.0f, 150.0f), Vector3.Zero, Vector3.Up);

proj = Matrix.CreatePerspectiveFieldOfView(FOV, aspectRatio, nearClip, farClip);

foreach (ModelMesh mesh in m.Meshes)

{

foreach (BasicEffect effect in mesh.Effects)

{

effect.EnableDefaultLighting();

effect.World = transforms[mesh.ParentBone.Index] * world;

effect.View = view;

effect.Projection = proj;

}

mesh.Draw();

}

}

Этот метод на первый взгляд кажется сложным, но на самом деле это отлаженный механизм построения модели в пространстве и вывода ее на экран.

В этот метод в качестве параметра передается модель, и в первых двух строках происходят считывание и преобразование всех вершин модели в один массив данных.

Затем происходит установка всех трех матриц. Мировая матрица получает позицию модели в пространстве. В матрице вида происходит установка камеры методом CreateLookAt(), где первый параметр как раз и определяет позицию камеры. В нашем случае мы удаляем камеру для модели на 150 пикселей в сторону от монитора в направлении ваших глаз. Изменяя этот вектор, мы имеем возможность управлять камерой.

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

Последний блок кода метода DrawModel() задействует механизм языка программирования С# и оператор foreach для цикличного перебора данных массива или, как в нашем случае, коллекции данных.

В результате этот механизм позволяет получить все компоненты мэша, объединить их воедино и сформировать трехмерную модель.

Следующая строка кода делает ту же самую операцию по извлечению коллекции данных, но уже в отношении шейдерных данных, а точнее вершинного потока, поступающего во входные данные видеоадаптера.

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

Далее сам метод DrawModel() мы вызываем в методе, отвечающем за рисование графики на экране монитора.

case CurentGameState.GameScreen:

{

graphics.GraphicsDevice.RenderState.DepthBufferEnable = true;

DrawModel(model);

break;

}

Варианты заданий

 

Создать 3Д-игру, используя технологию XNA

 

Вопросы для самоконтроля

1. Что такое мировая матрица?

2. Что такое матрица вида?

3. Что такое матрица проекции?

4. Опишите алгоритм по загрузке модели в игру.

5. Что такое шейдер?

 

Источники

 


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


<== предыдущая страница | следующая страница ==>
Настройка камеры в XNA| Pole ballet or the wandering stick

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