Простое объемное лучевое литье - PullRequest
2 голосов
/ 15 ноября 2010

Вопрос может быть простым, но я понимаю, что ответ может и не быть.Чтобы это было как можно более ясным.

Можете ли вы объяснить основную идею для техники Volume Ray Casting в трехмерной визуализации объема.

Cheers, Timo

Ответы [ 2 ]

3 голосов
/ 15 ноября 2010

Эта ссылка представляет собой разумное введение в простое радиовещание ссылка .Эти понятия (пересечения плоскостей лучей и т. Д.) Могут быть затем расширены до объемного преобразования лучей link .

Подводя итог, луч проходит через объем и накапливает некоторый цвет при каждом пересечениисоответствует некоторым критериям.Например, каждый воксел вдоль луча, имеющий значение> 128, может вносить небольшой процент непрозрачности для желаемого цвета RGB.Степень непрозрачности взвешена, (voxel_value - 128) / 127 может быть подходящей весовой функцией в этом упрощенном случае (при условии, что отрицательные значения обрабатываются надлежащим образом).Эта схема будет представлять собой пропорциональную передающую функцию.Для рендеринга пикселю, связанному с лучом, назначается цвет, определяемый суммированными непрозрачностями, встречающимися вдоль его пути.(Это будет альфа-смешение спереди к спине - существуют другие методы.)

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

Я рекомендую книги VTK для дальнейшего чтения.

1 голос
/ 19 октября 2014

Я написал пару постов о приведении лучей и трассировке лучей с помощью Python и VTK в своем блоге ( PyScience ):

http://pyscience.wordpress.com/2014/09/21/ray-casting-with-python-and-vtk-intersecting-linesrays-with-surface-meshes/

http://pyscience.wordpress.com/2014/10/05/from-ray-casting-to-ray-tracing-with-python-and-vtk/

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

...