Возможно вы искали: 'Cricket Coach 2007'

May 12 2025 01:26:45
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96030355
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18346
• Обзор The Walking ... 18789
• Обзор DMC: Devil M... 19864
• Обзор на игру Valk... 15867
• Обзор на игру Stars! 17754
• Обзор на Far Cry 3 17935
• Обзор на Resident ... 16012
• Обзор на Chivalry:... 17495
• Обзор на игру Kerb... 17970
• Обзор игры 007: Fr... 16604
Превью о играх
• Превью к игре Comp... 17946
• Превью о игре Mage... 14451
• Превью Incredible ... 14706
• Превью Firefall 13462
• Превью Dead Space 3 16325
• Превью о игре SimC... 14717
• Превью к игре Fuse 15432
• Превью Red Orche... 15532
• Превью Gothic 3 16334
• Превью Black & W... 17345
Главная » Статьи » Всё о XNA » Основы трехмерной графики

Основы трехмерной графики

Лекция № 5. Трехмерная графика
Эта лабораторная работа посвящена основам работы с трехмерной графикой. Здесь мы поговорим о трехмерной системе координат, о составных частях трехмерных объектов, о матричных вычислениях, которые используются в трехмерной графике. Так же мы рассмотрим соответствующие части объектной модели XNA.

Цель лекции


  • Освоить основы работы с трехмерной графикой в XNA

Задачи лекции

  • Ознакомиться с правосторонней системой координат.
  • Ознакомиться с понятием точки, вершины, вектора, полигона в трехмерном пространстве.
  • Ознакомиться с применением мировой, видовой и проекционной матриц.
  • Ознакомиться с матричными преобразованиями в трехмерном пространстве.
  • Ознакомиться с концепциями освещения объектов.
  • Ознакомиться с наиболее важными свойствами и методами объектов XNA, используемых при работе с трехмерной графикой

Система координат

При работе с трехмерной графикой используется несколько видов систем координат. Для отображения двумерных объектов нам была нужна соответствующая система координат с двумя осями – горизонтальной осью X и вертикальной осью Y. Напомним, что экранная система координат для двумерной графики имеет начало (точку 0,0) в левом верхнем углу монитора, положительная часть оси X располагается справа от начала координат, положительная часть оси Y – снизу.

Для работы с трехмерными объектами нам понадобится еще одна ось – она называется ось Z. Существует несколько вариантов трехмерных систем координат, в частности, распространены так называемые правосторонняя и левосторонняя системы. Мы будем пользоваться правосторонней системой – она применяется в XNA Framework. Её схематичное изображение приведено на рис. 5.1.


Рис. 5.1. Правосторонняя система координат

Особенность этой системы координат заключается в том, что начало координат можно сопоставить с левым нижним углом монитора, положительная часть оси X находится справа от начала координат, положительная часть оси Y – сверху, а положительная часть оси Z – спереди. А это значит, что видимая часть оси Z – это её отрицательная часть. Эта часть оси находится как бы «в глубине монитора», в то время, как положительная часть находится «спереди монитора». На рис. 5.1. пунктиром изображена отрицательная часть оси Z.

В двумерной системе координат существует понятие точки – ее координаты задаются двумя значениями – X и Y. Точки существуют и в трехмерной системе координат – они задаются уже тремя значениями – X, Y, Z.
Точки используют для того, чтобы задавать координаты вершин многоугольников (полигонов), в частности – треугольников. Так, треугольник, изображенный на рис. 5.1., задан тремя точками – A, B, C.

Как правило, более сложные трехмерные объекты строятся именно из треугольников.

В трехмерной графике существует такое понятие, как грань (face). Это – плоский объект, который определяют несколько вершин. В нашем случае обычный треугольник – это именно грань. Из нескольких плоских граней можно собрать объемный объект.

Чем больше треугольников использовано при построении модели – тем более детализированной она получается. Точки, соответствующие вершинам треугольника, который можно изобразить в трехмерном пространстве, называются вершинами. Работая с трехмерной графикой в XNA вам часто придется встречать английский вариант слова вершина – vertex. Возможно, вам встретится множественное число слова вершина: «вершины» выглядит по-английски как «vertices».  Иногда для обозначения вершин используют кальку с английского – вертекс.
Треугольник не случайно выбран в качестве базовой геометрической фигуры – во-первых – этот многоугольник всегда является выпуклым, во-вторых – невозможно расположить три точки таким образом, чтобы они не принадлежали одной плоскости. То есть, треугольник – это фигура, которая всегда является выпуклой и плоской, что позволяет с успехом использовать его в целях трехмерной графики.

