Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Graphica_12_Kulikov_Ovchinnikova.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
6.04 Mб
Скачать

7.5. Вопросы и упражнения

  1. Что такое эффект полос Маха?

  2. Чем отличается диффузное отражение от зеркального?

  3. От чего зависит интенсивность освещения точки поверхности при диффузном отражении?

  4. От чего зависит интенсивность освещения точки поверхности при зеркальном отражении?

  5. Какие параметры учитывает модель зеркального отражения, предложенная Фонгом?

  6. Меняется ли интенсивность освещения при плоском закрашивании грани?

  7. Какой параметр интерполируется при закрашивании методом Гуро?

  8. Какой параметр интерполируется при закрашивании методом Фонга?

  9. В чем состоит идея алгоритмов антиэлайзинга, основанных на уровне детализации растра?

8. Визуализация пространственных реалистических сцен

8.1. Трехмерный графический конвейер

Концепция графического конвейера сложилась в компьютерной графике на ранних стадиях её развития и имела целью представить этапы обработки геометрической и цветовой информации при отображении трехмерных сцен. На основе этой концепции разрабатывались аппаратные и программные средства компьютерной графики, выявлялись возможности распараллеливания вычислений, создавалась архитектура графических систем. В настоящее время, графический конвейер используют для представления функциональных возможностей таких программных интерфейсов к аппаратным средствам графики как OpenGL и Direct3D. Принципиально возможны два подхода к формированию изображения трехмерной сцены: ориентированный на экран, когда анализируется каждый пиксель и выявляются видимые объекты в данной точке экрана, и ориентированный на объекты сцены, когда преобразованиям, сортировке и разложению на пиксели подвергаются все объекты сцены. В графическом конвейере применяется второй, ориентированный на объекты сцены, подход.

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

Каждый процессор реализует определенный этап преобразования геометрической и цвето-яркостной информации. Данные на выходе одного процессора передаются на следующий. Типичный вариант конвейера содержит следующие этапы:

  1. Считывание или «обход» 3-х мерной графической базы данных, где объекты представлены в мировой (или объектной) системе координат.

  2. Преобразование из мировой системы в систему координат наблюдателя геометрических описаний объектов. Для полигональных моделей – это преобразование вершин многоугольников. Вычисление цвето-яркостных параметров в вершинах с учетом освещенности.

  3. Отсечение или “клиппирование” плоскостями пирамиды видимости – оставляет то, что попало в область видимости экрана.

  4. Перспективное преобразование или “перспективное деление” – переход в экранную двумерную систему координат. Информация о глубине, z-координата, может, тем не менее, сохранятся, например, для удаления невидимых поверхностей.

  5. Преобразование или “разложение” в растр – это процесс вычисления всех пикселей на экране где разместился объект. В ранних алгоритмах использовался строчный принцип преобразования, когда обработка выполнялось последовательно строка за строкой – аналогично развертке в растровом дисплее.

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

  7. Вычисление цвето-яркостных параметров фрагментов объектов в пикселях.

  8. Запись фрагментов в видеобуфер.

Удаление невидимых поверхностей может быть связано с различными этапами конвейера в зависимости от используемого алгоритма. Так, в простом случае алгоритма «художника» (приоритетного списка), при обходе базы данных на этапе 1 формируется приоритетный список объектов, в порядке начиная от самых далеких к наблюдателю. По мере записи в видеобуфер фрагментов объектов, более ближние затирают более дальние.

Если используется алгоритм Z-буфера, то наряду с видеобуфером вводится также память на z-координату или глубину в каждом пикселе. Для каждого фрагмента объекта вычисляется z-координата и сравнивается с z-координатой в пикселе уже записанной ранее в буфере.

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

В большинстве реализаций графического конвейера видеопроцессор принимает на вход многоугольники и даже, часто, только треугольники. Это связано с потребностью унификации данных для видео-преобразования, где должны быть минимизированы логические операции разбора «геометрии». Что бы обеспечить такими данными видеопроцессор, геометрический процессор разбивает объекты на треугольники на последних стадиях геометрических преобразований. Так, кусок гладкой поверхности, или пачь, заданный уравнениями и границами, может быть целиком преобразован в систему координат наблюдателя. Затем разбит сеткой, с частотой адаптированной к расстоянию до поверхности. И, наконец, произведена сборка треугольников по узлам сетки. Процесс сборки многоугольников по опорным узлам, когда каждый узел входит, как вершина, в несколько многоугольников, создавая плотное покрытие, называют сборкой примитивов («primitive assembly», например, в конвейере OpenGL). Геометрический процессор выполняет и другие функции, которые освобождают конвейер, на ранних стадиях обработки от заведомо не отображаемых на экране объектов. К ним относятся грани, лицевая сторона (или нормаль) которых направлена от наблюдателя. Объекты, описанная сфера вокруг которых, целиком лежит вне пирамиды видимости.

Важной функцией геометрического процессора является вычисление цветояркостных параметров в вершинах многоугольников. Если сцена содержит подвижные объекты или источники освещения, цвета и яркости объектов должны обновляться в каждом кадре. Типично, в базе данных хранятся нормали к поверхностям в вершинах аппроксимирующих поверхность многоугольников и начальные цвета. Геометрический процессор вычисляет цвета в вершинах в зависимости от источника освещения и используя некоторую модель освещенности (Гуро, Фонга и т. д.). Для более качественного моделирования эффектов освещенности, нормали могут передаваться в видеопроцессор.

Видеопроцессор вначале разбивает многоугольники на фрагменты размером в пиксель и, затем вычисляет различные параметры каждого фрагмента. Производительность этой части конвейера должна быть гораздо выше и приближенно оценивается как пропорциональное пиксельному разрешению экрана, умноженному на среднюю глубинную сложность изображения. В противоположность этому, производительность геометрического процессора должна быть пропорциональна количеству вершин или многоугольников сцены. Тем не менее, разрядность вычислений в видеопроцессоре может быть снижена до разрядности представления экранных координат. Часто применяемым методом распараллеливания вычислений в видеопроцессоре является метод разряженного растра. Несколько идентичных (под)процессоров получают одни и те же данные от геометрического процессора, но каждый работает со своей выборкой пикселей, которая представляет собой разряженный растр. Память видеобуфера (и Z-буфера) также разбита на слои, каждый из которых привязан к своей выборке пикселей. Поскольку современным алгоритмам «растрирования» нет необходимости быть привязанным к строчной развертке (из-за наличия видеобуфера), в процессе разложения в растр видеопроцессор может генерировать фрагменты многоугольника («пиксели») в любом порядке.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]