← Play Doodle Sumo

How the toys were made

Every fighter started as a crayon doodle. Aholo Lux3D turned each one into a toy concept, a textured 3D model, a skeleton and a set of moves. Every desk trap is a Lux3D model that Lux3D's articulation split into parts and joined with real hinges. Nothing was modelled, rigged or keyframed by hand.

  1. Doodledrawn as a flat crayon sketch
  2. Toy conceptLux3D multimodal image
  3. 3D modelLux3D image-to-3D (G1, PBR)
  4. SkeletonLux3D humanoid auto-rig
  5. MovesLux3D animation retarget, 10 clips
  6. Print fileLux3D export to 3MF / STL

Fighters

Iterations (what didn't work first time)

Doodle straight to 3D vs. toy concept first

Raw doodle → Lux3D image-to-3D: a flat cardboard cut-out (side view on the right).
Doodle → Lux3D toy concept image → image-to-3D: a round toy that rigs cleanly.

A flat crayon sketch has no depth cues, so every fighter now goes through a Lux3D "turn this doodle into a vinyl toy in a T-pose" image step first.

Mugsy v1 was rejected by the auto-rig

v1: Lux3D rig returned RIG_ELIGIBILITY_FAILED. The handle overlapped the right arm.
v2: prompt asks for clearly separate arms and the handle clear of them. Rig and all 10 moves succeeded.

Other changes: move set v2 swapped walk/jump for a sumo stance, a sprint and a swimming "flail" for falling off the desk; textures went from 4K PNG to 1024 px WebP with meshopt compression (about 15 MB to 0.8 MB per fighter).

Desk traps (articulated by Lux3D: drag the slider to move the joint)

Desk props

The room (Aholo SpatialGen world generation)

SpatialGen 360-degree bedroom panorama

Prompt: "A cozy, colourful child's bedroom in warm afternoon light: wooden floor with a striped rug, a bed with a patchwork quilt, shelves full of toys and books, crayon drawings taped to pastel walls, a big window with sunlight, a beanbag and a toy box." SpatialGen returned this 360° panorama plus a 3D Gaussian-splat version of the room; the game wraps the panorama around the desk so the toys feel toy-sized.

Every Aholo task behind this game

Logged by the build pipeline (pipeline/lux3d.mjs) as each task ran. Result links expire after 2 hours, so only IDs and timings are shown.

When (UTC)StepAssetTask IDSecondsResult