// Overview
Glance3D is a tiny standalone viewer for glTF and GLB files. There's no editor, no scene panel and no installer: drop a model on the window and look at it. It's about 1,800 lines of C# on a hand-written OpenGL renderer, small enough to read in an afternoon. It runs on the desktop and, compiled to WebAssembly, right here on this page.
The button loads Glance3D itself: the same C# loader, camera and shaders as the desktop app, compiled to WebAssembly and drawn with WebGL2. Drop your own .glb on it, or open it full screen ↗. Files never leave your browser.
// Download
One self-contained executable per platform (x64; Apple Silicon on macOS). No .NET install needed. Run glance3d model.glb or drop a file on the window.
The builds aren't code-signed yet, so SmartScreen may warn on first run (More info → Run anyway). On macOS, clear the quarantine flag with xattr -d com.apple.quarantine glance3d.
Release notes.
// Controls
// Reads
| FormatsglTF 2.0 | Binary .glb and JSON .gltf with external or embedded buffers. In the browser: .glb. |
| SceneNode hierarchy | Node transforms are baked in at load, mirrored instances keep their winding, and triangle strips and fans are expanded. |
| MaterialsBase color | Texture × factor × vertex color. Alpha mask and blend, double-sided, and KHR_materials_unlit. |
| Pixel artNEAREST samplers | A model that asks for nearest filtering gets it, so palette-textured low-poly art stays crisp. |
| CharactersSkins | Skinned meshes are posed by their joints and shown in bind pose instead of falling apart at the origin. |
| Not yetRoadmap | Animation playback, morph targets, PBR metal/roughness, KTX2/WebP textures. |
// Thumbnails
| Headless | glance3d chair.glb --capture chair.png --size 1024x1024 --view -90,-10 renders one frame offscreen and exits. |
| Framing | The camera fits the model's bounding sphere to the narrower field of view at any aspect ratio. |
// Build from source
| Requires | .NET 8 SDK and a GPU with OpenGL 3.3 |
| Run | dotnet run --project src/Glance3D -- model.glb |
| Web | dotnet publish src/Glance3D.Web gives a static site. No extra workloads are needed. |
| Layout | Glance3D.Core holds all viewer logic. The desktop (OpenTK) and browser (WebAssembly) hosts are thin shells. |
| Tests | xUnit, headless: camera math, projection and culling, picking, input mapping, loader orientation and winding, CLI, PNG output |
| CI | Builds and tests on Windows, Linux and macOS. Tagged releases publish all three binaries, and every push to main redeploys the browser build. |
| License | MIT |