I ran the site modeling for a 68-acre freight yard in Indiana with five tools and a six-week clock. The site has fourteen tracks, a twelve-stall roundhouse, a 94-foot coaling tower, a 240-by-62-foot freight house, and a concrete viaduct. The program is seven blocks, 118 homes, 36 maker studios, a food hall, and a 1.3-mile trail. This post is the pipeline, in the order I actually ran it.
- GenAnywhere built the site plus four surrounding blocks from one map rectangle.
- Halfmaps filled the wider town for shadow and skyline checks.
- CityEngine turned the block layout into 118 homes with rules, not hand modeling.
- Tripo3D covered four hero structures from photographs; Meshy covered the repeated street kit.
- Everything merged into one scene in feet, with a 24-inch soil cap as a hard constraint.
1. Lock the units before anything else
The whole model is in NAD83 Indiana East, US survey feet. I set the project origin at the southwest corner of the yard so the coordinates stay small and the exports stay stable. The plan set is 1 inch equals 80 feet.
2. Box the site in GenAnywhere
GenAnywhere works from a rectangle on a map: you drag it, hit generate, and it returns terrain and buildings for that area as a model. I included the yard and four blocks west of it, which is where the town touches the fence. The output took a few minutes and gave me the viaduct in context. The deck is 26 feet above the tracks, and the model showed which back yards it overlooks.
3. Fill the town with Halfmaps
The GenAnywhere context is close but not survey grade, so I used Halfmaps to generate the town fabric out to the river, roughly 40 more blocks. It is a procedural city generator: fast, believable at distance, generic up close. I kept it outside the boundary and used it for shadows and skyline checks.
4. Write the block rules in CityEngine
CityEngine took seven blocks, a 60-foot right of way, and a rule file. Key attributes: two to four stories, 11-foot residential floor heights, 15-foot ground floor on the square, a twelve-foot front setback, lots 32 feet wide by 95 deep. The first run split some lots to 24 feet, which produced unusable rear yards. I set a minimum lot width of 28 feet and the count settled at 118 homes: 70 rowhouses and 48 flats.
5. Build the hero structures in Tripo3D
Four objects were worth custom geometry: the coaling tower, the water tower, the roundhouse, and the freight house shell. Tripo3D takes images and returns a mesh, so I used photos I shot on site. The coaling tower came back at about 60,000 triangles, which I decimated to 18,000 for view studies. Scale was wrong on the first pass: the model read the tower as 101 feet, not 94. I fixed it by importing with a known reference height and checking against the survey.
6. Assemble the kit in Meshy
The repeated objects are the ones that kill a schedule: bollards, planters, bike racks, light poles, benches, trash bins, and the rail fence. Meshy generated those from text prompts with PBR materials, which kept the rust and the concrete consistent across 200 instances. The texture scale drifted between objects, so I normalized every material to a two-meter tile before merging.
7. Merge, clean, and check
Everything came into Blender as separate collections. I merged by material, not by object, then checked four things: total triangle count under 1.2 million, no geometry below the soil cap, clearances under the viaduct, and the trail ramp at eight percent maximum.
8. What broke
- Halfmaps roads ran straight through the yard until I masked the site polygon.
- GenAnywhere rooflines flattened at the box edge, so I extended the box two blocks past the area I needed.
- Tripo3D flipped normals on the water tower legs; recalculating outside fixed it.
- Meshy benches arrived at three different scales, all plausible in isolation. ## 9. What I would automate next Two checks deserve a script: a unit-and-scale assertion on every import, and a nightly triangle budget report per block. I also want a naming contract that survives export. The pipeline is not clever. It is five tools doing narrow jobs, with a fixed order and a short list of checks. That was enough to keep a complicated site moving for six weeks without losing track of what was real.


Top comments (0)