cd /news/ai-tools/using-microsoft-decision-1-out-yeste… · home › topics › ai-tools › article
[ARTICLE · art-149239] src=github.com ↗ pub= topic=ai-tools verified=true sentiment=↑ positive

Using Microsoft-Decision-1 (out yesterday) to fill 3D indoor levels with assets

LevelDez, a browser-based 3D level editor released by developer yeme-oss, uses Microsoft's Decision-1 model — released the day before — to answer calibrated yes/no probabilities that the tool converts into button presses for furnishing indoor spaces, with a full autopilot run costing roughly a tenth of a cent. The project ships with about 600 hand-built Blender assets in a gothic necromancer academy pack, exports a JSON layout plus a multi-mesh GLB, and requires Node 18+ with zero npm dependencies, loading three.js from a CDN. Two optional keys, OPENROUTER_API_KEY for Decision-1 and GEMINI_API_KEY for regenerating wall art with Nano Banana at approximately $0.034 per image, are not required for the editor to work.

read13 min views1 publishedOct 11, 2026
Using Microsoft-Decision-1 (out yesterday) to fill 3D indoor levels with assets
Image: Michielbdejong (auto-discovered)

Design richly furnished indoor spaces in your browser, hand the boring parts to a yes/no AI, and export a JSON layout plus a multi-mesh GLB your engine can load.

demo.mp4 #

demo-scifi.mp4 #

Greyboxing a believable interior is slow: a floor plan, forty doors, a hundred props, lighting, and the hundred small decisions that make a room feel lived in. LevelDez automates those decisions with a small, cheap model and a library of real assets, and keeps you in control with an ordinary editor and undo.

  • 🏰 One sentence → a whole building. Corridors, side wings, big halls and rooms of every size, furnished, lit and decorated.
  • 🧠 A yes/no model as the "hands". MicrosoftDecision-1 answers calibrated probabilities. LevelDez turns them into button presses (a full autopilot run costs roughly a tenth of a cent).
  • 🎨 Every room has an identity. Per-room wallpaper or stone, floor, wainscot, trim and a coloured mood light, chosen to suit what the roomis .
  • 🪑 Rooms are composed, not sprinkled. Reading nooks, altars with candelabras, lab benches with cauldrons, crypt rows, classroom rows, ritual circles.
  • 📦 ~600 hand-built assets (a complete gothicnecromancer academy pack), built in Blender, loaded lazily so the editor stays fast.
  • 🎬 Cinematic viewport. Ambient occlusion, bloom, colour grading, dust, flickering candlelight and soft shadows.
  • 🧰 Zero npm dependencies. One small Node server and static files.

The quickest is that you vibe your own stuff (took me a few hours), but I'm sharing my project so that my claims are not empty-handed and it can be tried out.

git clone https://github.com/yeme-oss/LevelDez.git
cd LevelDez
cp .env.example .env        # optional: add your keys (see below)
npm start                   # -> http://localhost:5173

Requires Node 18+. No npm install is needed. three.js is loaded from a CDN, so the first load needs an internet connection.

Then, in the browser:

  1. Click Generate layout (choosesmall / medium / large ) in the header.
  2. Open the Decision tab, tickall rooms and pressAutopilot .
  3. Orbit with the mouse, click props to move them, Export GLB when you are happy.

Prefer to drive it with words? Type this into the Go box instead:

Generate a large, complex gothic necromancer academy: a main corridor with side corridors and many rooms of varying sizes (classrooms, dormitories, libraries, alchemy laboratories, a crypt, a ritual chamber, chapels and a grand hall). Use the gothic style and asset pack, give every room a different wallpaper and floor, and furnish it richly with composed setups, gothic architecture (pillars, window tracery, ceiling vaults, cobwebs), candlelight and lighting, curtains, paintings and tapestries on the walls, decorated surfaces and lived-in clutter.

then press Autopilot (all rooms) to let Decision-1 finish what is still missing. The same prompt is saved in promptGO.txt.

Both keys are optional. The editor works without them.

Variable Used for Without it
OPENROUTER_API_KEY Decision-1: the Go box,Autopilot ,Critic ,Ask and per-room theme choice. The key stays on your server and is never sent to the browser. Keyword routing and rule-based autopilot still work.
GEMINI_API_KEY Regenerating wall art and textures with Nano Banana (≈ $0.034 per image). Nothing: the generated images already ship in assets/ .

