Алгоритм художника

редактировать
Не путать с алгоритмом Шлемиля-Художника. Файл: Genesis фрактальная ландшафтная программа (Commodore Amiga).webm Воспроизвести медиа Фрактал пейзаж, формируемый с использованием алгоритма живописца на Commodore Amiga

В алгоритме художника (также алгоритм глубины сортировки и приоритет заполнение) представляет собой алгоритм для видимого определения поверхности в 3D компьютерной графике, которая работает на многоугольник по-многоугольник основе, а не пиксель за пикселем, строка за строкой, или областью, основа других алгоритмов удаления скрытых поверхностей. Алгоритм художника создает изображения, сортируя многоугольники в изображении по их глубине и размещая каждый многоугольник в порядке от самого дальнего до ближайшего объекта.

Алгоритм художника первоначально был предложен в качестве основного метода для решения проблемы определения невидимых поверхности проблемы, Мартин Ньюэлл, Ричард Ньюэлл, и Том Санчем в 1972 году, в то время как все три работал в CADCentre. Название «алгоритм художника» относится к технике, используемой многими художниками, когда они начинают с рисования отдаленных частей сцены перед частями, которые находятся ближе, тем самым покрывая некоторые области удаленных частей. Аналогичным образом алгоритм рисовальщика сортирует все полигоны в сцене по их глубине, а затем раскрашивает их в этом порядке, от самого дальнего к ближайшему. Он закрашивает части, которые обычно не видны, - таким образом решая проблему видимости - за счет закрашивания невидимых областей удаленных объектов. Упорядочение, используемое алгоритмом, называется « порядком глубины» и не должно учитывать числовые расстояния до частей сцены: существенным свойством этого порядка является, скорее, то, что если один объект скрывает часть другого, то первый объект рисуется после объекта, который он закрывает. Таким образом, действительное упорядочение может быть описано как топологическое упорядочение в виде направленного ациклического графа, представляющих окклюзии между объектами.

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

СОДЕРЖАНИЕ

  • 1 Алгоритм
    • 1.1 Псевдокод
    • 1.2 Временная сложность
    • 1.3 Космическая сложность
  • 2 преимущества
    • 2.1 Базовая графическая структура
    • 2.2 Эффективность памяти
  • 3 Ограничения
    • 3.1 Циклическое перекрытие
    • 3.2 Пробивающие многоугольники
    • 3.3 Эффективность
  • 4 варианта
    • 4.1 Расширенный алгоритм художника
    • 4.2 Обратный алгоритм живописца
  • 5 Другие алгоритмы компьютерной графики
  • 6 Ссылки
  • 7 Внешние ссылки

Алгоритм

Концептуально алгоритм Painter's работает следующим образом:

  1. Сортировать каждый многоугольник по глубине
  2. Поместите каждый многоугольник от самого дальнего до ближайшего.

Псевдокод

sort polygons by depth for each polygon p: for each pixel that p covers: paint p.color on pixel

Сложность времени

Сложность алгоритма рисования во многом зависит от алгоритма сортировки, используемого для упорядочивания многоугольников. Предполагая использование наиболее оптимального алгоритма сортировки, алгоритм художника имеет сложность наихудшего случая O ( n log n + m * n), где n - количество многоугольников, а m - количество пикселей, которые необходимо заполнить.

Космическая сложность

Наихудшая пространственная сложность алгоритма рисовальщика равна O ( n + m), где n - количество полигонов, а m - количество пикселей, которые нужно заполнить.

Преимущества

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

Базовая графическая структура

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

Эффективность памяти

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

Перекрывающиеся полигоны могут привести к сбою алгоритма

Ограничения

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

Циклическое перекрытие

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

Пробивающие многоугольники

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

Эффективность

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

Варианты

Расширенный алгоритм художника

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

Обратный алгоритм художника

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

Другие алгоритмы компьютерной графики

Недостатки алгоритма рисовальщика привели к разработке методов Z-буфера, которые можно рассматривать как развитие алгоритма рисовальщика, разрешая конфликты глубины на попиксельной основе, уменьшая необходимость в порядке рендеринга на основе глубины. Даже в таких системах иногда используется вариант алгоритма художника. Поскольку реализации Z-буфера обычно полагаются на регистры буфера глубины фиксированной точности, реализованные на оборудовании, существует область для проблем с видимостью из-за ошибки округления. Это перекрытия или зазоры на стыках полигонов. Чтобы избежать этого, некоторые реализации графического движка «перерисовывают», отрисовывая затронутые края обоих полигонов в порядке, заданном алгоритмом рисовальщика. Это означает, что некоторые пиксели на самом деле отрисовываются дважды (как в полном алгоритме рисовальщика), но это происходит только на небольших частях изображения и имеет незначительный эффект производительности.

