DEV Community

Cover image for Map Data to Massing: A Rule-Based Generator Versus an AI Region-to-3D Tool
Generate Build
Generate Build

Posted on

Map Data to Massing: A Rule-Based Generator Versus an AI Region-to-3D Tool

Context models are the boring part of most 3D work, and they eat the most hours. I recently built the same district-scale model twice: once with PlaceMaker, a SketchUp plugin that pulls footprints out of open map data and pushes them up according to parameters I set, and once with Shapezo, a service that produces a model from whatever area I mark on the map. This is the engineering-side comparison, covering inputs, geometry, editability, export, and failure modes.

Input model

PlaceMaker takes vector data: building footprints, road centrelines, and attributes such as storey counts where they exist. I control the mapping from attribute to geometry through parameters, so the pipeline is deterministic. Same data plus same rules equals same output, which matters the moment a reviewer asks me to regenerate after a change.
Shapezo takes a region. There is no attribute schema for me to configure, and no visibility into how the generator resolved heights or roof forms. Output is not reproducible in the same sense, so I treat each run as a new artefact rather than a build.

Geometry and topology

The plugin produces clean, parametric, host-native geometry: one object per building, with predictable faces, edges and groups. It is not pretty, and repeated facade modules are obvious at close range, but it is addressable. I can script against it, filter by height, or replace a subset of volumes.
The AI output is a generated mesh. It reads better at a distance and carries more variety per building. It arrives as one lump. Splitting it into per-parcel objects is a manual cleanup pass, and the resulting topology is not guaranteed to be watertight or aligned to the street grid.

Editability is the actual difference

In the host application I change one building height by editing one parameter and regenerating. In a mesh I can only sculpt. If the model is a deliverable that other people will touch, editability is worth more than surface fidelity, and it is the property that decides which tool I open.

Validation

Both tools inherit bad inputs silently. Missing height attributes became default storey counts that looked fine in perspective view. I now diff building counts against the source footprint layer, sample ten heights against assessor or open data, and check road widths. For the generated mesh I additionally check whether footprints sit on parcel boundaries, because plausible massing can drift off the grid without anyone noticing.

Export and downstream

The plugin hands me a native scene that moves into the rest of the workflow without conversion. The generated model needs format checks, and heavy meshes hurt viewport performance in viewers that expected light geometry. I open the export in the destination tool before I close the generator, which has caught two silent failures for me already.

Performance and cost profile

Large generated areas degrade frame rates in the host and force a decimation pass. The browser service offloads compute but requires connectivity, and its queue time is not something I can plan around when a review starts in an hour. Local generation costs my machine; remote generation costs my schedule.

Reproducibility and version control

The parameter set behind the plugin fits in a text file, so I commit it next to the source data and the scene becomes a build with a traceable recipe. Two weeks later, when the boundary of the district moves, I re-run the same rules over new footprints and get a model that is consistent with the first one. The region-based service gives me an artefact without a recipe. I keep the boundary polygon and the download, but I cannot diff two runs or explain a difference between them, so I treat those models as snapshots rather than builds.

What I use when

Deterministic, addressable geometry for anything measured, cut, or versioned. Region-to-model generation for quick context, blockout, and throwaway comparisons. They do not compete for the same slot in the pipeline, and treating them as rivals was the wrong frame for the first month I used both.

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.