NinjaDepth RTFM
◆ All manuals →
Read the manual — 深

NinjaDepth — the depth-map manual

NinjaDepth (深 fukasa, "depth") turns any image into a grayscale depth map or a textured 3D mesh. Drop in a photo, an AI-generated scene or any picture and get back a depth PNG or a GLB you can open in Blender, Three.js or a VR viewer. It runs on Depth Anything V2 and DPT-MiDaS. This manual covers the UI, the models and the API.

What NinjaDepth is

port 18025 · /ui

A one-command monocular depth tool: a FastAPI service (depth_app.py) wrapping two state-of-the-art models, with a drag-and-drop browser UI. No accounts, no database — you give it an image, it gives you geometry. It's the estate's creative/vision utility rather than a security app.

Run it locally with one line: docker run -p 18025:18025 ghcr.io/scottgardner777/ninja-depth:latest, then open http://localhost:18025/ui.

The browser UI

/ui · drag, drop, done

Open /ui and (1) drag in any JPEG, PNG or WebP, (2) pick a model, (3) optionally raise the mesh resolution for more detail, then watch the depth map render beside your original. Brighter = nearer, darker = farther. From there you download the depth PNG or export a 3D model.

Choosing a model

Depth Anything V2 · DPT-MiDaS

Depth Anything V2 (Small) is the fast default and usually the best-looking result. DPT-Hybrid MiDaS is the alternative when you want a second opinion on a tricky image — reflective surfaces, sky, or unusual compositions where one model reads the scene better than the other. Try both; they're a toggle away.

The 3D mesh & GLB export

textured .glb · mesh resolution

Beyond the flat depth map, NinjaDepth builds a textured 3D mesh by displacing a grid along the depth channel and wrapping your original image over it as the texture, then exports a GLB. Higher mesh resolution = more vertices = finer relief (and a larger file). Open the GLB in Blender, drop it into a Three.js scene, or load it in any VR/GLTF viewer.

Driving it from the API

POST an image · get PNG/GLB

Everything the UI does is an HTTP call, so you can batch it: POST an image to the depth endpoint and receive the depth PNG, or request the mesh to get a GLB back. That makes NinjaDepth a building block — feed it frames, product shots or map tiles and pipe the output straight into a renderer or an asset pipeline.

Availability

manual ready · run it locally today

NinjaDepth is fully runnable locally right now (Docker, one line above), but it is not yet hosted at a public estate URL — ninja.ing/depth is reserved and undeployed. This manual is staged and goes live at ninja.ing/depth/RTFM when the hosted instance ships; until then it documents the local app and its API.