# image-blaster: From a Single Photo to a 3D Environment Using Claude, World Labs, and FAL

> image-blaster is a Claude skillset that converts one input image into a complete 3D environment in under five minutes, producing geometry files, a Gaussian splat, and ambient audio by orchestrating three external AI APIs. It targets game developers and 3D artists who need a quick starting point for spatial content.

**neilsonnn/image-blaster** — An image-to-world skillset for Claude.

- Repository: https://github.com/neilsonnn/image-blaster
- Stars: 4,878 · Forks: 502
- Language: TypeScript
- License: MIT
- Published: 2026-09-23 · Updated: 2026-09-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/neilsonnn-image-blaster

## What image-blaster Does and Who It Is For

image-blaster is a Claude skillset that takes a single image and produces a fully meshed 3D environment in under five minutes. The README describes the output as "3D environments, SFX, and meshes from a single image using Claude skills, World Labs, and FAL."

The tool is designed for jumpstarting 3D work. The README lists concrete use cases: video game level concepts, childhood bedrooms for a scene, environments for robots, film location scouting, and architectural renderings. In each case, a source image goes in and an explorable 3D scene comes out, ready to embed in a game engine, DCC application, or web app.

The target user is someone who already writes code or works in a creative technical pipeline: a game developer with access to Unity, Unreal, or Godot, or a 3D artist working in Blender, 3DS Max, or Maya. The skillset also supports embedding the output in Three.js web apps or Electron apps.

Running image-blaster requires three paid external API accounts: World Labs (for the Marble environment model), FAL (for the Hunyuan 3D object model), and indirectly an Anthropic account for Claude Code itself. There is no free path through all three services.

## The Three External APIs and What Each One Produces

image-blaster orchestrates five generation models across its pipeline:

- marble-1.1: The World Labs Marble model. It takes the input image and creates an explorable 3D environment output as a Gaussian splat (.spz file) representing the static background.
- nano-banana: The default image editing model. It handles source cleanup, clean plates, and object reference images before the 3D pipeline runs.
- gpt-image-2: An alternate image editing provider. Used when the edit skill is asked to prefer it over nano-banana.
- hunyuan-3d: Tencent's Hunyuan 3D model via FAL. It creates .glb and .obj geometry files for the dynamic objects detected in the image.
- elevenlabs-sfx: ElevenLabs sound effects model. It generates the ambient looping audio and object-specific physics sound effects as .mp3 files.

The separation between static environment (Gaussian splat) and dynamic objects (3D meshes) is deliberate. The Gaussian splat provides photorealistic background depth without polygon geometry, while the object meshes can be attached to physics engines and animated independently.

## Getting Started: Clone, Install Claude, Configure API Keys

The quickstart requires four steps after cloning the repository:

```bash
git clone https://github.com/neilsonnn/image-blaster
```

Then enter the directory and run Claude (installing it first if needed):

```bash
curl -fsSL https://claude.ai/install.sh | bash
```

After Claude is running, provide the World Labs and FAL API keys when prompted. The repository includes an .env.example file showing the expected variable names:

```
WORLD_LABS_API_KEY=your_world_labs_key_here
FAL_KEY=your_fal_key_here
```

Once keys are in place, copy an image into the input/ directory and instruct Claude: "blast it and confirm each step with me." The confirmation flag lets you review each generation step before proceeding, which is useful for catching an unexpected object segmentation or an unwanted image edit before it propagates through the full pipeline.

The output lands in the worlds/ directory. The React-based viewer in app/ is excluded from Claude's reach by default via the .claudeignore file. Removing /app from that file gives Claude the ability to modify the viewer.

## Hunyuan 3D Parameters and How They Affect Output Quality

The Hunyuan 3D model exposes four parameters that control the geometry output for dynamic objects:

--face-count accepts a value between 40,000 and 1,500,000 and sets the target polygon count. image-blaster defaults to 50,000, well below Hunyuan's own API default of 500,000. Higher face counts produce more detailed meshes but increase processing time and file size. 50,000 is a practical default for game assets where polygon budget matters; 500,000 or above makes sense for high-fidelity cinematic use.

