All selected work

06 / WebGL tool · Personal project

Viewport

Open a model. Inspect it. Keep it local.

A glTF 2.0 viewer for checking models, materials and lighting in the browser. Open a local GLB or self-contained glTF file, orbit the model and adjust the render without uploading the file.

My role
Viewer architecture, 3D rendering & interface development
Technology
Next.js / React / TypeScript / Three.js / React Three Fiber / Drei

The problem

Inspecting a 3D export should not require a desktop editor or a server upload. A useful browser viewer also needs to explain unsupported files and stay usable when loading or rendering fails.

What I built

I built a React and TypeScript interface around a React Three Fiber scene. Local files load through browser object URLs; camera fitting, orbit controls, animation playback and lighting presets make models easier to inspect.

The challenge

Models vary in scale, materials and file structure. Invalid exports, missing external textures and WebGL context loss need clear feedback rather than an unexplained blank canvas.

Implementation approach

I validate GLB headers and size limits before loading, and reject JSON glTF files that need separate resources. Model and environment error boundaries isolate failures; context monitoring supports recovery. Draco decoders are served locally, and object URLs and cloned materials are released when no longer needed.

Workflow overview

Open a model. Inspect it. Keep it local.

Viewport
  1. 01Choose & validate file
  2. 02Decode & fit camera
  3. 03Inspect materials & lighting
  4. 04Recover & release resources

A simplified view of the product workflow.

Viewport — the living-room sample model with lighting controls and camera navigation.
Viewport — the living-room sample model with lighting controls and camera navigation.

The result

A deployed viewer with local model inspection, wireframe and lighting controls, touch navigation and recovery paths for common loading failures.

Next projectBizManager