Визуализатор
Программное обеспечение для эффективной работы с воксельными объемными данными, полученными на различных томографических системах
Заказчик:
Продис.НДТ (Россия)
Платформа:
Windows, Linux

Стек:
C++ 14–17, Qt/Qml, CUDA, CUDA и OpenGL Interop
Особенности
  • Качественный рендеринг благодаря уточнению изоповерхностей
  • Дискриминация вокселей по глубине
  • Сечение произвольной плоскостью
  • Удобное "качание" слайсов
  • Раскраска поверхностей и срезов с помощью трансфер-функции
  • Два варианта трансфер-функций
Описание

Разработан движок блочной трассировки лучей (Ray Tracing) для воксельной визуализации объемных данных на CUDA и ПО для визуализации на его основе.

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

Поддерживается сечение произвольной плоскостью, построение сечений возможно в любом направлении, не обязательно ортогональном.

Обеспечивается удобное "качание" слайсов для точного выравнивания поверхности (например, плоскости печатной платы). Поддерживается раскраска поверхностей и срезов с помощью трансфер-функции.

Для повышения скорости реализован прямой вывод через CUDA OpenGL Interop.
В результате была достигнута очень высокая производительность: к примеру, на видеокарте NVIDIA GeForce RTX 3080 для объема 2k x 2k x 2k пикселей любые манипуляции осуществляются со скоростью не ниже 60 fps.

Далее с использованием описанного движка было реализовано ПО для визуализации, поддерживающее до 4-х viewport'ов, визуализацию объема, поверхностей и слайсов, а также два варианта трансфер-функций: обычную интерполяцию и работу с отдельными пиками (материалами).