КГ_4глава (Компьютерная графика), страница 4
Описание файла
Файл "КГ_4глава" внутри архива находится в папке "Компьютерная графика". Документ из архива "Компьютерная графика", который расположен в категории "". Всё это находится в предмете "инженерная графика" из 4 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "компьютерная графика" в общих файлах.
Онлайн просмотр документа "КГ_4глава"
Текст 4 страницы из документа "КГ_4глава"
Алгоритм для ППК может быть, например, таким:
Рассмотрим пример работы приведенного алгоритма преобразования неравномерной сетки в равномерную. На рис. 4.16 изображена модель некоторой поверхности в виде изообластей высоты.
Рис. 4.16. Пример задания поверхности неравномерной сеткой. После первого заполнения растр имеет следующий вид (рис. 4.17).
Рис. 4.17. Вид растра после первого заполнения
Это уже равномерная сетка высоты. Однако поверхность будет негладкой, иметь большие ступени. Необходимо продолжать интерполяцию дальше.
Потом выполняется оконтуривание (рис. 4.18).
И так далее — выполняются циклы заполнения-оконтуривания. Всего было выполнено 7 циклов. После выполнения каждого цикла равномерная сетка все более точно соответствует гладкой поверхности. Это изображено на рис. 4.19.
Рис. 4.18. Вид растра после оконтуривания
Рис. 4.19. Результаты выполнения циклов заполнения-оконтуривания
4.2. Визуализация объемных изображений
Любой объект, в том числе и объемный, может быть изображен различными способами. В одном случае необходимо показать внутреннюю структуру объектов, в другом — внешнюю форму объекта, в третьем — имитировать реальную действительность, в четвертом — поразить воображение зрителя чем-то неизвестным. Условно разделим способы визуализации по характеру изображений и по степени сложности соответствующих алгоритмов на такие уровни:
1. Каркасная ("проволочная") модель.
2. Показ поверхностей в виде многогранников с плоскими гранями или сплайнов с удалением невидимых точек.
3. То же, что и для второго уровня, плюс сложное закрашивание объектов для имитации отражения света, затенения, прозрачности, использование текстур.
На рис. 4.20—4.26 изображены различные способы показа трехмерных объектов в порядке усложнения используемых алгоритмов.
Рис. 4.20. Каркасная модель Рис. 4.21. Удаление невидимых точек
Рис. 4.22. Закрашивание граней Рис. 4.23. Имитация гладких
с учетом освещения поверхностей закрашиванием
Рис. 4.24. Наложение текстуры Рис. 4.25. Тени
Рис. 4.26. Добавлены фон, матовые и зеркальные поверхности
Простейшая каркасная модель часто применяется в процессе редактирования объемных объектов. Визуализация второго уровня используется для упрощенного показа объемных объектов. Например, для графиков функций z =f(х,у) (в виде рельефа поверхности) часто достаточно показать все грани сетки одним цветом, но зато необходимо обязательно удалить невидимые точки. Это более сложная процедура по сравнению с выводом каркасного изображения.
Сложность процесса графического вывода возрастает по мере приближения к некоторому идеалу для компьютерной графики — создания полной иллюзии естественных, живых, реалистичных изображений. Усилия многих ученых и
инженеров во всем мире направлены на разработку методов и средств достижения этой цели. В этом плане наиболее полно ощущается связь компьютерной графики с естественными науками, с дисциплинами, посвященными изучению окружающего нас мира. Например, для создания реалистичных изображений необходимо учитывать законы оптики, описывающие свет и тень, отражение и преломление. Компьютерная графика находится на стыке многих дисциплин и разделов науки.
Каркасная визуализация
Каркас обычно состоит из отрезков прямых линий (соответствует многограннику), хотя можно строить каркас и на основе кривых, в частности сплайновых кривых Безье. Все ребра, показанные в окне вывода, видны — как ближние, так и дальние.
Для построения каркасного изображения надо знать координаты всех вершин в мировой системе координат. Потом преобразовать координаты каждой вершины в экранные координаты в соответствии с выбранной проекцией. Затем выполнить цикл вывода в плоскости экрана всех ребер как отрезков прямых (или кривых), соединяющих вершины.
Показ с удалением невидимых точек
Здесь мы будем рассматривать поверхности в виде многогранников или полигональных сеток. Известны такие методы показа с удалением невидимых точек: сортировка граней по глубине, метод плавающего горизонта, метод Z-буфера [28, 32].
Сортировка граней по глубине. Это означает рисование полигонов граней в порядке от самых дальних к самым близким. Этот метод не является универсальным, ибо иногда нельзя четко различить, какая грань ближе (рис. 4.27). Известны модификации этого метода, которые позволяют корректно рисовать такие грани, они описаны в [28]. Метод сортировки по глубине эффективен для показа поверхностей, заданных функциями z =f(x,y) (рис. 4.28).
Рис. 4.27. В каком порядке рисовать эти грани?
Рис. 4.28. Эта поверхность нарисована четырехугольными гранями
Метод плавающего горизонта. В отличие от предыдущего метода при методе плавающего горизонта грани выводятся в последовательности от ближайших к самым дальним. На каждом шаге границы граней образовывают две ломаные линии — верхний горизонт и нижний горизонт. Во время вывода каждой новой грани рисуется только то, что выше верхнего горизонта, и то, что ниже нижнего горизонта. Соответственно, каждая новая грань поднимает верхний и опускает нижний горизонты. Этот метод часто используют для показа поверхностей, которые описываются функциями z =f(x,y).
Метод Z-буфера. Метод основывается на использовании дополнительного массива, буфера в памяти, в котором сохраняются координаты Z для каждого пиксела растра. Координата Z отвечает расстоянию точек пространственных объектов до плоскости проецирования. Например, она может быть экранной координатой Z в системе экранных координат (X, Y,Z), если Z перпендикулярна плоскости экрана.
Рассмотрим алгоритм рисования объектов согласно этому методу. Пусть, чем ближе точка в пространстве к плоскости проецирования, тем больше значение Z. Тогда сначала Z-буфер заполняется минимальными значениями. Потом начинается вывод всех объектов. Причем не имеет значение порядок вывода объектов. Для каждого объекта выводятся все его пикселы в любом порядке. Во время вывода каждого пиксела по его координатам (X, Y) находится текущее значение Z в Z-буфере. Если рисуемый пиксел имеет большее значение Z, чем значение в Z-буфере, то это означает, что эта точка ближе к объекту. В этом случае пиксел действительно рисуется, а его Z-координата записывается в Z-буфер. Таким образом, после рисования всех пикселов всех объектов растровое изображение будет состоять из пикселов, которые соответствуют точкам объектов с самыми большими значениями координат Z, то есть видимые точки — ближе всех к нам.
Этот метод прост и эффективен благодаря тому, что не нужно ни сортировать объекты, ни сортировать их точки. При рисовании объектов, которые описываются многогранниками или полигональными сетками, манипуляции со значениями Z-буфера легко совместить с выводом пикселов заполнения полигонов плоских граней.
В настоящее время метод Z-буфера используется во многих графических 3 d-акселераторах, которые аппаратно реализуют этот метод. Наиболее целесообразно, когда акселератор имеет собственную память для Z-буфера, доступ к которой осуществляется быстрее, чем к оперативной памяти компьютера. Возможности аппаратной реализации используются разработчиками и пользователями компьютерной анимации, позволяя достичь большой скорости прорисовки кадров.
4.3. Закрашивание поверхностей
В этом разделе мы рассмотрим методы, которые позволяют получить более-менее реалистичные изображения для объектов, моделируемых многогранниками и полигональными сетками. Эти методы достаточно подробно описаны в [9, 28, 32], а также в [58, 60].
Модели отражения света
Рассмотрим, как можно определить цвет пикселов изображения поверхности согласно интенсивности отраженного света при учете взаимного расположения поверхности, источника света и наблюдателя.
Зеркальное отражение света. Угол между нормалью и падающим лучом (0) равен углу между нормалью и отраженным лучом. Падающий луч, отраженный, и нормаль располагаются в одной плоскости (рис. 4.29).
Рис. 4.29. Зеркальное отражение света
Поверхность считается идеально зеркальной, если на ней отсутствуют какие-либо неровности, шероховатости. Собственный цвет у такой поверхности не наблюдается. Световая энергия падающего луча отражается только по линии отраженного луча. Какое-либо рассеяние в стороны от этой линии отсутствует. В природе, вероятно, нет идеально гладких поверхностей, поэтому полагают, что если глубина шероховатостей существенно меньше длины волны излучения, то рассеивания не наблюдается. Для видимого спектра можно принять, что глубина шероховатостей поверхности зеркала должна быть существенно меньше 0.5 мкм [30].
Если поверхность зеркала отполирована неидеально, то наблюдается зависимость интенсивности отраженного света от длины волны — чем больше длина волны, тем лучше отражение. Например, красные лучи отражаются сильнее, чем синие.
При наличии шероховатостей имеется зависимость интенсивности отраженного света от угла падения. Отражение света максимально для углов 0, близких к 90 градусам [13, 30].
Падающий луч, попадая на слегка шероховатую поверхность реального зеркала, порождает не один отраженный луч, а несколько лучей, рассеиваемых по различным направлениям. Зона рассеивания зависит от качества полировки и может быть описана некоторым законом распределения. Как правило, форма зоны рассеивания симметрична относительно линии идеального зеркально отраженного луча. К числу простейших, но достаточно часто используемых, относится эмпирическая модель распределения Фонга, согласно которой интенсивность зеркально отраженного излучения пропорциональна (cos α)p, где а— угол отклонения от линии идеально отраженного луча. Показатель р находится в диапазоне от 1 до 200 и зависит от качества полировки [28]. Запишем это таким образом: