Blank is a 3D engine for
living and breathing worlds.

It starts with
a sentence.

Tell your AI what you want to make.
It writes a short recipe, and Blank builds it in 3D.

  1. planet.json
    {
      "id": "planet",
      "material": "blue",
      "geometry": {
        "kind": "ico_sphere",
        "radius": 0.9
      }
    }

    1 Your AI writes the recipe.

    A recipe is a small text file. It lists each part by name, with its shape, colour and movement.

  2. Blank engine A simple line drawing of a cube passing through layers.

    2 Blank builds it.

    The engine turns the recipe into a 3D model, then renders its light, colour and motion.

  3. your-creation.glb The finished cobalt planet, ready to export.

    3 You take it with you.

    Export a .glb file for your game or app. Keep the recipe, and you can change it later.

Change one thing
at a time.

“Turn the blue to pink.”
planet.json The original cobalt planet with its ring and moons. Before
planet.json The same planet in pink. Its ring, moons, shape and motion are unchanged. After one edit

Only the colour changed. The shape, the moons
and the motion are exactly as they were.

Make the orbit slower.

Movement is part of the recipe too. Here one number changed, and the moons now take 12 seconds to go around instead of 6.

orbit.json Before: 6 s per orbit
orbit.json After: 12 s per orbit
orbit.animation.angular_velocity 1.047 → 0.524 rad/s

Light by design.

Each recipe sets a limit on triangles, so the files stay small enough for games. These five are real Blank exports. Open one in any 3D viewer.

Rust at the core.

The engine is written in Rust. The same code renders and exports, and it drew each frame of this clip.

Rust, simplified
// Load the recipe, then render each frame.
let world = Document::import_json(&recipe)?;
let mut renderer = Renderer::new(&gpu, format).await?;
renderer.replace(&world, root)?;

for frame in &frames {
    let pixels = renderer.capture(size, camera, frame.seconds, None)?;
    save(frame, pixels)?;
}
tide.json · 144 frames Rendered by Blank, one frame at a time.

Coming soon.

Blank is not available to the public yet. We are testing it privately, and it will be available very soon.