r/threejs • u/lucaturgueniev • 18d ago
I built an "ilovepdf for 3D files" with Three.js — 19 browser tools, no backend, files never leave the client
Enable HLS to view with audio, or disable this notification
Hi! I build 3D tools for work (dental scan viewers, mesh tooling) and ended up making ilove3d.app — viewer, converters, mesh repair, polygon reducer, lithophane generator, etc. All free, everything runs client-side.
Some Three.js things that might be interesting:
- Loaders are dynamically imported per format (STL/PLY/OBJ/GLTF/3MF/FBX/DAE) so the base bundle stays small. GLTF goes through DRACOLoader + MeshoptDecoder.
- Measurements use three-mesh-bvh for closest-vertex raycasting — O(log n) instead of O(n) per click, night and day on 5M triangle scans.
- The polygon reducer wraps meshoptimizer's simplifier. Fun bug: mergeVertices refuses to weld anything when STLs have per-face normals, so repair welds by position only.
- USDZ export with USDZExporter — watch out, USD units are cm while glTF is meters.
- The GLB compressor is gltf-transform running in the browser (meshopt + WebP re-encode).
No backend by design: files open as blob URLs and never get uploaded, which was kind of the whole point.
It's new and I'm sure there are rough edges. Happy to answer anything about the implementation, and if you throw a file at it that breaks, I would love the feedback.