Электронная библиотека

Xakep

Xakep

Технологии демо-мейкинга

Xakep, номер #014, стр. 014-052-1


Даниил Шеповалов (dan@xakep.ru)

Шесть лет назад

Ах, как же все было здорово еще каких-то лет шесть назад! Что означают слова "билинейная фильтрация текстур" и "альфа блендинг", знал лишь старик Ромеро, выпивавший в ту пору с приятелем из Силиконовых Графиксов. OpenGL в начале 90-х был благополучно утвержден и еще более благополучно забыт ведущими разработчиками софта для PC. Потому как нормальным компьютером считалось только что-то очень большое и плавающее в жидком азоте, а не этот калькулятор с процессором i386 и мегабайтом видеопамяти. Писишных демщиков было раз, два и... в общем-то и все, но какие это были демщики! Слабо тебе, например, минут 10 мучить зрителей появлением текстовых надписей вроде "только сейчас", "впервые в истории", "гипер-транс-мега-позитронный эффект, просчитываемый в реальном времени", а затем вывести на экран одноцветный вращающийся кубик? Да-с, пельмень, были времена. Но однажды передовик трехмерного труда, контора со скромным названием id Software выпустила игру DooM, и увидели люди, что 3D-графика - это хорошо. А затем выпустила эта же контора игру Quake, и увидели люди, что полигональная графика - это благословение Божие. И воплотился в человеческом облике сын Его, живущего во веки веков. И назвался 3Dfx Interactive. И сказал он: гоните пиплы лавэ и будет вам полный ништяк и цветное освещение в реальном времени. И пошли за ним люди. И давали лавэ. И 3dfiles.com стал самым посещаемым сервером. И писал журнал Хакер: "Даешь к первому мая миллиард текселей в секунду!". Всемирная история, Х #2.

Да, собственно с началом бума 3D-графики начался новый этап в развитии демо-мейкинга. Почти в 90% демок релиза последних двух-трех лет так или иначе присутствует полигональная 3D-графика. И, я думаю, придется рассмотреть эту тему наиболее подробно, потому как все OldSkool'ные эффекты вроде попиксельного морфинга, фракталов и тому подобного встречаются теперь лишь как бесплатное приложение к куче полигонов. Понятное дело, я не буду гнать тебе стандартную лажу о монстровых эффектах, содранную с Reactor Critical, которую так любят другие журналы. Мы пойдем другим путем на... в... в общем, другим путем пойдем.

10 миллионов и 1 вопрос про ЭТО

Для затравочки несколько слов о том, почему мы все, собственно, молимся на полигональную графику. Представь, что ты хочешь нарисовать какой-нибудь трехмерный объект. Для простоты - шар. У тебя есть формула шара, почерпнутая из учебника геометрии 9-го класса, так что чего, казалось бы, проще: вычисляй по ней в цикле соответствующие координаты, да проецируй все это дело на экран. Но так ты получишь одноцветный эллипс, который ни фига не катит за мазовую 3D-фигуру. Как быть? Надо рисовать каждую точку шара определенным цветом, в зависимости от ее освещенности. Тогда глаз распознает привычную световую закономерность и просто не просечет, что его кинули (выражаясь умными словами: экстраполирует объект). Освещенность рассчитывается довольно просто, по формуле Ламберта, взятой уже из учебника физики. В ней учитывается вектор, проведенный из точки в источник света, и вектор, перпендикулярный к поверхности шара в этой точке. Теперь смотри: в каждой точке нам надо рассчитать перпендикуляр, вектор света и подставить все это в формулу освещенности. А сколько на поверхности твоего шара этих точек?

Содержание  Вперед на стр. 014-052-2