Skip to content

reall3d-com/Reall3dViewer

Repository files navigation

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors