TL; DR
Они принадлежат к тому же семейству решателей, где сферическое отслеживание является одним из методов лучевого марширования, то есть фамилией.
Raymarching определение
Raymarching - это метод, немного похожий на традиционную трассировку лучей, в которой поверхностную функцию нелегко решить (или невозможно без числовых итерационных методов). При трассировке лучей вы просто смотрите на пересечение лучей, в то время как при движении лучей вы идете вперед (или назад и вперед), пока не найдете пересечение, не получите достаточно образцов или чего-то еще, что вы пытаетесь решить. Попробуйте думать об этом как о методе Ньютона-Рафсона для нахождения поверхности или суммирования для интегрирования изменяющейся функции.
Это может быть полезно, если вы:
- Необходимо визуализировать объемы, которые не являются однородными
- Рендеринг неявных функций, фракталы
- Рендеринг других видов параметрических поверхностей, где пересечение не известно заранее, например, отображение паралакса
- Так далее
Изображение 1 : Традиционный лучевой марш для нахождения поверхности
Похожие сообщения:
Трассировка сферы
Трассировка сферы - один из возможных алгоритмов марширования лучей. Не все raymarching используют преимущества этого метода, поскольку они не могут быть преобразованы в схему такого рода.
Сферная трассировка используется для рендеринга неявных поверхностей . Неявные поверхности формируются на некотором уровне непрерывной функции. В сущности решение уравнения
F(X,Y,Z) = 0
Из-за того, как эта функция может быть решена в каждой точке, можно пойти дальше и оценить максимально возможную сферу, которая может соответствовать текущему шагу марша (или, если не совсем разумно, безопасно). Тогда вы знаете, что расстояние до следующего марта, по крайней мере, такое большое. Таким образом, вы можете иметь адаптивные шаги марширующего луча, ускоряющие процесс.
Рисунок 2. Трассировка сферы * в действии. Обратите внимание на адаптивный размер шага.
Для получения дополнительной информации см .:
* Возможно, в 2d это следует называть круговой трассировкой :)
Марширование лучей - это итеративный тест пересечения лучей, в котором вы шагаете по лучу и проверяете наличие пересечений, обычно используемый для поиска пересечений с геометрией твердого тела , где внутренние / внешние тесты выполняются быстро.
Изображения из рендеринга геометрии с рельефными текстурами
Фиксированный размер шага довольно распространен, если вы действительно не представляете, где может произойти пересечение, но иногда вместо этого используются методы поиска корня, такие как двоичный или секущий поиск. Часто для поиска первого пересечения используется фиксированный размер шага, за которым следует двоичный поиск. Я впервые столкнулся с лучевым маршингом в методах картирования смещения на пиксель. Рельефное отображение деталей поверхности без высоты поля - хорошее чтение!
Он обычно используется с космическим прыжком, техникой ускорения, при которой некоторая предварительная обработка дает безопасное расстояние, по которому вы можете перемещаться вдоль луча, не пересекая геометрию, или еще лучше, не пересекая и затем оставляя геометрию, так что вы пропустите ее. Например, отображение шага конуса и расслабленное отображение шага конуса.
Трассировка сферы может относиться к неявному тесту пересечения луча и сферы,но это также название техники космического прыжка Джона Харта, как упоминает @joojaa, и используемой Уильямом Доннелли ( Отображение смещения на пиксель с функциями расстояния ), где 3D текстура кодирует радиусы сфер, в которых не существует геометрии.источник