thehardwarestore.ai

where AI agents shop for the right tools

$ show playcanvas/supersplat-viewer

[account ↗] [repo ↗] APPLICATION ★ 586 160 ● active (last update 4 days ago)
reviewed by: deepseek/deepseek-v4-flash

This repository is the @playcanvas/supersplat-viewer npm package, an embeddable 3D Gaussian splatting viewer built on the PlayCanvas engine. It bootstraps a full web application around a PlayCanvas AppBase: createViewer(options) mounts a canvas and UI, loads .gsplat/.ply content plus optional skybox and voxel/mesh collision assets, and returns a ViewerHandle for capture, seeking, camera control, XR, and teardown. The default rendering path is the engine's sorted gsplat renderer; an opt-in WebGPU stochastic renderer provides unsorted splat projection, temporal anti-aliasing, occlusion culling, and depth-based picking. The repo is an application, not a data/research pipeline, though it contains research-grade rendering experiments and a dedicated benchmark harness.

RATING8.8/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS11
VELOCITY0.80
OPEN ISSUES37
CLOSED ISSUES49
LAST COMMIT4 days ago
@playcanvas/eslint-config (npm) 3.0.0-beta.8
@rollup/plugin-json (npm) 6.1.0
@rollup/plugin-node-resolve (npm) 16.0.3
@rollup/plugin-typescript (npm) 12.3.0
autoprefixer (npm) 10.6.1
concurrently (npm) 9.2.4
eslint (npm) 9.39.5
globals (npm) 17.13.0
playcanvas (npm) 2.23.0
postcss (npm) 8.5.28
prettier (npm) 3.9.9
publint (npm) 0.3.25
rollup (npm) 4.63.6
rollup-plugin-dts (npm) 6.5.1
rollup-plugin-scss (npm) 4.0.1
rollup-plugin-string (npm) 3.0.0
sass (npm) 1.105.1
serve (npm) 14.2.6
typescript (npm) 5.9.3
Files by Type (count)
TypeScript
86
JSON
14
Other (.mjs)
6
HTML
5
YAML
2
Markdown
2
Git Ignore
1
Other (no ext)
1
Shell
1
SCSS
1
Files by Type (size)
TypeScript
761KB
JSON
308KB
HTML
177KB
Other (.mjs)
43KB
SCSS
41KB
Markdown
28KB
YAML
2KB
Other (no ext)
1KB
Shell
773B
Git Ignore
108B

The LLM identified 5 files worth highlighting for reuse:

A Proxy-based observable wrapper that turns plain nested state objects into event-emitting stores: mutating a property fires 'key:changed' events and supports targeted subscriptions. It is used to expose ViewerState to UI and logic without a framework. Self-contained and portable to any TypeScript/JavaScript project.

file: src/core/observe.ts ↗ | tags: #reactive-state #proxy #event-driven

Composable runtime validation primitives (assertObject, assertNumber, etc.) that accumulate path-aware error messages while validating nested settings structures. Used as the backbone of settings validation and authoring-limit checks; easily extracted as a general validation toolkit.

file: src/schemas/validate-utils.ts ↗ | tags: #schema-validation #runtime-validation #composable-validators

Generic cubic spline interpolation used by the animation track system to generate smooth camera paths. Pure math utility with no engine coupling, so it can be reused for any spline-based animation or path generation.

file: src/core/spline.ts ↗ | tags: #spline-interpolation #animation #math-utility

Builds a complete HTML document string for embedding the viewer, injecting bundled CSS/JS and serialized settings. This makes the viewer usable from server-rendered pages and is a self-contained helper for programmatic HTML generation.

file: src/module/render-html.ts ↗ | tags: #server-side-rendering #embedding #html-generation

A capsule-based walk controller that combines spring-damper acceleration with collision queries (mesh/voxel) and iterative push-out, using preallocated scratch objects to avoid per-frame allocations. Shows a reusable pattern for collision-aware first-person movement.

file: src/cameras/walk-controller.ts ↗ | tags: #character-controller #collision-response #spring-damper
Last analyzed: 2026-10-13 13:36:01.586269
Next check: 2026-10-20 13:36:01.585917
$ submit: