Using Blender for Geospatial Projects
Last updated
Last updated
Website
Ordnance SurveyData
OS Data HubBlender is a free and open-source 3D content creation application. Although most typically used by artists, animators and game developers, its user base extends far beyond that into professional, academic and hobbyist fields. It offers a broad feature set, even when compared to its commercial competitors, perhaps putting it more into an ‘all-rounder’, rather than specialist, category. Versions are available for Windows, OS X and Linux platforms, with the core application being relatively small and able to function on modest-specification hardware. In addition, perhaps due to its ‘open’ status, a huge amount of training support is available, a lot of which is free. As such, it has a comparatively low barrier of entry.
Given all of this, it’s perhaps not so surprising that when geospatial specialists which to include a creative 3D tool as part of their workflow, they often choose Blender.
Blender is principally used to create three core forms of output – images, animations and 3D models. Each of these have relevance to geospatial. The requirement for images and animations needs no explanation, whereas 3D models are a resource that can be usefully ingested by GIS tools.
It should be acknowledged from the outset that GIS tools like QGIS and ArcGIS Pro are already well equipped with visualisation tools – and we’d certainly recommend using these for the typical GIS work they’re intended for. However, where Blender shines is in situations where something more creative or out-of-the-ordinary is required. Of course, being a 3D orientated application, Blender is suited to projects that incorporate 3D data – but that’s certainly not the limit of what’s possible.
Many GIS tools also offer some level of support for animation, but Blender’s capabilities for this far exceed these in many respects. Related to this, Blender also includes its own video editing tools, which can be handy if you’ve not got the reason or budget to be investing in separate tools for this.
Finally, should you require custom 3D models to act as ‘3D symbols’ within your GIS scene, then Blender is, of course, a great option.
Some people are apprehensive about learning Blender, believing it to be a large and complex undertaking. They do have a point – it IS a very expansive and complex application! However, many users only need to learn and use a small fraction of its capabilities – and that’s OK. As it’s free, so it’s not as if you’re paying for unused features. In practice, once you get the basics down and learn to focus on what’s relevant for your own purposes, it becomes a lot more manageable.
The purpose of this document isn’t to teach you Blender. There are already many resources out there dedicated to that (we’ve listed a few suggestions in Annex A). Instead, the focus is to document subjects and techniques that are specific to working with geospatial data .
If you’re starting with Blender from scratch, with a view to using it for geospatial content, you’re unlikely to find training resources that cater directly to your needs. As such, you should expect to spent time learning to create more mainstream content (art, gaming assets, motion graphics, simulations…), with a view to later applying what you’ve learned to your own discipline. If that means creating doughnuts and spaceships, so be it…it’ll help you out in the end.
Blender work typically requires a mix of technical knowledge and art. As such, practical experience is at least as important as theoretical knowledge. It’s not sufficient to just read or watch a selection of tutorials – you need to be prepared to actively experiment and practice!
For anyone contemplating using Blender for geospatial projects, you first need to consider how you’re going to import your geospatial data. Blender, by default, doesn’t support geospatial-specific file formats, so work-arounds are required. We are aware of four proven methods for achieving this, which are discussed below. Each has different strengths and weaknesses, so your choice will very much depend on the requirements of each individual project.
Use Third-Party Applications to Transform Geospatial Data into 3D Models
Some GIS applications (e.g. QGIS, ESRI’s ArcGIS Pro) allow users to export spatial data to common 3D formats that can be in turn understood by Blender.
Safe Software’s FME is a particularly good option for this flowline, as it supports not only a multitude of spatial data formats, but a useful selection of standard 3D formats also. Should you, for example, wish to create a 3D TIN from standard terrain products, then texture it with geotiff images, then this approach is a great way to achieve that.
We’ve found that .OBJ files (aka Wavefront Object files) are a good choice for importing models into Blender. The .OBJ file specification is simple and well-established, so implementations of it within applications are usually consistent. It doesn’t have the more advanced features found elsewhere, but for geospatial data, this is often not relevant.
The limitations of this approach are that, in the translation from spatial data to 3D, any references to spatial coordinate systems are lost, as is all attribution.
As is the case with most mainstream 3D tools, Blender includes no native support for Coordinate Reference Systems (CRS). For anyone coming from the geospatial world, this might initially seem to be a deal-breaker. However, whilst CRS support would certainly be a welcome addition, the impact of this is often not quite as significant as you might have initially feared.
One reason for this is that when used to produce rendered images, Blender effectively sits at the end of the flowline. As such, correct geospatial positioning often isn’t necessary, so long as relative positions are retained. Furthermore, as there’s usually no reason to subsequently export the data, alterations to the coordinates will have no knock-on impact.
If you’re using an image-based flowline, as mentioned previously, then issues around geospatial coordinates aren’t likely to be of any significance to you. Likewise, if you’re using the Blender GIS plug-in, issues around geospatial coordinates will be handled for you by default. However, if you’re going to be importing 3D objects that have been externally converted from geospatial data, or are perhaps writing an import script in Python, then you’ll certainly need to be more aware of how such data needs to be handled.
Here at Ordnance Survey, the coordinate system we most frequently work with – and supply in our products – is British National Grid (BNG). As such, we’re very familiar with coordinate definitions that might look like (414322, 130464). Whilst there doesn’t appear to be an absolute ceiling on the values that can be used within Blender, working with six- or seven-digit ordinate values can be confusing and tricky.
If you’re going to be importing BNG geometries (or similar…), the best approach is to apply, outside of Blender, a universal offset to all coordinates, so that the resulting ordinate values bring the objects much closer to the scene origin (0,0,0). Doing this is often sufficient to ensure an imported model is immediately usable.
Should applying an offset, outside of Blender, not be an option for you, then you may then need to consider the following steps…
It’s likely that, upon import, your model won’t be visible in the 3D Viewport, even though it will (hopefully!) be listed in the Outliner. The is because the viewport camera will be pointed at the scene origin, whereas the imported object’s mesh will be located very far from that, even though the object’s overall location will be set to (0,0,0). This discrepancy between the object location and the position of its mesh is a big factor in why things may not behave as expected. To move the viewport so that it’s in sight of the mesh, you need to select the imported object, enter Edit mode, select ALL, then choose View->Frame Selected (or numpad <.>).
Moving the viewport camera, will take you nearer to the object’s mesh, but it’s still likely that you won’t be able to see it. The main reason for this is usually that the viewport’s clipping parameters – specifically, the Clip End value – is set at far too small of a value. This can be viewed and changed using the View tab in the Viewport’s right sidebar. So, change the default value (1000m) to something much larger (100000m?). Hopefully, you’ll then be able to see the mesh. If you can’t, try rotating the view…and if even that doesn’t work, try doing View->Frame Selected again.
Even when you can see the mesh geometry, it’s very likely to appear corrupted and will flash when the viewport is moved. This is clearly unpleasant and not something you can work with. The issue, as mentioned above, is that the position of the mesh is so far from the object’s Location. Blender just doesn’t seem able to handle this situation. The solution, though, is simple – you either need to move the origin to a location that’s in the vicinity of the mesh; or move the mesh closer to the origin. In practice, the first of these is usually easier to accomplish. To do this, select the object, enter Edit Mode, select a part of the mesh (say, one vertex) and then snap the 3D cursor to it (using <Shift><S>, ‘Cursor to Selected’). Now, return to Object Mode and use Object->Set Origin->Origin to 3D Cursor. The object’s origin should now be situated within the vicinity of its mesh – and everything should now be behaving normally. Of course, you might then want to move the object back to a more sensible place in the scene (maybe (0,0,0)?), but this isn’t absolutely necessary.
At first sight, the idea that you can export geospatial coordinates might seem fanciful, as Blender obviously contains no such coordinates. However, it turns out that if you also use FME (or maybe some other tools?), it actually is achievable.
The trick to this is that you’ll need to treat Blender’s local coordinate system as if it was actually a CRS. In our case, this would be BNG, potentially with an offset applied. So, you then export your models in .OBJ format, then read these into FME with the .OBJ ‘reader’. At that stage, you’ll get the option to choose which CRS the data represents, so you’d choose, in our case, BNG (ESPG:27700). FME will then assume that the coordinate values are BNG coordinates, even though they’re actually native Blender coordinates. Although exporting geospatial coordinates from Blender probably isn’t something you’re likely to be doing often, it’s a useful trick that’s worth remembering.
With enough imagination and ambition, it’s probably the case that there’s scope for any of Blender’s features to be usefully used in the context of a geospatial project. However, it’s probably true to say that some features are going to be more useful for geospatial work than others. The following section, then, suggests the skills that are most likely to be of interest to anyone getting started.
Before you can do anything much at all with Blender, you need to need learn the basics of how the user interface works. This includes the tools for arranging the panels, selecting editors, navigating the 3D Viewport, installing add-ons and working with parameters. If you follow any online beginner tutorial, you’ll likely pick up all of this as a matter of course. Although there are alternatives, efficient use of Blender often depends upon the use of quick keys. You should certainly endeavour to learn at least the most basic of these.
Many people primarily think of Blender as being a ‘3D modelling’ tool. As such, it’s no surprise that the manual creation of 3D geometries is extensively supported. As a beginner, it is certainly worth learning how simple ‘low poly’ mesh modelling works, a the very least. Having said this, many geospatial projects incorporate relatively little hands-on modelling – so don’t assume that this will always be an essential skill. When it comes to skills that are more orientated towards ‘organic’ modelling (subdivision surface, sculpting, etc), it’s less likely, still, that these are going to be relative to geospatial project. So, you might wish to de-prioritise these.
Knowledge of Blender’s materials/shaders system is most certainly something that’s going to be of value when undertaking geospatial projects. You should endeavour to become familiar with the Shader Editor and its node-based workflow as a matter of priority, as it’s often this that can deliver the impressive graphical effects that likely attracted you to using Blender in the first place.
If you wish to use Blender to create high-quality visualisations, it’s fundamental to understand how the rendering process works. This also requires a good understanding of cameras, lighting and ‘environment’ settings. Whilst you can learn the absolute basics of each of these quite easily, it’s certainly worth putting in the time to explore each of these further, as they’ll have a direct influence on the quality of your output.
Procedural modelling – that is, the creation of models via a sequence of rules – is relatively new to Blender. It’s not easy to learn, being more technical and maths-orientated than other disciplines. However, it can be extremely powerful, so is certainly worth the effort. Blender’s implementation of procedural modelling is enabled by the Geometry Nodes modifier, which itself is paired with a custom node-based editing environment.
If you use geospatial vector data directly within Blender (ideally, with attribution intact) then Geometry Nodes can be of particular value. For example, a single Geometry Nodes network might have the ability to automatically convert a multitude of building footprints into a whole 3D city.
For some geospatial specialists, animation may be the primary focus of their Blender work. Blender’s support for animation is extensive but may be simplified if a separation is established between simple object animation (relatively simple to learn) versus character animation (challenging). As character animation probably won’t be required for most geospatial projects, this does suggest that you needn’t worry too much about the more involved aspects.
Some people are surprised that Blender incorporates its own video editing functionality by default. Although it doesn’t have the broad range of tools that you might find in specialist editing applications, it’s still a useful tool. If you’re rendering animations and wish to add things like audio, transitions and text, then this is a simple way of achieving that whilst remaining within Blender’s environment.
There’s a huge goldmine of free and commercial resources out there that will help you develop your Blender skills. Whilst we can’t even begin to ‘scratch the surface’ of this in a document of this type, we’ve included, below, some links that we’ve found particularly helpful in the past.
As should be obvious, your first source of information about Blender should be the Blender website itself (www.blender.org). Here, under the Support header, you’ll find extensive user manuals, along with a small selection of free tutorials. Further official tutorials can also be found at the separate Blender Studio site (https://studio.blender.org/). This requires a paid subscription, as it’s partly this that funds Blender’s development costs.