Blender is a free and open source 3D platform. It supports 3D modeling and rendering as well as many advanced features like animation, simulation, compositing, motion tracking, video editing and game creation.
There a popular (more than 150 likes on github) OSM importer for Blender developed by vvoovv. The addon supports Simple 3D buildings specification to a large extent. The work is underway to support roof shapes.
Here is vvoovv's way to learn Blender.
I studied the the first sections of the wiki-book Blender 3D: Noob to Pro, namely:
- Unit 1: Background (all sections)
- Unit 2: Basic Modeling and Shading (sections 2A, 2B, 2C)
The book is definitely worth studying.
Then I studied the tutorial A (first) introduction to architecture modeling with Blender. And the first 3 chapters of the tutorial Modelling architecture with precision in Blender. In particular, the 3d chapter "Getting used to Blender's vertex snap" is quite important.
That is pretty much enough to feel yourself comfortably with Blender.
If you are going to write plugins for Blender in the Python programming language, refer again to the Blender 3D: Noob to Pro
Advanced tutorials to improve your Blender skills:
Blender Cookie: lots of top quality tutorials and courses. There is a membership fee 18$ per month that entitles you to the unlimited number of tutorial downloads. Some tutorials are free. I definitely recommend the free tutorial Modeling a Building
The addon imports GPS tracks from a file in the GPX format (.gpx) as a sequence of Blender edges. Elevation from a track can be used to assign z-coordinate of each point of the track.
The addon provides functionality to assign latitude, longitude and rotation angle to a Blender model, in other words to georeference the Blender model. This is achieved by moving and rotating the Blender model over OpenStreetMap data imported with the Import OpenStreetMap (.osm) plugin.
The addon imports digital elevation model data from files in the SRTM format (.hgt)
The addon helps to get the right dimensions for your model in Blender. The way it works can be explained by the following usage scenario:
- Import an OpenStreetMap file that covers the area relevant to your model
- Mark the target edge on the imported OSM object that corresponds to a specific edge of your model
- Mark the corresponding edge on your model
- Scaling will be applied to your entire model, so the length of the marked edge of your model will be equal to the length of the marked OSM edge