--enable-pbr controls whether PBR (physically based rendering) materials are generated. It defaults to true. Disabling it produces geometry without material maps, which is faster but produces assets that require manual texturing afterward.

--generate-type accepts Normal, LowPoly, or Geometry. Normal produces a textured mesh. LowPoly applies polygon reduction. Geometry creates a white geometry-only model with no texture, useful for blockout work. The default is Normal.

--polygon-type accepts triangle or quadrilateral and controls polygon topology when --generate-type is LowPoly. The default is triangle.

These parameters are passed through when asking Claude to run the blast operation. The README notes you can specify them explicitly, for example by asking for a low-poly asset with a specific face count.

## Embedding Output in Game Engines and DCC Tools

The .glb and .obj files produced for dynamic objects follow standard 3D interchange formats that all major game engines and DCC applications read natively. The README lists supported targets: Unity, Unreal, and Godot for game engines; Blender, 3DS Max, and Maya for DCC software; Three.js and Electron for web and desktop apps.

The Gaussian splat (.spz format) requires a viewer or plugin that understands the Splat format. Not all game engines support it natively. The React viewer in the app/ directory provides a browser-based way to inspect the splat output before embedding it elsewhere.

The repository is structured as a Bun workspace. The app/ directory is the React viewer and is kept separate from the Claude skillset files. The package.json at the root defines workspace scripts (dev, build, preview, test, typecheck) that all run via bun --cwd=app. Developers extending the viewer can work inside app/ without disturbing the skillset configuration.

## Limitations and Dependencies to Verify

image-blaster has three categories of hard dependencies that can break the pipeline. First, all three external APIs (World Labs, FAL, and Claude Code) require paid accounts with valid keys. A failed or expired key stops the pipeline at whichever step depends on it.

Second, the model identifiers in the README (marble-1.1, nano-banana, hunyuan-3d, elevenlabs-sfx) are version-specific. If any provider deprecates a model or changes its identifier, the corresponding generation step will fail. The last push to the repository was on 2026-05-15. Check that these identifiers remain valid before running the tool.

Third, the Gaussian splat format (.spz) is not universally supported across 3D pipelines. Blender requires a third-party plugin to import splats, and some game engines have limited splat support. If your target pipeline cannot consume .spz files, the static environment output is not usable without conversion.

The .glb and .obj outputs for dynamic objects are universally portable. The .mp3 audio files are standard and require no special handling.

## Conclusion

image-blaster is a practical option for game developers or digital artists who want to bootstrap 3D environments from reference photos and already hold World Labs and FAL API access. It is not the right tool for anyone without those API keys, anyone who needs output in a format other than .glb, .obj, .spz, or .mp3, or anyone working in a context where Claude Code is unavailable. The last push to the repository was on 2026-05-15. Verify that the model identifiers (marble-1.1, hunyuan-3d, elevenlabs-sfx) are still current before running a production blast.

## FAQ

### What external accounts does image-blaster require to run?

image-blaster requires three external services: a World Labs account for the Marble 3D environment model, a FAL account for the Hunyuan 3D object model and ElevenLabs sound effects, and Claude Code (the CLI) for the orchestrating skillset. API keys for World Labs and FAL must be provided when starting the Claude session.

### What file formats does image-blaster produce?

image-blaster produces .glb and .obj files for dynamic 3D objects, a .spz Gaussian splat for the static environment background, and .mp3 files for ambient and object-specific sound effects.

### How do I control the polygon count of the 3D object output?

Pass the --face-count parameter when asking Claude to run the blast, with a value between 40,000 and 1,500,000. image-blaster defaults to 50,000 faces, which is suited for real-time game assets. Hunyuan's own API default is 500,000.

## Sources

- [Issues](https://github.com/neilsonnn/image-blaster/issues)
- [License: MIT](https://github.com/neilsonnn/image-blaster/blob/main/LICENSE)
- [neilsonnn/image-blaster on GitHub](https://github.com/neilsonnn/image-blaster)
- [README](https://github.com/neilsonnn/image-blaster/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/neilsonnn-image-blaster
