Спецэффекты в играх. Введение

04.10.2012

Если вы читаете эту статью,  то скорее всего вы либо играете сами, либо интересуетесь играми. Конечно, можно долго спорить о том должна ли игра быть совершенной в отношении играбельности, либо  в своей визуальной составляющей . Но думаю очевидно одно — тусклая и монотонная картинка не прибавит шансов игре занять место в вашей игротеке .

Мы привыкли видеть спецэффекты в играх так часто и в таких количествах, что только их отсутствие сможет удивить игрока. Задумывались ли вы когда нибудь, как же все эти ауры, вспышки и взрывы создаются, и вообще, что они из себя представляют на самом деле? Если да, то поехали.

Кино vs. Игры

Так, собственно, в чем же разница?

Во-первых, кинофильм- это законченный продукт, который мы “потребляем” в таком виде, в каком он был создан, т.е. он не интерактивный.  Игра же напротив, интерактивна и только мы решаем куда посмотреть, идти и, что делать. В конечном итоге, мы определяем, что попадет “в кадр”.

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

С точки зрения человека, работающего над спецэффектами в кино, ключевым является тот факт, что  помимо собственно времени разработки, необходимо учитывать время для конечной визуализации того или иного эффекта. Так, например, суммарное время для визуализации одного кадра в некоторых сценах из последней части трилогии Трансформеры, достигало 288 часов.

У художников работающих над созданием спецэффектов для игр проблемы те же, но в гораздо меньших масштабах. Вам наверняка знакома следующая аббревиатура - FPS. Но нет, в данном случае, речь пойдет не о популярном жанре, а о понятии — Frames Per Second (количество кадров в секунду).

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

Как результат, подходы к созданию эффектов в кино и играх различны. Дым, застилающий места баталий в фильмах, более реалистичный, чем тот, что мы можем наблюдать в очередном шутере. Тем не менее, даже этот игровой дым ведет себя как настоящий — рассеивает свет, вздымается вверх и рассеивается. И все это происходит на “наших глазах”. Неужели, современные средства позволяют сократить пресловутые 288 часов в какие-то доли секунды?

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

 Смешивание цветов в компьютерной графике.

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

До того, как мы увидим что-то на экране монитора, компоненты, формирующие изображение, проходят длинную череду операций и преобразований, результатом которых является цвет (триада значений RGB) пикселя.

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

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

Аддитивный режим.

Пусть имеется пара объектов. Для простоты рассмотрим два круга с одинаковым значением цвета. Как было сказано ранее, нас интересует ситуация, когда объекты перекрывают друг друга.

Аддитивным называется такой режим, при котором результирующее значение цвета равно покомпонентной арифметической сумме всех входящих в состав цветов. То есть :

Изображения ниже наглядно иллюстрирует данное арифметическое действие. Перекрывающиеся участки исходных объектов, имеющих одинаковый цвет, высвечиваются, так как исходные цвета складываются.

Отметим, что при данном режиме не играет роли то, как объекты расположены относительно  виртуальной камеры. Пока имеет место перекрытие “на экране” (т.е. в пространстве экрана) — цвета будут складываться. Это демонстрирует изображение ниже — в данном случае исходные объекты попадают в область зрения камеры под иным углом, тем не менее, как и прежде, перекрывающиеся участки высвечиваются.

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

 Прозрачность в компьютерной графике.

Смешивание цветов с использованием альфа канала.

Для целого ряда случаев, простое сложение цветов не позволяет получить желаемый результат. Рассмотрим, к примеру, такое явление, как туман или дым. Как вы уже знаете, в случае использования аддитивной модели, все что покрыто туманом или дымом будет предельно высвечено. Согласитесь , такое трактование тумана не всегда уместно.

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

Помимо исходных каналов красного, зеленого и голубого цветов, изображение может содержать целый ряд дополнительных каналов. Одним из таких каналов является альфа канал. Смысл альфа канала прост — указать, с помощью градаций серого, какие участки изображения прозрачны и наоборот. Так же  условимся, что черный цвет в альфа канале будет означать полную прозрачность, тогда как белый полную непрозрачность.

Арифметически, результат такого режима смешивания выглядит так:

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

Итак, пусть имеется два объекта.

В качестве текстуры прозрачности будем использовать следующее изображение :

Теперь наши объекты выглядят следующим образом:

Как уже было сказано, нас интересует ситуация, когда объекты перекрываются. Предположим, что объект синего цвета находится ближе к камере.
Результат будет выглядеть следующим образом:

Если же красное кольцо будет ближайшим :

На самом деле, данный решим смешивания наиболее привычен нашему повседневному восприятию вещей. Если какой либо объект находится ближе к нам, мы видим его перекрывающим то, что находится за ним. То есть, в отличии от аддитивного режима, в данном случае расположение объектов относительно камеры, играет существенную роль.

На этом наш краткий экскурс окончен, однако по ходу статьи мы ещё не раз вернемся к изложенному выше материалу.

 Средства для воплощения эффектов в играх

