UStackUStack
Spark 2.0 icon

Spark 2.0

Spark 2.0 — браузерный рендер 3D Gaussian Splatting: потоковая LoD-система для больших миров 3DGS в THREE.js с WebGL2.

Spark 2.0

Что такое Spark 2.0?

Spark 2.0 — обновление Spark, динамического рендера 3D Gaussian Splatting (3DGS) для браузера. Основная цель — потоковая передача и рендеринг больших миров 3DGS в вебе с автоматической подстройкой уровня детализации при перемещении зрителя.

Spark работает на THREE.js и WebGL2, обеспечивая поддержку широкого спектра устройств через стандартные браузеры. В ранних версиях Spark поддерживал рендеринг нескольких объектов 3DGS в одной сцене, редактирование и переосвещение в реальном времени, а также систему shader graph для динамических эффектов и анимаций на основе сплатов. Spark 2.0 добавляет систему Level-of-Detail (LoD), которая выбирает детали для текущей точки обзора и потоково передаёт необходимые данные через интернет.

Ключевые возможности

  • Браузерный рендеринг 3DGS: Создан для работы в веб-браузере на THREE.js и WebGL2, с поддержкой десктопа, iOS, Android и VR через стандартный веб-плеер.
  • Динамическая система Level-of-Detail (LoD): Оптимизирует детали 3DGS в зависимости от точки обзора зрителя, рендеря только необходимые данные.
  • Потоковая передача для больших миров: Передаёт данные 3DGS по интернету по мере перемещения по сцене, позволяя создавать «огромные миры 3DGS» вместо рендеринга всего на полной детализации.
  • Унифицированная композиция миров 3DGS: Решает проблему правильной сортировки back-to-front для нескольких объектов 3DGS, чтобы они сосуществовали в одном 3D-пространстве без артефактов «наложения» локальной сортировки.
  • Поддержка shader graph (возможность Spark): Использует систему shader graph для создания динамических эффектов и анимаций на основе сплатов (описано как часть раннего набора возможностей Spark).

Как использовать Spark 2.0

Начните с веб-опыта на базе Spark для 3DGS (или создайте в THREE.js), затем включите/прикрепите метод LoD Spark 2.0 для целевого мира 3DGS. При перемещении пользователей по сцене рендер автоматически оптимизирует уровень детализации сплатов для текущей точки обзора и потоково передаёт соответствующие данные для рендеринга.

Если вы работаете с внешним видом сплатов, можно взаимодействовать с их свойствами (центр, масштабы XYZ, поворот, цвет RGB, непрозрачность), описанными в посте, и проверять, как конвейер рендеринга смешивает полупрозрачные сплаты.

Сценарии использования

  • Потоковое исследование больших отсканированных окружений: При навигации по большому миру 3DGS в браузере выбор LoD и потоковая передача делают рендеринг практичным, адаптируя детали сплатов к точке обзора пользователя.
  • Готовые для VR опыты 3DGS в веб-рантаймах: Поскольку Spark на WebGL2/THREE.js, а пример отмечен как «Лучше всего в VR», Spark 2.0 подходит для интерактивных VR-исследований на веб-рендеринге.
  • Сцены с несколькими объектами 3DGS: Для сцен из нескольких объектов 3DGS дизайн Spark обеспечивает унифицированную сортировку для визуальной интеграции объектов в 3D-пространстве.
  • Редактирование и переосвещение сцен на сплатах в реальном времени (возможность Spark): В рабочих процессах с интерактивными изменениями 3DGS-сцены при динамическом рендеринге сплатов ранние возможности Spark актуальны для Spark 2.0.
  • Динамические эффекты и анимации сплатов (shader graph): Для процедурных или динамически затеняемых визуалов на сплатах система shader graph Spark — описанный механизм.

FAQ

Что добавляет Spark 2.0 по сравнению со Spark?

Spark 2.0 добавляет систему Level-of-Detail (LoD) для потоковой передачи и рендеринга больших миров 3DGS с подстройкой уровня детализации под точку обзора зрителя.

Как Spark рендерит 3D Gaussian Splatting в браузере?

Рендер интегрируется с THREE.js и работает на WebGL2 в стандартном веб-браузере.

Что такое «сплаты» 3DGS в этом контексте?

Пост описывает сплаты как миллионы полупрозрачных цветных эллипсоидов со свойствами: 3D-центр, радиусы XYZ (масштабы), ориентация, цвет RGB и непрозрачность; они смешиваются для формирования поверхностей и мелких деталей.

Поддерживает ли Spark несколько объектов 3DGS в одной сцене?

Да — Spark (рендер) поддерживает несколько объектов 3DGS в сцене с дизайном для правильной унифицированной сортировки back-to-front между объектами.

Какая роль сортировки при рендеринге сплатов?

Пост объясняет, что распространённый подход — алгоритм маляра (сортировка back-to-front) с блендингом через оператор «over»; дизайн системы Spark подчёркивает правильную глобальную сортировку между объектами.

Альтернативы

  • Непотоковые веб-рендеры 3DGS: Альтернативные рендереры могут загружать и рендерить фиксированный набор сплатов без потоковой LoD в зависимости от точки обзора, что ограничивает очень большие миры.
  • Другие подходы к 3D-рендерингу в браузере (на основе мешей/точек): Вместо 3DGS некоторые системы рендерят поверхности с помощью текстурированных треугольников или других примитивов, жертвуя плотностью/внешним видом сплатов ради других характеристик производительности и рабочих процессов контента.
  • Другие веб-API для графики: Пост специально ориентирован на WebGL2 для широкой доступности; альтернативы могут основываться на других API, потенциально снижая охват устройств в зависимости от совместимости.
  • Автономные пайплайны 3DGS: Десктопные или нативные пайплайны, которые предварительно обрабатывают и рендерят 3DGS вне браузера, могут избежать сложности веб-потоковой передачи/LoD, но не обеспечат ту же модель «в браузере» взаимодействия, описанную для Spark.