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

Xakep

Xakep

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

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


Кто сказал "до задницы"? А ну, выйди из класса! Дык вот, на поверхности твоего шара этих точек до задницы и больше! А теперь представь, что тебе надо нарисовать не шар, а утро в сосновом лесу, тогда расчеты становятся просто нереальными. И вот однажды умные дяди придумали следующую фишку: если взять на поверхности объекта небольшое число точек, составить из них треугольники и считать освещенность постоянной или ненамного изменяющейся в пределах каждого треугольника, то можно года за три сбацать Unreal и всю жизнь получать нехилые бабки. По-умному идея называется "полигональная апроксимация поверхности", и достойной альтернативы трехмерного моделирования пока не существует. Есть, правда, крутые теории VoxEl'ей и NURBS'ов, но об их практическом применении в демо-мейкинге чуть позже.

Да будет свет, сказал монтер, и йенгом лампочку протер

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

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

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

- Модель освещения Фонга: здесь, во-первых, учитывается еще и зеркальная составляющая отраженного света, так что объект выглядит гораздо круче, чем в модели Гуро: появляются классные металлические блики. А во-вторых, вместо освещенности интерполируют уже вектор нормали к поверхности и реально вычисляют освещенность в каждой точке. Результат получается офигительный - мы экономим ресурсы, так как не рассчитываем нормаль в каждой точке полигона и в то же время считаем ее цвет.

Но демо-мейкинг на то и демо-мейкинг, чтобы всех кидать и рассчитывать графику не по книжным правилам, а через, извините, жопу. Ты наверняка частенько видел вращающиеся бублики с рулезными бликами, под которыми было написано "Real-time Phong shadding". Так вот знай, что тебя нагло кинули. Почти во всех демках ты видишь не модель Фонга, а самый обыкновенный метод Гуро, усовершенствованный извращенным мозгом демщиков. Оно и понятно, я однажды реализовал реальную модель Фонга и долго наслаждался душераздирающим зрелищем со скоростью в 1 fps. Итак, кидалово может производиться двумя способами.

Назад на стр. 014-052-1  Содержание  Вперед на стр. 014-052-3