Skip to content

aignoblin/image-blaster-unity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image-blaster-unity

Walk-around showcase of image-blaster: one photograph → photorealistic 3D scene + animated character, playable in Unity 6 and three.js.

Unity 6 (URP 17 + Aras splat) three.js + Rapier3D + Spark
Same scene in Unity 6 with URP and UnityGaussianSplatting Same scene in the three.js web demo
Editor Play mode — My project/ bun run dev in web-demo/http://localhost:5180

Same source assets in both engines. Walls, floor, windows, and snow-forest backdrop = a single Gaussian splat from World Labs Marble. Zombie + skeleton warrior are auto-rigged and pre-animated by Meshy AI from one-line text prompts via the image-blast-character skill. Furniture = [Hunyuan3D].
For a hero GIF, record ~6s walking through the web demo via Cmd+Shift+5 and drop it at docs/hero.gif.

Web demo three.js + Rapier3D + @sparkjsdev/spark splat renderer · runs in any modern browser
Unity demo Unity 6.x + URP 17 + UnityGaussianSplatting + glTFast · auto-builds scene on Play
Pipeline image-blaster does the heavy lifting — Marble (env splat) + Hunyuan3D (props) + Meshy AI (rigged character) via FAL
Input a single ~768×1024 reference image
Cost per scene ~$5 in FAL + World Labs credits

What you get

                  ┌─ 1 photo of an interior ────────┐
                  │                                 │
                  ▼                                 │
        ╭──────────────────╮                       │
        │  image-blaster   │  Claude skills that orchestrate
        │    pipeline      │  World Labs + Tencent Hunyuan3D + Meshy + FAL
        ╰──────────────────╯
              │  │  │
              │  │  └─→ Meshy auto-rigged + animated humanoid (zombie)
              │  └────→ 5 Hunyuan static GLB props (door, daybed, …)
              └───────→ Marble Gaussian splat (.spz) + collider GLB + panorama
                                │
                                ▼
                    ╭───────────────────────╮
                    │ winter-cabin scene    │
                    │                       │
                    │ Unity 6  ◀──┬──▶  Web │
                    │             │         │
                    │     same GLBs / splat │
                    ╰───────────────────────╯

Quick start

Web demo (60 seconds)

git clone https://github.com/aignoblin/image-blaster-unity
cd image-blaster-unity/web-demo
bun install
bun run dev          # → http://localhost:5180

Click into the canvas to lock pointer. WASD to move, mouse to look, Shift to sprint, Space to jump, LMB to kick a prop, R to reset props, Esc to release cursor.

Unity demo (5 min first import)

  1. Install Unity Hub and Unity 6000.2.10f1 or newer
  2. Open My project/ in the Hub (URP 17, glTFast, UnityGaussianSplatting will pull from registries automatically; first import takes a few minutes)
  3. Open Assets/ImageBlaster/Scenes/WinterCabin.unity
  4. Press PlayAutoSetupOnPlay rebuilds the scene the first time. Once it's assembled, subsequent Plays keep your edits.

Controls match the web demo (WASD + mouse + LMB to kick + R to reset).

Layout

web-demo/               three.js + Rapier + Spark splat renderer
  src/main.js           ~450 LOC — scene + physics + FPS + zombie + splat
  public/spz/           Marble Gaussian splat (.spz) served as a static asset
  public/winter-cabin/  symlink → ../My project/Assets/ImageBlaster/winter-cabin
                        (shared GLB meshes between Unity and web)

My project/             Unity 6 project (the space in the name is a Unity Hub default;
                        leaving it as-is keeps Unity import paths stable)
  Assets/ImageBlaster/
    Editor/             scene assembly + auto-Setup-on-Play + URP toggles
    Runtime/            SimpleFpsController, KickInteraction, ZombieAI, AutoKickOnStart
    winter-cabin/       Marble panorama + collider GLB + Gaussian splat asset + props + zombie
    Scenes/             WinterCabin.unity

tools/
  spz_to_ply.py         Marble .spz → 3DGS .ply
                        (workaround for the SPZFileReader OOB crash in
                        UnityGaussianSplatting when SH level == 0)
  glb_to_fbx.py         Blender headless GLB → FBX for Mixamo/Unreal pipelines

Characters from a single image

The image-blast-character skill (lives in this project's image-blaster fork at .claude/skills/image-blast-character/) takes a text prompt or a T-pose reference photo and returns an auto-rigged, auto-animated character. Tested end-to-end on two very different characters with the same skill, same prompt scaffold, ~$1 each in FAL credits:

Reference (flux-schnell T-pose) Auto-rigged 3D (Meshy v6)
Zombie T-pose reference Zombie 3D rigged
Skeleton warrior T-pose reference Skeleton warrior 3D rigged

Each character ships with rigged_character.glb (skinned mesh), walking.glb (skinned + walk clip), and running.glb (skinned + run clip). The Unity scene wires Walk/Run into an AnimatorController with a Speed parameter; the runtime ZombieAI script flips between states based on distance to the player.

Reproducing the assets

The committed assets (world-500k.ply, mesh GLBs, zombie animations) were generated through image-blaster. To regenerate or remix:

  1. git clone https://github.com/neilsonnn/image-blaster && cd image-blaster && bun install
  2. Drop your source photo into image-blaster/input/
  3. Set WORLD_LABS_API_KEY + FAL_KEY env vars
  4. claude and run /image-blast-project <world-name> followed by /image-blast-uncover, /image-blast-world, /image-blast-3d
  5. For an animated character, use the image-blast-character skill — PR pending upstream; lives at image-blaster/.claude/skills/image-blast-character/ in this project's pipeline
  6. Copy outputs from image-blaster/worlds/<world>/output/ into My project/Assets/ImageBlaster/winter-cabin/ and let Unity / web re-import
  7. For .spz.ply (needed for the Unity splat pipeline), run python3 tools/spz_to_ply.py input.spz output.ply

Approximate FAL spend for the bundled scene: $5 total (Marble world + 5 Hunyuan props + Meshy rigged character + a few nano-banana edits).

Stack & attribution

This is a showcase repo — every interesting thing here belongs to one of the upstream projects below. Please star them if you find this useful:

License

MIT — see LICENSE. Generated assets are subject to the original providers' terms (World Labs, FAL, Meshy).

About

Walk-around Unity 6 + three.js showcase built on top of image-blaster: Marble Gaussian splat + Hunyuan props + Meshy auto-rigged characters from a single photo

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors