CHANGELOG
Work log.
Short working notes, one per shipped day, newest first.
Terrain from elevation data with provenance and visual checks, ready for production planning. Authored interior showcase: prominent entrance with connected approach, clearer arrival flows, differentiated offices across floors.
- Agent uses the room
Room agent: walks to the pointed object, opens and closes doors and windows, picks up and puts down books, sits or lies on the sofa. Every object carries affordances, articulation and convex collision. Building restyle by prompt. Floor exported to USD and opened in Newton.
- Landing live
Landing: full-bleed 3D hero; object section is a real 3D room with a card per object. Catalogue pieces publish agent affordances (sit, write, look); the data travels into the prepared interior. Deployed.
Landing embeds the real viewer on a pipeline-produced district, full city loading on demand, 3D gallery of city and floor plan. Whole-building authorship covers every facade, the roof and its tank; arched windows and adaptive shaft composition as orders.
AI architect directs a building through explicit orders: facade composition, pilasters, entrance carpentry, cornice, crowning, arches, roof with water tank, relief, regional materials. Procedural tools build each order; an independent visual critique accepts or rejects it.
AI visual judge loop: render a building from chosen viewpoints, compare against a typed reference under a derived tolerance, score with a deterministic signal before any model opinion. Data-level diff between two versions of one building.
Facade composition exposes author-adjustable weights. Inferred versus observed program flagged in the data. Ground-floor uses extended (supermarkets, shops, schools, cafes, bars) with minimum sizes that reject what does not fit. Footpaths as their own kind.
- Public demo
Whole city at 60 fps as instanced buffers per block. Public demo link with three cameras: 2D plan, 2.5D, 3D. Roads as continuous surfaces with junctions and lane markings; water and grass as such; roof caps; interior walls with a material per side.
Real heights and landmark identity from open data. Rivers and lakes enter with a shoreline; greenery and street objects from the extractor. Compiled area boundary derived from the built fabric. Ground floors rendered in one batch.
Units cut from each floor by area and split into rooms; bathrooms grouped into service cores; furniture placed inside the real room polygon. Ground-floor use taken from observed businesses. Ground, sidewalk and road share one material table.
- Product named Perplace
Corridor spine and zone blocking for interiors; floor programs generated from each building's population and role. 2D block plan draws rooms, furniture footprints and entrances. Walkable graph shipped as data with a contract for agents. Product named Perplace.
Building use propagated to every room in the plan data. Typed top-down 2D block plan adopted as the interior review artifact, with a pass/fail gate. Landing rewritten as one thesis with a live egress query.
Roofs derived from each building's mechanical and core zones. Floor plans know their level; cores against blind walls; egress follows the building program; occupants derived from nearby jobs. Street objects declare their scale in the data.
One object per building: the interior references the facade's walls and openings instead of rebuilding them. Interior viewer shows the real facade cut at floor level with its material. Street doors, facade colours and street furniture sourced from observed data.
- Interiors become the objective
Interior set as the primary objective. Openings born as provisions in the IFC sense; the exterior accepts or rejects them, so facade and interior share one wall. Several apartment types per building. Core programmed before placement. Typed street-to-room path.
Interior programs: one specification derives dozens of room programs as a graph. Viewer: enter a floor from the street, ride the elevator, toggle slabs per building, click a module for its typed record. A design request alone rebuilds a building exactly: reproducible worlds.
glTF export: every node carries the id of its typed record; mesh to data round trip in the viewer. Whole cities at a stable frame rate; image-based lighting with PBR by default. Sidewalks as real surfaces from facade line to kerb. Each building signs its entrance portal.
Authored balcony end to end into geometry. Each facade face records two facts: the domain that selects it and the scope it measures. Interior inventory: room graph populated, doors flush with walls, export wired for game engines.
Any bounding box drawn on the viewer map compiles as a job. Cornices declare their anchoring edge. Balconies and flying volumes placed by a dedicated placer under the overhang rule. Author vocabulary generated from the engine itself: prompt and geometry cannot drift.
Vertical rhythm cites the floor stack: a band repeated in height points at real floors. Massing refusals are typed and name the rejected element. Review loop scores only judged rounds. Still-camera page for before/after pairs of one building.
AI visual judge scores rendered mass without a reference photo, from a rasterised silhouette of the engine's own projection. Authored documents carry a content hash; stale results are caught before a run. Facades derive from the author's axes, not a preset pack.
Single source of truth for rhythm per wall: bay grids reconciled against real openings; defaults live on design axes, not static archetypes. Party walls on a neighbour's line carry no openings.
More vocabulary reaching geometry: arched heads, niches with depth, wall panels with depth by region, corner prism variants, balconies as boxed volumes. Sidewalk overhang as a per-street rule. Facade packs carry profiles, not meshes.
Author vocabulary: cornice, canopy with overhang, signed depth for facade elements, dedicated roof section. Rules written per face, so street fronts and party walls diverge. Leftover rhythm resolves at the top floor.
A building always renders: a rejected facade request degrades by cell or by face and keeps the building. Rejections are typed records with a reason catalogue. Viewer colours each facade module by author: AI architect or procedural engine.
Staged authoring cycle: design, elevation, deterministic judge checking each request against built geometry. Facade contract published as a generated schema. Mapped where CGA, USD and IFC cut between primitives and named elements.
- AI architect authors a building
AI architect authors a building: writes the partition tree; the compiler verifies it and turns a valid tree into geometry. Structural grid and floor heights set in the same document. Facade rhythm carried as one typed object.
Declared ground-floor uses emit their elements: awnings, roll shutters, theatre marquees; shops distinct from lobbies. Mechanical floors as louvre bands. Roofs place declared tanks and penthouses. Wavy parapet profile from intent to geometry.
Masonry facades arch their own openings: arched heads with glazing, built from level courses. Ground floor follows building type: walk-ups get solid bases, shops align to the bays above. Design decisions reviewed in the 3D viewer, not on drawings.
Continuous strip opening type: curtain walls and ribbon windows render as real glazing. Partition tree, the structural recipe behind each facade, persisted as its own artifact. Vocabulary covers mansards with dormers, faceted curved fronts, overhanging masses.
Per-building facade parameter vector with provenance per axis; viewer paints the city by any axis. Curtain walls at real glazing ratios; styles differ by crown and moulding. Procedural pipeline documented end to end after a facade grammar survey.
Facade derived from mass: every wall the mass has is drawn, blind party walls included; the city reads as closed volumes. Parapet belongs to the mass. Viewer opens on the full city with a layer panel organised by question. Binary geometry by default.
City streaming by distance: buildings loaded and released, geometry resident on the GPU and dropped from main memory. Compact columnar binary format for building geometry. LOD switch rewrites only the facade face that changes.
- Whole city in one run
Full-city facade emission in one run. Viewer: per-building LOD, draw calls collapsed, shadow maps reused across frames. Facades follow final mass, rooftop volumes on the roof. Survey of how procedural tools resolve facades, feeding the grammar.
Bay rhythm fixed once per footprint, consistent around corners; corners close with a solid pier. Cornices level along the facade. Vertical cores at authored position and real size; vertical programme carried in the building data.
Interiors on every floor, with the room and transition graph published in the data. Slabs as objects with real elevations. Whole-city scene in the viewer with streets and per-building level of detail.
Openings placed on real wall faces; block corners resolved as clean geometry. Every artifact records the build that produced it, exposed in the viewer. Interior layout starts from each floor's arrival point, so upper floors plan like the ground floor.
Zoning envelopes from one formula per jurisdiction; each building publishes its cap; viewer draws the envelope as a toggleable volume. Street width measured face to face. Interiors follow the eroded facade ring. Lower memory per block.
Interiors visible in the viewer for every compiled building, with stage, subject, filter and level controls. Single-building recompilation without touching its area. Incremental loading between neighbours. Room proportion rules gate plans.
One floor plate per level for stepped masses; setbacks pass intact from massing to facade. Convex corners get a built angular sector with a wall-scaled pier. Courtyard plates anchor the core in solid floor. Mass and skin compile as separate stages.
Building identity resolved at compile time: map rows that are parts collapse into their parent; the world lists whole buildings with parts attached. Height, storey count and mass arbitrated from a single source. All viewers read one shared model.
Prose facade intent parsed into typed traits consumed by the grammar. Moulding family selected per element. Corner mitres replace overlapping volumes. Building coordinator logs clashes between competing proposals.
- Procedural facade grammar
Procedural facade grammar: base, shaft, crown; bay rhythm, mouldings, cornices, joinery. Composed per building and along the whole block face as one street wall. Viewer shows the street wall and the provenance of each height.
Wall domains per building: street, party, rear. Entrance candidates derived from them and consumed by the interior. Block activity mix from places data. Natural-language planner captures world intent; geometry stays deterministic.
Street network and footprints reconciled into one fabric: right of way preserved, sidewalks inset, each building assigned to its nearest street. Map evidence scored by confidence. AI visual judge over whole blocks where source data is weak.
Place search and in-situ entry with a layered glTF. World skeleton typed: footprints, streets, parks, entrances. Semantic context feeds the AI architect decision layer. Envelope constraints bind each building to its lot.
- First product demo
Demo path: pick a building on a real map, orbit it, interior compiled on demand. Building kit extended: street entry doors, switchback stairs, ceilings, role-aware doors, room-aware windows, wall finishes, flooring, ceiling fixtures.
Occupancy drives furnishing: household profiles compile to furniture programs; placement by spatial relations, bound to 3D assets; finish palettes, electrical and plumbing layers. Whole-area structural bake. Lobbies, stairs and corridors modelled as public space.
Typed interior model: wall thickness, day/night zoning per room, junction checks. Outputs from the same model: architect and wall plans, 3D extrusion with slabs and door frames. L-shaped plates handled.
Footprint import from open map data. Floor plates partitioned into addresses around a core; rooms allocated in facade-aware bands; portal graph verified for full reachability. 3D plan viewer registers floor plans on the exterior model.
Semantic street graph as the root: streets to blocks, blocks to lots, footprints packed per lot facing the street. Roadway and sidewalk ribbons derived from right of way. Recursive bottom-up sizing in the occupancy packer. Diagnostic plan view served in the browser.
Graph topology (cycles, articulation points, blocks) drives room layout: block solvers assembled into one pipeline, containment compiled recursively, components joined in a shared frame. Spatial IR with six constraint kinds. Urban compiler started: roadway, sidewalk, circulation IR.
- Day one
Knowledge-graph-first world engine. A World DSL parsed into an in-memory graph with a query API and integrity checks. Spatial problems compiled to an explicit constraint set (inside, connected, facing, on boundary, attached) and solved by repair. Debug projection in three.js; benchmark worlds.