использованная литература

  1. ^ Аппель, Артур (1968). Моррель, AJH (ред.). «О вычислении иллюзий реальности» (PDF). Обработка информации, Материалы Конгресса ИФИП, 1968 г., Эдинбург, Великобритания, 5-10 августа 1968 г., Том 2 - Аппаратное обеспечение, приложения: 945–950.
  2. ^ Ромни, Гордон Уилсон (1969-09-01). «Компьютерная сборка и визуализация твердых тел». Цитировать журнал требует |journal=( помощь )
  3. ^ Гэри Скотт Уоткинс. 1970. "Алгоритм видимой поверхности в реальном времени. Диссертация доктора философии". Университет Юты. Номер заказа: AAI7023061.
  4. ^ a b c d e Ньюэлл, Мэн; Ньюэлл, Р.Г.; Санча, Т.Л. (1972-08-01). «Решение проблемы скрытой поверхности» (PDF). Материалы ежегодной конференции ACM - Том 1. ACM '72. Бостон, Массачусетс, США: Ассоциация вычислительной техники. 1: 443–450. DOI : 10.1145 / 800193.569954. ISBN   978-1-4503-7491-0. S2CID   13829930.
  5. ^ Букнайт, У. Джек (1970-09-01). «Процедура создания трехмерных полутоновых презентаций компьютерной графики». Коммуникации ACM. 13 (9): 527–536. DOI : 10.1145 / 362736.362739. ISSN   0001-0782. S2CID   15941472.
  6. ^ Берланд, Дина (1995). Исторические техники живописи, материалы и студийная практика. https://www.getty.edu/conservation/publications_resources/pdf_publications/pdf/historical_paintings.pdf : Институт охраны природы Гетти.
  7. ^ Уайли, Крис; Ромни, Гордон; Эванс, Дэвид; Эрдал, Алан (1967-11-14). «Полутоновые перспективные рисунки на компьютере». Труды 14-16 ноября 1967 года, Fall Joint Computer конференции. AFIPS '67 (осень). Анахайм, Калифорния: Ассоциация вычислительной техники: 49–58. DOI : 10.1145 / 1465611.1465619. ISBN   978-1-4503-7896-3. S2CID   3282975.
  8. ^ a b Десаи, Апурва (2008). Компьютерная графика. https://books.google.com/books?id=WQiIj8ZS0IoCamp;pg=PA256amp;lpg=PA256amp;dq=%22hewells%22+painter%27s+algorithmamp;source=blamp;ots=HbWXoialNtamp;sig=ACfU3U0do0uKya5QGDaBUKKrXoYJ3uULdAamp;hl=enamp;sa=Xamp;ved=2ahUKEwjh1tC14MHsAhUogK0KHWS5BsQQ6AEwAnoECAoQAg#v=onepageamp;qamp;f=false : PHI Learning Pvt. ОООCS1 maint: location ( ссылка )
  9. ^ а б в г е де Берг, Марк (2008). Вычислительная геометрия. https://people.inf.elte.hu/fekete/algoritmusok_msc/terinfo_geom/konyvek/Computational%20Geometry%20-%20Algorithms%20and%20Applications,%203rd%20Ed.pdf : Springer.CS1 maint: location ( ссылка )
  10. ^ де Берг, Марк (1993). Съемка лучей, приказы глубины и удаление скрытых поверхностей. Конспект лекций по информатике. 703. Springer. п. 130. ISBN   9783540570202 {{противоречивые цитаты}}CS1 maint: postscript ( ссылка ).
  11. ^ Варнок, Джон Э. (1969-06-01). «Алгоритм скрытой поверхности для компьютерных полутоновых изображений». Цитировать журнал требует |journal=( помощь )
  12. ^ Фрейзер, М.; Маркус, П. (июнь 1969 г.). «Обзор некоторых физических ограничений на элементы компьютера». IEEE Transactions on Magnetics. 5 (2): 82–90. Bibcode : 1969ITM..... 5... 82F. DOI : 10,1109 / TMAG.1969.1066403. ISSN   1941-0069.
  13. Перейти ↑ Nyberg, Daniel (2011). Анализ двух общих алгоритмов удаления скрытых поверхностей, алгоритма Пейнтера и Z-буферизации.

внешние ссылки

Последняя правка сделана 2024-01-05 10:23:17
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте