Современные технологии компьютерной томографии (КТ) открывают новые горизонты в визуализации внутренних структур объектов, будь то медицинские исследования или промышленный контроль качества. Визуализация 3D-моделей и создание анимаций КТ-сканов позволяют экспертам более точно диагностировать дефекты или выявлять важные особенности исследуемых объектов. Однако рендеринг высококачественных анимаций требует значительных вычислительных ресурсов, особенно когда речь идет о промышленном производстве с высокой скоростью обработки объектов. В этом контексте Lumafield реализовала инновационный подход к рендерингу анимаций КТ-сканов непосредственно в облаке, что заметно повышает производительность и удобство использования для конечных пользователей. Для этого был задействован стек современных веб-технологий и аппаратное ускорение, что является логичным шагом в развитии удаленной визуализации сложных трёхмерных данных.
Одной из ключевых задач команды Lumafield было обеспечить серверный рендеринг визуальных материалов таким образом, чтобы визуализации полностью совпадали с интерфейсом их браузерного приложения, построенного на базе Three.js. Это JavaScript-решение применяет GLSL шейдеры для точной отрисовки КТ-сканов и анализа результатов, предоставляя пользователям гибкие инструменты управления – от настройки диапазонов аттенюации и цветовых карт до обрезки и прозрачности. Позволить пользователям создавать анимации с тем же уровнем контроля, что и в интерактивном приложении, и предварительно просматривать их перед скачиванием – именно эта синергия была заложена в архитектуру новой функции. Технически прием был связан с запуском headless браузера – то есть браузера без графического интерфейса пользователя на сервере, который отображает и рендерит сцену так, как это происходит на клиенте.
Для таких задач идеально подходит Playwright, современный фреймворк для автоматизации браузеров. Он позволяет программно запускать Chromium, эмулируя все процессы от загрузки страницы до рендеринга сложных 3D-сцен. Благодаря использованию headless-браузера удалось перепрофилировать уже готовый код приложения Lumafield и использовать его же на сервере для отрисовки кадров анимации, избегая при этом необходимости переписывать всю логику визуализации под новую технологию. Пользователь создает анимацию через удобный интерфейс с таймлайном, задает настройки визуализации, после чего запускается процесс рендеринга. Запущенный headless-браузер посещает защищенный URL с уникальным токеном доступа, что позволяет воспроизводить все необходимые данные и условия рендеринга в серверной среде.
Визуализация каждого кадра происходит через React Three Fiber – адаптацию Three.js для React, которая предоставляет удобный хук useFrame. Этот хук связывает обработку каждого кадра анимации с функцией скачивания изображения. Для правильного формирования итогового видео кадры сначала отрисовываются на WebGL canvas, а затем дополнительно накладываются HTML-оверлеи и водяные знаки средствами 2D canvas. Такой подход связан с ограничением, что один холст не может содержать одновременно WebGL и 2D контексты, поэтому Done выделяется отдельный 2D canvas, в который и выводятся дополнительные элементы.
Загрузка каждого кадра инициируется через создание ссылки на DataURL и программный клик по ней, что обеспечивает сохранение изображения. По завершении цикла все кадры собираются и объединяются в видеофайл с помощью популярного инструмента ffmpeg. Одним из критичных моментов стало время рендеринга. Несмотря на мощные процессоры, отрисовка сотен и тысяч кадров в режиме программного рендеринга на CPU занимала слишком много времени — порой до двадцати минут и более. Это заставило команду Lumafield перейти к аппаратному ускорению 3D рендеринга в headless браузерах, используя возможности видеокарт.
Google внесла значительный вклад в поддержку WebGL и WebGPU в Headless Chrome, а также интеграцию Vulkan API для эффективного взаимодействия с графическим процессором. Для включения поддержки Vulkan понадобилось использовать набор специфических флагов запуска Chromium, включая «--enable-webgl», «--enable-gpu», «--use-angle=vulkan» и другие, обеспечивающие полноценное аппаратное ускорение и максимальную производительность. Интеграция GPU в среду Docker стала следующим вызовом, так как часто контейнеры лишены прямого доступа к оборудованию. Благодаря NVIDIA Container Toolkit Lumafield удалось предоставить доступ к GPU изнутри контейнера, подтвердив успешность с помощью утилиты nvidia-smi. Однако для полноценной работы Vulkan потребовалась глубокая настройка и добавление критически важных конфигурационных файлов ICD и EGL для конкурентной работы драйверов NVIDIA.
После доработки Dockerfile все необходимые компоненты оказались на своих местах, и Vulkan стал обнаруживать GPU внутри контейнера, обеспечивая полноценное аппаратное ускорение. Развертывание в облаке на AWS EC2 с использованием инстансов g4dn.xlarge предоставило необходимую инфраструктуру для масштабируемых и производительных запусков. Тем не менее в процессе возникли проблемы с драйверами NVIDIA на Amazon Linux 2023, так как новые версии разделили драйверы на compute-only и desktop, а Vulkan требовал последних. Решением стало использование чуть устаревших версий драйверов (например, версии 555), содержащих нужные компоненты для Vulkan и графического стека.
Финальной победой стала успешная комбинация настроек драйверов, Docker, Playwright и Kubernetes, благодаря которой в облаке можно рендерить высококачественные анимации КТ-сканов с использованием GPU-ускорения и существующего кода фронтенда. Такой подход позволил Lumafield обеспечить автоматический и быстрый визуальный контроль каждого отсканированного объекта непосредственно в процессе производства без участия операторов, что повысило качество и снизило человеческий фактор. Технологии, основанные на React Three Fiber и Playwright, вкупе с аппаратным ускорением и тщательно отлаженной инфраструктурой, стали надежной основой для создания эффективных и масштабируемых облачных решений в сфере 3D-визуализации промышленной томографии. Опубликованный опыт Lumafield представляет ценную дорожную карту для иных компаний и разработчиков, стремящихся вывести визуализацию научных и производственных данных на новый уровень производительности и удобства. Обеспечение точности и полноты визуализации при переносе рендеринга в облако открывает новые возможности для автоматизации и интеграции сложных аналитических процессов в промышленных и медицинских приложениях.
Таким образом, рендеринг анимаций КТ-сканов в облаке перестал быть недостижимой мечтой, а стал надежным и проверенным рабочим инструментом, способным качественно улучшить процессы контроля качества и диагностики с помощью современных веб-технологий и аппаратного ускорения.