Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 Простые графические спецэффекты.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
4.68 Mб
Скачать

1.3.4. Вид через запотевшее стекло

Разберём, как построить сложный эффект, пользуясь элементарными простыми приёмами. Данный эффект обрабатывает изображение так, чтобы получить вид на него сквозь запотевшее мокрое стекло. Предполагается, что изображение содержит некий пейзаж, на который мы смотрим из окна в дождь. Для реализации этого эффекта нужно реализовать вспомогательные эффекты. Рис.36. Дождь

Разобьём задачу на части: 1. Вид изображения через мокрое стекло

2. Капли дождя на стекле

3. Запотевание стекла

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

Вид изображения через мокрое стекло

Чтобы изображение выглядело так, как будто мы смотрим на него через мокрое стекло, нужно применить морфинг. При этом нужно деформировать не всё изображение, а только его часть, задаваемую маской. На иллюстрации видны полосы, изображающие потёки воды на стекле. Эти "потёки" задаются специальной маской. Маску можно сгенерировать или приготовить заранее. Для морфинга нужно подобрать формулу векторного поля.

Капли дождя на стекле и запотевание стекла

Мы будем рассматривать каплю, как бесцветное пятно с неравномерной прозрачностью. Рис.37. Капля дождя

Чтобы нанести на изображение каплю дождя, нужно изменить яркость пикселей (работая в пространстве HSL), попавших под каплю. Можно задать простую или сложную форму капли, и случайным образом нанести на изображение капли разного размера. Чтобы "стекло запотело", мы применим к изображению фильтрацию - гауссово сглаживание.

2. Особенности программирования компьютерной графики

2.1. Обеспечение быстродействия

Предыдущий раздел иллюстрировался программой на LISP/Scheme. Если пойти дальше чтения и действительно запустить эту программу, то моментально выяснится, что она работает очень медленно. Например, морфинг картинки размером 300х300 пикселей может занять больше 10 минут при частоте процессора в 1.6 GHz, то есть 1'600'000'000 тактов в секунду. Очевидно, что такая скорость работы никуда не годится. В настоящее время существует множество различных языков и программных сред. LISP/Scheme - это семейство интерпретируемых языков, относящихся к идеологии функционального программирования. Они отличаются тем, что позволяют работать на высоком абстрактном уровне, и писать короткий и изящный программный код. Работа программ, написанных на таких языках, может быть несколько замедлена за счёт расхода процессорного времени на работу интерпретатора. Обработка изображений по самой своей природе требует много процессорного времени. Чтобы просто заполнить изображение размером 1024х768, требуется совершить около миллиона операций изменения значения цвета точки. Если бы одна такая операция занимала всего 1 такт процессора, то на нашем процессоре с частотой 1.6 GHz создание картинки занимало бы примерно 0.5 миллисекунды. Чтобы достигать такой хорошей скорости, нужно в полной мере использовать ресурсы компьютера. Для этого нужно уметь грамотно писать программы. В данном разделе мы поговорим о том, какими способами можно обеспечить быстродействие.