The site is a general aviation airfield on the edge of Wichita, surrounded by hangars, a drainage channel, and an industrial park with more apron than building. The design team wanted a walkable Unreal scene for a review and a printed relief model for the wall. I had the airfield boundary and one week.
The Deliverables
Three things had to come out of the same source: a GLB for Unreal, an OBJ for Rhino sections, and a 3MF for a 1:1500 print. Same boundary, same origin, same units. If those three drift apart, the review turns into a conversation about file management instead of the site.
Step 1: Frame and Export
I drew a boundary wider than the airfield so the approach road and the drainage channel came along. Halfmaps built the scene from map data and kept buildings, roads, and terrain on separate layers. I adjusted hangar heights to match the tallest roof I could see in the imagery, then exported GLB, OBJ, and 3MF without changing the boundary or the origin.
Each format left with a different job. GLB carried materials and worked as the Unreal import. OBJ carried clean geometry into Rhino. 3MF went to the slicer. The scene was not a survey, and I noted that in the manifest before anything else.
Step 2: Clean the Mesh
The GLB opened in Blender with a few non-manifold shells and some doubled vertices along the apron edges. Merge by distance and a recalculate normals pass fixed most of it. I did not decimate the buildings, because the Unreal target was a workstation, not a phone. I did decimate the tree geometry, which arrived heavier than the site deserved.
The 3MF needed a different pass. Thin canopies and open-bottomed hangars are fine on screen and fatal in a slicer. I checked for holes, thickened two roof shells, and exported again. The print file is its own artifact; it is not the render file with a different extension.
Step 3: Build the Unreal Scene
Terrain came in as a landscape, buildings as static meshes, roads and water as separate actors. I kept the layer logic from the export, because a reviewer who can hide the hangars can see the drainage channel. The first build ran at 28 frames per second. Halving the texture size and cutting the tree instances by a third got it above 50.
The apron material needed one fix. The default road surface read as fresh asphalt, which made the whole airfield look newer than it is. I darkened it and added a roughness variation. None of that changed the geometry.
Step 4: Print the Relief
I scaled the 3MF to 1:1500, checked the bounding box against the known runway length, and split the model into two tiles that fit the bed. The print took six hours. The drainage channel is the best part of it, a thin dark line running the length of the board, and it started an argument about where the new taxiway should go.
Step 5: Test GenAnywhere Against the Same Base
I handed GenAnywhere the identical boundary and asked for one model. It came back in about a minute with a plausible airfield: hangars, a tower, a row of trees. It also moved two hangars, widened the runway, and turned the drainage channel into a pleasant creek.
I generated it a second time and the tower moved. That settled the question. The images went into a reference folder for mood, and none of the geometry entered the Unreal scene or the print.
Failure Log
My second 3MF came out with different units than the OBJ, because I changed a setting while re-exporting after the mesh cleanup. The apron edge produced a non-manifold seam. The first Unreal build was texture-bound. And the generated model changed between runs, which is acceptable for a reference and disqualifying for a base.
What I Would Script Next
A small script that opens each export, checks the bounding box against the runway length, counts layers, and writes a manifest with the source date and units. I do not need it to repair geometry. I need it to stop me before I import the wrong file into a review scene.
The review went well. The drainage question was answered by the printed model, and the character question was answered by two GenAnywhere images. The base did the measuring. The images did the arguing.



Top comments (0)