dorkhub

Reall3dViewer

This is a 3DGS(3D Gaussian Splatting) viewer built on Three.js, with features for marking, measurements, preset-lod ren…

reall3d-com
TypeScript50256 forksMITupdated 1 week ago
visit the demogit clone https://github.com/reall3d-com/Reall3dViewer.gitreall3d-com/Reall3dViewer

Reall3dViewer

Reall3dViewer is a Three.js-based Web renderer for 3D Gaussian Splatting (3DGS). It focuses on large‑scene streaming rendering, adaptive LOD, and cross‑platform high‑performance optimization, providing high‑performance Web rendering support for enterprise‑grade 3DGS applications.


Ask Zread


📋 Table of Contents


✨ Features

  • Multi‑format support: .ply, .splat, .spx, .spz, .sog, .glb (with KHR_gaussian_splatting extension)
  • Built‑in measurement & annotation: distance, area, flexible labeling
  • Spherical harmonics: supports SH degree 1–3
  • Map scene rendering: GIS basemap integration
  • Per‑model independent configuration: via .meta.json files
  • Adaptive rendering quality: multiple quality levels, auto‑optimized per device
  • Multiple sorting algorithms: choose optimal strategy for different scenes
  • Large‑scene streaming: preset‑based LOD, smooth loading for 100M+ points

🚀 Benchmarked Performance

Tested on a 150‑million‑point scene: Desktop (discrete GPU) 60 FPS, iGPU laptop 30 FPS, modern smartphone 25‑40+ FPS, older smartphone 7‑15+ FPS – stable, no overheating, no crashes.

🌐 Live Demos

You can also load your own model via URL parameter:
https://reall3d.com/reall3dviewer/examples/index.html?url=your-model.sog&debug=true

⚙️ Key Configuration Parameters

Parameter Recommended Default (Mobile/PC) Description
maxRenderCountOfMobile 2 million Max rendered points on mobile, adjustable per device
maxRenderCountOfPc 3 million Max rendered points on PC
qualityLevel auto Quality level (1–9), affects rendering precision & performance
sortType auto Sorting algorithm type, choose different strategy per scene

📦 SPX High‑Compression Format

  • Size advantage: reduces file size by >95% compared to PLY, significantly faster loading.
  • Streaming rendering: native support for LOD tiling and streaming.
  • Conversion tool: cross‑platform CLI tool gsbox (portable, no installation required).
# Convert PLY to SPX
gsbox ply2spx -i input.ply -o output.spx

🛠️ Quick Start

Using the source code

# develop
npm run dev

# build
npm run build

# open a web browser to render your 3dgs model
# http://hostname:port/index.html?url=your-model-link-address

# .sog or .spx file can be obtained through conversion using the gsbox
gsbox ply2sog -i /path/to/input.ply -o /path/to/output.sog
gsbox sog2spx -i /path/to/input.ply -o /path/to/output.spx

Using the npm package example project

# install
npm install @reall3d/reall3dviewer
// use built-in viewer
const viewer = new Reall3dViewer({ root: '#gsviewer' });
viewer.addModel(`https://reall3d.com/demo-models/yz.spx`);
// preset-lod rendering
const viewer = new Reall3dViewer({ root: '#gsviewer' });
viewer.addScene(`https://reall3d.com/demo-models/lod-v1/hgd/hgd-lod.scene.json`);
// use splat mesh
const splatMesh = new SplatMesh({ renderer, scene, controls});
splatMesh.addModel({ url: 'https://reall3d.com/demo-models/yz.spx' });
scene.add(splatMesh);

📜 Changelog

See Releases for version history.

🙏 Acknowledgements

Thanks to the following open‑source projects for reference implementations:

📬 Contact & Support

  • Issues:Please submit questions and suggestions on the GitHub project page
  • Services:Model format optimization, IP protection, customization, and other enterprise services
  • Websitehttps://reall3d.com

more like this

splatter

Splatter is a WebGPU based gaussian splatting engine written in Rust

Rust76

batched-mesh-extensions

Extension methods for BatchedMesh to accelerate raycasting and frustum culling, handle different uniforms for each inst…

TypeScript133

nexus

Nexus is a c++/javascript library for creation and visualization of a batched multiresolution mesh

C247

search

search projects, people, and tags