Трассировка лучей с помощью конусов: покрытие, перекрывающиеся и примыкающие треугольники

10

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

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

Аманатид утверждает:

Поскольку в настоящее время для смешивания вкладов различных объектов используется только дробное значение покрытия, перекрывающиеся поверхности будут рассчитываться правильно, а примыкающие поверхности - нет.

Это не имеет смысла для меня. С моей точки зрения, все наоборот. Давайте рассмотрим пример: у нас есть два примыкающих треугольника, зеленый и синий, каждый из которых покрывает ровно 50% нашего конуса. Они находятся на одинаковом расстоянии от зрителя.

Зелено-синий треугольник

Зеленый треугольник проверяется первым. Он имеет значение покрытия 0,5, поэтому синий треугольник проверяется следующим. При значении покрытия синего цвета 0,5 наш конус полностью покрыт, так что мы закончили и в итоге получили 50:50 зелено-синюю смесь. Большой!

Теперь представьте, что мы убиваем синий треугольник и добавляем красный на некотором расстоянии позади зеленого - перекрывая друг друга . Greeny снова дает нам значение покрытия 0,5. Поскольку у нас больше нет синих для тестирования, мы смотрим дальше вниз по конусу и вскоре находим красный. Это также возвращает некоторое значение покрытия больше 0, чего не должно быть, потому что оно находится за зеленым.

Итак, из этого я делаю вывод, что прилегающие треугольники работают нормально, в то время как перекрывающимся треугольникам понадобится еще немного магии, например маски покрытия, чтобы быть правильными. Это противоположно тому, что говорит Аманатид. Я что-то не так понял или это бумажка?

Дэвид Кури
источник

Ответы:

3

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

Однако, игнорируя этот конкретный случай, в целом, когда речь идет о работе с дробным покрытием, например, альфа-композитингом (см. «A над B» ), я понимаю, что обычное предположение состоит в том, что составляемые элементы некоррелированы.

Таким образом, если A с покрытием X% находится поверх B с покрытием Y% и C на фоне, то предполагается, что вы увидите
X% * ​​A + (100-X%) * Y% * B + (100-X %) (100-Y , %) * С

Имеет ли это смысл? Очевидно, что это даст «утечки» в случае, когда A и B сильно коррелируют.

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

Саймон Ф
источник
С этим объяснением это имеет смысл, спасибо! Если вы помните, каким был ваш опыт трассировки конусов по сравнению с обычной трассировкой лучей? Конечно, это приблизительное значение, но достигается ли значительное ускорение при приемлемом качестве?
Дэвид Кури
О боже, это было давно. На самом деле, я реализовал только трассировку конуса. Пробовал ли я на самом деле отключить часть радиуса, я просто не могу вспомнить, но, если у меня будет время, я постараюсь вспомнить плюсы и минусы перехода по маршруту с отслеживанием конусов.
Саймон Ф