Предыдущая Следующая
Значение этой переменной можно также определять и числовыми значениями (например, 1024/768), но тогда вы «привяжете» себя к конкретному размеру дисплея. В предыдущей главе мы создали универсальный механизм по подбору текущего разрешения дисплея, поэтому значение переменной aspectRatio следует также определять на автомате.
Переходим к методу LoadGraphicsContent(). Строка кода по загрузке модели из рабочего каталога программы выглядит следующим образом:
model = content.Load<Model>("Content\\Models\\Soccerball");
Рис. 18.5. Объектная система координат
Как видите, такая запись практически идентична записи по загрузке спрайтового изображения, но вместо ключевого слова <Texture2D> используется слово <Model>. Такая команда дается для Content Pipeline на выполнение загрузки в программу уже трехмерной модели, а не текстуры. Модель мячика находится в каталоге рабочего проекта в папке Content\Models (рис. 18.6). Здесь схема поиска модели в каталоге проекта у загрузчика Content Pipeline стандартна.
18.1.2. Метод DrawModel()
Для рисования или представления модели на экране монитора в исходном коде класса Gamel создан метод DrawModel().
private void DrawModel(Model m)
{
Matrix[] transforms = new Matrix[m.Bones.Count]; m.CopyAbsoluteBoneTransformsTo(transforms);
world = Matrix.CreateTranslation(positionModel);
284 Загружаем в игру модель
Рисуем модель на экране монитора 285
view = Matrix.CreateLookAt(new Vector3(0.0f, ü.üf, 150.0f), Vector3.Zero, Vector3.üp);
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 пикселей в сторону от монитора в направлении ваших глаз. Два оставшихся параметра метода CreateLookAt() - типично используемые величины. По окончании этой главы самостоятельно попробуйте изменять все значения матрицы вида, чтобы уяснить суть этих преобразований. Матрица проекции для своих расчетов использует четыре переменные, назначение которых вы уже знаете. Предыдущая Следующая
|