I-24 Choice Lanes Visualization

I worked on a several large-scale roadway projects while at HNTB, but the I-24 Choice Lanes projects was by far the largest, with the client wanting a continuous flythrough of 27 miles of the proposed roadway south of Nashville. The scope of this project introduced several technical challenge, the most immediate of which was the roadway model was flat, and the earth curves significantly over the course of 27 miles. Meanwhile, the 3D satellite imagery we were using to fill in the environment curved as you moved along it, meaning that at the endpoints the roadway would be floating way above ground level.



We'd actually encountered this issue in a previous project and I'd developed a shader to curve a mesh based on the curvature of the earth, however there were a couple differences here. First, the terrain around Nashville is fairly hilly, so a single uniform curvature would end up above or below ground level as the elevation changed. Second, because it was a shader, Unity features like frustum culling and raycasting would break while moving around the scene since where the mesh was and where it was rendering didn't match. To accommodate these, I converted the curvature to be based on a spline, rather than a uniform curve, so we could adjust it around hills. And, rather than being a shader, I actually regenerated the geometry to avoid rendering and physics issues.



This brings up the other major issue, which was the model itself. The original roadway model came from an AEC software that generated geometry that didn't look good in a realtime engine, so it was being manually cleaned up by one of our modelers in Sketchup. However this meant the model was being updated constantly, and any time we imported a new version it would reset to the original SketchUp materials (bright colors instead of realistic PBR materials). It became a time-consuming process remapping the materials every time there was an update, so I wrote a script that allowed us to create a Scriptable Object and permanently store the mapping of SketchUp material -> Unity material. This turned it into a single button press to apply the correct materials every time the model was updated, saving us significant time over the course of the project.



In addition to these features, this project was also the start of the spline tool library I discuss elsewhere, as the model we were given had roadway surfaces but not underlying girders and support piers for bridges. For much of the project there were only 3 people working on the entire 27 mile alignment, so any time saving was crucial. As a result, I created tools that let us move quickly while having the flexibility to adapt to changes and feedback.