
ALL
.pdf
• |
Когда объем наблюдения перспективной |
|
|
• |
проекции - симметричная пирамида, |
|
|
• |
перспективное преобразование |
|
|
• отображает точки внутри усеченной |
|
|
|
• |
пирамиды в прямоугольный |
|
|
• |
параллелепипед в координатах |
|
|
• |
ортогональной проекции. |
|
|
• |
Средняя линия параллелепипеда |
|
|
• является средней линией пирамиды (рис.) |
|
|
|
• Это является следствием того факта, что все |
|
|
|
|
точки вдоль линии проекции, принадлежащие |
|
|
|
усеченной пирамиде, отображаются в одну |
|
|
|
точку (xp, yp) плоскости наблюдения. |
|
|
• Любая линия проекции переводится |
|
|
|
|
перспективным преобразованием в линию, |
• |
|
|
перпендикулярную плоскости наблюдения и |
Рис. Объем наблюдения симметричной |
|
|
|
||
|
параллельную средней линии пирамиды. |
|
усеченной пирамиды при перспективном |
• |
Если симметричная пирамида преобразуется в |
|
проектировании отображается в ортогональный |
|
|
параллелепипед
объем наблюдения ортогональной проекции, далее можно применить преобразование нормировки.

УСЕЧЕННАЯ ПИРАМИДА КОСОУГОЛЬНОЙ ПЕРСПЕКТИВНОЙ ПРОЕКЦИИ
• Если средняя линия объема наблюдения перспективной проекции не перпендикулярна плоскости наблюдения, получаем наклонную усеченную пирамиду. (рис.).
• можно вначале преобразовать объем наблюдения в симметричную усеченную пирамиду, а затем в нормированный объем наблюдения.
• Объем наблюдения косоугольной перспективной проекции можно
преобразовать в симметричную пирамиду, |
• |
Рис. Наклонная усеченная пирамида, |
|
содержащая боковую или верхнюю грань; |
|
подействовав матрицей сдвига вдоль оси z. |
|
|
|
плоскость наблюдения расположена между |
|
• В данном случае опорной точкой является |
|
|
|
центром проекции и ближней отсекающей |
|
zprp координата z центра проекции. Величина |
|
плоскостью |
сдвига должна быть такой, чтобы центр |
|
|
отсекающего окна переместился в точку (xprp, |
|
|
yprp) на плоскости наблюдения. |
|
|
• Средняя линия усеченной пирамиды |
|
|
проходит через центр отсекающего окна, |
|
|
сдвиг так выравнивает среднюю линию, что |
|
|
она становится перпендикулярной плоскости |
|
|
наблюдения. |
|
|

НОРМИРОВАННЫЕ КООРДИНАТЫ ПЕРСПЕКТИВНОЙ ПРОЕКЦИИ
•Рис. Преобразование нормировки из преобразованного объема наблюдения перспективной проекции (прямоугольный параллелепипед) в симметричный нормированный куб, определенный в левосторонней системе координат. Ближняя плоскость отсечения используется как плоскость наблюдения, а центр проекции расположен в начале координат системы наблюдения
•Для нормировки этого перспективного преобразования требуется,
•чтобы при входных координатах (x; y; z) = (xwmin; ywmin; znear)
•координаты проекции были равны (xp; yp; zp) = (-1;-1;-1),
•также необходимо, чтобы при входных координатах (x; y; z) = (xwmax; ywmax; zfar)
•координаты проекции точки были (xp; yp; zp) = (1; 1; 1).
•После преобразования в нормированные координаты, к симметричному кубу (или единичному кубу) можно эффективно применить отсечение.

ПРЕОБРАЗОВАНИЯ ПОЛЯ ПРОСМОТРА И ТРЕХМЕРНЫЕ ЭКРАННЫЕ КООРДИНАТЫ
•Затем содержимое нормированного объема наблюдения перевести в экранные координаты.
•Для координат x и y в нормированном окне отсечения эта операция не отличается от 2D преобразования поля просмотра. информацию о глубине (координату z) нужно сохранить для проверок видимости и алгоритмов визуализации поверхностей. Преобразование поля просмотра можно рассматривать как отображение в 3D экранные координаты.
•Нормированные значения z, принадлежащие симметричному кубу, перенормируются в диапазон от 0 до 1, z = 0 – плоскость экрана, обработка значений глубин – в интервале [ 0 , 1].
•Преобразование из нормированного объема
•наблюдения в трехмерные экранные
•координаты запишется так:
•В нормированных координатах грань
•симметричного куба znorm = -1 соответствует
•области отсекающего окна. Также эта грань нормированного куба отображается в прямоугольное поле просмотра, которое определяется уравнением zscreen = 0.
•левый нижний угол области экрана, поля просмотра, расположен в точке (xvmin; yvmin; 0), а правый верхний угол в точке (xvmax; yvmax; 0).
•Каждая точка xy в поле просмотра соответствует позиции в буфере регенерации, который содержит информацию о цвете этой точки на экране. в буфере глубины - информация о глубинах всех точек экрана.
•Прямоугольное поле просмотра на экране так, как и в двухмерных приложениях. Левый нижний угол поля просмотра размещается в точке, заданной относительно левого нижнего угла окна на экране. Чтобы сохранить пропорции объекта, характеристическое отношение области поля просмотра задается таким же, как для отсекающего окна.
ТРЕХМЕРНЫЕ АЛГОРИТМЫ ОТСЕЧЕНИЯ
•Трехмерные алгоритмы отсечения можно применить к нормированным границам объема наблюдения, как и в двухмерных алгоритмах отсечения.
•Все аппаратно-независимые преобразования (геометрические и проектирования) сворачиваются и применяются до выполнения процедур отсечения.
•В трехмерном случае каждая граница отсечения нормированного объема наблюдения - плоскость, параллельная одной из декартовых плоскостей, вне зависимости от типа проекции и исходной формы объема наблюдения.
•В зависимости от того, нормирован объем наблюдения в единичный куб или в симметричный куб со стороной 2, плоскости отсечения проходят через точки с координатами 0 и 1 или -1 и 1.
•Для симметричного куба уравнения трехмерных плоскостей отсечения записываются так:
•xwmin = -1; xwmax = 1;
•ywmin = -1; ywmax = 1;
•zwmin = -1; zwmax = 1:
•Границы отсечения по x и y это нормированные границы отсекающего окна, а границы отсечения по z это нормированные положения ближней и дальней плоскостей отсечения.
•В алгоритме отсечения для трехмерного наблюдения определяются и записываются все участки объектов, попадающие в нормированный объем наблюдения, для отображения на устройстве вывода. Все части объектов, расположенные вне плоскостей отсечения объема наблюдения, удаляются.
•Алгоритмы трехмерного отсечения являются расширением двухмерных методов, в которых вместо линейных границ нормированного отсекающего окна используются нормированные граничные плоскости объема наблюдения.

ОТСЕЧЕНИЕ В ТРЕХМЕРНЫХ ОДНОРОДНЫХ КООРДИНАТАХ
•Пространственные точки обрабатывают в четырехмерных однородных координатах, все преобразования представить матрицами 4 4. При поступлении каждой точки на конвейер наблюдения она преобразуется в четырехмерное представление:
•(x; y; z) (x; y; z; 1)
•После того как точка прошла геометрические преобразования, преобразования наблюдения и проектирования, она записывается в такой однородной форме:
•где матрица M - свертка всех различных преобразований из
•внешних координат в нормированные, однородные координаты
•проекции, причем однородный параметр h уже может быть не равным 1.
•Значение h зависит от того, как представлены объекты сцены, и какой тип проекции используется.
•Если h = 1, однородные координаты аналогичны декартовым координатам проекции. Такая ситуация часто возникает при параллельном проектировании.
•Перспективная проекция дает h, который является функцией координаты z любой точки пространства.
•Представления поверхностей объектов рациональными сплайнами часто формулируются в однородных координатах, где однородный параметр может быть положительным или отрицательным.
Следовательно, если отсечение выполняется в координатах проекции после деления на однородный параметр h, некоторая координатная информация может теряться, и объекты не будут отсекаться корректно.
•Чтобы эффективно обрабатывать все возможные проекционные преобразования и представления объектов, следует применить процедуры отсечения к представлению точек пространства в однородных координатах.

ТРЕХМЕРНЫЕ КОДЫ ОБЛАСТЕЙ
•Концепция кода области на три измерения: введем пару дополнительных разрядов для учета ближней и дальней плоскостей отсечения - шестиразрядный код области, ( рис. ). Разряды в этом примере нумеруются справа налево и соответствуют левой, правой, нижней, верхней, ближней и дальней плоскостям отсечения.
•Условия для выбора значений разрядов по сути те же, что для 2D, добавляется два новых условия для ближней и дальней отсекающих плоскостей.
•Для трехмерной сцены, процедуры отсечения нужно применять к координатам проекции, которые преобразованы в нормированное пространство. После проектирования каждая точка сцены представляется четырьмя компонентами P = (xh; yh; zh; h).
•Если отсечение выполняется по границам нормированного симметричного куба, точка будет находиться внутри этого нормированного объема наблюдения при условии, что координаты проекции точки удовлетворяют следующим неравенствам:
• -1 xh/h 1; |
- 1 yh/h 1; |
-1 zh/ h 1: |
•Если все сделано без ошибок, значение h 0. (проверяется до процедур)
•однородный параметр h может быть положительным или отрицательным.
Рис. Возможное упорядочение границ отсечения объема наблюдения, соответствующих разрядам кода области
ТРЕХМЕРНЫЕ КОДЫ ОБЛАСТЕЙ
•Следовательно, предполагая, что h 0, предыдущие неравенства можно записать в такой форме:
• |
-h xh h; |
-h yh h; |
-h zh h |
если h > 0; |
• |
h xh -h; |
h yh -h; |
h zh -h |
если h < 0: |
•В большинстве случаев h > 0, и тогда с точками можно следующим образом сопоставлять значения разрядов в коде области:
•бит 1 = 1; если h + xh < 0 (левая);
•бит 2 = 1; если h – xh < 0 (правая);
•бит 3 = 1; если h + yh < 0 (нижняя);
•бит 4 = 1; если h – yh < 0 (верхняя);
•бит 5 = 1; если h + zh < 0 (ближняя);
•бит 6 = 1; если h – zh < 0 (дальняя):
•Данные значения можно определить, используя тот же подход, что и при двухмерном отсечении.
•находится бит знака одного из выражений h xh, h yh или h zh, и на его основе устанавливается соответствующее значение разряда кода области.
•В тех случаях, когда h < 0, отсечение можно выполнять, используя второй набор неравенств, или же можно инвертировать координаты и провести отсечение с помощью проверок для h > 0.

ТРЕХМЕРНОЕ ОТСЕЧЕНИЕ ТОЧЕК И ЛИНИЙ
•Для обычных точек и отрезков, определенных на сцене, которая не лежит позади центра проекции, все h > 0, и коды областей можно установить, используя условия (пред.слайд).
•Затем, определив для каждой точки на сцене код области, можно найти положения точек, входящих или не входящих в объем наблюдения.
•Например, код области 101000 - точка находится над объемом наблюдения и позади него, код области 000000 - внутренняя точка объема (рис.).
•При отсечении точек просто удаляются те точки, код области которых не равен 000000. если любая из проверок дает отрицательный результат, точка находится вне объема наблюдения.
а) коды области перед ближней плоскостью б) коды области между ближней и дальней плоскостью в) коды области за дальней плоскостью
Рис. Значения трехмерного шестиразрядного кода области

ТРЕХМЕРНОЕ ОТСЕЧЕНИЕ ТОЧЕК И ЛИНИЙ
•Методы трехмерного отсечения линий, по сути, не отличаются от методов отсечения двухмерных линий.
•Вначале проверить коды области конечных точек на предмет тривиального принятия или отбрасывания линии целиком.
•Если код области обеих конечных точек линии равен 000000, линия полностью внутри объема наблюдения. Аналогично линию можно тривиально принять, если применение операции логического ИЛИ к кодам области двух конечных точек дает 0.
•Также можно тривиально отбросить линию, если применение операции логического И к двум кодам конечных точек дает ненулевое значение. оба кода имеют значение 1 в одном разряде, следовательно, линия полностью лежит вне одной плоскости отсечения.,
отрезок от P3 до P4 (рис.) характеризуется кодами 010101 и 100110. Видно, что данная линия полностью находится под нижней плоскостью отсечения.
Рис.. Трехмерные коды области для двух отрезков. Линия P1P2 пересекает правую и верхнюю границы отсечения, а линия P3P4 целиком находится под нижней плоскостью отсечения