Чтобы создать эффект отражения, необходимо в качестве текстур для объекта с автоматической генерацией текстурных координат подать фотографию сцены, сделанную из центра объекта. Для сферического способа придется использовать сверхширокоугольный объектив с захватом в 360 градусов, иначе предмет будет отражать только часть сцены. А для кубического подойдет и с 90-градусным. Если сцена, которую необходимо отражать, статична, то текстуры можно заготовить заранее, если же она изменяется, то ее придется фотографировать прямо в процессе работы программы. Точно так же можно создать и эффект преломления, достаточно просто-напросто перевернуть текстуры.
Во многих играх чуть ли не каждую секунду что-то взрывается и горит. Для создания взрывов существует несколько подходов. Самый простой из них – это технология, основанная на 2D-спрайтах. Взрыв представляет собой последовательность быстро меняющихся текстур (точно так же можно сделать и огонь, только последовательность должна быть зацикленной). Поскольку это объект двумерный, нужно, чтобы взрыв был всегда обращен «лицом» к игроку. К сожалению, такие взрывы трудно разнообразить. Игра, в которой все взрывы одинаковые, будет выглядеть странно, а каждый новый тип взрыва потребует свою уникальную последовательность спрайтов (кстати, огонь можно разнообразить, просто сдвинув последовательность текстур по фазе). Такие взрывы нельзя располагать очень близко к игроку, иначе их плоская природа будет заметна.
Более сложные и впечатляющие эффекты создаются при помощи систем частиц. Тут киноиндустрия и разработчики игр идут нога в ногу. Ведь в кино на обработку каждого кадра компьютер может потратить достаточно большое время, а в игре это неприемлемо. А вот создание взрывов при помощи геометрии применяется только при разработке игр. Взрывы создаются как специфическая комбинация текстурированных особым образом сфер и других фигур. Такие взрывы гораздо менее требовательны к вычислительным ресурсам, чем сделанные на основе систем частиц, и зачастую дают неплохие результаты, ни в чем не уступающие им.
Практически все дымы в играх – это системы частиц, а вот для создания огня есть свой специфический способ, основанный на 3D-текстурах. Объемная текстура – это аналог обычной плоской текстуры, только теперь каждая вершина имеет не две, а три координаты, что позволяет накладывать на полигон такие цвета, какие соответствовали бы треугольнику в 3D-текстуре с углами в нужных точках. Огонь представляет собой изменяющееся тело, текстурированное таким образом, и за счет структуры 3D-текстуры достигается мерцание огня. Потенциально этот способ может давать очень хорошие результаты, но он довольно сложен в реализации.
Различного рода туманы часто используются в играх. Раньше главным предназначением тумана было скрыть границы сцены. Например, на открытой местности можно было не рисовать все объекты до горизонта, а просто затуманить их. Такой способ достаточно примитивно реализуется, просто, в зависимости от удаления точек от камеры, к их цвету подмешивался цвет тумана. Позже туман стали использовать для придания определенной атмосферы, тут он уже должен был быть не на всей сцене, а только на определенных ее участках. Для этого очень хорошо подходил вершинный туман; при его использовании для каждой вершины указывался не только цвет, но и «туманная» координата, в зависимости от которой и подмешивался цвет тумана. Интересный эффект стелящейся над землей пелены достигается набором полупрозрачных горизонтальных плоскостей, по которым в различных направлениях могут двигаться едва различимые текстуры.
Уже сейчас качество эффектов в играх оставило далеко позади некоторые фильмы прошлого, и можно с уверенностью сказать, что то, чем нас сейчас удивляет кинематограф, в недалеком будущем можно будет увидеть и на экране монитора в реальном времени.
ФМ-ВЕЩАНИЕ: Занимательная футурология
По традиции все «взрослые» колумнисты в начале года делают прогнозы на новый год, а в конце года обязательно подводят итоги (которые, как обычно, показывают, что «оракул» редко ошибается). Такие прогнозы, вспоминая старый анекдот из области теории вероятностей, делать нетрудно: «Какова вероятность того, что, выйдя из подъезда, вы встретите китайца»? (В связи с объявленным годом Китая в России и России в Китае.) Очевидно – 50%. Исходя из этого, попробую и я дать свой первый прогноз на будущее. Естественно, меня больше всего интересует интернет-рынок и состояние софтверной индустрии в России.