Blog

Text to 3D Building Model: From a Brief to Walls, Rooms and Roof

Text to 3D building model, explained step by step: how a written brief becomes a parametric script, how walls, partitions, doors and rooms are built as IFC-classed elements, and why this differs from text-to-mesh generation.

Nuit Team 12 min read

Text to 3D building model means, in the useful sense, text to a script that builds the building. Nuit’s 3D mode reads a written brief and attached reference images and writes a parametric model: a block of named parameters (footprint, wall height, eaves overhang, opening sizes, room dimensions) and a build function that constructs walls, partitions, doors, windows, slab, roof and rooms from those numbers, tagging each element with its IFC class as it goes. The viewport, the plan, the sections and the export files are all derived from that script. This is a different operation from text-to-mesh generation, which returns one surface directly from the prompt and has no idea where the rooms are.

This article explains the mechanism, from the brief to the elements, so you know what the words you write actually control. From an AI Floor Plan to a 3D Model covers the pipeline when you start from a generated plan; AI 3D Model Generator for Architecture sorts the class of tools. This one is about what happens inside the run.


Two meanings of “text to 3D”

The phrase is used for two operations that share a prompt box and nothing else.

In text to mesh, a generative model trained on 3D shapes produces a surface, usually a closed triangle mesh with a texture, from a text prompt or an image. Meshy, Tripo, Luma and others do this well for objects. The output is one thing. Ask for a house and you get a house-shaped shell whose windows are painted or shallowly pressed into the surface. There are no walls, so there are no rooms, so there are no doors between rooms. Scale is whatever you set on export.

In text to a parametric model, a language model reads the brief and writes a program that constructs the building from parameters. The output is code and, from that code, geometry with structure: this is a wall, this is the opening cut from it, this is the door in the opening, this is the room the door leads to. Scale is a parameter in metres. Nothing is a frozen surface; change a parameter and the whole set is rebuilt.


What the brief controls

The brief is read for three kinds of information, and it helps to know which.

  • Counts: Number of storeys, number of rooms, number of bedrooms, number of bays. These become loop bounds and lists in the script, and they are the thing the model is most literal about. Say five rooms and name them; you get five IfcSpace elements with those names.

  • Dimensions: Footprint, area, wall height, plot size, floor level above ground or water. These become the parameter block. A footprint of 20 × 6 m is written as two parameters and used by every function that needs the length or width of the house. An approximate area (“about 120 m²”) is a target the model designs towards rather than a parameter it can guarantee; Mirror Lake House came out at 110.4 m² from that brief.

  • Constraints and site: A lake on the east, a slope, a road to the north, a neighbour to keep away from. These shape the arrangement: which end the living room goes to, where the entrance is, which side the roof extends over.

What the brief should not carry, when reference images are attached, is form and materials in words. “Charred larch, low gable roof, cantilevered over the water” is exactly what a set of concept images already says, and saying it twice gives the model two masters. The rule from our own demo runs: with references attached, keep the brief short and specific: program, sizes, site.

The Mirror Lake House brief, verbatim from the examples page:

An elongated single-storey house on a rocky lake shore, as in the reference images: a long narrow volume with a low gable roof, its lake end cantilevered over the water on slender steel columns. About 120 m²: an open living room with kitchen at the lake end, a main bedroom, a second bedroom, a bathroom and an entrance hall at the land end. Plot 40×40 m with the lake, rocks and pines.

Two sentences and four saved concept images. Count the numbers: one storey, five rooms, 120 m², 40 × 40 m. Everything else is in the pictures.


What the references control

Up to six images attach to the 3D chat, resized to 1,600 px on the long side: saved concept images from the project’s phases, a floor plan, project references from the moodboard. They are read as images, not measured. What they set:

  • Form. Roof type, proportion of the volume, the way the building meets the ground.
  • Material character. Timber versus render versus stone; light versus dark; the rhythm of cladding.
  • Arrangement, when a plan is attached: which rooms are adjacent, where the entrance is, roughly where the main openings fall.
  • Site character. Water, rocks, trees, slope.

What they do not set: dimensions, room counts, wall thicknesses, exact door positions. Those come from the brief and from the model’s own parameters. A hand sketch or a photograph of a precedent works the same way as a generated image: as a reference. There is no DWG or SKP import.

Attach two or three references that agree.


From brief to script

When you press Generate (the empty state shows an estimate, typically 60 to 150 credits, and your balance; what a credit buys is on the pricing page), the model writes a script in two parts.

First, the parameter block: a tree of named values the model declares itself, grouped by what they belong to. From the real Mirror Lake House script, condensed:

PARAMS.roof = {
  pitch_deg: 14, overhang: 0.5,
  seamSpacing: 0.46, lakeOverhang: 1.8,
}
PARAMS.deck = { depth: 1.8, railHeight: 1.05 }

Every one of these becomes a slider or a field in the Parameters panel, grouped by IFC category, and any of them can be changed without calling the model again.

Second, the build function: code that reads the parameters and constructs the geometry element by element, tagging each with its class:

aperture('Lake sliding doors', L, 0,
  5.45, 2.44, 0.08, 'z', true)

tag(o, 'IfcSpace',
  'Living room + open kitchen')

An aperture is an opening cut from a wall and filled with a door or window; a space is a room volume with a name, from which the floor area is computed. The function builds in an order that respects the building: slab, walls, partitions between rooms, openings in walls and partitions, doors and windows in openings, structure (columns, beams, braces) where the design needs it, roof, then site and furniture from the asset library.

The script is the model. The picture in the viewport, the plan cut at 1.2 m, the sections and every export file are computed from it on demand.


Rooms, partitions and doors are built, not implied

Early runs produced five named rooms in one open volume with no walls between them; it looked finished and was not. Since then, partitions and doors are built at generation as part of the same pass. Each room is an IfcSpace with a name; each is bounded by walls and partitions; each has at least one door, placed as an opening in a partition and hosted there. A completion check runs before the model is allowed to finish: a run that has declared rooms but not enclosed them is sent back to build the partitions, and continues until they exist.

The result in Mirror Lake House: five IfcSpace elements (Living room + open kitchen 56.8 m², Entrance hall 14.1, Main bedroom 13.9, Second bedroom 13.9, Bathroom 11.8; total 110.4 m²), 12 walls, 7 doors (Entrance, Living hall door, Main bedroom door, Second bedroom door, Bathroom door, Lake sliding doors and the living panorama), each door an IfcRelFillsElement in an opening that IfcRelVoidsElement cuts from a wall. In the Interiors view, clicking a room places the camera inside it, entering through its door. In the IFC4 export, the rooms arrive in Revit or Archicad as spaces with their areas.


What “classified” means for you

Three things follow from tagging each element with its class as it is built.

  • The plan and sections are drawings, not renders: The plan view cuts the model at 1.2 m and draws overall and wall-axis dimension chains and room labels with areas, using the same function the DXF export uses. Move a wall and the plan updates. What’s Inside an AI-Generated DXF describes the seven views (plan, four elevations, two sections) that come out of this.

  • The Parameters panel is organised by building: Walls, openings, roof, structure, spaces: each category lists the parameters the model declared for it. You can pin the ones you touch often.

  • The exports carry meaning: The IFC4 file says IfcWall and IfcDoor and IfcSpace, with quantities and relationships; the DXF puts each class on its own AIA-style layer (A-WALL, A-DOOR, S-BEAM); the GLB carries the same elements as named nodes. AI BIM Model Generator goes through what those classes mean once a BIM application reads them.


After generation: words and sliders

The same chat that generated the model edits it, and the two prices matter.

  • An instruction that maps to an existing parameter is free. “Extend the cantilever over the water by 2 m” turned out to be an existing parameter (lake balcony depth 1.8 → 3.8 m); it was routed to a slider and the model was not called.
  • An instruction that needs new geometry costs 5 to 25 credits. “Add a small terrace with a railing at the lake end, under the roof” rewrote the build function in two steps for 11 credits, with the estimate shown first.

Dragging a wall or an opening in the viewport is the same kind of edit as a slider, and free. Every edit by any route is a checkpoint (parameter delta, script hash, preview); branch from any of them and keep both versions. AI Parametric Design Tool is about this editing model in depth.


What the words cannot do

The limits of text to 3D building model generation, as it stands:

  • Concept stage only. Footprint, heights, openings, roof, rooms, primary structure, catalogue materials. No joinery, services, details, or construction documentation. From AI Concept to Construction Drawings covers what comes after.
  • One storey per export. Plans in the studio are per floor, but IFC and DXF exports currently write a single storey.
  • No file import. References are images and text; DWG, SKP, PDF and survey data do not come in as geometry.
  • No calculations. No structural sizing, energy, daylight or cost. Areas are computed; loads are not.
  • Approximate targets stay approximate. “About 120 m²” gave 110.4. If the number is a hard constraint, say the footprint rather than the area.

Within those limits, the difference from a mesh is not a matter of quality but of kind: the words produce a building whose parts know what they are, and that is what makes the next step in Revit, Archicad, AutoCAD or SketchUp a development rather than a rebuild. The example files are there to test that claim in your own software.


Frequently Asked Questions

How does text to 3D building model generation work?

The brief and reference images are read by a model that writes a script: named parameters plus a build function that constructs the geometry and tags each element with its IFC class. The viewport, plan, sections and exports are derived from that script.

What is the difference between text-to-3D and text-to-mesh?

Text-to-mesh returns one textured surface with no walls, rooms or doors and no reliable scale. Text to a parametric model returns classified elements with parameters: walls, doors, spaces with areas, measurable and exportable to BIM and CAD.

What should a brief for a 3D building model contain?

Numbers and program: footprint or area, storeys, named rooms, plot size, strong site constraints. With references attached, leave form and materials to the images. Mirror Lake House: two sentences, four images.

Does the model build real rooms with walls between them?

Yes. Rooms are IfcSpace with name and area, enclosed by partitions built at generation, with doors hosted in openings. A completion check catches rooms declared but not enclosed. Mirror Lake: five rooms, 110.4 m², 7 doors.

Can I use reference images together with the text?

Yes, up to six at 1,600 px. They set form, material character and arrangement; text sets counts and dimensions. Attach two or three that agree.

How accurate is a text-generated 3D building model?

Counts and stated dimensions are followed as parameters. Approximate targets stay approximate: about 120 m² gave 110.4. Concept-stage level of development throughout.

Can the text-generated model be changed after generation?

Yes. Parameter edits by word or slider are free; geometry edits cost 5 to 25 credits with an estimate. Every edit is a checkpoint; export to IFC4, DXF, GLB and OBJ is free.


Try Nuit free — 300 credits (12 images), no card required. Write the brief in numbers, generate the concept images, and when 3D access is enabled, send the same brief to the model. Start your project →

Try this in Nuit

Small two-bedroom house of 9 by 7 metres with a hipped roof, an open living room and kitchen, a covered porch on the entry side and walls with standard door and window openings.

Open in Nuit

Free credits on sign-up