- •Часть I
- •Оглавление
- •Общее введение в компьютерную графику Предмет и область применения компьютерной графики
- •1. Отображение информации
- •2. Проектирование
- •3. Моделирование
- •4. Графический пользовательский интерфейс
- •Краткая история
- •Технические средства поддержки компьютерной графики
- •Вопросы и упражнения
- •Цвет в компьютерной графике о природе света и цвета
- •Цветовой график мко
- •Цветовые модели rgb и cmy
- •Цветовые модели hsv и hls
- •Пространство cie Luv
- •Вопросы и упражнения
- •Геометрические преобразования Системы координат и векторы
- •Уравнения прямой и плоскости
- •Аналитическое представление кривых и поверхностей
- •Пересечение луча с плоскостью и сферой
- •Интерполяция функций одной и двух переменных
- •Матрицы
- •Геометрические преобразования (перенос, масштабирование, вращение)
- •Переход в другую систему координат
- •Задача вращения относительно произвольной оси
- •Вопросы и упражнения
- •Представление геометрической информации Геометрические примитивы
- •Системы координат: мировая, объектная, наблюдателя и экранная
- •Однородные координаты. Задание геометрических преобразований в однородных координатах с помощью матриц
- •Вопросы и упражнения
- •Отсечение (клиппирование) геометрических примитивов
- •Алгоритм Сазерленда — Коэна отсечения прямоугольной областью
- •Отсечение выпуклым многоугольником
- •Клиппирование многоугольников
- •Вопросы и упражнения
- •Удаление невидимых поверхностей и линий
- •Удаление нелицевых граней многогранника Алгоритм Робертса
- •Алгоритм Варнока
- •Алгоритм Вейлера — Азертона
- •Метод z-буфера
- •Методы приоритетов (художника, плавающего горизонта)
- •Алгоритмы построчного сканирования для криволинейных поверхностей
- •Метод двоичного разбиения пространства
- •Метод трассировки лучей
- •Вопросы и упражнения
- •Проецирование пространственных сцен Основные типы проекций
- •Параллельные проекции
- •Центральные проекции
- •Математический аппарат
- •Ортогональные проекции
- •Косоугольные проекции
- •Центральные проекции
- •Специальные картографические проекции. Экзотические проекции земной сферы
- •Стереографическая проекция
- •Гномоническая проекция
- •Ортографическая проекция
- •Проекции на цилиндр
- •Проекция Меркатора
- •Проекции на многогранник
- •Необычные проекции
- •Вопросы и упражнения
- •Растровое преобразование графических примитивов
- •Алгоритм Брезенхема растровой дискретизации отрезка
- •Алгоритмы Брезенхема растровой дискретизации окружности и эллипса
- •Алгоритмы заполнения областей
- •Вопросы и упражнения
- •Закрашивание. Рендеринг полигональных моделей
- •Простая модель освещения
- •Закраска граней Плоское закрашивание
- •Закраска методом Гуро
- •Закраска методом Фонга
- •Более сложные модели освещения
- •Устранение ступенчатости (антиэлайзинг)
- •Вопросы и упражнения
- •Визуализация пространственных реалистических сцен Свето-теневой анализ
- •Метод излучательности
- •Глобальная модель освещения с трассировкой лучей
- •Текстуры
- •Вопросы и упражнения
- •Список литературы
Текстуры
Текстура поверхности — это детализация ее строения, учитывающая микрорельеф и особенности окраски. Во-первых, гладкая поверхность может быть покрыта каким-либо узором, и тогда при ее изображении решается задача отображения этого узора на проекции фрагментов поверхности (многоугольники). Во-вторых, поверхность может быть шероховатой, поэтому нужны специальные приемы имитации такого микрорельефа при закрашивании.
Сначала рассмотрим методы отображения узоров. Чаще всего узор задается в виде образца, заданного на прямоугольнике в декартовой системе координат в пространстве текстуры. Фрагмент поверхности может быть задан в параметрическом виде в трехмерной декартовой системе координат:
Теперь достаточно построить отображение области в пространстве текстуры в область параметров поверхности
,
или
,
и тем самым каждой точке поверхности будет соответствовать точка образца текстуры. Пусть, например, поверхность представляет собой один октант сферы единичного радиуса, заданный формулами
,
а образец текстуры задан на квадрате . Тогда можно воспользоваться линейным отображением вида
.
Если положить , то углы образца отобразятся в углы криволинейного четырехугольника, как это показано на рис. 10.6.
Рис. 10.5. Текстура на сферической поверхности
Обратное отображение имеет вид:
,
следовательно, вертикальные и горизонтальные линии образца отобразятся на окружности большого круга сферы.
П усть теперь нужно нанести текстуру при перспективном проектировании произвольно ориентированной прямоугольной грани. Грань задана в пространстве набором своих вершин . Построим векторы и , направленные вдоль сторон прямоугольника. Любую точку прямоугольника можно единственным образом представить в виде:
Будем считать, что используется простейший случай перспективного преобразования, задаваемый формулами
Рис. 10.6. Текстура при перспективном
проектировании
Найдем образ точки P при таком преобразовании:
,
или
Если теперь рассматривать эти соотношения как систему уравнений для нахождения параметров , то, решив ее, получим требуемое обратное преобразование. Для решения можно воспользоваться, например, правилом Крамера:
,
где
;
;
.
Найденные параметры будут определять точку текстуры, соответствующую точке проекции.
Можно рассмотреть более общий случай перспективной проекции, задаваемый соотношениями
.
Тогда уравнения для определения немного усложнятся:
.
Соответственно, изменится и решение:
;
;
.
В рассмотренных примерах мы имели дело с гладкими поверхностями. Можно имитировать шероховатость путем выбора подходящего образца нерегулярной текстуры, но все равно изображение будет выглядеть так, словно неоднородности изображены на гладкой поверхности. Для моделирования микрорельефа Дж. Блин предложил метод, основанный на возмущении нормали к поверхности.
Пусть, как и ранее, поверхность задана в параметрическом виде с помощью векторной функции . В каждой ее точке можно построить вектор нормали, воспользовавшись частными производными этой функции. Известно, что производные и представляют собой векторы, лежащие в касательной плоскости данной поверхности. Тогда вектор нормали может быть получен как векторное произведение этих двух векторов . После этого точку поверхности можно отклонить от первоначального положения в направлении нормали на некоторую малую величину, задаваемую с помощью функции возмущения :
.
Можно показать, что нормаль к новой возмущенной поверхности будет определяться выражением:
.
Используя в модели освещения новую нормаль, можно получить эффект шероховатости поверхности. В качестве функции возмущения можно использовать произвольную дифференцируемую по каждой из переменных функцию.