From Cloud to Valley: Making a Civil War Era Model of the Potomac River Gorge
I've been working on developing a 3D landscape of a portion of the Potomac River gorge near Chain Bridge in Washington, DC. I want to give an impression of what the area looked like during the Civil War, and show how the defenses of Washington (Fort Ethan Allen, Fort Marcy, and Battery Vermont) protected one of the few bridges over the Potomac River at the time. I based the model on contemporary lidar data, modified based on an 1864 Army Corps of Engineers Map. Below I will describe the basic steps I went through, along with some of the pitfalls and lessons learned along the way. Below you can see the model I was able to produce and upload to Sketchfab.
I started by downloading lidar point cloud data from the National Map website. The area of my interest around Chain Bridge is at the corner of 4 different lidar data chunks. Checking the metadata, I found the coordinates were in UTM Zone 18. I imported these into CloudCompare, open source software for manipulating point clouds. I am new to lidar data and CloudCompare, but found that the interface was relatively easy to learn.
The next task was to combine the four sections, then extract the bare earth portion of the point cloud. The lidar data sets from the National Map include not just the bare earth, but also vegetation as you can see in the screen shot from CloudCompare.
The accompanying metadata did not seem to state whether the point cloud was already classified, but I took a cue from lidar metadata from the district of columbia lidar metadata page, and gambled that, like the DC data, the point cloud had been classified, and that the bare earth layer was "Class 2." I filtered the combined cloud on Class 2, and got what certainly looked like the bare earth (screen shot below).
I then cropped this cloud using a polyline around my region of interest that I imported from QGIS. I converted this resulting point cloud into a mesh, but found that the result had more than 13 million faces. To get something a bit more manageable, I subsampled the combined, cropped point cloud, then made a mesh from that. This mesh had something on the order of 1.3 M triangles, but still had sufficient detail for my purposes.
A challenge for using modern lidar data for historical landscape interpretation is that every modern highway, road, and even building footprint shows up very sharply. You can see this in this render of the lidar mesh I created in Autodesk Maya.
So, to make it usable for a 19th-century visualization, I needed to be able to modify the mesh to remove obvious contemporary features, and restore the topography to how it may have appeared during the Civil War. I based modifications to the topography on a series of maps prepared by the US Army Corps of Engineers in 1864. This series of 12 maps, "the Environs of Washington Prepared from original Surveys in the Engineer Department", covers the entire District of Columbia and surrounding areas in great detail. They include buildings, roads, trees, and unlabeled topographic lines.
I was able to download the maps I needed from Wikimedia Commons. As luck would have it, my area of interest (around Chain Bridge) is at the corner of 4 maps. I first brought these four adjacent maps into Photoshop to roughly scale, align, and combine them. I then imported that into QGIS to georeference it to UTM Zone 18 (the same projection as the lidar data), and crop with the same polylines I used to crop the lidar data. This ensured that my 3D model and imagery covered exactly the same geographical extent.
To overlay my 1864 map on my model, I brought it into Autodesk Maya where I created a UV map (using a planar projection from the z axis), and applied a new material with the cropped 1864 map to the model. Maya is not a GIS, but because both the model and file texture were cropped to the same extent, they overlaid cleanly after I rotated the UVs by 90 degrees. The original mesh from CloudCompare comprised entirely triangles, so I also converted these into quadrangles to ensure more stable editing in ZBrush.
I then brought this combination of mesh and file texture into ZBrush to smooth out the 20th-century roads, building footprints, and features like the portion of the B&O Georgetown Branch railroad built after the 1890s and circled in red below. There are other tools to do this, (such as the Sculpt Geometry Tool in Maya), but ZBrush does this much more easily, and with a broader choice of tools. A more rigorous approach to editing the topography might involve creating a displacement surface based on known elevation points that have not changed since the Civil War combined with elevation points taken from topographic lines extracted from late 19th-century topographic maps. However, using ZBrush was sufficient to support the impressionistic purposes of this demonstration project.
Once I finished editing, I exported both high- and low-polygon versions of the edited mesh out of ZBrush. The low polygon version I created using ZBrush's "Zremesher" tool so I could upload it to Sketchfab (at ~125K polygons it would be much more responsive to users that the high polygon version with ~750K polygons). To have my virtual cake and eat it too, I brought both of these models back into Maya to create a normal map that would allow the low-poly version to show the details present in the high-poly version.
I'm fairly pleased with the results I got, but would welcome comments about either issues with the topography shown, or suggestions about an easier approach to the workflow. Next I plan to flesh out the environment with ground textures, buildings, trees and water. I already have a model of Fort Ethan Allen, and have good reference images for Chain Bridge as it appeared in the 1860s.