Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ALL

.pdf
Скачиваний:
278
Добавлен:
12.02.2018
Размер:
15.74 Mб
Скачать

ТРЕХМЕРНОЕ ОТСЕЧЕНИЕ ТОЧЕК И ЛИНИЙ

Если линии не дают положительного ответа при двух первых проверках, далее анализируется уравнение линии, на основе чего определяется, нужно ли сохранить фрагмент данной линии.

Уравнения трехмерных отрезков удобно выразить в параметрической форме, а методы отсечения Кируса-Бека или Лианга-Барски можно расширить на трехмерные сцены. Для

отрезка с концами P1 = (xh1; yh1; zh1; h1) и P2 = (xh2; yh2; zh2; h2), можно записать следующее параметрическое уравнение, описывающее любую точку отрезка:

• P = P1 + (P2 - P1)u

0 u 1:

Если значение параметра отрезка равно u = 0, имеем точку P1. Значение u = 1 соответствует другому концу отрезка P2. Расписывая параметрическое уравнение отрезка явно через однородные координаты, получаем

xh = xh1 + (xh2 - xh1)u;

• yh = yh1 + (yh2 - yh1)u;

0 u 1;

zh = zh1 + (zh2 - zh1)u;

h = h1 + (h2 - h1)u:

Используя коды области конечных точек отрезка, можно вначале определить, какие отсекающие плоскости он пересекает. Если код одного конца имеет значение 0 в определенном разряде, а код другого конца имеет в том же разряде значение 1, то линия пересекает соответствующую плоскость отсечения.

Другими словами, одна из проверок дает отрицательное значение, тогда как та же проверка для другого конца дает неотрицательное значение. Чтобы найти точку пересечения с этой плоскостью отсечения, вначале используем подходящие уравнения, чтобы определить соответствующее значение параметра u. Затем вычисляются координаты точки пересечения.

ТРЕХМЕРНОЕ ОТСЕЧЕНИЕ ТОЧЕК И ЛИНИЙ

В качестве примера расчета точки пересечения рассмотрим отрезок P1P2 на рис.. Данная линия пересекает правую плоскость отсечения, которую можно описать уравнением xmax = 1. Следовательно, чтобы определить значение параметра u в точке пересечения, нужно положить координату x проекции равной 1:

Вычисляя отсюда параметр u, получим:

u = (xh1 - h1)/((xh1 - h1) - (xh2 - h2))

Далее определяем значения yp и zp на этой плоскости отсечения, используя рассчитанное значение u.

В нашем случае yp и zp принадлежат границам 1 объема наблюдения, и линия не пересекает внутреннюю часть объема наблюдения. Целью обработки является локализация точки пересечения с верхней плоскостью отсечения. Соответствующие расчеты завершают обработку этого отрезка, поскольку точка пересечения с верхней и правой плоскостями отсечения определяет часть отрезка, находящуюся внутри объема наблюдения, и все фрагменты отрезка, расположенные вне объема наблюдения.

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

Участок линии вне границы отсечения удаляется, и для части отрезка, находящейся внутри этой границы, обновляется информация по кодам области и значения параметра u. Затем проверяются оставшиеся участки линии с другими плоскостями отсечения.

Отрезки на трехмерных сценах обычно не появляются обособленно. Чаще всего они служат компонентами описания объемных объектов на сцене, и обработка линий является необходимой частью процедур отсечения поверхностей.

ТРЕХМЕРНОЕ ОТСЕЧЕНИЕ МНОГОУГОЛЬНИКОВ

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

Следовательно, чтобы выполнить отсечение объектов на трехмерной сцене, процедуры отсечения применяются к многоугольным поверхностям.

На рис., например, подсвечены участки поверхности пирамиды, которые будут отрезаны, а пунктиром показаны участки многоугольных поверхностей, принадлежащие объему наблюдения.

Рис.. Трехмерное отсечение объектов. Участки поверхности, лежащие внутри плоскостей отсечения объема наблюдения, удаляются из описания объекта, при этом, возможно, потребуется построить новые грани

Вначале многогранник можно проверить на тривиальное принятие или отклонение, используя его координатные границы, ограничивающую сферу или какую-то другую меру его координатных границ.

ТРЕХМЕРНОЕ ОТСЕЧЕНИЕ МНОГОУГОЛЬНИКОВ

1.Если координатные границы объекта принадлежат всем границам отсечения, объект записывается целиком.

2.Если все координатные границы лежат за любой из границ отсечения, весь объект удаляется

3.Когда объект нельзя принять или отбросить целиком, можно обработать списки вершин набора многоугольников, определяющего поверхности объекта.

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

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

Кроме того, таблицы многоугольников обновляются, чтобы включить в них новые многоугольные поверхности и проверить информацию о связности и общих сторонах поверхностей.

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

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

ТРЕХМЕРНОЕ ОТСЕЧЕНИЕ КРИВЫХ

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

2.Затем проверить, лежит ли объект полностью за одной из шести плоскостей отсечения.

3.Если тривиально принять (отвергнуть) не удалось, нужно найти точки пересечения объекта с плоскостями отсечения.

Для этого решается система уравнений поверхности и уравнения плоскости отсечения.

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

При применении процедур визуализации поверхностей к многоугольным участкам можно получить высокореалистичные изображения криволинейной поверхности.