Несколько граней, из которых состоит трехмерный объект, называются сеткой (mesh). "Сетка" представляет собой набор треугольников.

Еще одно понятие, которое пригодится вам при работе с трехмерной графикой – это понятие вектора. Вектор (vector), так же как и точка, может быть определен тремя параметрами, однако он описывает не положение в пространстве, а направление и скорость движения.

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

Например, вектор с координатами (1,0,0) означает: «направление – вправо, скорость – 1». Если отложить этот вектор от начала координат, то хорошо видно, что он направлен именно вправо (рис. 5.2.).

Направление вектора определяется положением второй точки относительно первой (в нашем случае – положение точки конца вектора, которой задается вектор относительно начала координат), а скорость – длиной вектора – то есть – разницей между начальной и конечной точкой. В нашем случае длина вектора совпадает с координатами его конца.


Рис. 5.2. Вектор (1,0,0)

Существует особый вид векторов – нормали (normals). Нормали могут быть построены для граней и для вершин объекта. Нормали для граней перпендикулярны этим граням. Они используются при расчете цвета объекта.

Преобразования в трехмерном пространстве

Зная координаты вершин полигонов, из которых состоит объект, мы можем расположить его в пространстве. Теперь нужно разобраться с изменением положения объектов в пространстве. Существует несколько основных операций, которые могут использоваться для перемещения объектов в трехмерном пространстве. Это – перемещение (translation), вращение (rotation) и масштабирование (scale).

Результаты работы графической подсистемы трехмерной игры мы видим на плоском экране монитора – смоделированная компьютером трехмерная сцена проецируется на двумерную поверхность. При проецировании нужно выбрать точку, которая выполняет роль камеры, позволяющей видеть трехмерное пространство. В свою очередь, объекты в трехмерном пространстве могут перемещаться в соответствии с определенными правилами. Для управления всем этим используются несколько  матриц. Это – мировая матрица (World Matrix), матрица вида (View Matrix) и матрица проекции (Projection Matrix).

Матрицу можно представить в виде таблицы, состоящей из m строк и n столбцов. В компьютерной графике применяются матрицы 4х4. Первых три столбца этой матрицы отвечают за модификацию координат X, Y, Z вершин объекта, участвующего в трансформации.

  • Мировая матрица позволяет задавать преобразования – перемещения, вращения и трансформации объектов.
  • Матрица вида позволяет управлять камерой.
  • Матрица проекции служит для настройки проекции трехмерной сцены на экран.

Предположим, имеется треугольник, заданный следующими вершинами (табл. 5.1.).

Таблица 5.1. Вершины треугольника до перемещения
Вершина X Y Z
1 20 10 5
2 15 20 10
3 25 30 10


При перемещении этого треугольника на 10 позиций по оси X мы должны прибавить по 10 к каждой из координат X его вершин. В результате получится матрица такого вида (табл. 5.2.).

Таблица 5.2. Вершины треугольника после перемещения
Вершина X
Y
Z
1
30
10
5
2
25
20
10
3 35 30 10


Того же эффекта можно достичь, умножив координаты каждой из вершин на мировую матрицу. Для этого координаты вершины представляют в виде матрицы, состоящей из одной строки и четырех столбцов. В первых трех столбцах содержатся координаты X, Y, Z, в четвертом – 1. Мировая матрица представлена в виде таблицы 4х4. Вот как выглядит операция умножения матриц (формула 5.1.):

Формула 5.1. Умножение матрицы вершины и мировой матрицы


При преобразовании каждая из вершин умножается на мировую матрицу.

Каждое из преобразований в пространстве требует особой настройки мировой матрицы. В формуле 5.2. приведен шаблон мировой матрицы, которая позволяет перемещать объекты в пространстве.

Формула 5.2. Мировая матрица для перемещения объекта


Здесь ΔX ,ΔY и ΔZ - это приращения координат X, Y и Z.

Мировая матрица для вращения объектов вокруг оси Х выглядит так (формула 5.3.).

