$ show neilsonnn/image-blaster
Image-Blaster is a generative 3D asset pipeline and web viewer that transforms a single input image into a fully interactive 3D scene. The system uses Claude AI agents to orchestrate a multi-step workflow: image analysis and object extraction, background removal (plate generation), world generation via World Labs (gaussian splats, colliders, panoramas), 3D object generation via FAL (Hunyuan3D or Meshy), and sound effect generation via ElevenLabs. All generated assets are stored locally with a deterministic indexed naming convention and request metadata for resumability. The frontend is a React 19 + Three.js (R3F) application with physics (Rapier), post-processing (Bloom, DoF, motion blur), splat rendering (SparkJS), and a full scene editor with undo/redo, transform controls, and asset library. The architecture is a monorepo with a Vite dev server that serves assets and provides a CRUD API for scene projects. While the system is primarily an application, it also contains a data pipeline aspect in its asset generation scripts, which follow a consistent lifecycle of submission, polling, download, and metadata writing. The codebase demonstrates strong engineering practices with reusable patterns like the FAL queue wrapper, indexed file resolution, camera gesture hooks, and error boundaries. However, it is heavily dependent on external cloud APIs (FAL, World Labs, ElevenLabs) and Claude agent tooling, with no offline fallback or mock mode.
The LLM identified 6 files worth highlighting for reuse:
A shared library that abstracts FAL queue operations: submitting inference requests, polling for completion, downloading result files, handling data URIs and base64 metadata, and writing JSON metadata. It is used by nearly all generation scripts and can be extracted into a standalone package for any FAL-based pipeline. Demonstrates non-obvious skill in handling edge cases like resuming from active requests and stripping base64 prefixes.
Provides deterministic indexed file naming and metadata resolution: computes next available index, finds latest artifact, and reads/writes hidden `.N-slug-request.json` files. This pattern ensures idempotent asset storage and is reusable in any project that needs to version generated files without a database.
A React hook that implements right-click tumble, scroll-wheel dolly, and two-finger pinch gestures for a Three.js camera. It is self-contained, uses R3F's `useThree` and `useFrame`, and can be extracted into any R3F project requiring orbit-like camera controls with custom gesture mapping.
A companion hook to `useCameraGestures` that implements right-drag dolly (push/pull) for camera zoom. Isolated and reusable, it demonstrates a clean pattern for mapping pointer events to camera transformations in R3F.
A custom post-processing effect for motion blur using Three.js's EffectComposer. It implements a velocity-based blur by reading previous frame positions. The effect is self-contained and can be reused in any Three.js project that needs motion blur, demonstrating non-trivial shader integration.
A React component that implements a 3D boids flocking simulation with noise-driven movement, per-butterfly audio triggers, and camera shake. It is self-contained with configurable parameters and can be extracted into any R3F project needing a flocking effect. Demonstrates non-obvious skill in combining physics, audio, and visual feedback.