Визуализировать n-мерное скалярное поле в opengl / pycuda
Используя pyCuda, я манипулирую N-мерным скалярным полем. Я хотел бы визуализировать это скалярное поле в режиме реального времени (т.е. быстро и эффективно). Я думаю об использовании алгоритма движущихся кубов для рисования трехмерных проекций изоповерхностей, но я не смог найти хороших реализаций / библиотек, которые я мог бы использовать из моей программы pyCuda. Любые рекомендации? В идеале я хотел бы, чтобы решение было совместимо с другими графиками OpenGL, которые я делаю в программе.
1 ответ
Скалярное 3D-поле можно интерпретировать как объемное изображение. Существует несколько способов прямого рендеринга томов с использованием фрагментных шейдеров OpenGL. Использование терминов "OpenGL GLSL Volume Raycasting Direct Rendering" дает много результатов. По сути, вам нужно определить точки входа и выхода луча, соответствующего каждому пикселю экрана, через объем и выполнить итерацию по всем выборкам в вашем скалярном поле, интегрируя их.
Несколько ссылок:
http://http.developer.nvidia.com/GPUGems/gpugems_ch39.html
http://sirkan.iit.bme.hu/~cseb/Education/ComputerGraphics/direct_volume_rendering_6.pdf
http://graphicsrunner.blogspot.de/2009/01/volume-rendering-101.html