- TypeScript 92.3%
- Python 4.8%
- HTML 1.8%
- Shell 0.6%
- Batchfile 0.5%
| docs | ||
| recon3d | ||
| src | ||
| .gitignore | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| RESUME.md | ||
| tsconfig.json | ||
| vite.config.ts | ||
Deviant3D — 3D worlds from pictures
Drop any image (or a video) and Deviant3D turns it into a real 3D world you fly through — mouse-look + WASD, circle behind the subject, walk in on scenery, see the fruit from all sides. No shortcuts: every stage is real equations, real geometry, and honest labeling of what's observed versus what's synthesized.
TypeScript throughout. Runs in the browser (WebGPU for the renderer).
The pipeline
image ─▶ equationalize (field C, CDF 9/7 wavelet) the substrate
─▶ recon3d BACKEND (open-source TripoSR, MIT, local) AI GENERATES the full 3D object — real
hallucinated BACK geometry + texture
─▶ drop the subject into the PROPAGATED 360 ENVIRONMENT (ground → locked horizon + wrap backdrop
from the image's own vertical structure, varied by its mode-E field) — the scene surrounds you
─▶ analyze → light it by its own luminance + seed mode-E close-up detail
─▶ FLY IT (WebGPU): free-fly / wander / orbit, subject is a real solid you can circle
A front photo has no back data, so the unseen back is AI-GENERATED by an open-source, free
single-image→3D model (TripoSR, MIT) in a local
recon3d backend — never the front smeared onto the back. NO FALLBACKS (LAW): backend down → the
app says so loudly, never a fake. Depth + recognition measurement models + the equational 360
environment + mode-E surface detail still run; the backend just owns the real generated back.
Quickstart
# 1) the recon3d backend (generates the real back) — once, then leave running:
bash recon3d/setup.sh # venv + clone TripoSR (MIT) + deps (Windows: recon3d\setup.bat)
bash recon3d/run.sh # http://127.0.0.1:8008 (Windows: recon3d\run.bat)
# 2) the app:
npm install
npm run dev # dev server — drop an image or video
npm run typecheck # strict tsc, must stay clean
npm run build # production build (vite)
Then in the page (backend up): drop an image, click the black canvas to grab the mouse, WASD to move, Space/Shift to rise/fall, 1 / 2 / 3 to switch Free-fly / Wander / Orbit. First reconstruct downloads the TripoSR weights. See recon3d/README.md.
What it does
- Equational core — a bit-faithful port of the reference engine's CDF 9/7 wavelet field C (verified against its recorded golden reference: 1434 terms, 43.19 dB).
- Real depth (AI) — a monocular depth model (Depth-Anything class) runs in the browser on WebGPU and gives real per-pixel depth. A model selector auto-downloads + sets up the model you choose (runs locally, no server). The 3D is relieved from that measured depth — depth discontinuities cut object edges so things separate cleanly.
- AI-generated real back (recon3d) — a local, open-source TripoSR (MIT) backend turns ONE photo
into a full 3D object with a real hallucinated back — geometry AND texture — because a front photo
simply has no back data to measure. The generated subject is dropped into the 360 environment. The
backend must be running (
recon3d/setup.sh→recon3d/run.sh); if it's down the app fails loudly, no fake. (A secondary in-browser measured-depth + dynamic-smooth-equational-back path also exists and drives video Animate.) - Free-fly renderer — WebGPU, lit by the image's own measured luminance, with mode-E infinite close-up detail that never bottom-outs as you zoom in.
- Save/load — a whole world is one CRC-checked
.dv3file that carries the original byte-exact. - Video + sound — drop a video to build a world from its frames (and ▶ Animate to play them as evolving scenes); ♪ Music plays the image's own maths as an equational soundtrack; ● Record saves a WebM fly-through with sound.
Docs
- docs/TECH.md — architecture + module map + data types.
- docs/HOWTO.md — using the program, every control.
- docs/EQUATIONS.md — the maths, spelled out.
All four are also viewable inside the app — click 📖 Docs.
Honesty
Observed vs invented is always distinguishable. The front is MEASURED (depth model); the back is a same-character EQUATIONAL continuation of the image's own field, not a ground-truth photo of the reverse. The Backs toggle hides the synthesized reverse so you can see exactly what the camera really saw. Recognition and depth are measurement models — they measure, they never generate; the generation is always the image's own equation continued.