
- •Геометрическое моделирование
- •Содержание
- •Введение
- •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
- •Фрактальное сжатие изображений
- •Восстановление изображения
- •Преимущества метода фрактального сжатия изображений
- •Аффинное преобразование
- •Список литературы
Переходная когерентность
Зачастую, когда мы просчитываем проекцию сложной модели на двумерную плоскость с использованием object space octree, только малая часть кубических подпространств из состава octree остается видимой. Если мы начинаем просчитывать следующий кадр анимации, то можно с большой вероятностью утверждать, что большинство кубов, видимых в предыдущем кадре, будет видимо и в следующем. Некоторые из видимых кубов станут невидимыми, а некоторые — наоборот, но когерентность между соседними кадрами в большинстве анимаций достаточно велика, и только небольшое количество кубов изменит свой статус при переходе между соседними кадрами (если, конечно, не произошла полная смена всей сцены). С помощью нашего иерархического алгоритма мы реализуем и эту зависимость. Создав первый кадр, мы создадим и сохраним перечень видимых кубов из него в виде списка (temporal coherence list). Перейдя к формированию следующего, перед тем, как с самого начала запустить наш иерархический алгоритм для нового кадра, мы проведем рендеризацию геометрии, содержащейся в подпространствах из нашего списка. Кубы, геометрию из которых мы уже просчитали, пометим как "rendered". На базе получившегося в результате этой операции Z—буфера создадим начальную Z—пирамиду. Теперь, запустив в работу наш алгоритм, при достаточной когерентности между кадрами мы затратим значительно меньше времени на работу алгоритма, т.к. большая часть геометрии уже будет рендеризована. Потребуется значительно меньше циклов рекурсий на выявление невидимых кубов из состава octree и полигонов геометрии. В заключение нам необходимо обновить список видимых кубов в соответствии с новым кадром.
Разумеется, что, при малой когерентности между кадрами или ее отсутствии, такой подход вынудит впустую затратить время на предварительную рендеризацию геометрии из списка, т.к. все последующие циклы рекурсии все равно будут выполнены по полной программе без какого-либо выигрыша. Поэтому необходимо предусмотреть возможность отключения использования переходной когерентности в случаях резкой смены содержимого анимационной последовательности.
13. Свет
13.1. Общие сведения о свете.
Свет – электромагнитная энергия, которая после взаимодействия с окружающей средой попадает в глаз, где в результате химических и физических реакций вырабатываются электроимпульсы, воспринимаемые мозгом.
Через опыт наш мозг учится определять и распознавать множество образов и отпечатков, которые создает свет об окружающей нас действительности. Младенец берет предмет, глядит на него мгновение, затем тащит в рот. Его язык - это прекрасный датчик, и может определять форму и вид поверхности предмета практически так же, как и глаз, а иногда и лучше. Ребенок учится ассоциировать то, что он видит с той формой, которую ему описал язык. Со временем ребенок узнает, что один и тот же предмет может выглядеть по-разному в зависимости от того, как его держать, хотя он по-прежнему является тем же самым предметом. Это очевидно - подумаете вы, но было обнаружено, что слепым с рождения людям, которым медицина вернула зрение, понять вышеизложенное очень сложно. Им также сложно усвоить смысл тени и отражения, суть которых зрячие люди познали еще от рождения. И сам факт того, что вы можете видеть, еще не означает, что вы можете понять то, что видите.
В этом и заключается разница между Данными (Data) и Информацией (Information). Данные - это световой образ, формирующийся на сетчатке глаза. Информация — это интерпретация этого образа нашим мозгом.
Создавая изображение любого вида, вы пытаетесь сформировать световой образ на сетчатке глаза таким образом, чтобы он интерпретировался мозгом как предмет, который отображает это изображение. Тренированный мозг может извлечь огромное количество информации из изображения. Благодаря этому в голове мы можем получить полное трехмерное преставление сцены, изображенной на двухмерной картинке. Чтобы получить это, наш мозг анализирует порядок взаимодействия света со сценой (набором объектов изображенных на картинке) и на основе такого анализа данных выдает нам конечное трехмерное представление сцены.
Разнообразие моделей освещения, применяемых в процессе формирования изображений компьютером, - это попытка увеличить количество информации, которую мозг сможет извлечь. Когда вы, как программист, будете писать фрагменты кода, отвечающего за графику, вам не следует думать: "Я пишу процедуру затенения по Фонгу", вместо этого вам следует рассуждать так: "Я использую визуальный трюк для корректной интерпретации мозгом".
Человеческий мозг может извлечь и интерпретировать 4 информационных ресурса из потока видимых данных.
1) Форма.
Это внешний вид объекта (предмета) в сцене, его видимые границы и края. Глаз человека обладает способностью улучшать четкость воспринимаемого изображения, что позволяет увереннее распознавать края предметов; (к месту сказать, что многие компьютерные программы для обработки изображений используют алгоритмы, позволяющие получать улучшения четкости, подобные тем, какие производит глаз человека.)
2) Оттенки
Блики и тени. Тон и структура поверхностей.
3) Цвет
Три цвета могут быть обнаружены человеческим глазом — красный, зеленый и синий.
4) Движение.
Мозг человека особенно восприимчив к движению объектов. Прекрасно "камуфлированное" животное мгновенно будет обнаружено, если оно пошевелится. Очень часто, если вы потеряли курсор на экране монитора, лучший способ найти его - двинуть мышкой.
Специальные отделы головного мозга отвечают за обработку этих четырех информационных ресурса. Это было неоднократно доказано в случаях анализа черепно-мозговых травм, получаемых человеком. Как только человек получает травму и лишается отдела головного мозга, отвечающего за любой из вышеперечисленных ресурсов, то он сразу утрачивает способность к восприятию этой информации. Например, в одном случае женщина потеряла способность ощущать движение. Она могла видеть так же, как все, за исключением способности чутко определять движение объектов. Например, она могла видеть автомобили на дороге, но никогда не могла сказать с первого взгляда - движутся они или нет.
Способность к восприятию принимается человеком как само собой разумеющееся. Принято считать, если вы можете видеть, то, значит, вы в состоянии определить форму, оттенки, цвет и движение. Но это не всегда так.
Не менее важной является информация, которую мозг добавляет или удаляет во время анализа. Когда мы созерцаем, мы имеем дело с гигантскими объемами информации. Было бы просто невозможным проанализировать и запомнить все сведения до мельчайших деталей. Да это и не нужно. Большая часть сведений (данных), поступающих нам через зрение, не обладают какой-либо ценностью. Мозг автоматически производит фильтрацию этого "мусора", позволяя нам сконцентрироваться на более значимой информации. Что еще более важно, мозг также добавляет недостающую информацию. Человеческое зрение имеет "мертвые зоны", но, тем не менее, мы этого не замечаем, потому что пробелы будут всегда заполнены подходящей информацией. Наш мозг много прощает.
Для программиста это означает то, что ему совсем не нужно прорисовывать изображение с точностью до мельчайших деталей. Большинство из этих деталей будет просто проигнорировано и "заполнено" чем - то другим. Ваша картина может быть значительно упрощена. Вот, например, в фильме "Возвращение Джедая" из знаменитых "Звездных Войн" один из космических кораблей в пространстве - это обыкновенный ботинок. Но никто этого не заметил, потому что ожидали видеть космический корабль, и в том месте действительно был объект, напоминающий его своей формой, поэтому все и видели именно космический корабль.
Вы можете еще более упростить свое конечное изображение, если сцена находится в движении. Нажмите паузу на видеомагнитофоне и посмотрите на неподвижное изображение, оно выглядит никуда негодным, но мы этого не замечаем, когда оно в движении.
Цель программиста, отвечающего за вывод графики в реальном времени, - обеспечить такие процедуры аппроксимации в визуализирующих фрагментах кода, которые улучшают реализм и точно передают атмосферу, дух создаваемого вами мира. Остальное пусть делает мозг. Цель программиста фотореалистичной графики - попытаться смоделировать взаимодействие света с объектами сцены настолько аккуратно, чтобы оно могло выдержать скрупулезную проверку человеческим мозгом.
Так же надо учитывать две особенности глаза:
Глаз приспосабливается к “средней” яркости сцены; поэтому область с постоянной яркостью на темном фоне кажется ярче или светлее, чем на светлом.
Еще одно важное свойство: границы областей постоянной яркости кажутся более яркими.
Рис. 13.1
Этот эффект является причиной слишком резкого перепада яркости на граничных ребрах, где происходит изменение яркости между соседними плоскостями. Это явление называется эффектом полос Маха.
На рис. показаны действительные и кажущиеся изменения яркости вдоль поверхности, вызванные литеральным торможением рецепторов глаза.
Рецепторы глаза при реакции на свет подвергаются воздействию соседних рецепторов.
Рецепторы, расположенные на границе перепада яркостей с более яркой ее стороны, подвергаются более сильному раздражению, чем те, которые находятся дальше от границы. Это объясняется тем, что они < затормаживаются своими соседями с более темной стороны. И наоборот, рецепторы, расположенные на границе с более темной стороны, подвергаются меньшему воздействию, чем находящиеся дальше от границы. Причина в том, что они подвергаются более сильному торможению от соседей с яркой стороны границы.
Эффект полос Маха мешает глазу создавать сглаженное изображение сцены. Увеличивая количество полигональных граней, его можно ослабить, но полностью уничтожить нельзя.