ПРОИЗВОЛЬНЫЕ ПЛОСКОСТИ ОТСЕЧЕНИЯ

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

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

Вместе с описанием сцены можно задать дополнительные плоскости отсечения, чтобы до преобразования проектирования можно было выполнить операции отсечения.

Плоскость отсечения можно задать параметрами плоскости A, B, C и D.

Затем плоскость делит пространство на две части, и все части сцены, которые лежат с одной стороны плоскости, удаляются.

Предположим, что отсекаются объекты за плоскостью, тогда со сцены удаляется любая точка (x, y, z), удовлетворяющая следующему неравенству:

Ax + By + Cz + D < 0

Рис. Отсечение отрезка плоскостью с вектором нормали N

ПРОИЗВОЛЬНЫЕ ПЛОСКОСТИ ОТСЕЧЕНИЯ

Пример. Рассмотрим массив параметров плоскости (A;B;C;D) = (1,0; 0,0; 0, 0; 8,0). В этом случае любая точка, удовлетворяющая условию x+8,0 < 0,0 (или x < -8,0), удаляется со сцены.

Чтобы усечь отрезок, вначале проверяются два его конца, лежит ли он полностью за плоскостью или перед ней. Неравенство можно представить в векторной форме, используя вектор нормали N = (A;B;C).

отрезок с концами P1 и P2 можно полностью отбросить, если ее концы удовлетворяют условию :

• N Pk + D < 0;

k = 1; 2

• Вся линия сохраняется, если оба ее конца удовлетворяют условию:

• N Pk + D 0;

k = 1; 2

Иначе концы отрезка лежат по разные стороны плоскости отсечения (рис. пред.сл).

Чтобы вычислить точку пересечения линии с плоскостью отсечения,

можно использовать параметрическое представление отрезка:

P = P1 + (P2 – P1)u;

0 u 1

Точка P находится на плоскости отсечения, если она удовлетворяет

уравнению плоскости: N P + D = 0

Подставляя выражение для P, получаем

N [P1 + (P2 - P1)u] + D = 0

Находя из этого уравнения параметр u, получаем

u = ( - D - N P1)/(N (P2 - P1)

Рис. Отсечение поверхностей пирамиды плоскостью с вектором нормали N. Поверхности перед плоскостью сохраняются, а за ней удаляются

Значение u подставляется в векторное параметрическое представление линии, получаем координаты x, y и z точки пересечения. Для примера, рис. пред.сл, участок линии P1P отсекается, сохраняется фрагмент PP2.

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

РЕЗЮМЕ

Процедуры наблюдения для трехмерных сцен имеют ту же структуру, что и при двухмерном наблюдении.

Вначале создается сцена во внешних координатах (либо по определениям объектов в модельных координатах, либо сцена строится непосредственно во внешней системе координат).

Затем задается система наблюдения, и описания объектов переводятся из внешних координат в координаты наблюдения.

После этого описания объектов обрабатываются различными процедурами и в конечном итоге переводятся в координаты устройства.

В отличие от двухмерного при трехмерном наблюдении требуются

процедуры проектирования для преобразования описаний объектов на плоскость наблюдения (плоскость проекции) перед преобразованием в координаты устройства.

Кроме того, в операциях трехмерного наблюдения больше пространственных параметров, для описания которых можно использовать аналогию с камерой.

Система наблюдения задается центром проекции (положение камеры), вектором нормали к плоскости наблюдения N (направление линз камеры) и вектором верха V (верх камеры). Положение плоскости наблюдения устанавливается вдоль оси z системы наблюдения, и описания объектов проектируются на эту плоскость. Для перевода описаний объектов на плоскость наблюдения можно использовать методы параллельного или перспективного проектирования.

РЕЗЮМЕ

Параллельные проекции бывают ортографическими или косоугольными, и их можно задавать вектором проекции. Ортографические параллельные проекции, на которых наблюдается несколько граней объекта, называются аксонометрическими. Чтобы получить изометрическое изображение объекта, используется аксонометрическая проекция, которая представляет с одинаковой перспективой все главные оси.

Широко используемыми косоугольными проекциями являются косоаксонометрическая и кабинетная проекции.

Перспективные проекции объектов получаются с помощью линий проекции, которые сходятся в центр проекции.

В параллельных проекциях сохраняются пропорции объектов, а перспективные проекции уменьшают размер удаленных объектов.

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

Косоугольная перспективная проекция получается тогда, когда линия, соединяющая центр проекции с центром отсекающего окна, не перпендикулярна плоскости наблюдения.

РЕЗЮМЕ

Объекты трехмерной сцены можно обрезать объемом наблюдения, чтобы устранить нежелательные участки сцены.

Верх, низ и боковые стороны объема наблюдения формируются плоскостями, которые параллельны линиям проекции и проходят через стороны отсекающего окна.

Для создания замкнутого объема наблюдения используются ближняя и дальняя (передняя и задняя) плоскости.

При параллельной проекции объем наблюдения является параллелепипедом, при перспективной усеченной пирамидой.

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

Эффективные алгоритмы отсечения обрабатывают объекты сцены ограничивающими плоскостями нормированного объема наблюдения.

В графических пакетах отсечение обычно выполняется в четырехмерных однородных координатах с последующим проектированием и нормировкой объема наблюдения.

Затем однородные координаты преобразуются в трехмерные декартовы координаты проекции.

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

Соседние файлы в предмете Компьютерная Графика