Машинная графика

реклама
Московский институт радиотехники, электроники и автоматики.
(технический университет)
Синергетические системы
Словарная статья по слову «машинная графика»
Студент :
Фомин М.С.
Группа :
ПИ-3-98
Машинная графика - использование вычислительной техники для
создания графических изображений, их отображения различными средствами
и манипулирования ими.
Системы машинной графики отображают отработанную информацию о
процессах или объектах в виде синтезированного отображения на экране
дисплея или другой экранной плоскости. Для систем машинной графики
источником входной информации является не сами физические процессы, а
их математические модели. Такие модели в общем случае представляют
упорядоченную совокупность данных, числовых характеристик, параметров,
математических и логических зависимостей, отображающих структуру,
свойства, взаимосвязи и отношения между элементами объекта, а также
между объектом и его окружением.
Модели как правило являются обобщенными, предназначенными для
описания класса объектов. Индивидуальный объект описывается вводом
конкретных значений параметров системы.
Изображение, которому ставится в соответствие моделируемый аналог
называется оригиналом.
При оценке степени соответствия синтезированного изображения и
оригинала будем использовать три уровня подобия:
 физическое
 психофизическое (физиологическое)
 психологическое
 Физическое
подобие устанавливается на уровне трех групп
характеристик:
 геометрических ( пространственных )
 яркостных ( энергетических )
 временных
