Вход/Регистрация
Журнал «Компьютерра» №1-2 за 2006 год
вернуться

Журнал Компьютерра

Шрифт:

Метод Shadow Mapping позволяет делать тени, отбрасываемые предметами на себя. Для этого в точке освещения создается виртуальная камера, и все точки, которые ей «видны», заносятся в специальный буфер. Они рисуются освещенными, а все остальные затененными. Перечисленные методы делают так называемые жесткие тени, имеющие четкую границу с освещенными частями сцены. В реальности же края теней чаще всего размыты, из-за того что источники света не точечные и свет отражается от различных предметов. Чтобы имитировать такие тени, можно одним из предложенных методов несколько раз нарисовать их, постепенно уменьшая размеры и увеличивая затемненность, и таким образом получить плавный переход.

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

Отражения

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

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

Поэтому такие отражения делают «нечестно», натягивая на объект специальную текстуру. Существенно упростить эту задачу может автоматическая генерация текстур. Обычно используют сферическую или кубическую генерацию: вокруг объекта создаются обтянутые текстурой виртуальные куб или шар, которые и проецируются на объект. Соответственно для шара достаточно одной текстуры, а для куба потребуются все шесть.

Чтобы создать эффект отражения, необходимо в качестве текстур для объекта с автоматической генерацией текстурных координат подать фотографию сцены, сделанную из центра объекта. Для сферического способа придется использовать сверхширокоугольный объектив с захватом в 360 градусов, иначе предмет будет отражать только часть сцены. А для кубического подойдет и с 90-градусным. Если сцена, которую необходимо отражать, статична, то текстуры можно заготовить заранее, если же она изменяется, то ее придется фотографировать прямо в процессе работы программы. Точно так же можно создать и эффект преломления, достаточно просто-напросто перевернуть текстуры.

Взрывы, огонь и дым

Во многих играх чуть ли не каждую секунду что-то взрывается и горит. Для создания взрывов существует несколько подходов. Самый простой из них – это технология, основанная на 2D-спрайтах. Взрыв представляет собой последовательность быстро меняющихся текстур (точно так же можно сделать и огонь, только последовательность должна быть зацикленной). Поскольку это объект двумерный, нужно, чтобы взрыв был всегда обращен «лицом» к игроку. К сожалению, такие взрывы трудно разнообразить. Игра, в которой все взрывы одинаковые, будет выглядеть странно, а каждый новый тип взрыва потребует свою уникальную последовательность спрайтов (кстати, огонь можно разнообразить, просто сдвинув последовательность текстур по фазе). Такие взрывы нельзя располагать очень близко к игроку, иначе их плоская природа будет заметна.

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

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

Различного рода туманы часто используются в играх. Раньше главным предназначением тумана было скрыть границы сцены. Например, на открытой местности можно было не рисовать все объекты до горизонта, а просто затуманить их. Такой способ достаточно примитивно реализуется, просто, в зависимости от удаления точек от камеры, к их цвету подмешивался цвет тумана. Позже туман стали использовать для придания определенной атмосферы, тут он уже должен был быть не на всей сцене, а только на определенных ее участках. Для этого очень хорошо подходил вершинный туман; при его использовании для каждой вершины указывался не только цвет, но и «туманная» координата, в зависимости от которой и подмешивался цвет тумана. Интересный эффект стелящейся над землей пелены достигается набором полупрозрачных горизонтальных плоскостей, по которым в различных направлениях могут двигаться едва различимые текстуры.

  • Читать дальше
  • 1
  • ...
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: