- •Основные сведения о графических системах (гс). Функции гс. Блок-схема гс. Основные сведения о графических системах (гс).
- •Функции гс
- •Блок-схема гс.
- •Векторный и растровый дисплеи. Получение изображения. Сравнительная характеристика.
- •Геометрические преобразования. Однородные координаты. Перенос, поворот, масштабирование в однородных координатах. Двумерные преобразования Перенос
- •Масштабирование
- •Поворот
- •Однородные координаты
- •Перенос
- •Композиции преобразований
- •(Трехмерных)
- •Преобразование отрезков в растровую форму. Простой, пошаговый алгоритмы, алгоритм Брезенхема.
- •Преобразования, как изменение систем координат.
- •Устранение искажений в растровых изображениях. Выравнивание. Мелкие и движущиеся объекты. Алгоритм By.
- •Заполнение области. Алгоритм построчного сканирования, алгоритм заполнения с затравкой. Заполнение линиями.
- •Растровая развёртка многоуг-в (метод использования когерентности сканируемых строк).
- •Растровая развёртка многоуг-в (метод использования когерентности рёбер).
- •Алгоритм отсечения отрезков Козна и Сазерленда. Алгоритм разбиения средней точкой.
- •Основные виды геометрических моделей.
- •Методы построения геометрических моделей (построение кривых и поверхностей, кусочно-аналитическое описание, кинематический принцип, булевы операции, полигональные сетки).
- •Поперечное сечение криволинейного объекта и его полигональная аппроксимация
- •Методы создания реалистических трехмерных изображений.
- •Получение проекций. Основные виды проекций.
- •Общие сведения об удалении скрытых линий. Сравнительная характеристика алгоритмов.
- •Алгоритм сортировки по глубине
- •Алгоритм разбиения области
- •Алгоритм, использующий z-буфер
- •Алгоритм построчного сканирования (пи)
- •Методы закраски полигональной сетки.
- •Фактура. Нанесение узора на поверхность
- •Фактура. Создание неровностей на поверхности.
- •Математическое описание перспективных проекций.
- •Алгоритм трассировки лучей.
- •Общие сведения о свете. Классификация поверхностей по виду отражения.
- •Модель освещения. Свойства объектов
- •4 Типа поверхностей:
- •Отражение диффузное
- •Зеркальное отражение
- •Пропускание света (прозрачность)
- •С рассеянным, диффузным и зеркальным с рассеянным и диффузным с рассеянным светом Без освещения
- •Специальные модели
- •Получение теней.
- •Источник на бесконечности
- •Локальный источник
- •Цвет и его характеристики.
- •Цветовые модели(rgb, cмy).
- •Системы смешивания основных цветов
- •Цветовые модели (hsv, hls). Цветовая гармония.
Источник на бесконечности
Рис. 13.15
В случае бесконечно удаленного источника света мы предполагаем, что лучи света, приходящие к объекту, полностью параллельны. Это позволит нам решить уравнение проекции только раз и применять полученное решение ко всем вершинам объекта.
Локальный источник
Уравнение
(1.6) для бесконечно удаленного источника
света может быть обобщено для случая,
когда источник света находится на
конечном расстоянии от объекта. В этом
случае нам понадобятся дополнительные
вычисления на каждую вершину, т.к. каждая
вершина имеет, в общем случае, свое
собственное направление на источник
света. Тем не менее, в этом случае мы
тоже можем перенести большую часть
вычислений в матрицу
.
Если L это точка расположения источника света, то (1.3) принимает вид:
(1.9)
И снова нам необходимо произвести проекцию на плоскость z=0, тогда.
(1.11)
Если использовать гомогенизацию после преобразования, то (1.11) можно записать в виде матрицы:
(1.12).
Опять, имея координаты точки P в мировом координатном пространстве, можно записать:
(1.13)
После чего провести гомогенизацию точки S для получения проекции точки P на плоскость z=0.
Mip-mapping.
Для избежания ошибок и имитации того факта, что объекты на расстоянии выглядят менее детализированными, чем те, что находятся ближе к точке наблюдения, используется техника, известная как mip-mapping. Если говорить кратко, то mip-mapping - наложение текстур, имеющих разную степень или уровень детализации, когда в зависимости от расстояния до точки наблюдения выбирается текстура с необходимой детализацией.
Mip-текстура (mip-map) состоит из набора заранее отфильтрованных и масштабированных изображений. В изображении, связанном с уровнем mip-map, пиксель представляется в виде среднего четырех пикселей из предыдущего уровня с более высоким разрешением. Отсюда, изображение связанное с каждым уровнем mip-текстуры в четыре раза меньше по размеру предыдущего mip-map уровня.
Рис. 13.30. Изображения, связанные с каждым mip-map уровнем волнообразной текстуры.
Слева направо мы имеем mip-map уровни 0, 1, 2 и т.д. Чем меньше становится изображение, тем больше теряется деталей, вплоть до приближения к концу, когда не видно ничего, кроме расплывающегося пятна из серых пикселей.
Степень или уровень детализации - Level of Detail или просто LOD, используются для определения, какой mip-map уровень (или какую степень детализации) следует выбрать для наложения текстуры на объект. LOD должен соответствовать числу текселей накладываемых на пиксель. Например, если текстурирование происходит с соотношением близким к 1:1, то LOD будет 0, а значит и будет использоваться mip-map уровень с самым высоким разрешением. Если 4 текселя накладываются на один пиксель, то LOD будет 1 и будет использоваться следующий mip уровень с меньшим разрешением. Обычно, при удалении от точки наблюдения, объект, заслуживающий наибольшего внимания имеет более высокое значение LOD.
В то время, как mip-текстурирование решает проблему ошибок "depth-aliasing", его использование может стать причиной появления других артефактов. При удалении объекта все дальше от точки наблюдения, происходит переход от низкого mip-map уровня к высокому. В момент нахождения объекта в переходном состоянии от одного mip-map уровня к другому, появляется особый тип ошибок визуализации, известных под названием "mip-banding" - полосатость или слоеность, т.е. явно различимые границы перехода от одного mip-map уровня к другому.
Рис. 13.31. Прямоугольная лента состоит из двух треугольников, текстурированных волнообразным изображением, где "mip-banding" артефакты обозначены красными стрелками.
Особенно остро проблема наличия ошибок "mip-banding" стоит в анимации, за счет того, что человеческий глаз очень чувствителен к смещениям и может легко заметить место резкого перехода между уровнями фильтрации при движении вокруг объекта.
Трилинейная фильтрация (trilinear filtering) представляет собой третий метод, который удаляет артефакты "mip-banding", возникающие при использовании mip-текстурирования. При трилинейной фильтрации для определения цвета пикселя берется среднее значение цвета восьми текселей, по четыре из двух соседних текстур и в результате семи операций смешивания определяется цвет пикселя. При использовании трилинейной фильтрации возможен вывод на экран текстурированного объекта с плавно выполненными переходами от одного mip уровня к следующему, что достигается за счет определения LOD путем интерполяции двух соседних mip-map уровней. Таким образом решая большинство проблем, связанных с mip-текстурированием и ошибками из-за неправильного расчета глубины сцены ("depth aliasing").
Рис.
13.32. Пирамидальность MIP-map
Пример использования трилинейной фильтрации приведен ниже. Здесь опять используется все тот же прямоугольник, текстурированный волнообразным изображением, но с плавными переходами от одного mip уровня к следующему за счет использования трилинейной фильтрации. Обратите внимание на отсутствие каких-либо заметных ошибок визуализации.
Рис. 13.33. Прямоугольник, текстурированный волнообразным изображением, выведен на экран с использованием mip-текстурирования и трилинейной фильтрации.
Существует несколько способов генерации MIP текстур. Один из них - просто подготовить их заранее, используя графические пакеты типа Adobe PhotoShop. Другой способ - генерация MIP текстур на "лету", т.е. в процессе выполнения программы. Заранее подготовленные MIP текстуры означают дополнительные 30% дискового пространства для текстур в базовой поставке инсталляции игры, но позволяют применять более гибкие методы управления их созданием и позволяют добавлять различные эффекты и дополнительные детали различным MIP уровням.
Получается, что трилинейный мипмеппинг это лучшее, что может быть?
Нет конечно. Видно, что проблема не только в соотношении размеров пикселя и текселя, но также и в форме каждого из них (или, что бы быть более точными, в соотношениях форм).
Метод mip-текстурирования лучше всего работает для полигонов расположенных прямо "лицом к лицу" к точке наблюдения. Однако, полигоны, косонаправленные по отношению к точке наблюдения искривляют накладываемую текстуру так, что на пикселы могут накладываться различного вида и квадратичные по форме области текстурного изображения. Метод mip-текстурирования не принимает это во внимание и в результате наблюдается эффект слишком сильного размытия текстурного изображения, так, будто использованы неправильно выбранные тексели. Для решения этой проблемы нужно делать выборку из большего количества текселей, составляющих текстуру, и выбирать эти тексели следует принимая во внимание "отображенную" форму пикселя в текстурном пространстве. Этот метод называется анизотропная фильтрация ("anisotropic filtering"). Обычное mip-текстурирование называется "isotropic" (изотропное или однородное), потому что мы всегда фильтруем вместе квадратные области, состоящие из текселей. Анизотропная фильтрация означает, что форма области из текселей, которую мы используем меняется в зависимости от обстоятельств.
