Since you don't have LIDAR you'll need to think about how best to represent the spatial information you have.
I'd suggest starting off with just the building heights (using the 3 meter rule) - generate a raster from this - and conduct initial analysis based on buildings only (mainly to make sure your calculations work).
Next you'll have to think about introducing vegetation cover to the analysis. Again, without LIDAR this is going to be trial and error (and, how it used to be done before LIDAR!)
A suggestion here might be to digitize (manually - or via something like this Determine density or cover from a raster layer that has been clipped by a polygon) a coverage for your area based on a aerial image - if you have one to hand. Failing that you could get hold of QGIS and derive a layer from a Google Earth aerial image (http://qgis.spatialthoughts.com/2011/12/digitizing-in-qgis.html) and import the resulting coverage into Arc.
Here is a screenshot of what I mean - NOTE that I'm only concentrating on vegetation cover above the visible roof line of the buildings, that way I'm reducing the amount of digitizing needed to be done:
Since you will have derived the building heights under the tree cover you could set each digitized polygon to be above the underlying building heights as the aerial image validates this.
The reason why I was suggesting getting out to your Physical location is to get an understanding of how dense / high the vegetation level is - does the majority the tree canopy sit high above the roof tops, or very close to it - you'd might want to adjust the digitized layer based on your observations.