Формула 5.3. Мировая матрица для вращения по оси Х


Здесь α - угол поворота в радианах

Мировая матрица для вращения объектов по оси Y выглядит так (формула 5.4.)

Формула 5.4. Мировая матрица для вращения по оси Y


Матрица для вращения объектов вокруг оси Z приведена в формуле 5.5.

Формула 5.5. Мировая матрица для вращения по оси Z


Формула 5.6. представляет матрицу, которая служит для трансформации объектов.


φx, φy ,φz - это коэффициенты масштабирования, которые применяются к вершинам. Они позволяют «сжимать» или «растягивать» объекты.

Другие типы матриц:
  • Матрица вида влияет на положение камеры – точки, из которой осуществляется просмотр трехмерной сцены.
  • Матрица проекции позволяет управлять проецированием сцены на экран. В XNA существует два вида проекций.
  1. Первый – это перспективная проекция (Perspective projection). В этой проекции объекты выглядят так же, как мы привыкли их видеть в реальном мире. Объекты, которые расположены дальше, кажутся меньше объектов, расположенных ближе.
  2. Второй вид проекции – это ортогональная проекция. Здесь объекты проецируются на плоскость экрана без учета перспективы.

Освещение

Освещение объектов в играх исполняет ту же роль, которая отведена ему в реальном мире. Существует множество типов освещения.
  • Окружающий рассеянный свет (ambient light) - это свет, который освещает все объекты сцены с одинаковой интенсивностью. Источник рассеянного света не имеет местоположения.
  • Точечный источник света (point light) – это источник, который излучает свет во всех направлениях. Его можно сравнить со светом, исходящим от лампочки, не прикрытой абажуром.
  • Направленный источник света (directional light). Этот источник, в отличие от точечного, не имеет местоположения, однако имеет ориентацию
  • Зональный источник света (spot light) или прожектор имеет местоположение, ориентацию, а его световой поток ограничен в форме конуса.
Источники света могут иметь различную интенсивность, различный цвет, при освещении сцен можно использовать несколько различных источников. Все это делает освещение важнейшим элементом трехмерной графики.

Шейдеры

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

Текстуры

Текстуры – это растровые (двумерные) изображения, которые накладываются на трехмерные модели. Например, трехмерная модель автомобиля может представлять собой автомобиль, который как бы «вырезан» из твердого материала, а после наложения на эту модель соответствующей текстуры автомобиль приобретает цвет, создается иллюзия наличия у него мелких деталей оформления и т.д. Минимальная единица текстуры называется текселем. Чем больше пикселей приходится на один тексель, чем большьше разрешение текстуры – тем более качественной будет выглядеть модель после наложения на нее текстуры.

Объекты XNA для работы с 3D-графикой

В объектной модели XNA существует несколько объектов, которые интенсивно используются для работы с трехмерной графикой.

Класс Matrix позволяет создавать матрицы, которые используются для преобразований объектов в пространстве, для управления камерой и проекцией трехмерной сцены на экран. Этот класс, который, как это обычно бывает в NET Framework, является так же типом данных и содержит статические методы, используемые для создания матриц. Как правило, приходится, например, «вручную» модифицировать мировую матрицу для того, чтобы организовать поворот или перемещение модели – все необходимые операции можно выполнить с помощью статических методов класса Matrix, так же объекты класса Matrix имеют множество полезных свойств. Рассмотрим некоторые из них.

  • Свойства Mxy возвращают значения, которые располагаются в строке с индексом x и в столбце с индексом y, которые изменяются от 1 до 4. Например, свойство M11 возвращает значение, находящееся на пересечении первой строки и первого столбца матрицы, M23 – второй строки и третьего столбца, M44 – четвертой строки и четвертого столбца.
  • Метод CreateLookAt позволяет создать видовую матрицу (камеру).
  • Метод CreateOrthographic позволяет создать ортогональную проекционную матрицу.
  • Метод CreatePerspective позволяет создать перспективную проекционную матрицу.
  • Методы  CreateRotationX, CreateRotationY, CreateRotationZ  позволяют создавать матрицы поворота вокруг соответствующей оси.
  • Метод CreateScale предназначен для создания матрицы масштабирования (изменения размеров) объекта.
  • Метод CreateTranslation позволяет создать матрицу перемещения объекта.
  • Метод  CreateWorld создает мировую матрицу.

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

