Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
игс-ответы.docx
Скачиваний:
7
Добавлен:
02.08.2019
Размер:
296.77 Кб
Скачать
  1. Алгоритмы унЛиП. Алгоритм Робертса. Нахождение ребер, экранируемых другими телами. Точки протыкания.

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

Возможны следующие случаи:

    Грань ребра не закрывает. Ребро остается в списке ребер.

    Грань полностью закрывает ребро. Ребро удаляется из списка рассматриваемых ребер.

    Грань частично закрывает ребро. В этом случае ребро разбивается на несколько частей, видимыми из которых являются не более двух. Само ребро удаляется из списка рассматриваемых ребер, но в список проверяемых ребер добавляются те его части, которые данной гранью не закрываются.

Для оптимизации используется приоритетная сортировка (z-сортировка), а также, сравнения с прямоугольными объемлющими оболочками тел. Такой подход позволяет удалить целые группы или кластеры отрезков и тел. Например, если все тела в сцене упорядочены в некотором приоритетном списке, использующем значения z ближайших вершин для представления расстояния до наблюдателя, то никакое тело из этого списка, у которого ближайшая вершина находится дальше от наблюдателя, чем самая удаленная из концевых точек ребра, не может закрывать это ребро. Более того, ни одно из оставшихся тел, прямоугольная оболочка которого расположена полностью справа, слева, над или под ребром, не может экранировать это ребро. Использование этих приемов значительно сокращает число тел, с которыми нужно сравнивать каждый отрезок или ребро. Рис. 5.10 иллюстрирует работу алгоритма.

Точки протыкания.

    1. Формируются всевозможные ребра соединяющие точки протыкания для пар объектов связанных отн-ем протыкания

    2. Проверка экранирования всех этих сформированных ребер самими объектами связанными отн-ми протыкания

    3. Проверка экранирования оставшихся ребер всеми прочими объектами сцены

  1. Основные составляющие простой модели освещения. Функция закраски.

+

+

=

рассеянная составляющая

 

Диффузная составляющая

 

Зеркальная составляющая

 

Суммарное освещение

 Фоновое освещение - это постоянная в каждой точке величина надбавки к освещению. Вычисляется фоновая составляющая освещения как:

, где

диффузная составляющая рассчитывается по закону косинусов (закон Ламберта):

Зеркальный свет

, где

  1. Функция закраски. Цвет источника света и цвет объекта. Специфика алгоритмизации.

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

  1. Модели освещения. Методы определения нормали к поверхности.

Рассмотрим несколько способов определения вектора нормали.

1) Метод Ньюэла

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

где если i = n, то j = 1, иначе j = i + 1; k – любая точка на плоскости.

Единичный вектор нормали определяется по формуле:

.

Коэффициенты a, b и c сегмента поверхности можно принять за координаты вектора нормали сегмента.

2)Векторное произведение

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

Пусть полигон имеет вершины a, b, c. Тогда нормаль можно вычислить по формулам:

Координаты вектора нормали:

  1. Модели освещения. Методы определения вектора отражения.

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

  1. По закону отражения вектор падающего света , нормаль к поверхности и вектор отражения лежат в одной плоскости, причем на этой плоскости угол падения равен углу отражения. Фонг вывел отсюда простое решение для случая, когда свет падает вдоль оси z. Это предположение удобно для модели освещения с одним точечным источником. Если начало системы координат перенести в точку поверхности, то проекции нормали и вектора отражения на плоскость xy будут лежать на одной прямой:

.

После ряда несложных математических преобразований приходим к результирующим формулам:

  1. Когда свет падает не по оси z (например, когда источников несколько), первым методом воспользоваться нельзя. В этом случае проще перенести и повернуть нормаль так, чтобы она была сонаправлена с осью z, а точку поверхности принять за начало координат. Тогда плоскость xy будет касательной к поверхности, а x- и y-составляющие единичных векторов падения и отражения будут иметь разные знаки; z-составляющие этих векторов, будут равны. Для того чтобы получить результаты в первоначальной ориентации, надо выполнить обратное преобразование. В перемещенной и повернутой системе координат:

  1. В этом методе условие того, что единичная нормаль , единичный вектор падения и единичный вектор отражения лежат в одной плоскости, записывается при помощи их векторных произведений:

или

Если приравнять x-, y- и z-составляющие, то получим три уравнения, одно из которых всегда является линейно зависимым.

Равенство углов падения и отражения выражается через скалярные произведения этих векторов:

,

что дает необходимое добавочное условие. Матричный вид для всех уравнений с тремя неизвестными Rx, Ry и Rz таков:

.

Удаляя одно из зависимых уравнений и решая эту систему относительно [R], получаем соответствующие составляющие вектора отражения .

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

  1. Закраска. Сглаживание методом Гуро.

Алгоритм:

1.   Вычисляются нормали ко всем полигонам.

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

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

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

  1. Закраска. Сглаживание методом Фонга.

Алгоритм:

  1. Вычисляются нормали к каждой грани

  2. Определяются нормали в вершинах. В каждой точке закрашиваемой грани определяется интерполированный вектор нормали.

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

  1. Тени. Общие понятия и обобщенный алгоритм построения.

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

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

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

Рассмотрим сцену на рис. 12.1. Один источник находится в бесконечности сверху: спереди слева от параллелепипеда. Точка наблюдения лежит спереди: сверху справа от объекта. В данном случае тени образуются двояко: это собственная тень и проекционная. Собственная тень получается тогда, когда сам объект препятствует пропаданию света на некоторые его грани, например на правую грань параллелепипеда. При этом алгоритм построения теней аналогичен алгоритму удаления нелицевых граней: грани, затененные собственной тенью, являются нелицевыми, если точку наблюдения совместить с источником света.

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

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

Интервальный алгоритм

На первом этапе для каждого многоугольника сцены и каждого источника определяются самозатененные участки и проекционные тени (см. пример 12.1). Они записываются в виде двоичной матрицы, в которой строки - многоугольники, отбрасывающие тень, а столбцы - затеняемые многоугольники. Единица в матрице означает, что грань может отбрасывать тень на другую, нуль - что не может. Единица на диагонали соответствует многоугольнику в собственной тени.

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

  • если нет ни одного теневого многоугольника, то видимый отрезок изображается;

  • если для многоугольника, содержащего видимый отрезок, имеются теневые многоугольники, но они не пересекают и не покрывают данный интервал, то видимый отрезок изображается;

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

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

Затем алгоритм применяется рекурсивно к каждому из подынтервалов до тех пор, пока интервал не будет изображен.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]