DEV Community

Cover image for A Practical 3D Site Pipeline with 5 tools
Generate Build
Generate Build

Posted on

A Practical 3D Site Pipeline with 5 tools

The hardest part of a mixed 3D workflow is usually not making geometry. It is knowing what kind of geometry I have, what it is allowed to prove, and what the next tool needs from it. I use Meshy, TopoExport, site3d, Shapezo, and CityEngine at different points because each one gives me a different kind of control.

Step 1: define the data contract

Before opening a tool, I write down the coordinate reference, units, expected area, source date, and target use. This sounds like process overhead, but it prevents the classic failure where a visually convincing model is shifted, scaled, or too old for the decision.
TopoExport is useful at this boundary. In a terrain export workflow, I want the surface, contours, breaklines, and metadata to survive the move. I spot-check known elevations after import and keep the export settings beside the file. If the receiving application cannot read the same structure, I record what was flattened or discarded.

Step 2: build a broad site context

I use site3d when I need to inspect a parcel as a complete scene. Roads, buildings, terrain, vegetation, and nearby infrastructure should be visible together so I can find relationships early. I am not looking for final construction detail yet. I am checking access, scale, edges, and the way the proposal sits in the larger place.
This is also where I decide which views deserve a more detailed model. A broad context view helps me spend effort where it changes the decision.

Step 3: generate a map-first hypothesis

Shapezo changes the first interaction. I draw a boundary on a map, and its AI generates a model for that selected area. I use it when I have a location and a question but no detailed scene to start from.
The output is provisional. I check its source, date, coverage, inferred objects, and level of detail. I also keep a visible distinction between generated geometry and geometry I have manually verified. That one label prevents a quick study from being mistaken for survey or construction data.

Step 4: add assets without hiding their origin

Meshy is useful when the site needs objects that are not already in the base context. A quick AI-generated asset can help me communicate a massing idea or test how a scene reads. Before I publish it into a shared model, I check scale, orientation, polygon density, material assignments, and licensing or source notes.
I treat an AI asset like any other imported dependency. It needs an owner, a version, and a reason for being there.

Step 5: generate repeatable urban options

CityEngine is a different class of tool. Its strength is procedural generation: rules can produce roads, parcels, buildings, and other urban forms across a large area. That is useful for alternatives because I can change a rule or input layer and regenerate a consistent scenario.
The technical risk moves into the rule set. I need to understand what a rule assumes about frontage, height, setbacks, density, or street hierarchy. A procedural result is repeatable, but repeatability does not automatically make it accurate.

Checks before I hand work over

I run the same short checks at every boundary:
Confirm units and coordinate reference.
Record source date and coverage.
Mark generated or approximate geometry.
Keep original exports and rule files.
Note what the next tool cannot interpret.

What I would use first

For a new site, I usually stabilize terrain, inspect broad context, generate a quick Shapezo hypothesis, add only the Meshy assets that help the conversation, and use CityEngine when I need repeatable urban scenarios. The exact order can change, but the data contract stays the same.
The useful distinction is exploration versus commitment. Shapezo and Meshy can make the first version faster. TopoExport, site3d, and CityEngine help me organize the information around that version. None of them removes review. They simply move different parts of the work forward.

Top comments (0)