Skip to content

feat(3d): Gaussian Splatting viewer with Spark integration#612

Open
seonglae wants to merge 6 commits intomainfrom
feature/#551-skyfall-gs-integration
Open

feat(3d): Gaussian Splatting viewer with Spark integration#612
seonglae wants to merge 6 commits intomainfrom
feature/#551-skyfall-gs-integration

Conversation

@seonglae
Copy link
Member

Summary

  • Pointland에 3D Gaussian Splatting (3DGS) 뷰어를 통합
  • Skyfall-GS로 생성된 도시 장면을 렌더링할 수 있는 기반 마련

Changes

  • @sparkjsdev/sparkthree 의존성 추가
  • useGaussianSplat hook 생성 (LoD 지원으로 scalable rendering)
  • GaussianLand 컴포넌트로 3DGS 씬 표시
  • ViewerSwitch 컴포넌트로 Point Cloud / Gaussian 모드 전환
  • Effector store에 viewerMode 상태 추가
  • App.tsx에 dual viewer 모드 통합

Architecture

App
├─ ViewerSwitch (토글)
├─ PointLand (Point Cloud 모드)
└─ GaussianLand (Gaussian 모드)

Roadmap

  • Phase 1: Dual Mode - Point Cloud / Gaussian 전환 (이번 PR)
  • Phase 2: Tokyo Gaussian Splat 데이터 추가
  • Phase 3: Hybrid Mode - 동일 씬에서 동시 렌더링
  • Phase 4: 다양한 도시 스케일링

Test plan

  • pnpm dev 실행
  • Point Cloud 모드 정상 동작 확인
  • Gaussian Splat 모드로 전환
  • 샘플 splat 로드 확인
  • 컨트롤 (터치/키보드) 동작 확인

Known Issues

  • Three.js 버전 충돌 경고 (LayerSpace: 0.138 vs Spark: 0.183)
    • 빌드 성공, 런타임 테스트 필요

Resolves #551

- Add @sparkjsdev/spark and three dependencies for 3DGS rendering
- Create useGaussianSplat hook with LoD support for scalable rendering
- Create GaussianLand component for 3DGS scene display
- Create ViewerSwitch component for Point Cloud / Gaussian mode toggle
- Add viewerMode state to Effector store
- Integrate dual viewer mode into App.tsx

Resolves #551
@vercel
Copy link

vercel bot commented Feb 25, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
pointland Ready Ready Preview, Comment Feb 25, 2026 11:33pm

- Replace Spark CDN/iframe approach with @react-three/fiber + @react-three/drei
- Add Splat component from Drei for proper 3DGS rendering
- Implement WASD camera-relative movement controls (flying mode)
- Add OrbitControls for mouse/touch rotation and zoom
- Upgrade Three.js to 0.183 for R3F compatibility
- Update ViewerSwitch UI with glass morphism style at top center
- Remove unused useGaussianSplat hook

Sample data: Hugging Face bonsai-7k.splat

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add GAUSSIAN_SCENES array with 5 outdoor/indoor scenes (Bonsai, Bicycle, Garden, Treehill, Stump)
- Add scene selector UI with glass morphism style at bottom center
- Store selected scene index in Effector store for persistence
- Scenes sourced from HuggingFace (dylanebert/3dgs) and antimatter15

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add URL input for loading remote .splat files
- Add file upload button for local .splat/.ply files
- Remove non-working antimatter15 scene URLs
- Keep only verified HuggingFace scenes (Bonsai, Bicycle)
- Support Skyfall-GS generated files via upload

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Set OrbitControls minDistance=0.01, maxDistance=0.5 for FPS feel
- Initialize target very close to camera position
- Remove unused URL/upload features and customSplatUrl store

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Pipeline for generating 3D city scenes from satellite imagery:
- setup.sh: Environment setup (conda, CUDA, Skyfall-GS)
- download_demo.sh: Download pre-trained PLY files from GDrive
- fetch_satellite.py: Fetch NYC satellite imagery from Open Data
- convert_to_splat.py: Convert PLY to web-compatible splat format
- train.sh: Two-stage Skyfall-GS training wrapper
- pipeline.sh: Unified CLI for full workflow
- README.md: Documentation and usage guide

Supports scalable NYC city generation with LOD

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: 3d map integration scaling using skyfall-gs

1 participant