При физически точном подобии эти характеристики синтезированного
изображения должны либо полностью соответствовать оригиналу, либо быть
ему пропорциональными.
При психофизическом уровне подобия соответствие устанавливается на
уровне зрительных ощущений. В силу ограниченных возможностей
зрительного аппарата при некотором уровне искажений наблюдатель не
ощущает разницу между синтезированным изображением и оригиналом.
Психологическое подобие предполагает, что по общему восприятию
синтезированное изображение и оригинал являются схожими. В следствии
этого
синтезированное
изображение
обеспечивает
формирование
наблюдателя вполне определенного суждения о реальном или сюжете, хотя
синтезированное изображение существенно отличается от оригинала по
физическим характеристикам.
Вывод изображения на экран дисплея и разнообразные действия с ним,
в том числе и визуальный анализ, требуют от пользователя достаточной
геометрической грамотности. Геометрические понятия, формулы и факты,
относящиеся, прежде всего, к плоскому и трехмерному случаям, играют в
2
задачах компьютерной графики особую роль. Геометрические соображения,
подходы и идеи в соединении с постоянно расширяющимися возможностями
вычислительной техники являются неиссякаемым источником существенных
продвижений на пути развития компьютерной графики, ее эффективного
использования в научных и иных исследованиях. Порой даже самые простые
геометрические методики обеспечивают заметные продвижения на
отдельных этапах решения большой графической задачи.
Прежде всего, необходимо заметить, что особенности использования
геометрических понятий, формул и фактов, как простых и хорошо известных,
так и новых более сложных, требуют особого взгляда на них и иного
осмысления.
Также необходимо рассмотреть графическую реализацию 3-х мерных
объектов, т.к. она тесно связана со свойствами объектов. Система координат
экрана, как известно, является двумерной, поэтому на экране возможна
эмуляция 3-х мерной системы координат, расположеной наиболее удобно для
последующих расчетов. В дальнейшем все объекты считаются 3-х мерными,
а отображение осуществляется с помощью набора функций разработанной
библиотеки.
Одним из примеров реализации данного подхода может служить
следующий. Каждый объект, в простейшем случае, представляет собой
параллелепипед и хранится в памяти размерами по трем осям. Также в его
структуру входит набор специальных точек, отвечающих за соединение
блоков в пространстве. В общем случае, это точка привязки и исходная
точка. В целом, получается гибкая графическая модель, которая позволяет
изменять размеры блоков практически мгновенно. Таким образом,
появляется возможность осуществить простейший графический редактор
трехмерных объектов. При этом все блоки будут изменяться, создавая общую
графическую модель. Имея дело с графической моделью, можно реализовать
вращение совокупности трехмерных объектов. Это осуществляется с
помощью набора функций, которые производят вращение объектов. Для
вращения каждого объекта существует алгоритм, который разбивает объект
(в простейшем случае параллелепипед) на набор точек, каждая из которых
вращается, используя простейшие преобразования в пространстве путем
умножения матрицы радиус-вектора на матрицы преобразований в
пространстве.
Машинная графика в настоящее время уже вполне сформировалась как
наука. Существует аппаратное и программное обеспечение для получения
разнообразных изображений - от простых чертежей до реалистичных образов
естественных объектов. Машинная графика используется почти во всех
научных и инженерных дисциплинах для наглядности восприятия и передачи
информации. Машинная графика властно вторгается в бизнес, медицину,
рекламу, индустрию развлечений. Применение во время деловых совещаний
демонстрационных слайдов, подготовленных методами машинной графики и
другими средствам автоматизации конторского труда, считается нормой. В
медицине становится обычным получение трехмерных изображений
3
внутренних органов по данным компьютерных томографов. В наши дни
телевидение и другие рекламные предприятия часто прибегают к услугам
машинной графики и компьютерной мультипликации. Использование
машинной графики в индустрии развлечений охватывает такие несхожие
области как видеоигры и полнометражные художественные фильмы. На
сегодняшний день создано большое количество программ, позволяющих
создавать и редактировать трёхмерные сцены и объекты.
Среди многообразия возможностей, предоставляемых современными
вычислительными средствами, те, что основаны на пространственнообразном мышлении человека, занимают особое место. Современные
программно-оперативные средства компьютерной графики представляют
собой весьма эффективный инструмент поддержки такого мышления при
выполнении работ самых разных видов. С другой стороны именно
пространственно-образное мышление является неформальной творческой
основой для расширения изобразительных возможностей компьютеров. Это
важное обстоятельство предполагает взаимно обогащающее сотрудничество
всё более совершенной техники и человека со всем богатством знания,
накопленного предшествующими поколениями. Глаз и раньше был
эффективным средством познания человеком мира и себя. Поэтому столь
привлекательной оказывается компьютерная визуализация, особенно
визуализация динамическая, которую следует рассматривать как важнейший
инструмент для обучения наукам. Современная машинная графика - это
тщательно разработанная дисциплина. Обстоятельно исследованы сегменты
геометрических преобразований и описаний кривых и поверхностей. Также
изучены, но все еще продолжают развиваться методы растрового
сканирования, отсечение, удаление линий и поверхностей, цвет, закраска,
текстура и эффекты прозрачности. Сейчас наибольший интерес
представляют именно эти разделы машинной графики.
Машинная графика - сложная и разнообразная дисциплина. Для
изучения её, прежде всего, необходимо разбить на обозримые части. Прежде
всего необходимо рассмотреть методы и алгоритмы растровой графики. Это
достаточно простой, но очень важный раздел машинной графики. А также
рассматриваются алгоритмы рисования отрезков и окружностей на экране
монитора, методы растровой развёртки, заполнения многоугольников,
устранения ступенчатости или лестничного эффекта. Отдельно следует
рассмотреть методы отсечения изображения, т.е. отбора той информации,
которая необходима для визуализации конкретной сцены.
При построении трёхмерной сцены возникает проблема удаления
невидимых линий и поверхностей. Это одна из наиболее сложных
составляющих визуализации трёхмерных объектов. Способы достижения
эффектов прозрачности, отражения и т.п., строго говоря, не входят в задачу
удаления невидимых частей трёхмерных объектов и, тем не менее, некоторые
из них тесно связаны с этой проблемой. Например, построение теней. Не
смотря на это, в компьютерной графике выделяется довольно большой
раздел, посвящённый построению реалистичных изображений, в котором
4
подробно рассматриваются методы создания таких эффектов как зеркальное
отражение, преломление лучей в различных средах, тени, фактура объекта.
Так же рассматриваются различные источники света, их спектральные
характеристики и форма. Сюда же относятся цветовые эффекты, сглаживание
поверхностей и многое другое.
Растровая графика
Любое изображение, в том числе и трёхмерное, состоит из графических
примитивов. Поэтому, прежде всего, необходимо знать специальные методы
генерации изображения, вычерчивание прямых и кривых линий, закраски
многоугольников, создающей впечатление сплошных объектов. Рассмотрим
некоторые из этих методов.
Алгоритмы вычерчивания отрезков
Поскольку экран дисплея можно рассматривать как матрицу дискретных
элементов (пикселов), каждый из которых может быть подсвечен, нельзя
непосредственно провести отрезок из одной точки в другую. Процесс
определения пикселов, наилучшим образом аппроксимирующих заданный
отрезок, называется разложением в растр. Для горизонтальных,
вертикальных и наклоненных под углом 45 отрезков выбор растровых
элементов очевиден. При любой другой ориентации выбрать нужные
пикселы труднее.
Существует несколько алгоритмов выполняющих эту задачу.
Рассмотрим два из них.
Цифровой дифференциальный анализатор
С
помощью
этого
алгоритма
получают
прямые,
вполне
удовлетворительного вида, но у него есть ряд недостатков. Во-первых,
плохая точность в концевых точках. Во-вторых, результаты работы
алгоритма зависят от ориентации отрезка. Вдобавок предложенный алгоритм
использует вещественную арифметику, что заметно снижает скорость
выполнения.
Алгоритм Брезенхема
Алгоритм Брезенхема выбирает оптимальные растровые координаты для
представления отрезка. В процессе работы одна из координат - либо x, либо у
(в зависимости от углового коэффициента) - изменяется на единицу.
Изменение другой координаты (либо на нуль, либо на единицу) зависит от
расстояния между действительным положением отрезка и ближайшими
координатами сетки. Такое расстояние называется ошибкой.
Этот алгоритм удовлетворяет самым строгим требованиям. Он имеет
приемлемую скорость и может быть легко реализован на аппаратном или
микропрограммном уровне.
5
Растровая развёртка сплошных областей
До сих пор речь шла о представлении на растровом графическом
устройстве отрезков прямых линий. Однако одной из уникальных
характеристик такого устройства является возможность представления
сплошных областей. Генерацию сплошных областей из простых описаний
ребер или вершин будем называть растровой разверткой сплошных областей,
заполнением многоугольников или заполнением контуров. Для этого можно
использовать несколько методов, которые обычно делятся на две широкие
категории: растровая развертка и затравочное заполнение.
В методах растровой развертки пытаются определить в порядке
сканирования строк, лежит ли точка внутри многоугольника или контура.
Эти алгоритмы обычно иду от “верха” многоугольника или контура к “низу”.
В методах затравочного заполнения предполагается, что известна
некоторая точка (затравка) внутри замкнутого контура. В алгоритмах ищут
точки, соседние с затравочной и расположенные внутри контура. Если
соседняя точка расположена не внутри, значит, обнаружена граница контура.
Если же точка оказалась внутри контура, то она становится новой
затравочной точкой и поиск продолжается рекурсивно.
Удаление невидимых линий и поверхностей
Задача удаления невидимых линий и поверхностей является одной из
наиболее сложных в машинной графике. Алгоритмы удаления невидимых
линий и поверхностей служат для определения линий ребер, поверхностей
или объемов, которые видимы или невидимы для наблюдателя,
находящегося в заданной точке пространства.
3.1 Необходимость удаления невидимых линий
Необходимость удаления невидимых линий, ребер, поверхностей или
объемов проиллюстрирована рис.3.1. На рис.3.1, а приведен типичный
каркасный чертеж куба. Его можно интерпретировать двояко: как вид куба
сверху, слева или снизу, справа. Удаление тех линий или поверхностей,
которые невидимы с соответствующей точки зрения, позволяют избавиться
от неоднозначности. Результаты показаны на рис.3.1, b и c.
Сложность задачи удаления невидимых линий и поверхностей привела к
появлению большого числа, различных способов ее решения. Многие из них
6
ориентированы на специализированные приложения. Наилучшего решения
общей задачи удаления невидимых линий и поверхностей не существует. Для
моделирования процессов в реальном времени, например, для авиа
тренажеров, требуются быстрые алгоритмы, которые могут порождать
результаты с частотой видео генерации (30 кадр/с). Для машинной
мультипликации требуются алгоритмы, которые могут генерировать
сложные реалистические изображения, в которых представлены тени,
прозрачность и фактура, учитывающие эффекты отражения и преломления
цвета в мельчайших оттенках. Подобные алгоритмы работают медленно, и
зачастую на вычисления требуется несколько минут или даже часов. Строго
говоря, учет эффектов прозрачности, фактуры, отражения и т. п. не входит в
задачу удаления невидимых линий или поверхностей. Естественнее считать
их частью процесса визуализации изображения. Процесс визуализации
является интерпретацией или представлением изображения или сцены в
реалистической манере. Однако многие из этих эффектов встроены в
алгоритмы удаления невидимых поверхностей и поэтому будут затронуты.
Существует тесная взаимосвязь между скоростью работы алгоритма и
детальностью его результата. Ни один из алгоритмов не может достигнуть
хороших оценок для этих двух показателей одновременно. По мере создания
все более быстрых алгоритмов можно строить все более детальные
изображения. Реальные задачи, однако, всегда будут требовать учета еще
большего количества деталей.
Алгоритмы удаления невидимых линий или поверхностей можно
классифицировать по способу выбора системы координат или пространства,
в котором они работают. Алгоритмы, работающие в объектном пространстве,
имеют дело с физической системой координат, в которой описаны эти
объекты. При этом получаются весьма точные результаты, ограниченные,
вообще говоря, лишь точностью вычислений. Полученные изображения
можно свободно увеличивать во много раз. Алгоритмы, работающие в
объектном пространстве, особенно полезны в тех приложениях, где
необходима высокая точность. Алгоритмы же, работающие в пространстве
изображения, имеют дело с системой координат того экрана, на котором
объекты визуализируются. При этом точность вычислений ограничена
разрешающей способностью экрана. Результаты, полученные в пространстве
изображения, а затем увеличенные во много раз, не будут соответствовать
исходной сцене. Алгоритмы, формирующие список приоритетов работают
попеременно в обеих упомянутых системах координат.
Объем вычислений для любого алгоритма, работающего в объектном
пространстве, и сравнивающего каждый объект сцены со всеми остальными
объектами этой сцены, растет теоретически как квадрат числа объектов ( n2 ).
Аналогично, объем вычислений любого алгоритма, работающего в
пространстве изображения и сравнивающего каждый объект сцены с
позициями всех пикселов в системе координат экрана, растет теоретически,
как nN. Здесь n обозначает количество объектов (тел, плоскостей или ребер)
в сцене, а N - число пикселов. Теоретически трудоемкость алгоритмов,
7
работаюoих в объектном пространстве, меньше трудоемкости алгоритмов,
работающих в пространстве изображения, при n < N. Поскольку N обычно
равно ( 512 )2, то теоретически большинство алгоритмов следует
реализовывать в объектном пространстве. Однако на практике это не так.
Дело в том, что алгоритмы, работающие в пространстве изображения, более
эффективны потому, что для них легче воспользоваться преимуществом
когерентности при растровой реализации.
Далее дается изложение некоторых алгоритмов, работающих как в
объектном пространстве, так и в пространстве изображения. Каждый из них
иллюстрирует одну или несколько основополагающих идей теории
алгоритмов удаления невидимых линий и поверхностей.
Визуализировать оставшиеся видимые отрезки ребер.
Алгоритм использующий Z-буфер
Это один из простейших алгоритмов удаления невидимых поверхностей.
Работает этот алгоритм в пространстве изображения. Идея z-буфера является
простым обобщением идеи о буфере кадра. Буфер кадра используется для
запоминания атрибутов (интенсивности) каждого пиксела в пространстве
изображения. Z-буфер - это отдельный буфер глубины, используемый для
запоминания координаты z или глубины каждого видимого пиксела в
пространстве изображения. В процессе работы глубина или значение z
каждого нового пиксела, который нужно занести в буфер кадра, сравнивается
с глубиной того пиксела, который уже занесен в z-буфер. Если это сравнение
показывает, что новый пиксел расположен впереди пиксела, находящегося в
буфере кадра, то новый пиксел заносится в этот буфер и, кроме того,
производится корректировка z-буфера новым значением z. Если же
сравнение дает противоположный результат, то никаких действий не
производится. По сути, алгоритм является поиском по x и y наибольшего
значения функции z (z, y).
Главное преимущество алгоритма - его простота. Кроме того, этот
алгоритм решает задачу об удалении невидимых поверхностей и делает
тривиальной визуализацию пересечений сложных поверхностей. Сцены
могут быть любой сложности. Поскольку габариты пространства
изображения фиксированы, оценка вычислительной трудоемкости алгоритма
не более чем линейна. Поскольку элементы сцены или картинки можно
заносить в буфер кадра или в z-буфер в произвольном порядке, их не нужно
предварительно сортировать по приоритету глубины. Поэтому экономится
вычислительное время, затрачиваемое на сортировку по глубине.
Основной недостаток алгоритма - большой объем требуемой памяти.
Если сцена подвергается видовому преобразованию и отсекается до
фиксированного диапазона координат z значений, то можно использовать zбуфер с фиксированной точностью. Информацию о глубине нужно
обрабатывать с большей точностью, чем координатную информацию на
плоскости (x, y); обычно бывает достаточно 20 бит. Буфер кадра размером
512х512х24 бит в комбинации с z-буфером размером 512х512х20 бит требует
8
почти 1.5 мегабайт памяти. Однако снижение цен на память делает
экономически оправданным создание специализированных запоминающих
устройств для z-буфера и связанной с ним аппаратуры.
Альтернативой созданию специальной памяти для z-буфера является
использование для этой цели оперативной или массовой памяти.
Уменьшение требуемой памяти достигается разбиением пространства
изображения на 4, 16 или больше квадратов или полос. В предельном
варианте можно использовать z-буфер размером в одну строку развертки.
Для последнего случая имеется интересный алгоритм построчного
сканирования. Поскольку каждый элемент сцены обрабатывается много раз,
то сегментирование z-буфера, вообще говоря, приводит к увеличению
времени, необходимого для обработки сцены. Однако сортировка на
плоскости, позволяющая не обрабатывать все многоугольники в каждом из
квадратов или полос, может значительно сократить этот рост.
Другой недостаток алгоритма z-буфера состоит в трудоемкости и
высокой стоимости устранения лестничного эффекта, а также реализации
эффектов прозрачности и просвечивания.
Более формальное описание алгоритма z-буфера таково:
Заполнить буфер кадра фоновым значением интенсивности или цвета.
Заполнить z-буфер минимальным значением z.
Преобразовать каждый многоугольник в растровую форму в
произвольном порядке.
Для каждого Пиксел(x, y) в многоугольнике вычислить его глубину z (x,
y).
Сравнить глубину z (x, y) со значением Z буфер(x, y), хранящимися в zбуфере в этой же позиции.
Если z (x, y) > z буфер (x, y), то записать атрибут этого многоугольника
(интенсивность, цвет и т. п.) в буфер кадра и заменить z-буфер(x, y) на z (x,
y).
В противном случае никаких действий не производить.
Подготовка данных для сцены:
Создать список объектов, содержащий по меньшей мере следующую
информацию:
Полное описание объекта: тип, поверхность, характеристики и т. п.
Описание сферической оболочки: центр и радиус,
Флаг прямоугольной оболочки. Если этот флаг поднят, то будет
выполнен габаритный тест с прямоугольной оболочкой, если же он опушен,
то тест выполняться не будет. Заметим, что габаритный тест необходим не
для всех объектов, например для сферы он не нужен.
Описание прямоугольной оболочки: xmin, xmax, ymin, ymax, zmin, zmax.
Для каждого трассируемого луча:
9
Выполнить для каждого объекта трехмерный тест со сферической
оболочкой в исходной системе координат. Если луч пересекает эту сферу, то
занести объект в список активных объектов. Если список активных объектов
пуст, то изобразить данный пиксел с фоновым значением интенсивности и
продолжать работу. В противном случае, перенести и повернуть луч так,
чтобы он совместился с осью z. Запомнить это комбинированное
преобразование.
Для каждого объекта из списка активных объектов:
Если флаг прямоугольной оболочки поднят, преобразовать, используя
комбинированное преобразование, эту оболочку в систему координат, в
которой находится луч1 и выполнить соответствующий тест. Если
пересечения с лучом нет, то перейти к следующему объекту. В противном
случае преобразовать, используя комбинированное преобразование, объект в
систему координат, в которой находится луч, и определить его пересечения с
лучом, если они существуют. Занести все пересечения в список пересечений.
Если список пересечений пуст, то изобразить данный пиксел с фоновым
значением интенсивности.
В противном случае определить z для списка пересечений.
Вычислить
преобразованию.
преобразование,
обратное
комбинированному
Используя это обратное преобразование, определить точку пересечения
в исходной системе координат.
Изобразить данный пиксел, используя атрибуты пересеченного объекта
и соответствующую модель освещенности.
Заметим, что алгоритм определения видимости простых непрозрачных
поверхностей,
не
требует
вычислять
преобразование,
обратное
комбинированному, или определять точку пересечения в исходной системе
координат, если в модели освещения не возникает необходимость включения
в алгоритм свойств поверхности объекта или ее ориентации в точке
пересечения. Эти шаги включены в данный алгоритм для полноты и удобства
при реализации алгоритма трассировки лучей с учетом общей модели
освещенности.
Две модификации этого простого алгоритма заметно повышают его
эффективность. Первая модификация основывается на понятии кластерных
групп пространственно связанных объектов. Например, предположим, что
сцена состоит из стола, на котором стоят ваза с фруктами и блюдо с
10
конфетами. В вазе лежат апельсин, яблоко, банан и груша. Блюдо содержит
несколько конфет разных форм и цветов. Вводятся сферические оболочки
для групп или кластеров связанных объектов, например для вазы и всех
плодов в ней, для блюда и всех конфет в нем, а также для стола и всех
предметов на нем. Сферические оболочки, охватывающие более чем один
объект, называются сферическими кластерами. Если это необходимо, то
можно ввести и прямоугольные кластеры Вводится, кроме того, наибольший
сферический кластер, именуемый сферой сцены, которая охватывает все
объекты в этой сцене. Затем сферические оболочки обрабатываются в
иерархическом порядке. Если луч не пересекает сферу сцены, то он не может
пересечь и ни одного из ее объектов. Следовательно, пиксел,
соответствующий этому лучу, будет изображен с фоновым значением
интенсивности. Если же луч пересекает сферу сцены, то на пересечение с
лучом проверяются сферические кластеры и сферические оболочки объектов,
не содержащихся ни в одном из сферических кластеров, принадлежащих
кластеру сцены. Если луч не пересекает сферический кластер, то сам этот
кластер и все объекты или кластеры, содержащиеся в нем, исключаются из
дальнейшего рассмотрения. Если ли же луч пересекает кластер, то эта
процедура рекурсивно повторяется до тех пор, пока не будут рассмотрены
все объекты. Если луч пересекает сферическую оболочку некоего объекта в
какой-нибудь точке, то этот объект заносится в список активных объектов.
Эта процедура значительно сокращает количество вычислений точек
пересечения луча со сферическими оболочками и тем самым повышает
эффективность всего алгоритма.
Вторая модификация использует упорядочение по приоритет чтобы
сократить число объектов, для которых вычисляются пересечения с лучом.
Вместо того, чтобы немедленно производить вычисление пересечения
объекта к лучом, как это делается в изложенном выше простом алгоритме,
объект помещается в список пересечённых объектов. После рассмотрения
всех объектов сцены преобразованный список пересеченных объектов
упорядочивается по приоритету глубины. Для определения приоритетного
порядка можно использовать центры сферических оболочек или наибольшие
(наименьшие) значения z прямоугольных оболочек. Пересечения луча с
объектами из списка пересеченных объектов определяются в порядке их
приоритетов. К сожалению точка пересечения луча с первым из объектов в
упорядоченном по приоритетам списке пересеченных объектов
необязательно будет видимой. Необходимо определить точки пересечения
луча со всеми потенциально видимыми объектами из множества {Q} и
занести их в список пересечений. Затем модифицированный алгоритм
упорядочивает этот список пересечений так, как это делалось и в простом
алгоритме. К счастью, множество {Q} потенциально видимых объектов
обычно значительно меньше числа объектов в списке пересеченных лучом.
Следовательно, эффективность алгоритма возрастет. Обе эти модификации
применимы также и к общему алгоритму трассировки лучей, учитывающему
отражение, преломление и прозрачность.
11
Изложенный выше простой алгоритм не использует того обстоятельства,
что некоторые грани многогранника являются нелицевыми и их можно сразу
удалить, не учитывается здесь и возможная когерентность сцены. Например,
несуществен порядок обработки пикселов. Вместе с тем рассмотрение этих
пикселов в порядке сканирования строки развертки позволило бы
воспользоваться в алгоритме когерентностью сканирующих строк. Другой
подход может заключаться в подразделении сцены, причем учет
когерентности областей привел бы к уменьшению числа объектов,
рассматриваемых для каждого луча и, следовательно, к повышению
эффективности алгоритма. Хотя использование подобных приемов повышает
эффективность
алгоритма
определения
видимости
непрозрачных
поверхностей их невозможно применить в общем алгоритме трассировки
лучей, который учитывает отражение, преломление и прозрачность.
Например, если в алгоритме учтено отражение, то объект, который
полностью закрыт другим объектом, может оказаться видимым, как
отражение от третьего объекта. Поскольку метод трассировки лучей является
метолом грубой силы, алгоритмы определения видимости непрозрачных
поверхностей, обсуждавшиеся ранее, являются более эффективными.
Д. Рот указал, что алгоритм трассировки лучей можно использовать
также и для создания каркасных чертежей сплошных тел. При этом
предполагается, что лучи порождаются в том порядке, в каком происходит
сканирование экрана, т. е. сверху вниз и слева направо. Получающаяся
процедура такова:
Если видимая поверхность для Пиксел(x, y) соответствует фону или
отличается от видимой поверхности для Пиксел(x – 1 , y) или для Пиксел(x, y
– 1), то изобразить этот пиксел. В противном случае пиксел не изображать.
Алгоритм трассировки лучей можно использовать, кроме того, для
определения физических свойств сплошного тела. Полное рассмотрение
этого вопроса не входит в эту работу. Однако для иллюстрации этого
подхода приведем один пример. В частности, объем любого сплошного тела
можно определить, аппроксимируя его суммой маленьких прямоугольных
параллелепипедов. Это можно проделать, породив множество параллельных
лучей, расположенных на определенных расстояниях друг от друга. Точки
пересечения каждого луча с заданным объемом вычисляются и
упорядочиваются вдоль направления этого луча. Если подвергнуть луч
переносу, совмещающему его с осью z, как это было описано выше, то объем
каждого прямоугольного параллелепипеда будет равен:
V  l x l y z 1  z 2   z 3  z 4   ...  z n 1  z n 
где lx и ly – расстояние между лучами по горизонтали и вертикали
соответственно. Каждое слагаемое (zi-1 – zi) представляет собой участок луча,
лежащий внутри заданного тела. Объем тела, следовательно, равен сумме
объемов всех таких прямоугольных параллелепипедов. Точность результатов
зависит от числа использованных лучей. Точность можно повысить,
умеренно увеличив объем вычислений и рекурсивно уменьшив размер
“пиксела”, в том случае, если объемы смежных прямоугольных
12
параллелепипедов различаются более чем на заранее заданную величину.
При таком подходе точнее определяются объемы тех элементов тела, где
имеют место быстрые изменения, например в окрестностях ребер тел,
ограниченных криволинейными поверхностями.
Ввиду
внутренне
присущей
алгоритму
трассировки
лучей
параллельности вычислений (здесь все лучи обрабатываются одинаково и
независимо друг от друга) его можно реализовать аппаратно на основе
интегральных схем с использованием методов параллельной обработки.
В заключении стоит сказать, что компьютерная графика не стоит на
месте. Уже давно существуют многочисленные программные и аппаратные
реализации алгоритмов построения изображения. На рынке достаточно
широко представлены всевозможные графические акселераторы и массивы
быстрой памяти. Ведущие производители электронных компонентов
поддерживают обработку изображения на уровне процессорной техники
(MMX – Intel, 3D Now – AMD), следовательно, становится возможным
реализация “медленных”, но дающих лучшее качество изображения
алгоритмов. Отдельно следует отметить такое явления, как виртуальная
реальность, которая уже в настоящее время получает широкое
распространение. Одним словом, компьютерная графика будет развиваться
до тех пор – пока будет развиваться и совершенствоваться компьютерная
техника.
Текстура изображения
Под текстурой понимают специфические изменения тона (цвета) в
изображении объекта или некоторой его части.
К текстуре относятся также наличие характерных линий на изображении.
Синонимами термина текстура являются узор, рисунок, фактура.
Виды текстуры
Упорядоченная. Изменение тона в виде правильных или почти правильных
геометрических рисунков (кирпичная кладка, кафельная облицовка,
шахматный рисунок).
Стохастическая ( случайная ). Присуща естественным объектам и как
правило является следствием шероховатости поверхности.
Один из основных принципов формирования текстуры - перенос регулярного
или стохастического рисунка на поверхность объекта.
Для нанесения рисунка решается задача преобразования систем координат.
Если рисунок задан в пространстве текстуры в системе координат (U, W), а
13
поверхность в (,), то для переноса рисунка определяется функция
отображения одного пространства на другое, т.е. определяется соотношения :
=f ( U,W )
=g ( U,W )
U= ( , )
W=s ( , )
В большинстве практических случаев такие преобразования линейны, а
коэффициент преобразований может быть вычислен из соотношений между
известными точками в системах координат. Характерные точки узора из
пространства текстуры переносятся в объектное пространство. Затем в
пространство изображений и определенным образом соединяются линии
рисунка.
В процедурах нанесения узоров часто используются фрагментирование как
узоров, так и поверхностей.
При переносе на поверхность предмета текстуры, представляющей
непрерывное регулярное или случайное поле яркости наиболее подходящим
является метод обратного трассирования лучей. Центр пикселя изображение
проецируется на поверхность предмета и по координатам точки на
поверхности определяется соответствующая ей точка в пространстве
текстуры. Для устранения эффектов, вызванных пространственной
дискретизацией используются процедуры сглаживания. Одной из возможных
процедур сглаживания является трассирование четырех точек,
соответствующим углам пикселя и использования среднего значения яркости
текстуры для этих четырех точек. Использование четырех точек пикселя
позволяет оценить достаточность процедуры сглаживания, если разность
яркостей для выбранных четырех точек больше заданного порога, есть
возможность произвести разбиение пикселя на четыре части и вычислить для
него яркость более точно.
Для синтеза стохастических текстур предпочтительными считаются авто
регрессионная модель и модели с использованием методов линейного
программирования. Синтез осуществляется с использованием статистических
характеристик текстур прототипов:
плотность вероятности
автокорреляционной функции.
14
Для определения плотности вероятности в пределах некоторого окна
измеряют гистограмму, и для ее отображения используют первые четыре
момента(среднее, стандартное отклонение, асимметрия, коэффициент
эксцесса ).
Форму автокорреляционной функции выражают через ее четыре
центральных пространственных момента. В результате такой обработки
формируется восьми мерный вектор признаков текстуры.
Примечание: стохастические текстуры, синтезированные на основе
прототипов хорошо моделируют естественные шероховатые поверхности,
если они обладают сравнительно не большой кривизной.
Для поверхностей со значительной кривизной ( шар, эллипсоид ), перенос на
них даже стохастической текстуры не обеспечивает реалистического вида.
Причина этого в том, что текстура, сформированная без учета формы объекта
не передает изменение освещенности, обусловленной рельефом поверхности.
Для реальных шероховатых поверхностей вектор нормали содержит
небольшую случайную составляющую, которая определяет характер
изменения освещенности в изображении. Для получения изображения,
близкого к реалистичному этот фактор необходимо смоделировать.
N - нормаль к исходной поверхности определяется векторным произведением
N=Qu Qw , где Qu ,Qw - частные производные функции поверхности Q по
направлениям U и W.
Нормаль N к возмущенной поверхности при малом возмущении F(U,W)
вычисляется по формуле:
N= N+Fu (N Qw)N + Fw (Qu N)N,
где Fu , Fw - сечение функции F в данной точке по направлениям
соответственно U и W.
В качестве функции F могут быть использованы как аналитические функции,
так и заданные в виде массива. В частности в виде массива можно задать
стохастическую текстуру.
Примечание: изображение при использовании данного метода отображения
шероховатых поверхностей приобретает вид, чрезвычайно близкий к
реалистичному, однако объем вычислений для алгоритма возмущения
нормали примерно в 4-5 раз больше, чем при изображении текстуры без
учета рельефа.
15
Аналогичные методы возмущения используют для придания естественного
вида цветным поверхностям. К исходному цвету добавляется случайная или
псевдослучайная составляющая другого цвета, точки поверхности
приобретают цвет, являющийся интерполяцией между двумя крайними
цветами. Метод применяется для моделирования поверхностей из гравия,
цемента и т.д. Для моделирования наиболее сложных поверхностей,
содержащих существенные нерегулярности (каменные осыпи, деревья,
облака и т.д.) используются фронтальные поверхности, состоящие из
случайно заданных полигональных или биполигональных фрагментов.
Моделирование энергетических преобразований в системах
формирования изображения
Первое звено, осуществляющее преобразование лучистого потока от
элементов сцены - это оптическая система, которая формирует первичное
изображение на светочувствительной поверхности преобразователя.
Геометрические и энергетические характеристики первичного изображения,
определяются на основе геометрической оптики, в соответствии с которой
первичное изображение можно рассматривать как центральную проекцию
наблюдаемой сцены на картинную плоскость.
Центральная проекция обеспечивает точное моделирование процессов
геометрических и энергетических преобразований, но не позволяет
передавать мелкую структуру изображения поскольку сам принцип
центральной проекции не предусматривает учета дифракции, аберраций и
прочих явлений, приводящих к размытию изображений.
При анализе энергетических преобразований и определения освещенности
изображения в картинной плоскости полагаем, что расстояние от
наблюдаемой сцены до объектива оптической системы много больше
фокусного расстояния системы, а угловая ширина индикатрисы излучения
любого участка наблюдаемых поверхностей существенно превышает угловой
размер входного зрачка оптики из любой точки пространства предметов.
Для определения освещенности первичного изображения воспользуемся
методами центральной проекции (рис.1).
16
Рис.1 Геометрическая схема для определения освещенности первичного
изображения
Элементу dS на поверхности наблюдения соответствует элемент dS в
картинной плоскости. Так как проективное преобразование оптической
системы является центральным, то угол dw, опирающийся на площадку dS,
равен углу dw в пространстве изображений. Отсюда следует
dS cos  /(H2/cos2 ) = dS cos w/(f2/cos2w) (*)
Лучистый поток, собираемый системой от элемента dS, составляет
dФ = L dS cos  d осср (**)
где d - телесный угол, образуемый косинусом лучей, поступающих от
точки объекта в оптическую систему;
ос= k(w) опт - коэффициент ослабления излучения оптической системы,
равный произведению коэффициента виньетирования k(w) и коэффициента
пропускания оптики опт
ср - пропускание слоя среды между объектом и оптической системой
Учитывая, что d = Sопт cos w/(H2/cos2 )=D2опт cos w cos2 /(4 H2), получаем
dФ = D2опт L cos w cos3  k(w) оссрdS/(4H2) (***)
Величина освещенности в плоскости первичного изображения определяется
следующим образом : Eиз = dФ/dS=D2опт L cos w cos3  k(w) осср dS/(4H2 dS)
Т.к. согласно (*) dS/dS= cos3w cos-3 (H/f)2, то окончательно получаем
Eиз = /4 (Dопт/f)2 L k(w) опт ср cos4w (****)
Описание геометрических форм
17
Описание поверхностей
Параметрическое описание поверхностей
Поверхности, заданные в форме
Х = Х(u,t) где u,t - параметры, изменяющиеся в
Y = Y(u,t) заданных пределах,
Z = Z(u,t),
относятся к классу параметрических. Для одной пары значений (u,t)
вычисляется одна точка поверхности.
Параметрическое задание плоскостей.
Плоскость, проходящая через точку r0 =(х0,y0,z0) и векторы
исходящие из этой точки определяются уравнением:
или
Данное уравнение описывает прямоугольник со сторонами, равными
, если
и
, а u,t[0,1]. Нормаль к поверхности можно получить,
вычислив векторное произведение:
Эллипсоид
Каноническое уравнение:
a, b,c- длины полуосей эллипсоида
Параметрическое задание:
x  a coscos где  - долгота ,  - ширина
18
y  b coscos
z  c sin
Нормаль к поверхности эллипсоида определяется:
Общие случаи нормали к поверхности
Пример: Описание тороида
, u  [0 , 2]
где a- радиус кольцевого “баллона” тороида и R - расстояние от центра
тороида до оси “баллона”.
Преимущества параметрического описания поверхности :
Важным преимуществом параметрического описания поверхностей является
возможность передачи очень сложных геометрических форм, описание
которых другими методами затруднительно.
Параметрическое описание поверхности приспособлено к физическим
процессам управления резцом в станках с числовым программным
управлением. Резец вытачивает деталь, двигаясь в пространстве по закону,
заданному параметрическим описанием.
19
Параметрический подход единственно приемлемый для моделирования
сложных, гладких участков поверхностей при помощи сплайновой
аппроксимации.
Недостаток параметрического описания поверхности:
Параметрическое описание предусматривает, что исходной позицией луча,
строящего изображение, является точка на объекте, что затрудняет
применение алгоритмов синтеза изображений с иной начальной позиции
луча. Например: алгоритм трассировки лучей. Это свойство ограничивает
изобразительные возможности: ограничено моделирование теней, передача
прозрачности и зеркального отображения соседних объектов.
Описание поверхностей неявными функциями
Поверхности описываются функцией вида f(X,Y,Z)=0, где X,Y,Z координаты из пространства объекта.
Наиболее распространены функции первой и второй степени, существуют
аналитические методы для решения уравнений третей и четвертой степени,
однако они применяются редко.
AX+BY+CZ+D=0 описывает плоскость
AX2+BY2+CZ2+2DXY+2EYZ+2GX+2HY+2JZ+K=0 в зависимости от
значений коэффициентов можно описывать пары плоскостей (вырожденный
случай), конусы, гиперболоиды, параболоиды и эллипсоиды.
Пример: Неявная форма задания поверхностей хорошо приспособлена для
твердотельного или объемного описания объектов. Неявная форма хорошо
сочетается с алгоритмами трассировки лучей т.к. легко определяются
взаимное положение точки и поверхности такого типа, а также точки
пересечения прямой и поверхности.
Поточечное описание поверхностей.
Метод заключается в задании поверхности множеством принадлежащих ей
точек. Следовательно качество изображения при этом методе зависит от
количества точек и их расположения.
Поточечное описание применяется в тех случаях, когда поверхность очень
сложна и не обладает гладкостью, а детальное представление геометрических
особенностей важно для практики.
20
Пример: Участки грунта на других планетах, формы небесных тел,
информация о которых получена в результате спутниковых съемок.
Микрообъекты, снятые с помощью электронных микроскопов.
Исходная информация о поточечно описанных объектах представляется в
виде матрицы трехмерных координат точек.
Синтез изображений методом обратной трассировки лучей
Трассировка лучей связана с моделированием геометрического пути каждого
светового луча, участвующего в построении изображения. Трассировка лучей
- моделирование лучевой оптики, применительно к задачам компьютерной
графики.
Основная идея метода
ЭВМ повторяет все геометрические преобразования, происходящие с
каждым световым лучам на пути источник - объект - приемник. Хотя
бесконечное количество, для построения изображения достаточно
ограничится рассмотрением тех лучей, которые попадают в центр рецептора
или исходящих из ограниченного числа точек на изображаемую поверхность.
Подобно некоторым разделам геометрической оптики при компьютерном
моделировании реальный ход лучей в объективах не анализируется. Для
построения изображения используют кординальные элементы оптической
системы (главная и фокальная точки, а также соответствующие плоскости).
В соответствии с принципами геометрической оптики сопряженные точки в
пространстве предметов и изображений лежат на прямой, проходящей через
заднюю главную точку оптической системы. На основании закона
обратимости можно синтезировать путь луча как в направлении объект изображение, так и в обратном. Отсюда различия между прямой и обратной
трассировкой лучей.
21
При прямой трассировке за исходную позицию берется вычисляемая на
изображаемой поверхности точка 1, из нее моделируется путь луча на
источник света 2 и наприемник изображения - точка 3.
При обратной трассировке берется центр рецептора 1 на приемнике
изображения и моделируется путь луча на объект 2 и далее на источник света
- точка 3.
Система координат, применяемая в методе обратной трассировке лучей
Сцена - совокупность изображаемых объектов, включая при необходимости
поверхность основания.
Система координат сцены - правая прямоугольная система координат, общая
для всей сцены Xc Yc Zc.
Объект - совокупность точек пространства, объединенных функциональной
общностью с точки зрения конкретно-целевой задачи.
Соответственно для каждого объекта вводится своя правая прямоугольная
система координат XYZ.
Экранная система координат - система координат X1Y1Z наблюдательной
системы. Данная система координат выбирается левой.
По аналогии c физическими устройствами ось z соответствует главному лучу
объектива, плоскость xy - задней фокальной плоскости, а центр проекции F
располагается на оси OZ в точке (0,0,f) и сопоставляют с задней главной
точкой объектива.
Модель приемника света
22
Так как исходной позицией для трассировки луча является центр рецептора,
то алгоритм начинает работу с определения пространственного
расположения всех рецепторов .
В плоскости xoy экранной системы располагается матрица точечных
приемников, где c и d шаг сетки рецепторов по оси x и y. Координаты
рецептора (xij, yij,0) могут быть вычислены на основании его индексов:
xij = c(j- J/2 -1/2)
yij = d(I/2-i+1/2), где I,J - максимальное значение соответствующих индексов
Преобразование координат из экранной системы в объектную
xyzXYZ
[X,Y,Z,1]=[x,y,z,1] M
M - матрица порядка 4, являющееся обратной матрице M, связывающей
объектную правую и экранную левую системы.
23
Модель объекта
Примитивы
В методе обратной трассировки лучей трехмерные объекты выгодно
представлять в виде отдельных строительных блоков, поверхности которых
можно описать кривыми первого и второго порядка.
Определение: Функциональным объемом называется некоторая часть
пространства (не обязательно конечная), охватываемая поверхностью одной
функции. Принадлежащим телу объекта считается подпространство,
выделяемое поверхностью f (x,y,z)=0 в любой точке которого, значение
скалярного поля f (x,y,z)>0. Такое подпространство именуется
положительным.
Определение: Объемный примитив - конечный участок пространства,
ограниченный одной или несколькими функциональными поверхностями.
Определение: Плоский примитив - часть плоскости, ограниченная замкнутой
линией, состоящей из конечного числа прямолинейных или криволинейных
участков.
К структуре примитива относятся неизменное количество ограничивающих
его поверхностей и вид функций, описывающих эти поверхности. Изменение
формы примитива может достигаться варьированием параметров функций.
Пространственные комбинации примитивов
24
Из комбинаций примитивов образуются более сложные примитивы,
называемые строительными блоками. Над примитивами определены
следующие пространственные комбинации:



объединения
пересечения
исключения
Формализованная модель объекта
Любой пространственный объект, образованный комбинацией примитивов
может быть описан древовидной структурой, корнем которого является сам
объект, вершинами - примитивы, а в узлах ветвей помещаются операции
пространственных комбинаций.
Взаимное положение объекта
Взаимное положение характеризуется через функции принадлежности
(x,y,z;Ф),
где x,y,z - координаты точки, Ф - обозначение примитива, объекта или
фигуры. Соответственно функция:
Пусть примитив Ф состоит из k уравнений
, тогда
Определение видимых и затененных точек
Для определения освещенности изображения устанавливается видимость для
каждого рецептора, ориентация нормали для видимых точек, их
отражательную способность и т.д.
Пересечение светового луча с примитивом
Пусть примитив d-ый содержит Kd поверхностей, которые организованны по
правилу положительности внутренней области, тогда для определения всех
точек пересечения прямой, исходящей из ij рецептора через центр проекции
25
F и d-ого примитива необходимо решить Kd систему уравнений следующего
вида:
Для каждой из таких систем возможны 3 случая:



система не имеет решений
одно или больше количество пересечений (счетное число пересечений)
бесконечное число пересечений (если луч лежит на поверхности)
Все точки решения принадлежат поверхности примитива.
Точка, принадлежащая некоторой поверхности, входящей в описание
примитива, принадлежит поверхности примитива, если для всех остальных
поверхностей точка находится в неотрицательной части поверхности.
Возможен случай, когда исследуемый луч проходит через границу смежных
объектов примитива. Для разрешения этой проблемы отбираются две точки
фактического перемещения луча и выпуклого примитива. Из всех возможных
претендентов выбираются ближайшая и самая удаленная точки. В общем
случае должны выполнятся условия:
1) (X1-XF)2 + (Y1-YF)2 + (Z1-ZF)2  (XB-XF)2 + (YB-YF)2 + (ZB-ZF)2
(X2-XF)2 + (Y2-YF)2 + (Z2-ZF)2  (XB-XF)2 + (YB-YF)2 + (ZB-ZF)2 ,
где (X1, Y1, Z1) - ближайшая точка
(X2, Y2, Z2) - самая удаленная точка
B - текущий номер точки действительного пересечения луча с примитивом.
Информация о пересечении луча с d-м примитивом представляется в виде
матрицы координат точек пересечения:
и матрицы номеров поверхностей, которым принадлежат точки X1Y1Z1 и
X2Y2Z2 :
26
Алгоритм определения точек пересечения прямой и примитива
Устанавливаем kd=1
( k - номер обрабатываемой поверхности в примитиве d)
Устанавливаем FLAG=0
(индикатор отсутствия (0) или наличия (1) решений)
Решается система (*)
Если решений нет, то увеличиваем kd на 1 (до тех пор, пока kd  Kd ) и
возврат на шаг 2.
Если решения есть (в общем случае
(где
решений), то устанавливаем
- номер текущего решения поверхности под номером kd)
Для всех Kd поверхностей, кроме kd проверяют условие :
(где  - текущий номер поверхности в d-ом
примитиве)
Если условие не выполняется, то увеличиваем
возврат на шаг 5.
на 1 (пока
)и
Если условие 5 выполнено и FLAG=0, то точка
размещается в две
первые строки матрицы d, а в две первые строки матрицы WHO заносится
номер kd.
Если условие 5 выполнено и FLAG=1, то
(**) точка
ближе к точке (XF, YF, ZF), чем точка, находящаяся в
первой строке матрицы T.
(***) точка
дальше от точки (XF, YF, ZF), чем точка, находящаяся
во второй строке матрицы T.
27
FLAG=1, увеличиваем kd на 1 (пока kd  Kd) и возврат на шаг 2.
Пересечение луча с комбинацией примитива.
Когда задача определения точек пересечения луча с примитивами решена, в
полученной совокупности необходимо выделить точку, ближайшую к
наблюдателю, т. е. видимую. Для этого все матрицы WHO и матрица Т для
каждого из примитивов сводятся в единые блочные матрицы WHO и Т.
Матрица Т переформируется таким образом, чтобы в её первой строке
помещалась точка, ближайшая к источнику луча, порядок остальных точек
может быть произвольным. Синхронно сортируется матрица WHO для того,
чтобы не терялась связь между точкой и конкретной поверхностью. Когда
таким образом выделена ближайшая точка (XБ, YБ , ZБ) следует проверить её
принадлежность к поверхности объекта. Для этого оценивается положение
точки относительно каждого из примитива объекта. Положение точки и
каждого примитива определяется функцией принадлежности, а относительно
положения точки (XБ, YБ , ZБ) и объекта О = f ( П1, . . , ПD ), устанавливается
путём попарной проверки функции принадлежности  (XБ, YБ , ZБ, ПD ) и
функции d = 1(1)D ( d = 1. . D
Определение затенённых точек.
Точки объекта видимые рецепторами подразделяются на два класса:
28
- точки, освещённые прямым светом;
- точки, находящиеся в тени.
Алгоритм вычисления освещённости для этих классов существенно
различен. Поэтому для каждой видимой точки устанавливается признак
освещённостизатенённости. Идея решения данной задачи основана на
следующем факте: видимая точка освещена (находится на свету), если её не
закрывают от источника света другие поверхности или эта точка является
ближайшей к источнику света, среди всех остальных, лежащих на световом
луче.
Для определения затенённости точки (XБ, YБ , ZБ) необходимо провести
световой луч из источника света на видимую точку и найти точки
пересечения этой прямой со всеми поверхностями, входящими в состав
объекта. Поскольку объект состоит из примитивов, то первоначально
определяется пересечение луча с поверхностью каждого примитива.
Затем среди множества решений отбирают действительное, а среди них
точку, ближайшую к источнику света и лежащую на поверхности объекта.
Примечание: Алгоритм определения затенённости идентичен алгоритму
определения видимости, но точка центра проектирования заменяется на
точку источника излучения, а точка центра рецептора на видимую точку.
Если видимая из рецептора точка является ближайшей к источнику света, то
она освещена прямыми лучами.
Проведя данные вычисления для всех I*J рецепторов удаётся получить
информацию о координатах видимой из каждого рецептора точки (XB , YB ,
ZB)ij, о номере примитива, номере функции поверхности, которой
принадлежит точка и признак затенённости / освещённости.
29
Список литературы.
1.
2.
3.
4.
5.
6.
Машинная графика http://hcinsu.chat.ru/algoritm/graphic/graphic.html.
Обзор по машинной графики. http://vm.msun.ru/Metodiki/Obzor_mg.htm.
Архив: Машинная графика. http://www.csu.ac.ru/osp/os/archive/51.html.
Компьютерная графика и мультимедиа: Цифровая библиотека
http://library.graphicon.ru:8080/catalog/51.
История машинной графики. Классификация и краткая характеристика.
http://www.marstu.mari.ru:8101/mmlab/home/kg/lection1/1.html.
Методичка "Компьютерная графика". http://www.fw252.spb.ru
30
Скачать