1. Полигональные модели.

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

 2. Материалы

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

Разумеется, в тех областях где точность воспроизведения физических свойств материала критична, использование ресурсоемких мат. моделей оправдано. К счастью, компьютерные игры не относятся к таковым и, как правило, использования  упрощённых абстракций реальных материалов вполне достаточно.

Т.е.,  сам по себе материал является неким информационным центром, получающим на вход  некоторые атрибуты (значения цвета, прозрачности, светимости  и т.д.), и возвращающий конечное значения цвета и прозрачности точек поверхности.

 3. Анимированные текстуры

Как было сказано выше, текстуры используются в качестве входных параметров материала. Сами по себе текстуры являются обыкновенными изображениями, используемыми для обозначения цвета, прозрачности, светимости и других атрибутов.
Однако нас интересует другое свойство этих самых текстур — возможность их анимировать. А если быть точнее,  расположение текстуры на своей модели.

Собираем все вместе.

Пример создания простого эффекта.

В общем случае, модели в наших виртуальных  сценах, как вы знаете, имеют 3 измерения — x, y, z. Текстуры, будучи “плоскими” изображениями, имеют 2 измерения — x и y. Для того чтобы использовать эти самые изображения на наших моделях, необходимо задать дополнительную пару координат (обычно именуемых U , V), однозначно определяющих какая точка модели соответствует какому участку текстуры.

Таким образом, манипулируя известными нам U,V координатами, мы можем произвольно перемещать, поворачивать и масштабировать текстуры на модели. А если манипулировать этими значениями по ходу течения времени, или попросту говоря анимировать их, мы можем элегантно сымитировать целый ряд интересных эффектов.

Пусть, к примеру, имеется следующая текстура :

Для простоты, наложим данную текстуру на, частично деформированный цилиндр:

Обратите внимание на то, как данный цилиндр развёрнут по UV-координатам, как вам уже должно быть понятно, это напрямую определяет то, как текстура будет отображаться на модели:

Для того, чтобы уместить на текущей модели большее количество текстурных сегментов, сузим нашу текстуру в 4 раза (вдоль оси U).

Теперь, если вы выделите имеющиеся координаты и начнете двигать их в каком-либо направлении, вы заметите, что текстура так же перемещается согласно меняющимся координатам.

Теперь определимся с режимом наложения нашего эффекта. Для простоты воспользуемся аддитивным режимом :

Нам осталось поставить анимационные ключи на значениях U,V параметров и наш простой, но уже какой-никакой эффект готов.

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

Анализ нескольких эффектов из игр.

Alice : Madness Returns

Эффекты, на подобии водопадов, особенно часто имитируются с помощью текстуры (а скорее всего множеством текстур). При использовании нескольких моделей с различными материалами, появляется возможность создавать анимации текстур, различающихся по скорости и, при необходимости, направлению движения, что в конечном итоге позволяет добиваться более привлекательных “многослойных” эффектов.

Devil May Cry 4

Красочная визуализация движений персонажа и его оружия является неотъемлемой частью любого слешера. Несмотря на то, что конечная реализация подобных эффектов (обычно именуемых trail’ами ) может отличаться, одним из традиционных способов создания подобных эффектов является создание текстурированной геометрии “на лету”.
В этом случае, вершины модели (или множества моделей ) создаются по ходу движения “родительского” объекта, будь то топор, меч или что-то ещё. Режимы наложения в этом случае могут быть различными и зависят только от видения разрабатываемого эффекта.

World of Warcraft : The Burning Crusade

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

Обратите внимание на явную аддитивную природа эффекта — высвечивающиеся участки особенно хорошо различимы на фоне темного неба.

Darksiders II : Death Lives

Просторы вселенной Darksiders II украшает зловещая, но тем не менее прекрасная бездна.
Функционально, в эффекте можно выделить три элемента —  черная дыра, закрученные потоки светящейся материи и  падающие вниз метеориты.

Как и в предыдущих примерах, подобный эффект получен с использованием множества геометрических объектов.
Скорее всего, в игровом пространстве черная дыра (точнее непрозрачная геометрическая модель с текстурой чёрного цвета) находится между самой верхней границей текстуры неба и остальной геометрией эффекта. Используемый при этом режим  альфа наложения позволяет маскировать все, что находится за чёрной дырой.

На самом деле, принципиального значения, какая именно “геометрия” используется для оставшихся компонентов эффекта,  нет. Это может быть множество усеченных конусов, ряд смещенных относительно друг друга спиралей, либо что-то ещё. До тех пор, пока используемая геометрия не слишком громоздка в отношении количества полигонов, и позволяет добиться нужного визуального результата, её можно смело использовать.

Заполнен: Туториалы
Присвоен тэг:

avatar

Об Авторе ()

Коллективный разум нашей редакции. Все человеческое здесь заканчивается и начинается C++!

Комментирование закрыто.

Наверх