A workbench that turns 2D photos into inspectable 3D assets
React prototype that wires multiple image-to-3D APIs into a single presentation-ready studio.

What it does 3DCellForge is a React + Three.js workbench for uploading reference images or GLB files, generating 3D models through external providers, then inspecting, comparing, and presenting the results. It keeps a local model library in IndexedDB, exports screenshots and GLBs, and includes a demo mode with cinematic camera paths tailored to asset type—road push-in for cars, flight pass for aircraft, studio orbit for organic specimens.
The interesting bit The project treats multiple competing image-to-3D services as interchangeable backends. It supports Hyper3D Rodin, Tripo, Fal.ai (with model selection across Hunyuan3D v2, TRELLIS, TripoSR, and others), local Hunyuan3D, and even a browser-side JS Depth fallback—then caches generated GLBs locally so you aren’t burning API credits on every reload. Optional OpenAI vision classification improves prompts when configured.
Key highlights
- Six generation modes including cloud APIs, local server, and a layered PNG depth fallback
- IndexedDB persistence with localStorage fallback; models survive refresh
- Quality scoring on generated GLBs: triangle count, texture count, file size, demo readiness
- Demo mode hides chrome and runs asset-aware cinematic camera animations
- Playwright visual regression tests for workbench, library drawer, and demo mode
- API keys stay server-side in
.env.local; frontend never sees them
Caveats
- Requires Node backend running separately (
npm run dev:api) for generation features; frontend alone only handles local GLB import - Hunyuan3D local mode expects a specific API shape (
POST /send,GET /status/:uid) that you must provide yourself - Demo video thumbnail exists but the actual video is a local MP4, not a hosted stream
Verdict Worth a look if you’re building 3D asset pipelines and want a unified interface to compare multiple generative providers. Skip it if you need a finished product—this is a well-structured prototype with real provider integrations and thoughtful caching, but still a prototype.