
- •Геометрическое моделирование
- •Содержание
- •Введение
- •1. Общие сведения о компьютерной графике
- •1.1. История развития компьютерной графики
- •1.2. Основные сведения о графических системах
- •1.3. Функции графических систем
- •1.4. Графические данные
- •1.5. Блок-схема графической системы
- •2. Геометрические преобразования
- •2.1. Двумерные преобразования Перенос
- •Масштабирование
- •Поворот
- •2.2. Однородные координаты и матричное представление двумерных преобразований
- •Перенос
- •Масштабирование
- •Поворот
- •2.3. Композиции двумерных преобразований
- •2.6. Преобразования как изменение систем координат
- •3. Алгоритмы растровой графики
- •3.1. Преобразование отрезков из векторной формы в растровую.
- •Пошаговый алгоритм
- •Алгоритм Брезенхэма
- •3.2 Ускорение алгоритма Брезенхэма
- •3.3. Растровая развертка литер
- •3.4. Растровая развертка окружностей Четырехсторонняя симметрия
- •Восьмисторонняя симметрия
- •Алгоритм Брезенхэма для окружностей
- •3.5 Растровая развертка эллипсов Простой метод
- •Инкрементивный метод
- •3.6 Методы устранения ступенчатости растровых изображений
- •3.7 Устранение искажений в растровых дисплеях
- •Для цветных изображений:
- •3.8 Сглаживание линий
- •Алгоритм Ву
- •3.9. Заполнение области Алгоритм построчного сканирования
- •Метод заполнения с затравкой
- •Заполнение линиями
- •3.10. Разложение в растр сплошных многоугольников
- •Когерентность сканирующих строк
- •Когерентность ребер
- •4. Отсечение линий
- •4.1. Алгоритм Коэна-Сазерленда
- •4.2. Алгоритм разбиения средней точкой
- •4.3 Трехмерное отсечение отрезков
- •4.4 Отсечение многоугольников
- •Алгоритм Сазерленда-Ходжмена для отсечения многоугольника.
- •4.5 Отсечение литер
- •5. Проектирование графического диалога
- •5.1. Языковая аналогия
- •Основной принцип
- •Требования к языку диалога
- •5.2. Языковая модель
- •5.3. Принципы проектирования Обеспечение обратной связи
- •Помощь пользователю
- •Возможность исправления ошибок
- •Управление временем отклика
- •Структуризация изображения
- •5.4. Процесс проектирования
- •6. Геометрическое моделирование. Общие сведения.
- •6.1. Геометрическая модель
- •6.2. Основные виды гм
- •Недостатки:
- •Больший объем исходных данных, чем при csg способе,
- •Достоинства:
- •Недостатки:
- •6.3. Требования, предъявляемые к геометрическим моделям
- •6.4. Внутреннее представление, типы данных
- •Двумерная модель
- •Каркасная модель
- •Поверхностная модель
- •Объемная модель
- •7. Двумерное моделирование
- •7.1. Типы данных
- •7.2. Построение базовых элементов
- •Непосредственное задание с использованием выбранного синтаксиса представления
- •С помощью уравнений
- •С помощью ограничений
- •Основные типы ограничений
- •С использованием геометрических преобразований
- •7.3. Примеры моделей Техническое черчение
- •Параметризация
- •Цепное кодирование
- •8. Трехмерное моделирование
- •8.1. Типы данных
- •Базовые элементы:
- •Представление с помощью границ
- •Представление с помощью дерева
- •8.2. Методы описания трехмерных объектов
- •Описание геометрии объекта с использованием алфавитно-цифрового входного языка
- •Описание объекта в режиме графического диалога
- •Получение модели объекта путем ввода эскизов и восстановлением модели по имеющимся проекциям
- •8.3. Методы построения трехмерных моделей Построение кривых и поверхностей
- •Задание гранями (кусочно-аналитическое описание)
- •Кинематический принцип
- •Булевы операции
- •5. Полигональные сетки
- •Явное задание многоугольников
- •Задание многоугольников с помощью указателей на вершины
- •Явное задание ребер
- •9. Описание и характеристика поверхностей.
- •9.1. Описание поверхностей Параметрическое описание
- •Достоинства параметрического описания:
- •Описание неявными функциями
- •Достоинства:
- •Поточечное описание
- •Недостатки:
- •9.2. Характеристики поверхностей Поверхности 1-го порядка
- •Поверхности 2-го порядка
- •Поверхности типа экструзий
- •Фрактальные поверхности
- •9.3. Моделирование деформации трехмерных полигональных поверхностей в режиме реального времени
- •Метод деформации на основе использования неявного задания поверхности объекта
- •Метод деформации плоских протяженных объектов
- •Деформация тела, заданного полигональной сеткой
- •9.4. Триангуляция поверхностей
- •14000 Полигонов 3600 полигонов 800 полигонов 300 полигонов
- •10. Получение реалистичных изображений
- •10.1. Методы создания реалистических изображений
- •Перспективные проекции
- •Передача глубины яркостью
- •10.2. Перспективные изображения
- •11. Проецирование
- •11.1. Основные виды проекций
- •Параллельные проекции
- •Центральные проекции
- •11.2. Математическое описание прямоугольных проекций
- •11.3. Математическое описание косоугольных проекций
- •11.4. Математическое описание перспективной проекции
- •11.5. Задание произвольных проекций. Видовое преобразование.
- •12. Алгоритмы удаления скрытых линий и поверхностей
- •12.1. Общие сведения об удалении скрытых линий и поверхностей
- •12.2. Алгоритм сортировки по глубине
- •12.3. Алгоритм, использующий z-буфер
- •Недостатки:
- •12.4. Алгоритм построчного сканирования
- •12.5. Алгоритм разбиения области
- •12.6. Сравнительная характеристика алгоритмов
- •12.7. Алгоритм плавающего горизонта
- •12.8. Алгоритм Робертса
- •12.9. Алгоритм трассировки лучей
- •12.10. Иерархический z—буфер
- •Переходная когерентность
- •13. Свет
- •13.1. Общие сведения о свете.
- •13.2. Модель освещения.
- •Свойства объектов
- •4 Типа поверхностей:
- •Отражение диффузное
- •Зеркальное отражение
- •Пропускание света (прозрачность)
- •Без освещения с рассеянным светом с рассеянным и диффузным с рассеянным, диффузным и зеркальным
- •Специальные модели
- •13.3. Закраска полигональных сеток.
- •Однотонная закраска
- •Интерполяция интенсивностей (метод Гуро)
- •Интерполяция векторов нормали (метод Фонга)
- •13.4. Тени.
- •Источник на бесконечности
- •Общая постановка задачи:
- •Локальный источник
- •13.5. Фактура. Нанесение узора.
- •Нанесение узора на поверхность. Регулярная текстура.
- •Нанесение узора на поверхность. Стохастическая текстура.
- •13.6. Создание неровностей на поверхности.
- •9130 Полигонов 850 Полигонов с возмущением нормали 850 Полигонов
- •850 Полигонов
- •13.7. Фильтрация текстур.
- •13.8. Полутоновые изображения.
- •14. Трассировка лучей
- •14.1 Метод прямой трассировки
- •Метод обратной трассировки
- •Принцип работы метода трассировки лучей:
- •Реализация метода обратной трассировки
- •Недостатки:
- •15. Использование цвета в компьютерной графике
- •15.2. Цветовые модели
- •Системы смешивания основных цветов
- •Цветовая модель hsv
- •Модель hls
- •Цилиндрическая цветовая модель
- •15.3. Цветовая гармония
- •16. Сжатие изображений
- •16.1. Основные сведения
- •16.2. Алгоритмы сжатия файлов без потерь
- •Алгоритм Хаффмана
- •Алгоритм rle (Run Length Encoding) «сжатие последовательности одинаковых символов»
- •Обрезание хвостов
- •16.3. Сжатие цветных и полутоновых файлов. Сжатие с потерями.
- •Сжатие изображения по стандарту jpeg
- •Фрактальное сжатие изображений
- •Восстановление изображения
- •Преимущества метода фрактального сжатия изображений
- •Аффинное преобразование
- •Список литературы
Недостатки:
Проблемы с моделированием диффузного отражения и преломления.
Для каждой точки изображения необходимо выполнять много вычислительных операций. Трассировка лучей относится к числу самых медленных алгоритмов синтеза изображений.
Дискретная трассировка лучей в октантных деревьях
Применяется для воксельных моделей. Рис. 2. иллюстрирует основной принцип метода: луч отслеживается из точки наблюдения, пересекает плоскость экрана в точке (хs, уs) и ударяется в бокс, содержащий дискретную информацию об объекте. Бокс разделен на подбоксы, пронумерованные от 2° до 27, которые далее рекурсивно делятся на более мелкие подбоксы, формируя октантное дерево. (Все ячейки пространства, отличные от вокселя, именуются "подбоксами" или "боксами", и только элементарные неделимые элементы объема называются вокселями).
Рис. 14.3. Основная идея метода
В основном, алгоритм работает как многие методы обратной трассировки лучей (backward raytracing). Лучи испускаются из точки наблюдения через пиксели на экране и отслеживаются до момента пересечения с объектом. В этой точке вычисляется цвет пикселя или порождаются вторичные отраженные или преломленные лучи, если таковые имеются. Главный вопрос трассировки лучей: "Как найти точку пересечения луча и объекта?". Алгоритм решает эту задачу следующим образом:
находит точку пересечения луча и бокса, содержащего объект (вычисляются точки входа и выхода луча из бокса);
используя информацию о точках пересечения, алгоритм отслеживает луч внутри бокса и находит первый пересеченный вексель поверхности по ходу луча;
используя информацию о свойствах поверхности, содержащуюся в векселе (цвет, нормаль и т.д.), вычисляет цвет пикселя или испускает вторичные лучи.
Рис. 14.4
На рис. 14.4 проиллюстрирован метод поиска точки пересечения.
Луч входит в бокс в точке "пола" Р0, проходит через среднюю точку Р1 и покидает бокс в точке "потолка" Р2. Важно, чтобы три точки располагались на трех параллельных плоскостях, две из которых — плоскости, содержащие противоположные грани бокса, а третья — делит бокс на две равных половины. {Совершенно очевидно, что точки Р0 и Р2 не обязательно будут принадлежать граням бокса, в то время как средняя точка Р1обязательно будет находиться внутри бокса.
Всего может быть три варианта выбора для плоскостей, содержащих точки "пола" и "потолка": плоскости могут быть перпендикулярны одной из трех координатных осей X, Y или Z. Пусть точка на луче описывается в системе координат бокса следующим уравнением:
где S0 — начальная точка луча, (dx, dy, dz) — вектор направления луча, t — скалярный параметр.
Тогда осью главного направления луча (ОГНЛ) называется ось, составляющая которой в векторе направления луча преобладает над другими. То есть:
Методика выбора главного направления совпадает с использованной в целочисленном алгоритме Брезенхема [12] и служит тем же целям: избежать появления разрывов во время дискретизации прямой луча.
Плоскости "пола" и "потолка" выбираются перпендикулярными оси главного направления луча.
Для определения точки пересечения луча и модели используется двоичный рекурсивный поиск вдоль луча между плоскостями "пола" и "потолка". Процедура поиска должна получить следующие входные параметры:
ОГНЛ,
двумерные координаты точек "пола" и "потолка" в соответствующей системе координат,
текущий узел дерева.
Важно отметить, что при двоичном поиске точки пересечения используются двумерные координаты точек, так как третья координата точки на луче (координата вдоль ОГНЛ) выполняется непосредственно во время отслеживания луча.
Несмотря на то, что алгоритм трассировки луча очень прост и использует всего несколько целочисленных и логических операций, он требует, чтобы точки "пола" и "потолка" были вычислены для каждого пикселя изображения для того, чтобы инициализировать процесс трассировки.
Для сокращения вычислительной стоимости использован алгоритм интерполяции точки "пола" и "потолка" для всех пикселей изображения. В случае параллельной проекции соседние значения "пола" и "потолка" отличаются только на фиксированное приращение, так что интерполяция выражается лишь в добавлении констант к координатам. В таком случае получение значений точек "пола" и "потолка" вырождается в 4 операции целочисленного сложения и 4 операции битового сдвига (для поддержания точности без использования плавающей точки).
В сравнении с традиционными полигональными методиками представления поверхностей, дискретная трассировка лучей имеет следующие преимущества:
количество информации и скорость визуализации почти не зависят от сложности объектов;
нет необходимости в специальных алгоритмах нанесения текстур, так как каждый воксель имеет собственный цвет;
высокая точность определения нормалей, так как они сопоставлены каждому вокселю;
высокая точность определения точек пересечения;
есть возможность непосредственной визуализации наборов данных с измерительных устройств без преобразования в сложные полигональные модели;
простота реализации алгоритмов определения пересечения двух объектов (например, для CAD/CAM систем).
Предложенный алгоритм обладает следующими дополнительными преимуществами по сравнению с базовыми методами дискретной трассировки лучей.
Требуется значительно меньшее количество данных для представления моделей, так как хранится и обрабатывается только информация о поверхности. Увеличение разрешения модели в два раза по каждой из координатных осей приводит к росту объема данных в модели всего в 4 раза (в противоположность однородному представлению воксельного пространства, где увеличение разрешения в два раза приводит к восьмикратному росту объема информации).
Более высокая скорость: типичные медицинские объекты, полученные методом компьютерной томографии (разрешение воксельного пространства — 2563, разрешение изображения — 3202;) визуализируются за 0.3-0.9 секунд/кадр на ПК с процессором Pentium на тактовой частоте 200 МГц (разброс в длительности интервалов обусловлен различием в углах наблюдения моделей). Такая скорость визуализации достигнута благодаря следующим свойствам алгоритма:
главным образом, вычисления проводятся с использованием целочисленных операций типа сдвига, сложения, логического "И" и т.д.;
— наиболее длительные операции были ускорены с использованием 1оок-up таблиц или интерполяции конечными разностями;
— использование иерархических структур данных позволяет сократить количество операций при поиске точки пересечения луча и объекта;
— использована когерентность цветов соседних пикселей, что позволяет значительно сократить количество лучей, которые необходимо отследить для получения конечного изображения.
Представленный метод визуализации комбинирует преимущества дискретного представления моделей в виде воксельных пространств и широко применяемую в системах трассировки лучей методику неоднородного разбиения пространства. Использование октантных деревьев позволяет на порядок сократить объемы памяти, требуемые для хранения моделей. Применение в алгоритме главным образом целочисленных операций существенно упрощает реализацию на аппаратном уровне.