Other optional settings: DECISION_MODEL, PORT, HOST, BLENDER_PORT, LEVELDEZ_ROOT (see .env.example). Set them in .env or as real environment variables (which take priority). Never commit .env.

Security defaults. The server listens on 127.0.0.1 only. The raw Blender bridge (/api/blender, which can run arbitrary Python inside a connected Blender) is disabled unless you set LEVELDEZ_ALLOW_RAW_BLENDER=1.

| Add rooms | + Room (pick a type), theAdd adjoining room button, orGenerate layout for a whole floor plan. | | Place furniture | Click an item in the left palette (searchable, grouped by pack), then click inside a room. Wall, ceiling and tabletop items snap to the right surface. | | Edit | Click a prop to select it: drag the gizmo to move or rotate (snaps to 5 cm / 15°), or edit numbers in Inspect . Rooms have name, size, height, theme, and doors/windows you can add or remove. | | Shortcuts | Del delete ·R rotate 45° ·T top view ·Esc deselect ·Ctrl+Z /Ctrl+Y undo / redo | | View | Top ,Ceiling (show ceilings),Cutaway (hides walls facing the camera),Fx (cinematic rendering). | | Styles & packs | The style dropdown ( modern ,scandi ,rustic ,industrial ,luxe ,gothic ) and the pack dropdown swap whole palettes and model sets. | | Start over | New gives a blank level; every change, including New, is undoable. |

There are about 35 procedural furniture types that work with no assets at all, and any GLB dropped into assets/ automatically overrides or extends them (see Asset packs).

microsoft/microsoft-decision-1 is not a chat model. It reads a state and returns calibrated probabilities for fixed answer options. LevelDez uses three question types through OpenRouter's decisions endpoint, and batches many questions into one request:

Type Returns Used for
noul probability of yes "should the Add rug button be pressed?"
choice probability per option style, room type, target room, wall/floor theme per room
score probability per level rating how furnished a room feels ( empty → cluttered )
flowchart LR
  U[You: Go box / Autopilot] --> A[Analyse each room<br/>fill %, lights, art, problems...]
  A --> G{Cheap local gates}
  G --> D[Decision-1<br/>batched yes/no panel]
  D -->|p ≥ 0.5| B[Press buttons<br/>furnish, compose, light, decorate]
  B --> C[Critic: score empty..cluttered]
  C -->|not done| A
  C -->|done| E[Export JSON + GLB]
  • Go box: free text → one batched yes/no panel overevery button → presses the approved ones in a sensible order →choice questions fill in the parameters (style, room types, size, which room).
  • Autopilot: per room, local rules decide which questions are even worth asking; Decision-1 supplies thetaste ; approved buttons are pressed; thecritic decides when to stop, or to fill or declutter.
  • Vary surfaces: onechoice per room (type, size and neighbours) with a penalty for repeats, so adjacent rooms get different finishes.
  • Ask: any yes/no question about the selected room, answered as a percentage.
  • No key or API down? Everything falls back to keyword routing and gate-only autopilot.

Decision-1 presses the same buttons you can click yourself.

Group Buttons
Layout Furnish core · Compose room · Fill empty space · Declutter · Fix overlaps · Snap to walls · Face seating · Clear room
Furnish Add rug · Bedside tables · Style surfaces · Hang wall art · Gothic architecture · Add clutter · Add plants · Add lighting · Add curtains
Structure Add window · Add door · Resize room · Add adjoining room · Generate layout
Style Restyle · Apply asset pack · Vary surfaces · Mirror layout
  • Generated floor plans. A main corridor, side corridors, big end halls, and rooms of varying size on both sides of each corridor. Doors line up through the double walls, windows appear only on exterior walls. 15 room types: living, bedroom, dining, kitchen, office, bathroom, hall, library, laboratory, crypt, chapel, corridor, classroom, dormitory, ritual.
  • Room themes. Wall finish (damask, stone, brick, tiles, panelling…), floor (marble checker, herringbone, cobble, plank…), wainscot, chair rail, crown moulding, trim colour and a mood light, picked per room type.
  • Compose room. 19 setup "kits" place cohesive clusters. Each is tried on up to 10 spots and the best score wins: fronts of cabinets, altars and hearths stay clear, walkways between doors stay open, setups spread out, wall pieces hug walls.
  • Architecture pass. Pillars, pilasters, window tracery and door surrounds scaled to each opening, ceiling vaults, cobwebs and floor sigils.
  • Lived-in layers. Decorated tabletops, wall art, curtains, rugs and floor clutter such as barrels, bone heaps and statues.
  • Lighting. A fixed pool of 18 point lights follows the camera focus: room mood lights plus candles, braziers and fires, with flicker. The light count never changes, so there are no shader recompiles.
  • Cinematic viewport (Fx ): MSAA, ground-truth ambient occlusion, bloom, split-tone grade with vignette and grain, drifting dust, soft shadows from the nearest lights. Props get a box-mappeddetail map (wood grain, stone, scratched iron, fabric…) plus grime that darkens low on walls.This is a viewport shader: exported GLBs keep plain materials.

