Earlier this year I worked on a project that called for a 3D map of Washington DC, and a semi-realistic handling of buildings, terrain, and lighting. While there are some excellent applications that are specifically designed around the unique challenges of large-scale terrestrial rendering, namely e-on’s Vue Infinite and Planetside’s Terragen 2, I decided to tackle this project in Lightwave.
I was extremely pressed for time, so I had to come up with a solution that would work without global illumination or volumetric rendering. The real trick for aerial shots like this is simulating the effect of looking though several miles of atmosphere. Dust, humidity, and even the air itself will diffuse and absorb light in complicated ways, but I decided to cheat this haziness and distortion with a combination of Lightwave’s fog and some depth-mapped gradients in After Effects.
The geometry for these renders was sort of pre-existing, but needed substantial cleanup and reconstruction. There’s a lot of GIS data that’s available for a lot of US cities, but nearly all of it will require that you jump through a lot of hoops to get it into your 3D package of choice. For example, extruding 2D building outlines into simple shapes is easy and surprisingly effective; but getting them to sit at the proper ground level and extrude to the proper height is tough. Plugins and scripts for these repetitive tasks are a must.
I knew that I’d be texturing the ground and roofs of the buildings with satellite imagery, but I needed some pictures for the building sides. There are a lot of places to get images that can be easily un-shaded and un-distorted to make texture maps. I also made specular maps for each image so that the windows would be properly reflected.
DC has a lot of trees lining its streets, so I built six different tree shapes, each using about 80 polygons, and used UV and procedural clip maps to make leaves. Then I used Lightwave 11′s new instancing feature to turn those six trees into 600,000. A greyscale image map controlled where the trees were placed, and a gradient randomized their colors. I made them quite a bit larger than Washington’s actual trees for stylistic reasons, and they added a lot of depth to the image without adding a lot of render time.
At this point, I was using most of my 8gb of RAM just loading textures. My main color map was 20,000 pixels wide, but I saved a lot of memory by making sure that most images were only 8-bit files. There are only a few objects in the scene, and most of them are contiguous, so the reflectivity of the windows, the dull shine of the concrete, and the surface of ponds and rivers all had to driven by texture maps. I created several layers using different filters and color selections to build the images I needed.
The project didn’t require that I cross the Potomac, but my Lightwave scripts and Photoshop actions had automatically created detail in Virginia. Just for fun, I’ve flown the camera out to the Pentagon, and apart from a few misplaced trees and weird bridges, it looks pretty good.
So, as amazing and powerful as dedicated environment renderers can be, this was a simple solution that rendered quickly and didn’t take too long to put together.