Repository navigation
Floor plan → 3D scene → photoreal, now agent-ready.
Added
- Floor plans read like an architect reads them.
plan_knowledge.pyencodes drawing conventions
(ГОСТ 21.501 / 21.201, ISO 4157/7519): room labels vs. level marks (+13,50), ceiling heights (h=3000),
opening sizes (11x14), window/door marks, fire ratings, section marks, dimension chains. Multilingual room
abbreviation dictionary (FI/PL/RU/UK/EN/DE). Mis-read OCR numbers that are really level marks no longer
become room areas. - Room partitioning by neural walls. A VLM grounds every room label on the image; seeds are refined by
OCR area labels;cubicasa-service /partitionfloods rooms between the neural walls (doors closed, exterior
masked, terraces from Outdoor polygons, unseeded pockets auto-filled). Seeds are cross-checked by printed
area vs polygon area (bad seeds rejected, up to 3 rounds). 13/13 rooms on the test plan, areas within ±0.5 m². - Whole-floor 2.5D scene for rendering (
interior-render/app/floorscene.py): walls, openings, rooms and
typical furniture become vertical prisms; a column ray-caster produces depth/material maps from any camera —
you see the next room through a doorway and the outside through a window. Equirectangular 360° variant. - Shot planner (
shots.py):wide_corner,toward_window,from_door,through_door(enfilade views
from the neighbouring room),along,pano. Light is described from the real window positions relative to
the camera; neighbours behind doors are named. Style presets ×7, mood presets ×6, two SDXL prompts
(scene / style) to stay within CLIP limits. - SDXL engine: RealVisXL 4.0 + ControlNet-depth (
/shot,/restyle), seamless 360° panoramas via
circular convolution padding, panorama viewer, per-shot camera map drawn on the plan. - glTF 2.0 export (
glb_export.py,GET /api/jobs/{id}/scene.glb): walls with cut openings, door leaves,
window glass and sills, per-room floors/ceilings, furniture, nodeextraswith room metadata — opens in
Blender/Unreal/Unity/Three.js. Built-in GLB viewer at/glb/{id}/{floor}. - Photo tools (
type=photo): a VLM lists personal items and clutter with boxes (two passes, merged),
SAM2 refines masks, LaMa removes them; thentidy(img2img cleanup, same room),restyle(MiDaS depth →
SDXL redesign with the same layout),declutterorenhance. Removal overlay + full room inventory for
handover acts. - Render-only jobs on an analysed project (
POST /api/jobs/{id}/shots) — no re-analysis. - MCP service (
services/interior-mcp): streamable-HTTP MCP server exposing the whole pipeline
(submit_plan,job_status,get_analysis,get_scene_3d,get_scene_glb,render_shots,
list_images,get_image,submit_photo,get_photo_report,my_usage) with API keys shared with the
gateway, per-key ownership and daily limits, HMAC-signed result links. Client guide included.
Changed
- Broker
/api/projectacceptsmood,engine,scenarios,max_shots,pano,user_style; the queue
console has selectors for all of them plus the photo modes. - Per-room crops for VLM reading fade everything outside the room polygon so neighbours don't leak into the reading.
- Category resolution counts kitchens/bathrooms from partitioned rooms; a single-kitchen dwelling is never an
"apartment-building floor".
Fixed
- Scene JSON now stores the source image and analysed rooms per floor, so later render jobs and GLB export
work after a broker restart. release-time regressions guarded: syntax checks for the broker and render server before restart.
Docs: INTERIOR3D.md · MCP.md · full CHANGELOG.