
- •Глава 9. Описание и характеристика поверхностей 3
- •Глава 14. Трассировка лучей 82
- •Глава 15. Цвет в компьютерной графике 90
- •Глава 16. Сжатие графических изображений 96
- •Глава 9. Описание и характеристика поверхностей
- •9.1. Описание поверхностей
- •Параметрическое описание
- •Описание неявными функциями
- •Поточечное описание
- •Фрактальное описание
- •9.2. Характеристики поверхностей
- •Поверхности 1-го порядка
- •Поверхности 2-го порядка
- •Фрактальные поверхности
- •9.3. Моделирование деформации трехмерных полигональных поверхностей в режиме реального времени
- •Метод деформации на основе использования неявного задания поверхности объекта
- •Метод деформации плоских протяженных объектов
- •Метод деформации тела, заданного полигональной сеткой
- •9.4. Триангуляция поверхностей
- •Уровень детализации (lod)
- •Глава 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.8. Алгоритм трассировки лучей
- •12.9. Иерархический z—буфер (смешанный тип)
- •Глава 13. Свет в компьютерной графике
- •13.1. Общие сведения о свете.
- •13.2. Модель освещения.
- •Свойства объектов
- •Отражение диффузное
- •Зеркальное отражение
- •Пропускание света (прозрачность)
- •13.3. Закраска полигональных сеток
- •Однотонная закраска
- •Интерполяция интенсивностей (метод Гуро)
- •Интерполяция векторов нормали (метод Фонга)
- •13.4. Тени
- •Источник света в бесконечности
- •Локальный источник
- •13.5. Фактура. Нанесение узора.
- •Нанесение узора на поверхность. Регулярная текстура.
- •Нанесение узора на поверхность. Стохастическая текстура.
- •13.6. Создание неровностей на поверхности.
- •Использование карт высот
- •Метод возмущения нормали
- •Использование фрактальных поверхностей
- •13.7. Фильтрация текстур
- •13.8. Полутоновые изображения
- •Глава 14. Трассировка лучей
- •14.1 Метод прямой трассировки
- •14.2 Метод обратной трассировки
- •Глава 15. Цвет в компьютерной графике
- •15.1. Ахроматический и хроматический цвета
- •15.2. Цветовые модели
- •Системы смешивания основных цветов
- •Цветовая модель hsv
- •Модель hls
- •Цилиндрическая цветовая модель
- •Глава 16. Сжатие графических изображений
- •16.1. Графические форматы
- •16.2. Основные сведения о сжатии изображений
- •16.3. Алгоритмы сжатия файлов без потерь
- •Алгоритм Хаффмана
- •Алгоритм Лемпеля—Зива (lzw)
- •Алгоритм rle (Run Length Encoding)
- •Обрезание хвостов
- •16.4. Сжатие с потерями цветных и полутоновых файлов
- •Сжатие изображения по стандарту jpeg
- •Новый стандарт jpeg 2000
- •Фрактальное сжатие изображений
Метод деформации тела, заданного полигональной сеткой
Недостатками предыдущих двух методов является необходимость проводить сложные расчеты, что не позволяет использовать их в реальном времени. И хотя моделирование деформации происходит достоверно, но не во всех применениях есть в этом необходимость. В случае использования деформации трехмерных объектов в приложениях, не требующих точности, можно использовать алгоритмы, дающие лишь приблизительные результаты, но визуально воспринимаемые, как точные. Это позволит сократить время на расчеты. При разработке алгоритма деформации тела, заданного полигональной сеткой, исходят из того, что модель поверхности и алгоритм должны обеспечивать легко предсказуемую деформацию как реакцию тела на конкретное воздействие извне. Скорость работы алгоритма должна позволять его использование в реальном или близком к реальному времени.
Поверхность рассматривается как набор плоских граней, а грань – набор вершин, соединенных ребрами, причем между любыми двумя вершинами должен существовать путь по ребрам, то есть поверхность должна быть связанной. С каждой вершиной ассоциируется ее «масса», а с каждым ребром – «коэффициент жесткости». Шаги алгоритма распространения деформации:
Выделенная вершина тела, называемая «вершиной поколения 0», смещается в трехмерном пространстве на некоторый вектор. Эта вершина помечается как обработанная.
Для вершины поколения 0 находятся все смежные по какому-либо из ребер вершины — это вершины поколения 1. Для каждой из них вычисляется вектор смещения, зависящий только от вектора смещения вершины поколения 0. Эти вершины также помечаются как обработанные.
Далее для каждой из вершин текущего поколения находятся все ее потомки – смежные и еще не помеченные вершины. Для текущего потомка в его список «родителей» помещается текущая вершина-родитель. Все потомки помечаются и становятся вершинами следующего поколения, смещение каждой из которых вычисляется на основе смещений вершин из списка родителей.
Распространение деформации продолжается до тех пор, пока не останется непомеченных вершин.
Данный алгоритм может быть использован для решения следующих задач:
произвольная деформация объекта с целью получения новых геометрических форм;
моделирование неупругого взаимодействия физических тел (трехмерные игры, компьютерная мультипликация, компьютерное искусство и так далее)
Описанный алгоритм можно также рассматривать как базовый, на основе которого легко далее строить более сложные модели. Кроме этого он легко может быть расширен для решения более широкого класса задач:
1. Введение порога растяжения/сжатия отдельного ребра. Если это отношение больше/меньше определенного порогового значения, то это ребро можно разбить на несколько более мелких и считать новую вершину родителем для старого потомка. Для реализации такого дополнения, конечно, потребуется генерация новых граней и ребер, смежных с вновь созданной вершиной (рис. 9.4).
Рис. 9.4. Эффект увеличения числа граней
2. Закрепление некоторых выбранных вершин, то есть такие вершины не будут менять свои координаты при смещениях остальных свободных вершин. В данном случае в алгоритме это можно достичь путем присваивания вершинам такого рода бесконечно большой массы.
3. Деформирующее воздействие сразу на несколько вершин. Меняются лишь начальные условия: он стартует не с нулевого, а с первого поколения, как будто бы у необрабатываемой вершины нулевого поколения есть N потомков, где N — число первоначально смещаемых вершин.