Сделай Сам Свою Работу на 5

Удаление невидимых линий и поверхностей

 

Наиболее общий и реалистичный подход к изображению непрозрачных тел состоит в генерации тоновых рисунков. Тоновое изображение можно получить, задав в каждой его точке тон- “степень почернения”. Этот метод, безусловно, пригоден для растровых дисплеев телевизионного типа; в данном случае можно использовать не только степень почернения, но и цвет. Однако генерация тоновых изображений на векторном дисплее, не имеющем для этого специальной аппаратуры, оказывается дорогостоящей процедурой как в отношении объема памяти, так и в отношении быстродействия. Даже если бы проблема памяти была решена, генерировать такие изображения в реальном масштабе времени без специальной аппаратуры было бы невозможно.

Необходимо, следовательно, значительно уменьшить число хранимых в памяти и обрабатываемых дисплейным процессором точек. Сделать это можно разными способами.

Во-первых, можно рисовать только контуры граней объекта. При этом множество точек, представляющих поверхность, сводится к множеству точек ее границ. Во-вторых, что довольно естественно для векторных дисплеев, у которых основным графическим примитивом является отрезок прямой или “вектор”, можно аппроксимировать контур ломаной (остальные точки контура добавляются аппаратурой). Каждая вершина описывается тремя координатами в соответствующей системе координат.

Чтобы создать иллюзию непрозрачности изображаемой поверхности, необходимо выделить те части объекта, которые скрыты от наблюдателя непрозрачной поверхностью, и не рисовать их на экране. Проблема определения видимости линий или их частей известна как проблема невидимых линий. На самом деле лучше было бы говорить о “проблеме невидимых поверхностей”, поскольку последний термин применим не только к “проволочному” представлению объектов (когда грани объекта заменяются ограничивающими их контурами), но и к тоновым изображениям.

В-третьих, решение проблемы удаления невидимых линий можно упростить, если предположить, что все грани являются плоскими.



Видимость различных частей объектов сцены зависит от точки, с которой сцена рассматривается. Значение имеет также глубина, то есть расстояние от различных граней до точки наблюдения. Поскольку трехмерная сцена может изображаться только в виде двумерной перспективной проекции, алгоритм выделения невидимых поверхностей должен включать в себя операцию перспективного преобразования. При использовании центрального проецирования возникает довольно сложная проблема. Необходимо вычислить большое количество точек пересечения граней объекта с лучами, исходящими из точки наблюдения. Проблему можно значительно упростить, если перейти к простой ортогональной проекции. По этой причине в большинстве существующих алгоритмов выделения невидимых поверхностей используется ортогональное проецирование. Если требуется получить перспективное изображение с помощью центрального проецирования, необходимо сначала преобразовать исходную форму объектов в ту форму, которую они получили бы после применения операции центрального проецирования. Такое преобразование можно осуществить, применив к вершинам всех объектов сцены соответствующее преобразование координат.

Алгоритм удаления невидимых поверхностей состоит из нескольких основных этапов. Каждый этап реализует некоторое частичное преобразование объектов, а весь алгоритм является композицией этих преобразований. Следовательно, между областью определения алгоритма удаления невидимых поверхностей (множество объектов) и областью значений (множество видимых частей) может существовать последовательность промежуточных представлений.

Алгоритм удаления невидимых поверхностей определяется с помощью следующей пятерки: АУНП= где O-множество объектов в трехмерном пространстве; S-множество видимых отрезков в двумерном пространстве; I-множество “промежуточных представлений”; множество “функций перехода” {PM,IS,CT,DT,VT}; -“функция стратегии”.

Функции, входящие в множество , имеют следующий смысл:

- PM- функция, строящая перспективное изображение(“преобразование проецирования”). Областью определения PM является трехмерное пространство, а областью значений - двумерное.

- IS-функция, вычисляющая точку пересечения двух отрезков прямых. Область определения и область значений IS совпадают (двумерное или трехмерное пространство).

- CT- функция, выполняющая в двумерном пространстве “тест принадлежности”, то есть проверяющая, принадлежит ли некоторая точка заданой поверхности. Результатом CT является булева переменная, принимающая значение “истина”, если точка принадлежит поверхности, и “ложь” в противном случае.

- DT- функция, выполняющая “тест глубины”, то есть сравнивающая две точки и определяющая, какая из них расположена на большей глубине (находится дальше от точки наблюдения).

- VT- функция, выполняющая “тест видимости” для данной поверхности. Она выдает булево значение “истина”, если поверхность потенциально видима, и значение “ложь”, если поверхность полностью невидима.

“Функция стратегии” определяет порядок, в котором должны применяться функции из для того, чтобы получить требуемый результат.


На рис. приведена приближенная классификация алгоритмов удаления невидимых поверхностей по степени сделанных в них упрощений.

 
 

 



©2015- 2019 stydopedia.ru Все материалы защищены законодательством РФ.