- •Конспект лекцій
- •1. Машинная графика. Основные понятия 6
- •2 Преобразования в компьютерной графике 17
- •3. Технические средства мг 39
- •4. Трехмерная графика 55
- •Введение
- •1. Машинная графика. Основные понятия
- •1.1. Концептуальная модель машинной графики
- •1.2.1 Координатные пространства
- •1.2 Программирование
- •1.2.2 Текущее положение
- •1.2.3 Примитивы вывода и атрибуты.
- •1.2.4 Видовые операции
- •1.2.5 Относительные координаты
- •2 Преобразования в компьютерной графике
- •2.1 Общая архитектура графической системы
- •2.3 Геометрические преобразования
- •2.3.1 Основные математические операции
- •2.3.2 Двумерные преобразования
- •2.3.3 Однородные координаты и матричное представление двухмерных преобразований
- •2.3.4 Композиция двумерных преобразований.
- •2.3.5 Вопросы эффективности
- •2.4 Растровая развертка примитивов.
- •2.4.1 Развеpтка векторов. Тангенсный алгоритм
- •2.4.2 Алгоритм Брезенхема
- •2.4.3 Растровая развертка окружностей
- •2.4.4 Заполнение областей
- •2.4.5 Отсечение примитивов вывода
- •2.4.6 Отображение окна на поле вывода
- •3. Технические средства мг
- •3.1. Архитектура систем мг
- •3.2 Кадровое запоминающее устройство
- •3.3. Видеоконтроллеры
- •4. Трехмерная графика
- •4.1 Трехмерные координатные пространства. Матричное представление трехмерных преобразований
- •4.2 Изображения трехмерных объектов
- •4.3 Проекции
- •4.4 Представление пространственных форм
- •4.4.1 Представление поверхностей полигональной сеткой
- •4.4.2 Задание плоскости
- •4.4.3 Бикубические поверхности
- •4.5. Алгоритмы удаления скрытых линий и поверхностей
- •4.5.1 Трехмерное отсечение
- •4.5.2. Удаление скрытых линий и поверхностей
- •4.6. Алгоритмы фотореалистичной закраски
- •4.6.1 Модель освещения
- •4.6.2. Однотонная закраска
- •4.6.3 Закраска методом Гуро
- •4.6.4 Метод закраски Фонга
- •4.6.5 Определение нормалей к поверхности, вершинам, ребрам
- •4.6.6 Определение вектора отражения
4.5.2. Удаление скрытых линий и поверхностей
Сложность задачи удаления скрытых линий и поверхностей (СКЛиП) привела к появлению большого числа различных способов ее решения. Следует отметить, что наилучшего способа решения общей задачи не существует. Для моделирования процессов в реальном времени, например, для авиатренажеров, необходимы быстрые алгоритмы, способные порождать результаты с частотой 24-30 кадров/с.
Для машинной мультипликации должны реализоваться сложные реалистические изображения, в которых представлены тени и фактура, учитывающие эффекты отражения и преломления света. Эти алгоритмы работают медленно.
Все алгоритмы удаления невидимых линий и поверхностей включают в себя сортировку [ ]. Порядок в котором производится сортировка координат объектов, вообще говоря, не влияет на эффективность алгоритмов. Основная идея, положенная в основу сортировки по расстоянию заключается в том, что чем дальше расположен объект от точки наблюдения, тем больше вероятность, что он будет полностью или частично заслонен другими объектами, более близкими к точке наблюдения. После определения расстояний или приоритетов по глубине остается провести сортировку по горизонтали и вертикали, чтобы выяснить, будет ли объект заслонен более близким к точке наблюдения.
Таким образом, эффективность любого алгоритма удаления СКЛиП с большой мере зависит от эффективности процесса сортировки.
Алгоритмы удаления СКЛиП можно разбить на два класса: алгоритмы работающие в объектном пространстве (мировые координаты), и алгоритмы, работающие в пространстве изображения. Первые дают очень точные результаты, ограниченные только точностью вычислений. Полученные результаты можно масштабировать. Второй класс алгоритмов имеет дело с физической системой координат устройства, поэтому точность вычислений ограничивается разрешающей способностью устройства.
Алгоритмы,
работающие в объектном пространстве и
сравнивающие каждый объект сцены с
остальными, имеют объем вычислений,
который теоретически растет как квадрат
числа объектов (
)
. Объем вычислений алгоритма, работающего
в пространстве изображения и сравнивающего
каждый объект сцены с позициями всех
пикселов в системе координат экрана,
теоретически растет как nN ( N -
число пикселов, n - число объектов
сцены). Таким образом, теоретически
трудоемкость алгоритмов, работающих в
объектном пространстве, меньше (n <
N ), чем трудоемкость алгоритмов в
пространстве изображения.
На практике этот вывод ,как правило, не подтверждается.
К алгоритмам, работающим в объектном пространстве, относятся алгоритмы Робертса, Вейлера-Азертона [2], к алгоритмам, работающим в пространстве изображения, относятся алгоритм плавающего горизонта, алгоритм Варнока, алгоритм, использующий Z-буфер, алгоритмы построчного сканирования [1]. Мы ограничимся рассмотрением алгоритма, использующего Z-буфер.
Идея Z-буфера
является простым обобщением идеи о
буфере кадра. Буфер кадра используется
для запоминания атрибутов (интенсивности)
каждого пикселя в пространстве
изображения, а Z-буфер - отдельный
буфер глубины, используемый для
запоминания координаты Z или глубины
каждого пикселя в пространстве
изображения. В процессе работы значение
каждого нового пикселя, который нужно
занести в буфер кадра, сравнивается с
глубиной того пикселя, который уже
занесен в Z-буфер. Если новый пиксель
расположен впереди предыдущего, он
заносится в буфер кадра и в Z-буфер,
если нет - его значение отбрасывается.
По сути данный алгоритм - это поиск
наименьшего значения z(x,y).
Главное преимущество алгоритма - его простота. Кроме того, он решает задачу удаления невидимых поверхностей для сцен любой сложности. Оценка вычислительных затрат - линейна (N). Поскольку элементы сцены могут заноситься в буфер кадра в любом порядке, их не нужно предварительно сортировать по глубине. Основной недостаток большой объем требуемой памяти. Информацию о глубине необходимо обрабатывать с большой точностью, поэтому используется не менее 20 разрядов.