Sub-folders of assets/ are packs. Drop in GLBs, optionally describe them in a manifest.json, and pick the pack in the header. GLBs without an entry are auto-registered, with placement and light guessed from the file name. GLBs download lazily, only for props a level actually uses, using the bounding boxes in the manifest.

Field Meaning
as Variant of a base type ( bed ,wardrobe ,rug …). The layout logic keeps working on the base type; the model is swapped in and fitted to its footprint.
replaces Pack-only type that stands in for a base type ( candelabra forfloor_lamp ,arched_mirror formirror …).
place /y floor ,wall (mount height),ceiling , orsurface (sits on tables and shelves).
tags wall-hug ,holds-decor ,light ,altar ,curtain ,decor … (these drive the buttons).
light ,lightColor ,lightY Glow: adds a point light above the model.
tint Palette key that recolours materials named tint_* .
Group Built Contents
Architecture 87 columns, pilasters, arch panels, window & door surrounds, ceiling vaults, cobwebs, wall weapons, skull mounts, chains, floor features, daises
Furniture 95 bed, wardrobe, bookshelf, table, chair, throne, pew, desk, chest… variants; cabinets, lecterns, organs, bath and kitchen pieces
Sacred & death 65 altars, sarcophagi, coffins, tombstones, crypt niches, statues, slabs, fonts, reliquaries, bone heaps
Alchemy 95 cauldrons, benches, apparatus, 12 potions, 8 specimen jars, herbs, grimoires, scrolls, orbs, skulls, cages
Lighting 41 candelabras, chandeliers, sconces, candle groups, lanterns, braziers, floating lights
Study 27 book stacks, globes, orrery, astrolabe, telescope, hourglasses, map table
Decor 75 urns, chalices, ravens, barrels, crates, rugs, banners, mirrors, clocks, masks, drapes
Academy 30 student desks, podiums, slates, trophy cases, robe mannequins, racks, trunks
Composition 11 fireplaces, wall-length bookcases, kneelers, grand candelabras
Wall art 50 paintings, tapestries and stained glass, generated with Nano Banana

Plus a library of 49 textures (walls, floors, wainscots and neutral detail maps), all generated and made seamless by script. tools/gothic/PLAN.md is the full checklist of every item.

Built from docs/make-a-pack-prompt - Scifi.md as a test of the make-a-pack prompt. Pick style: scifi (it selects the pack and eight sci-fi room themes: hull white, bridge navy, neon noir, clean lab, cargo grey, hydroponic green, crew quarters, medbay).

Group Built Contents
Furniture (variants of base types) 134 beds, sofas, armchairs, chairs, tables, desks, storage, rugs, mirrors, lamps, plants, curtains, bath and kitchen pieces
Signature props 86 cryo pods, bridge consoles, holotables, reactor cores, server racks, medbay, drones, vending machines, hydroponics, teleporters, android mannequins
Lighting 28 neon signs, light strips, wall lights, beacons, holo lamps
Wall 34 holo posters, screens, vents, shelves, pipe runs, signage, control panels
Decor 22 datapads, holo cubes, mini bots, vials, ship models, cables
Architecture 20 pillars, pilasters, door and window surrounds, ceiling details, floor decals

Generate or extend it with tools/scifi/load.py (same resumable workflow as the gothic pack; PLAN.md lists every item). Wall and floor textures reuse the neutral texture library, tinted per theme.

You don't need to learn the toolchain. Any genre works (cyberpunk noodle bar, Mediterranean villa, haunted motel, alien hive…):

  1. Open docs/make-a-pack-prompt.md and fill in the genre, a pack name and a size.
  2. Paste it into an LLM agent that can run code and drive Blender (for example Claude Code with a BlenderMCP server, started in this folder).
  3. The agent plans the asset list, builds the GLBs, writes the manifest.json , then opens the editor and checks its own work.
  4. Pick pack: <your name> in the header and pressGenerate layout .

The prompt is resumable (it keeps a plan and a progress file), and it can add AI wall art if GEMINI_API_KEY is set. Want to see how the gothic pack was made? The recipes live in tools/gothic/ (PLAN.md lists every item), and python tools/gothic/gen_art.py / gen_textures.py regenerate its paintings and textures (≈ $0.034 per image via Nano Banana).

  • Export JSON: the full level, re-importable (Import ). Also visible and editable in theJSON tab.
  • Export GLB: every prop is a named node with its own meshes; shared materials are deduplicated. Both exports downloadand are copied toexports/ .
  • Open in Blender: theBlender tab can push the exported GLB into a running Blender.
{
  "version": 1, "meta": { "name": "Nekro", "units": "m" }, "style": "gothic", "pack": "gothic",
  "rooms":    [{ "id": "r1", "name": "Library 1", "type": "library", "x": 7.25, "z": 3.9, "w": 5.5, "d": 5.1, "h": 3.4,
                 "theme": { "key": "scholar_green", "wall": {...}, "floor": {...}, "wains": {...}, "mood": { "color": "#ffb35a", "i": 0.55 } } }],
  "openings": [{ "id": "o1", "room": "r1", "wall": "N", "type": "door", "t": 0, "w": 0.95, "h": 2.1 }],
  "props":    [{ "id": "p1", "type": "bed", "room": "r1", "x": 1.2, "z": -0.4, "y": 0, "rot": 90, "scale": 1, "variant": "gothic_bed_coffin_bed" }]
}

Rooms are axis-aligned rectangles in metres (x, z = centre). rot is degrees about Y; host links a lamp or vase to the table it stands on.

server.js                  zero-dependency Node server: static files, Decision-1 proxy, asset scan, exports
public/
  index.html  app.js       the editor (three.js scene, UI, undo, export, Fx stack)
  level.js                 level model, geometry, analysis, every button, layout generator, composition kits
  decision.js              Decision-1 client: router, autopilot, critic, theme chooser
  catalog.js               procedural furniture + lazy GLB , variants/replacements, detail shader
  themes.js  surfaces.js   room themes and textured wall/floor materials
assets/
  gothic/                  ~600 GLBs + manifest.json + art/ source images
  textures/                wall, floor, wainscot and detail textures + manifest.json
tools/
  blender_kit.py           modelling kit for BlenderMCP
  gothic/                  recipes, generator core, plan, Nano Banana scripts and prompts
docs/screenshots/          images used in this README
  • Models are stylised bevelled primitives (roughly 1–3k faces each), not sculpted meshes. The generators are built so better assets can be dropped in.

  • Rooms are axis-aligned rectangles; there are no L-shaped rooms or multiple floors yet.

  • Fx, detail shaders and mood lights are viewport only . Exported GLBs carry plain materials and no lights.

  • Decision-1 is an alpha-endpoint model; its request format may change.

  • Decals and story props (stains, wax drips, cracks, open books, spilled potions)

  • Decision-1 as an art director with measured composition checks (blocked windows, focal point, crowding)

  • Blender beauty renders and baked lighting for the exported GLB

  • Non-rectangular rooms, stairs and multiple floors

  • Built with three.js andBlender (driven through a BlenderMCP add-on).

  • Editing decisions powered by Microsoft Decision-1 viaOpenRouter .

  • AI-generated images: the 50 paintings and all textures were generated with Google's Nano Banana. Check Google's terms before redistributing them commercially.

Public domain under the Unlicense: use, modify and sell it for any purpose, no attribution needed. (The Nano Banana images carry the caveat above.)

I'm on Patreon. I share insights about AI ventures, practical hands-on stuff. No fluff.

── more in #ai-tools 4 stories · sorted by recency
── more on @leveldez 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/using-microsoft-deci…] indexed:0 read:13min 2026-10-11 · —