Популярно о 3D графике. Часть 2. Игры и 3D

в 6:06, , рубрики: Без рубрики

Популярно о 3D графике. Часть 2. Игры и 3D
Прошу прощение за столь большой перерыв между первой и второй частью, но на то были как объективные, так и субъективные причины. Итак, часть вторая, про компьютерные игры и 3D.
И, да, статья рассчитана на тех, кто не имеет вообще представления о данном вопросе.

3D графика в компьютерных играх
Когда я на заработанные летом деньги в старших классах купил себе свой первый компьютер — ZX Spectrum и научился загружать с кассеты игры, меня сразу начал интересовать вопрос: как это все программируется? Ответ на этот вопрос я получил из книги по программированию игр для ZX Spectrum. Когда у меня появился РС-совместимый компьютер я уже представлял как делаются игры. Но прошло совсем немного времени и появились игры которые были непохожи на другие — игры с 3D персонажами. Одной из ярких представителей таких игр была Tomb Raider. И с каждым годом количество таких игр росло. Мне всегда было интересно: а как же они создаются? Но вразумительного ответа (Интернет тогда был экзотикой) я не нашел. Если бы мне в то время попалась подобная статья, то я бы получил ответы на некоторые вопросы. Надеюсь, что нижеприведенный текст поможет дать представление о том как в 3D играх появляются окружение и персонажи.


Но сначала немного о полигонах. В прошлой статье Популярно о 3D графике, часть 1 были упомянуты полигоны. Но, судя по комментариям, цель статьи была не совсем достигнута. Поэтому хочу немного остановиться на тесселяции и сглаживании. Представьте, что у вас есть лист бумаги. Это и будет полигон. Разделите его пополам по горизонтали и вертикали. Получим 4 части. Это и есть тесселяция. Зачем нам это нужно в 3D графике? Все дело в том, что полигон является базовой единицей поверхности (в полигональном моделировании) и им можно смоделировать разве что плоскость. Вспомните, что для того, чтобы изготовить бумажный самолетик необходимо лист бумаги несколько раз согнуть. Так и с полигонами — разбивая исходные полигоны на части, располагая их под нужными углами друг к другу и сглаживая можно получать те или иные формы. Сглаживание, как уже упоминалось в прошлой части, это разбиение полигонов с изменением углов между полигонами. Это означает, что если у нас есть квадрат, у которого, как известно, прямые углы 90 градусов, то после сглаживания эти углы будут уже примерно 135 градусов. Как операция сглаживания преображает заготовку модели можно увидеть на видео ниже.

В данном случае применено две итерации сглаживания. Видно, как увеличивается количество полигонов и модель приобретает плавные формы.

Но вернемся к играм.

На заре персональных компьютеров графические (были и текстовые, да, да, текстовые! игры) игры были двумерными во всех смыслах: персонажи были рисованными в проекции и двигаться могли только по осям X и Y. Для имитации, к примеру, ходьбы отрисовывались положения ног в разный период времени и эти кадры просто пускались по кругу. Классический пример двумерной игры — Тетрис. На приведенном ниже видео кадры из двумерной игры Nebulus для необыкновенно популярной в 80-х годах (а в СНГ и в 90-х) прошлого века платформы ZX Spectrum.

Но компьютеры росли и в последнее время большинство игр являются трехмерными. Что же нам дает трехмерность? (кстати, итоговая картинка для обычных мониторов все равно псевдохтрехмерная, но за счет размещения объектов в перспективе и возможности двигаться в трех измерениях, появляется иллюзия трехмерности). Трехмерность нам дает больше свободы и реалистичности. Взгляните на эти шахматы, одни из которых двумерные, а вторые — трехмерные. Какие из них смотрятся реалистичнее?
Популярно о 3D графике. Часть 2. Игры и 3D
Каким же образом в игре появляется трехмерный персонаж? Для начала моделер изготавливает высоко полигональную модель необходимого объекта или персонажа в одной из программ трехмерного моделирования (например, 3ds Max или Maya, возможна доработка в ZBrush или Mudbox). Затем строится развертка — представление рисунка трехмерного объекте на плоскости. По развертке художник рисует текстуры, т.е., грубо говоря, раскрашивает модель, затем настраиваются материалы, включающие нарисованные текстуры. Материалы позволяют придать текстурам реалистичности. Модель готова. Но для игры необходима низко полигональная модель. Ее получают из высоко полигональной или копируют на определенном этапе моделирования высоко полигональной. Затем нужна высоко полигональная модель? Она дает возможность получить более реалистичную картинку, смоделировать мелкие детали, тени, которые затем будут присутствовать в игре в виде текстуры. Многое, что мы в играх воспринимаем как мелкие объекты (углубления, коррозия, трещины, шпингалеты и многое-многое другое) на самом деле нарисовано с учетом теней, что при не очень детальном рассмотрении воспринимается как трехмерный объект. Из высоко полигональной модели получают вспомогательные текстуры. Как правило, кроме текстуры цвета и рисунка применяют текстуры рельефа (bump) и отражений (specular), карту нормали. Накладываясь на текстуру рисунка (diffuse) они делаю модель более реалистичной. Все это позволяет снизить требования к аппаратному обеспечению до доступного для современного железа уровеня.
Затем низко полигональная модель и текстуры экспортируется в так называемый игровой движок который позволяет, как правило, симулировать некоторый мир. Игровой движок ответственен за сам игровой процесс: взаимодействие героя с окружающим миром, визуализацию изображения в реальном времени, за искусственный интеллект компьютерных персонажей. Игровые 3D движки бывают разные: как платные, так и бесплатные, бесплатные при некоммерческом использовании, сложные и трудные в освоении, для различных платформ и т.п. Если вы решите поэкспериментировать с экспортом собственных моделей в игровой движок главное, чтобы была возможность конвертировать модель в формате вашего 3D редактора в формат игрового движка и последний работал на вашей платформе.
Чтобы не быть голословным я в представленном ниже видео кратко покажу как модель вставляется в игровой движок. Для примера я взял CryEngine 3. Почему именно его? Потому, что на нем «бегает» широко известный шутер Crysis 3, к тому же сам движок доступен для свободного скачивания и бесплатен для не коммерческого использования. Для CryEngine 3 доступна документация как на английском, так и на русском, присутствует расширение для 3ds Max.

На этом пока все.

Предыдущие статьи данного цикла:
Популярно о компьютерной графике. Часть 1 Введение и полигоны.

Автор: iByte

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js