Существуют ли альтернативы рендеринга растеризации или трассировки лучей? - PullRequest
14 голосов
/ 23 апреля 2009

Растеризация (треугольники) и трассировка лучей - единственные методы, с которыми я когда-либо сталкивался при рендеринге 3D-сцены. Есть ли другие? Кроме того, я хотел бы знать о любых других действительно «там» способах делать 3D, например, не использовать полигоны.

Ответы [ 3 ]

42 голосов
/ 24 апреля 2009

Aagh! Эти ответы очень не информированы!

Конечно, не помогает, что вопрос неточный.

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

Классическим (хотя и несколько устаревшим) справочником по категоризации является Sutherland и др. "Характеристика десяти алгоритмов скрытой поверхности", ACM Computer Surveys 1974. Он очень устарел, но все же отлично подходит для предоставления основы для размышлений о том, как классифицировать такие алгоритмы.

Один класс алгоритмов скрытой поверхности включает в себя «приведение лучей», при котором вычисляется пересечение линии от камеры через каждый пиксель с объектами (которые могут иметь различные представления, включая треугольники, алгебраические поверхности, NURBS и т. Д.).

Другие классы алгоритмов скрытой поверхности включают в себя "z-буфер", "методы сканирования", "алгоритмы приоритета списка" и так далее. Они были чертовски креативны с алгоритмами в те времена, когда было мало циклов вычислений и не хватало памяти для хранения z-буфера.

В наши дни и вычисления, и память дешевы, и поэтому три метода в значительной степени победили: (1) нарезание всего на треугольники и использование z-буфера; (2) лучевое литье; (3) Рейесоподобные алгоритмы, которые используют расширенный z-буфер для обработки прозрачности и тому подобное. Современные видеокарты занимают первое место; рендеринг программного обеспечения высокого уровня обычно делает № 2 или № 3 или их комбинацию. Хотя было предложено, а иногда и построено различное оборудование для трассировки лучей, но оно так и не завоевало популярность, а также современные графические процессоры теперь достаточно программируемы, чтобы фактически отслеживать трассировку, хотя и с серьезным недостатком скорости по сравнению с жестко закодированными методами растеризации. Другие, более экзотические алгоритмы, в основном, отошли на второй план за эти годы. (Хотя различные алгоритмы сортировки / разбрызгивания могут использоваться для объемного рендеринга или других специальных целей.)

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

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

«Трассировка лучей» означает применение метода литья лучей, чтобы также определить видимость для теней, отражений, общего освещения и т. Д. Можно использовать трассировку лучей для всего или использовать различные методы растеризации для видимости камеры и трассировки лучей для теней. , размышления и Г.И. «Фотонное картирование» и «трассировка пути» - это методы для расчета определенных видов распространения света (используя трассировку лучей, поэтому просто неправильно говорить, что они каким-то образом принципиально отличаются от техники рендеринга). Существуют также методы глобального освещения, в которых не используется трассировка лучей, например, методы «радиации» (это метод конечных элементов для решения проблемы глобального распространения света, но в большинстве областей в последнее время он потерял популярность). Но использование радио- или фотонного картирования для распространения света STILL требует, чтобы вы каким-то образом сделали окончательное изображение, обычно с помощью одного из стандартных методов (приведение лучей, z-буфер / растеризация и т. Д.).

Люди, которые упоминают конкретные представления формы (NURBS, объемы, треугольники), также немного смущены. Это ортогональная проблема для трассировки лучей против растеризации. Например, вы можете непосредственно проследить трассировку nurbs или нарезать кубики на треугольники и отслеживать их. Вы можете напрямую растеризовать треугольники в z-буфер, но вы также можете напрямую растеризовать параметрические поверхности высокого порядка в порядке сканирования (см. Lane / Carpenter / etc CACM 1980).

5 голосов
/ 23 апреля 2009

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

1 голос
/ 23 апреля 2009

Статья о рендеринге в Википедии охватывает различные техники .

Вступительный абзац:

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

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

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

Самое современное программное обеспечение объединяет два или больше методов для получения достаточно хорошие результаты при разумных стоимость.

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

Из этих описаний мне кажется, что только radiosity принципиально отличается.

...