Удаление невидимых поверхностей.
а) Инициализация буфера кадра размером с одну сканирующую б) Инициализация Z-буфера размером с одну сканирующую строку в) Проверка для очередной сканирующей строки появления новых -57- г) Проверка появления новых многоугольников в списке актив д) Проверка удаления ребра из списка активных ребер. Провер е) Упорядочивание пересечений слева направо (по возрастанию ж) Выполнение для каждой пары ребер многоугольника из спис - извлечение пары ребер многоугольника из списка активных - инициализация Z со значением Zn; - вычисление глубины для каждого пиксела, лежащего в ин - сравнение глубины Z(x) с величиной Z6y<|)(x) для те - запись буфера кадра для сканирующей строки в буфер кад - коррекция списка активных ребер: -58- ¥л=¥л-1; Yn= Yn-1. При ¥л<0 или Yn<0 удаление соответствующего ребра из списка; индикация обоих ребер и соответствующего многоугольника; - вычисление новых абсцисс точек пересечения: - вычисление глубины многоугольника на левом ребре с Zn= Zn- Zx* Х- Zy; - удаление многоугольника из списка активных многоуголь Перед началом работы алгоритма целесообразно удалить нелицевые грани. 6.7.АЛГОРИТМ ОПРЕДЕЛЕНИЯ ВИДИМЫХ ПОВЕРХНОСТЕЙ ПУТЕМ ТРАССИРОВКИ ЛУЧЕЙ Данный алгоритм в отличие от уже рассмотренных не учитывает специфику обрабатываемого об»екта. Данный метод получил право на жизнь только в условиях современных высокопроизводительных технических средств, его эффективность особенно высока при наличии многопроцессорных вычислительных комплексов. Основная идея этого метода заключается в том, что наблюдатель видит об»ект благодаря световым лучам, испускаемым некоторым источником, которые падают на об»ект. Свет достигает наблюдателя, если он отражается от поверхности, преломляется или проходит через нее. Если наблюдать лучи, выпущенные источником, то можно убедиться, что лишь малое их количество дойдет до наблюдателя, поэтому такой подход в вычислительном плане весьма неэффекти- -59- вен. Более эффективным является подход, при котором лучи отслеживаются (трассируются) в обратном направлении, т.е. от наблюдателя к об»екту. Здесь рассмотрим использование трассировки лучей только для определения видимых поверхностей. В целом же с помощью трассировки лучей можно учитывать эффекты отражения света от об»ектов, преломления, прозрачности, затенения. Алгоритм работает в пространстве изображения, наблюдатель находится в бесконечности на положительной полуоси Z. В более простом варианте перспективное преобразование не учитывается. Лучи, идущие от наблюдателя, параллельны в этом случае оси Z. Необходимо проследить траекторию луча, чтобы определить об»екты сцены, с которыми этот луч пересекается, и вычислить глубину пересечения с каждым об»ектом для каждого пиксела (лучей будет столько, сколько пикселей на экране). Из всех об»ек-тов, с которыми пересекается луч, видимым для данного пиксела будет тот, пересечение с которым имеет наибольшую глубину (максимальное значение координаты Z). И данный пиксел надо закрасить цветом об»екта с этой максимальной глубиной. Если наблюдатель находится не в бесконечности, алгоритм усложняется несущественно. Задача сводится к построению одноточечной центральной проекции. Центральным пунктом алгоритма явяляется процедура определения пересечений луча с поверхностью об»екта. В сцену можно включать любые об»екты, для которых можно реализовать процедуру построения пересечений: плоские многоугольники, многогранники, тела, ограниченные квадратичными или биполиномиальными параметрическими поверхностями. Эффективность данной процедуры -60- оказывает самое большое влияние на эффективность всего алгоритма, так как более 75% всего времени затрачивается на определение пересечений. Для исключения ненужного поиска пересечений в алгоритме предлагается искать сначала пересечение луча с об»емлющей оболочкой об»екта. Если луч не пересекает оболочку, то он не пересекает и сам об»ект. В качестве оболочек удобнее всего использовать сферу или прямоугольный параллелепипед. Использование сферы может оказаться неэффективным, так как об»ем описанной сферы может существенно превышать об»ем об»екта. Но тест со сферической оболочкой чрезвычайно прост: достаточно определить расстояние от центра сферы до луча. При использовании параметрического представления прямой, проходящей через точки Pl(xl,yl,zl) и P2(x2,y2,z2), получим P(t)=Pl+(P2-Pl)t или x=xl+(x2-xl)t=xl+at у=у 1 +(у2-у 1 )t=y I +bt z=zl+(z2-zl)t=zl+ct Если центр сферы лежит в точке с координатами Po(Xo,Yo,Zo), то квадрат расстояния от него до прямой: d =(Xl+at-Xo) + (Yl+bt-Yo) + (Zl+ct-Zo). Значение параметра t, при котором это расстояние минимально, находится из условия dd(t) -=0
Популярное: Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (190)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |