Поэтому такие отражения делают «нечестно», натягивая на объект специальную текстуру. Существенно упростить эту задачу может автоматическая генерация текстур. Обычно используют сферическую или кубическую генерацию: вокруг объекта создаются обтянутые текстурой виртуальные куб или шар, которые и проецируются на объект. Соответственно для шара достаточно одной текстуры, а для куба потребуются все шесть.
Чтобы создать эффект отражения, необходимо в качестве текстур для объекта с автоматической генерацией текстурных координат подать фотографию сцены, сделанную из центра объекта. Для сферического способа придется использовать сверхширокоугольный объектив с захватом в 360 градусов, иначе предмет будет отражать только часть сцены. А для кубического подойдет и с 90-градусным. Если сцена, которую необходимо отражать, статична, то текстуры можно заготовить заранее, если же она изменяется, то ее придется фотографировать прямо в процессе работы программы. Точно так же можно создать и эффект преломления, достаточно просто-напросто перевернуть текстуры.
Во многих играх чуть ли не каждую секунду что-то взрывается и горит. Для создания взрывов существует несколько подходов. Самый простой из них – это технология, основанная на 2D-спрайтах. Взрыв представляет собой последовательность быстро меняющихся текстур (точно так же можно сделать и огонь, только последовательность должна быть зацикленной). Поскольку это объект двумерный, нужно, чтобы взрыв был всегда обращен «лицом» к игроку. К сожалению, такие взрывы трудно разнообразить. Игра, в которой все взрывы одинаковые, будет выглядеть странно, а каждый новый тип взрыва потребует свою уникальную последовательность спрайтов (кстати, огонь можно разнообразить, просто сдвинув последовательность текстур по фазе). Такие взрывы нельзя располагать очень близко к игроку, иначе их плоская природа будет заметна.
Более сложные и впечатляющие эффекты создаются при помощи систем частиц. Тут киноиндустрия и разработчики игр идут нога в ногу. Ведь в кино на обработку каждого кадра компьютер может потратить достаточно большое время, а в игре это неприемлемо. А вот создание взрывов при помощи геометрии применяется только при разработке игр. Взрывы создаются как специфическая комбинация текстурированных особым образом сфер и других фигур. Такие взрывы гораздо менее требовательны к вычислительным ресурсам, чем сделанные на основе систем частиц, и зачастую дают неплохие результаты, ни в чем не уступающие им.
Практически все дымы в играх – это системы частиц, а вот для создания огня есть свой специфический способ, основанный на 3D-текстурах. Объемная текстура – это аналог обычной плоской текстуры, только теперь каждая вершина имеет не две, а три координаты, что позволяет накладывать на полигон такие цвета, какие соответствовали бы треугольнику в 3D-текстуре с углами в нужных точках. Огонь представляет собой изменяющееся тело, текстурированное таким образом, и за счет структуры 3D-текстуры достигается мерцание огня. Потенциально этот способ может давать очень хорошие результаты, но он довольно сложен в реализации.
Различного рода туманы часто используются в играх. Раньше главным предназначением тумана было скрыть границы сцены. Например, на открытой местности можно было не рисовать все объекты до горизонта, а просто затуманить их. Такой способ достаточно примитивно реализуется, просто, в зависимости от удаления точек от камеры, к их цвету подмешивался цвет тумана. Позже туман стали использовать для придания определенной атмосферы, тут он уже должен был быть не на всей сцене, а только на определенных ее участках. Для этого очень хорошо подходил вершинный туман; при его использовании для каждой вершины указывался не только цвет, но и «туманная» координата, в зависимости от которой и подмешивался цвет тумана. Интересный эффект стелящейся над землей пелены достигается набором полупрозрачных горизонтальных плоскостей, по которым в различных направлениях могут двигаться едва различимые текстуры.
Уже сейчас качество эффектов в играх оставило далеко позади некоторые фильмы прошлого, и можно с уверенностью сказать, что то, чем нас сейчас удивляет кинематограф, в недалеком будущем можно будет увидеть и на экране монитора в реальном времени.
ФМ-ВЕЩАНИЕ: Занимательная футурология
По традиции все «взрослые» колумнисты в начале года делают прогнозы на новый год, а в конце года обязательно подводят итоги (которые, как обычно, показывают, что «оракул» редко ошибается). Такие прогнозы, вспоминая старый анекдот из области теории вероятностей, делать нетрудно: «Какова вероятность того, что, выйдя из подъезда, вы встретите китайца»? (В связи с объявленным годом Китая в России и России в Китае.) Очевидно – 50%. Исходя из этого, попробую и я дать свой первый прогноз на будущее. Естественно, меня больше всего интересует интернет-рынок и состояние софтверной индустрии в России.
Маловероятно, что китайский поисковик Baidu выйдет на российский рынок и начнет конкурировать с Google. Даже самый смелый футуролог будет побит за такие утверждения. Но то, что Mail.ru объединится с «Яндексом» и .masterhost, выйдет на IPO и легким движением руки обгонит по капитализации Google двухлетней давности, даже угадывать не надо. РБК после этого займет достойное второе место и будет, учитывая предстоящий 2008 год, готовиться к очередной эмиссии, которую почти целиком выкупит один из ведущих издательских домов. «Рамблер», видя, что третье место уплывает, срочно проведет вторую эмиссию и на вырученные деньги купит eHouse, объединив две компании, путь и стратегию которых пока никто не понимает. Может быть, новая компания с гипотетическим названием РeHouseР, будет понятнее рунетовским аналитикам. Инвестиционный фонд Финама начнет вкладывать деньги в стартапы (ни до, ни после никому не известные) и к концу года неожиданно выпустит многонациональный сервис для всего постсоветского пространства. Сервис никому не будет нужен, но себя окупит. Одновременно на горизонте возникнет западный инвестиционный фонд FigNam. Он будет рассматривать десятки заявок в неделю на стартапы, связанные с тематикой социальных сетей, и, не удовлетворив ни одной, зарегистрирует сотни патентов в США на компанию NamFig. Лидирующий интернет-магазин достроит автоматизированный склад в Твери, и его арендует Amazon.com, организовав представительство в России под названием «Ам-Озон».
Что же в этой трудной для понимания западного человека ситуации будут делать Yahoo!, Microsoft и Google? Google наконец-то официально объявит о создании российского представительства в Бологом численностью 3000/1000 человек и начнет рекламную кампанию с рассылкой 170 тысяч писем, на которых будет написано: «Вебмастер. Твой чек с заработком 170К рублей на AdSense ты сможешь обналичить в ближайшем отделении Сбербанка!». Microsoft наконец-то назначит в российском представительстве персону, ответственную за интернет-канал, и русифицирует интерфейс Hotmail. В MSN Messenger появится реклама на русском языке, в которой будет рекламироваться Ситибанк. Yahoo!, который уже научился таргетировать на Россию, будет показывать рекламу «Последнего дозора» в личных дневниках ЖЖ-пользователей. На этом продвижение западных порталов в Россию в нынешнем году, видимо, и закончится.
Для софтверной индустрии настанут трудные времена. Во исполнение поручения президента и очередного пинка от премьер-министра министерства, распределяющие деньги, сдадутся на милость лоббистов от офшорного программирования и пропустят изменения в законодательстве. Вслед за тем из отдаленных регионов стройными рядами потянутся в технопарки дивизии программистов-недоучек. После полугодичного дополнительного обучения английскому языку на их основе будут создаваться call-центры, вполне способные конкурировать даже с индийскими (по зарплате, конечно). Через некоторое время выяснится, что индийцы готовы получать еще меньше, и Дубна с Троицком станут городами с преобладанием смуглого цвета кожи. Но это я уже полез в долгосрочное прогнозирование. Вернемся к текущему году.