Класс BasicEffect содержит множество элементов, важных при создании трехмерной сцены. Именно объект этого класса содержит описания матриц, описания источников света в игре и многие другие важные свойства и методы. По своей внутренней сути, этот класс является набором шейдеров, каждый из которых используется в зависимости от нижеперечисленныйх свойств:

  • Свойство AmbientLightColor позволяет установить окружающее освещение рассеянным светом
  • Свойства DirectionalLight0, DirectionalLight1, DirectionalLight2 позволяет установить источники направленного цвета
  • Свойства FogColor, FogEnabled, FogEnd, FogStart позволяют управлять эффектом тумана
  • Свойство LightingEnabled позволяет включать освещение
  • Свойство PreferPerPixelLighting позволяют управлять эффектом попиксельного освещения – этот тип освещения доступен для графических адаптеров, поддерживающих Pixel Shader Model 2.0 (Модель пиксельных шейдеров 2.0.)
  • Свойство Projection позволяет управлять проекционной матрицей.
  • Свойство Texture предназначено для управления текстурой
  • Свойство TextureEnabled позволяет включать использование текстуры
  • Свойство View позволяет управлять матрицей вида (камерой)
  • Свойство World предназначено для управления мировой матрицей
  • Методы Begin и End позволяют указать начало и конец блока обработки эффекта.
  • Метод EnableDefaultLighting позволяет включить освещение по умолчанию.

Класс MathHelper

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

При работе с трехмерной графикой используются и другие объекты XNA, с ними вы познакомитесь в дальнейших работах.

Вопросы

1) Объект какого типа можно использовать для хранения информации о координатах точки в трехмерном пространстве?
  • a. Vector2
  • b. Model
  • c. Vector3
  • d. Plane
2) Из скольких компонентов состоит координата точки в трехмерном пространстве?
  • a. 1
  • b. 2
  • c. 3
  • d. 4
3) Координатная система какого типа используется в XNA для работы с трехмерными объектами?
  • a. Правосторонняя
  • b. Левосторонняя
4) Каким образом расположены оси X, Y, Z в правосторонней системе координат
  • a. Начало координат можно сопоставить с левым нижним углом монитора, положительная часть оси X расположена справа от начала координат, положительная часть оси Y – сверху, положительная часть оси Z – сзади.
  • b. Начало координат можно сопоставить с левым нижним углом монитора, положительная часть оси X расположена слева от начала координат, положительная часть оси Y – сверху, положительная часть оси Z – сзади.
  • c. Начало координат можно сопоставить с левым нижним углом монитора, положительная часть оси X расположена справа от начала координат, положительная часть оси Y – сверху, положительная часть оси Z – спереди.
5) Какие геометрические фигуры являются основными при построении пространственных моделей?
  • a. Окружности
  • b. Прямоугольники
  • c. Пятиугольники
  • d. Треугольники
6) Как называются точки, соответствующие вершинам пространственных треугольников?
  • a. Грани
  • b. Вершины
  • c. Углы
  • d. Точки
7) Как называется плоский объект, который определяется несколькими вершинами?
  • a. Точка
  • b. Плоскость
  • c. Вершина
  • d. Грань
8) "Сеть", "сетка" (mesh) состоит из
  • a. Граней пространственных треугольников, составляющих объект
  • b. Точек
  • c. Плоскостей
9) Векторы используются для описания
  • a. Положение в пространстве
  • b. Направление и скорости движения в пространстве
  • c. Граней пространственного треугольника
  • d. Сеток
10) Мировая матрица (World Matrix) предназначена для
  • a. Управления камерой
  • b. Управления проекцией трехмерной сцены на экран
  • c. Управления пространственными преобразованиями объекта
11) Матрица вида (View Matrix) предназначена для
  • a. Управления камерой
  • b. Управления проекцией трехмерной сцены на экран
  • c. Управления пространственными преобразованиями объекта
12) Матрица проекции (Projection Matrix) предназначена для
  • a. Управления камерой
  • b. Управления проекцией трехмерной сцены на экран
  • c. Управления пространственными преобразованиями объекта
1493 Прочтений •  [Основы трехмерной графики] [08.08.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Основы трехмерной графики Ukraine Vova 08.08.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка