Я хочу визуализировать трехмерные объемы данных размером от нескольких гигабайт до нескольких терабайт. Одним из решений было бы свернуть мое собственное, но это может занять некоторое время. Чтобы избежать этого, я в настоящее время изучаю, какие в настоящее время доступны решения. Чем больше я изучаю это, тем больше программного обеспечения я нахожу. Некоторые примеры включают ParaView/VTK
, OSPRay
, Embree
, Splotch
, NVIDIA GVDB/OptiX
и т. д.
Некоторые из этих программ предоставляют полные решения для визуализации и обработки данных (например, ParaView/VTK
). Другие ориентированы в основном на высокопроизводительный рендеринг (например, Embree
). Другие предоставляют низкоуровневые API для рендеринга (например, GVDB/OptiX
). Некоторые из них оптимизированы для конкретного оборудования (например, Embree
для оборудования Intel, GVDB/Optix
для графических процессоров NVIDIA). Другие включают инфраструктуру для распределенного рендеринга (например, ParaView/VTK
), которая позволяет им заявлять, что они могут отображать наборы данных размером в несколько терабайт, в то время как другие предоставляют эту функциональность пользователю. Возможно, рендеринг тома набора данных размером в несколько терабайт также может быть выполнен на одной машине с использованием некоторых умных LOD и внесистемных алгоритмов, но давайте оставим это для другого обсуждения. Наконец, существует огромное количество программного обеспечения, созданного в результате университетских исследовательских проектов и научных кругов, которое создано для решения конкретных проблем и больше не поддерживается.
Интересно, есть ли у кого-нибудь здесь опыт работы с таким программным обеспечением и может ли он дать мне несколько указаний или советов о том, с каким программным обеспечением/библиотеками стоит поэкспериментировать. Мои идеальные требования следующие:
- Выполняйте объемный рендеринг/движение лучей для наборов данных объемом до нескольких терабайт с интерактивной частотой кадров (скажем, > 10 кадров в секунду).
- Воспользуйтесь преимуществами различных параллельных архитектур (ЦП, ГП, несколько узлов)
- Внедрение/поддержка алгоритмов уровня детализации.
- Возможность добавлять виджеты в отрендеренную сцену. Например, стрелки осей, плоскости отсечения и т. д.
- Быть в форме библиотеки, которая предоставляет общедоступный API для использования. В идеале на Python, но я думаю, что создание Python-оболочки для C/C++ API вполне осуществимо.
- Они активно поддерживаются и имеют надлежащую документацию.
Я не обязательно ищу программную библиотеку, включающую все вышеперечисленное, но чем больше, тем лучше! :)
Заранее спасибо.