I've used a program called PhotoModeler [1] at work, which does the same thing.
You use a consumer camera + a calibration chart to get the specifics about the lens setup on the camera, and then just take a whole heap of photos around the object in question. You add the photos to the program and it asks you to identify common points. This puts them all in 3d perspective and you set a dimension on a known length to scale it.
For mapping large-scale machinery (train stuff) I've managed to get a ~5mm accuracy out of it. That's great when you don't have drawings.