3D models of building can be produced using a LiDAR system (a rotating laser measures the distancefrom its position to a very large number of points). This solution is very efficient and relatively affordable in its terrestrial form: The LiDAR device is mounted on a tripod and is moved from one place to another place, whose position is precisely known.
To produce models of larger sites, it is possible to use an airbornje LiDAR, but this solution is much more complex: the device must be installed in a dedicated helicopter, and because of the continuous movements of the aircraft, its position must be measured continuousely (using a RTK GPS) and its orientation in the 3D space (using a high precision inertial station). This equipment is very expensive (a few hunderd thousands of Euro -aircraft not included-) and must be installed on a specially calibrated aircraft.
Another solution exists now, based on the principles of photogrammetry, but exploiting the computing power of recent computers. This technique is called SFM, for Structure From Motion, based on the analysis of small differences between images belonging to a sequence acquired when the camera moves.
You can find here a movie explaining the principles of this technique:
In 2017, we produced a 3D model of the city of Tournai (Belgium) and this model was compared to another digital model generated from photographs of an historical mock-up of the city ("Plan Relief Vauban" , dated 1701). This project is presented in a 7 minute vidéo (french speaking).