UStackUStack
Spark 2.0 icon

Spark 2.0

Spark 2.0은 THREE.js와 WebGL2에서 동작하는 브라우저 기반 3D 가우시안 스플래팅 렌더러로, 스트리밍 LoD로 대형 3DGS 월드를 렌더링합니다.

Spark 2.0

Spark 2.0이란?

Spark 2.0은 브라우저에서 실행되도록 설계된 동적 3D 가우시안 스플래팅(3DGS) 렌더러인 Spark의 업데이트 버전입니다. 핵심 목적은 뷰어가 이동함에 따라 레벨-오브-디테일(LoD)을 자동 조정하여 웹에서 대형 3DGS 월드를 스트리밍하고 렌더링하는 것입니다.

Spark는 THREE.jsWebGL2로 실행되며, 표준 웹 브라우저를 통해 광범위한 디바이스 지원을 목표로 합니다. 이전 Spark 버전에서는 동일한 장면에서 여러 3DGS 객체 렌더링, 실시간 편집 및 재조명, 동적 splat 기반 효과와 애니메이션을 위한 셰이더 그래프 시스템을 지원했습니다. Spark 2.0은 현재 뷰포인트에 맞는 디테일을 선택하고 인터넷을 통해 필요한 데이터를 스트리밍하는 LoD 시스템을 추가합니다.

주요 기능

  • 브라우저 기반 3DGS 렌더링: THREE.jsWebGL2를 사용해 웹 브라우저에서 실행되며, 데스크톱, iOS, Android, VR을 표준 웹 재생으로 지원하는 것을 목표로 합니다.
  • 동적 LoD 시스템: 뷰어의 뷰포인트에 따라 3DGS 디테일을 최적화하여 필요한 데이터만 렌더링합니다.
  • 대형 월드 스트리밍: 장면을 이동할 때 필요한 3DGS 데이터를 인터넷으로 스트리밍하여 전체를 풀 피델리티로 렌더링하는 대신 “거대 3DGS 월드”를 가능하게 합니다.
  • 통합 3DGS 월드 구성: 여러 3DGS 객체 간 올바른 백-투-프론트 정렬을 처리하여 객체들이 “로컬 정렬 아티팩트로 붙여넣힌” 것처럼 보이지 않고 동일한 3D 공간에 공존하도록 합니다.
  • 셰이더 그래프 지원 (Spark 기능): 동적 splat 기반 효과와 애니메이션을 생성하기 위한 셰이더 그래프 시스템을 사용합니다 (Spark의 이전 기능 세트로 설명됨).

Spark 2.0 사용 방법

Spark 기반 3DGS 웹 경험(또는 THREE.js에서 하나를 빌드)에서 시작한 후, 대상 3DGS 월드에 Spark 2.0 LoD 방법을 활성화/연결합니다. 사용자가 장면을 이동하면 렌더러가 현재 뷰포인트에 맞는 splat 디테일 레벨을 자동 최적화하고 해당 데이터를 스트리밍하여 렌더링합니다.

splat 외관을 빌드하거나 실험할 때, 게시물에 설명된 기본 splat 속성(중심 위치, XYZ 스케일, 회전, RGB 색상, 불투명도)과 상호작용하며 렌더링 파이프라인이 반투명 splat을 어떻게 블렌딩하는지 확인할 수 있습니다.

사용 사례

  • 대형 스캔 환경의 스트리밍 탐색: 브라우저에서 큰 3DGS 월드를 탐색할 때 LoD 선택과 스트리밍이 사용자 뷰포인트에 splat 디테일을 적응시켜 렌더링을 실용적으로 유지합니다.
  • 웹 런타임에서의 VR 준비 3DGS 경험: Spark가 WebGL2/THREE.js 기반이며 예시 경험에서 “VR에서 최적”이라고 명시된 점을 고려하면, Spark 2.0은 웹 렌더링에 의존하는 인터랙티브 VR 탐색 워크플로에 적합합니다.
  • 다중 객체 3DGS 장면: 여러 3DGS 객체로 구성된 장면에서 Spark의 설계는 객체들이 3D 공간에서 시각적으로 통합되도록 통합 정렬을 생성합니다.
  • splat 기반 장면의 실시간 편집 및 재조명 (Spark 기능): 3DGS 장면에 인터랙티브 변경이 필요한 워크플로에서 동적 splat 렌더링을 유지하며 Spark의 이전 기능을 Spark 2.0의 관련 컨텍스트로 위치짓습니다.
  • 동적 splat 효과 및 애니메이션 (셰이더 그래프): 프로시저럴 또는 동적 셰이딩 splat 기반 비주얼이 필요할 때 Spark의 셰이더 그래프 시스템이 소스에 설명된 메커니즘입니다.

자주 묻는 질문

Spark 2.0이 Spark에 비해 무엇을 추가하나요?

Spark 2.0은 뷰어의 뷰포인트에 따라 디테일 레벨을 조정하여 대형 3DGS 월드를 스트리밍하고 렌더링하는 LoD 시스템을 추가합니다.

Spark는 브라우저에서 3D 가우시안 스플래팅을 어떻게 렌더링하나요?

렌더러는 표준 웹 브라우저에서 WebGL2로 실행되는 THREE.js와 통합되도록 빌드되었습니다.

이 맥락에서 3DGS “splat”이란 무엇인가요?

게시물은 splat을 수백만 개의 반투명 컬러 타원체로 설명하며, 속성에는 3D 중심, XYZ 반경(스케일), 방향, RGB 색상, 불투명도가 포함되며, 이들이 블렌딩되어 표면과 세밀한 디테일을 형성합니다.

Spark가 동일한 장면에서 여러 3DGS 객체를 지원하나요?

네—Spark(렌더러)는 동일한 장면에서 여러 3DGS 객체를 지원하며, 객체 간 통합 백-투-프론트 정렬을 보장하는 설계 선택이 설명됩니다.

splat 렌더링 시 정렬의 역할은 무엇인가요?

게시물은 “over” 연산자를 통한 블렌딩을 사용하는 페인터의 알고리즘(백-투-프론트 순서)이 일반적이라고 설명하며, Spark의 시스템 설계는 객체 간 올바른 글로벌 순서를 강조합니다.

대안

  • 비스트리밍 3DGS 웹 렌더러: 대안 렌더러는 뷰포인트 기반 LoD 스트리밍 없이 고정된 스플랫 세트를 로드하고 렌더링할 수 있으며, 이는 매우 큰 월드를 제한할 수 있습니다.
  • 기타 브라우저 3D 렌더링 접근법 (메시/포인트 기반): 3DGS 대신 일부 시스템은 텍스처 매핑된 삼각형이나 기타 프리미티브를 사용해 표면을 렌더링하며, 스플랫 기반 밀도/외관 특성을 다른 성능 및 콘텐츠 워크플로우와 맞바꿉니다.
  • 다른 웹 그래픽스 API: 이 포스트는 광범위한 가용성을 위해 WebGL2를 구체적으로 대상으로 합니다; 대안은 다른 API를 기반으로 할 수 있으며, 호환성에 따라 디바이스 커버리지를 줄일 수 있습니다.
  • 독립형 3DGS 파이프라인: 브라우저 외부에서 3DGS를 전처리하고 렌더링하는 데스크톱 또는 네이티브 파이프라인은 웹 스트리밍/LoD 복잡성을 피할 수 있지만, Spark에 설명된 동일한 “브라우저 내” 상호작용 모델을 제공하지 않습니다.