Объемное литье лучей , иногда называемое объемным литьем лучей , объемной трассировкой лучей или объемным маршированием лучей , представляет собой основанную на изображении технику объемного рендеринга . Она вычисляет 2D-изображения из объемных наборов данных 3D (3D скалярных полей ). Объемное литье лучей, которое обрабатывает объемные данные, не следует путать с литьем лучей в том смысле, который используется в трассировке лучей , которая обрабатывает данные поверхности. В объемном варианте вычисление не останавливается на поверхности, а «проталкивается» через объект, выбирая объект вдоль луча. В отличие от трассировки лучей, объемное литье лучей не порождает вторичных лучей. [1] Когда контекст/применение понятны, некоторые авторы просто называют это литьем лучей . [1] [2] Поскольку линейное литье лучей не обязательно требует точного решения для пересечения и столкновений лучей, оно подходит для вычислений в реальном времени во многих приложениях, для которых трассировка лучей не подходит.
Классификация
Техника объемного луча-кастинга может быть получена непосредственно из уравнения рендеринга . Она обеспечивает результаты очень высокого качества рендеринга. Объемный рей-кастинг классифицируется как техника объемного рендеринга на основе изображения, поскольку вычисления исходят из выходного изображения, а не из входных объемных данных, как в случае с объектно-ориентированными техниками.
Базовый алгоритм
В своей базовой форме алгоритм объемного луча состоит из четырех этапов:
Ray casting. Для каждого пикселя конечного изображения луч зрения выстреливается («пропускается») через объем. На этом этапе полезно рассмотреть объем, к которому прикасаются, и замкнуть его в ограничивающий примитив , простой геометрический объект — обычно кубоид — который используется для пересечения луча зрения и объема.
Выборка. Вдоль части луча зрения, которая лежит внутри объема, выбираются равноудаленные точки выборки или образцы . В общем случае объем не совпадает с лучом зрения, и точки выборки обычно располагаются между вокселями . Из-за этого необходимо интерполировать значения образцов из окружающих его вокселей (обычно с использованием трилинейной интерполяции ).
Затенение. Для каждой точки выборки функция переноса извлекает цвет материала RGBA , и вычисляется градиент значений освещенности. Градиент представляет ориентацию локальных поверхностей внутри объема. Затем образцы затеняются ( т. е. окрашиваются и освещаются) в соответствии с ориентацией их поверхности и расположением источника света в сцене.
Композитинг. После того, как все точки выборки затенены, они композируются вдоль луча зрения, что приводит к окончательному значению цвета для пикселя, который в данный момент обрабатывается. Композиция выводится непосредственно из уравнения рендеринга и похожа на смешивание ацетатных листов на проекторе. Она может работать сзади вперед , т. е. вычисление начинается с образца, наиболее удаленного от зрителя, и заканчивается ближайшим к зрителю. Такое направление рабочего потока гарантирует, что замаскированные части объема не повлияют на результирующий пиксель. Порядок спереди назад может быть более эффективным с вычислительной точки зрения, поскольку остаточная энергия луча уменьшается по мере того, как луч удаляется от камеры; таким образом, вклад в интеграл рендеринга уменьшается, поэтому может быть применен более агрессивный компромисс между скоростью и качеством (увеличение расстояний между образцами вдоль луча является одним из таких компромиссов между скоростью и качеством).
Расширенные адаптивные алгоритмы
Стратегия адаптивной выборки значительно сокращает время рендеринга для высококачественного рендеринга – чем выше качество и/или размер набора данных, тем значительнее преимущество по сравнению со стратегией обычной/равномерной выборки. [1] Однако адаптивное распределение лучей на проекционной плоскости и адаптивная выборка вдоль каждого отдельного луча не очень хорошо соответствуют архитектуре SIMD современных графических процессоров. Однако многоядерные процессоры идеально подходят для этой техники, что делает их пригодными для интерактивного сверхвысококачественного объемного рендеринга .
Примеры высококачественного объемного луча
Эта галерея представляет собой коллекцию изображений, визуализированных с использованием высококачественного объемного луча. Обычно четкий вид объемных луча-кастинга изображений отличает их от вывода текстурного отображения VR из-за более высокой точности визуализации объемного луча-кастинга.
Компьютерная томография мумии крокодила имеет разрешение 3000×512×512 (16 бит), набор данных черепа имеет разрешение 512×512×750 (16 бит).
Рэй марширует
Термин «ray marching» более широкий и относится к методам, в которых имитируемые лучи проходят итеративно, эффективно разделяя каждый луч на более мелкие сегменты лучей, выбирая некоторую функцию на каждом шаге. Эти методы часто используются в случаях, когда создание явной геометрии, такой как треугольники, не является хорошим вариантом.
Другие примеры лучевого марширования
В SDF-прохождении лучей или трассировке сферы [ 3] точка пересечения аппроксимируется между лучом и поверхностью, определяемой функцией расстояния со знаком (SDF). SDF оценивается для каждой итерации, чтобы иметь возможность делать как можно большие шаги, не пропуская ни одной части поверхности. Порог используется для отмены дальнейшей итерации, когда достигнута точка, которая достаточно близка к поверхности. Этот метод часто используется для 3D-фрактальной визуализации. [4]
При рендеринге эффектов экранного пространства , таких как отражение в экранном пространстве (SSR) и тени в экранном пространстве, лучи трассируются с использованием G-буферов , где данные глубины и нормали поверхности хранятся для каждого 2D-пикселя.
Смотрите также
Amira – коммерческое программное обеспечение для 3D-визуализации и анализа (для естественных наук и биомедицины), использующее движок объемного рендеринга с использованием лучей (на основе Open Inventor )
Avizo – коммерческое программное обеспечение для 3D-визуализации и анализа, использующее движок объемного рендеринга с использованием луча (также основанный на Open Inventor)
Shadertoy — онлайн-сообщество и платформа для профессионалов в области компьютерной графики, ученых и энтузиастов, которые делятся, изучают и экспериментируют с методами рендеринга и процедурным искусством с помощью кода GLSL.
^ abc Daniel Weiskopf (2006). Методы интерактивной визуализации на основе графического процессора . Springer Science & Business Media. стр. 21. ISBN 978-3-540-33263-3.
^ Бартон Ф. Бранштеттер (2009). Практическая информатика изображений: основы и приложения для специалистов PACS. Springer Science & Business Media. стр. 126. ISBN978-1-4419-0485-0.
^ Харт, Джон К. (июнь 1995 г.), «Трассировка сферы: геометрический метод сглаженной трассировки лучей неявных поверхностей» (PDF) , The Visual Computer
^ Харт, Джон К.; Сэндин, Дэниел Дж.; Кауффман, Луис Х. (июль 1989 г.), «Трассировка лучей детерминированных трехмерных фракталов» (PDF) , Компьютерная графика
Внешние ссылки
Методы ускорения объемного рендеринга на базе графического процессора (J. Krüger, R. Westermann, IEEE Visualization 2003)
Однопроходная структура GPU Ray Casting для интерактивного внешнего рендеринга массивных объемных наборов данных (E. Gobbetti, F. Marton, JA Iglesias Guitian, The Visual Computer 2008)