Creating 3D Symbols for GIS Applications
Using Blender to Derive More Value from Your Point Layer Datasets
Last updated
Using Blender to Derive More Value from Your Point Layer Datasets
Last updated
Website
Ordnance SurveyData
OS Data HubWhilst many people are aware of Blender’s potential when it comes to visualising geospatial data, it also offers another core function to map makers – the ability to create ‘3D symbol’ objects for use within a GIS application. Whilst some GIS tools ship with a core selection of standard 3D models that can be used to represent point features, the potential to use your own custom models is obviously an interesting proposition. Of course, it’s somewhat unrealistic to expect a GIS tool to offer a full suite of 3D modelling tools, which is why the use of a separate application thus becomes necessary.
There are various 3D modelling tools available that would be suitable for creating 3D symbols. Some of these are commercial, others open source. Of these, Blender is a popular choice, particularly in the geospatial community, being free, versatile and well supported. As such, this document will focus on the use of that tool.
The basic approach described in this document does not require an extensive knowledge of Blender. 3D symbols, by their very nature, are most effective when kept clean and simple. Such models may be created in Blender using only a small number of tools, so yes, this is certainly not an inaccessible technique. However, this document is not meant as a tutorial for anyone that’s completely new to Blender. If you’ve not used it at all before, we’d suggest first working your way through a few ‘beginner’ level tutorials on YouTube, just to get a feel for the user interface and the basics of creating simple low-poly models.
The first stage of this process, of course, is to create a 3D model, in Blender, that is going to later act as a 3D symbol. Such models are typically going to be simple and have a low polygon count. However, there are ultimately no absolute rules to follow…a lot is going to depend upon what’s going to best fit in to your GIS scene. For the purposes of this document, we’ll create a very basic ‘tree’ model, as this is something that should be easily achievable by a beginner. The method (described below) should be obvious to anyone familiar with Blender, as we’ll just make a few edits to the basic ‘default cube’.
After selecting the default cube and entering Edit Mode, select the top face raise it up by 2m (keyboard shortcuts - <G><Z>2), then scale it by 0.1 (<S>0.1).
Select the bottom face and inset it by 0.8 (<I>0.8). Then, with the same face selected, extrude down a ‘trunk’ by 0.8m (<E>0.8)
Create basic ‘canopy’ (green) ‘trunk’ (brown) materials, then apply them to your model.
Obviously, you’ll probably want to build models that are more interesting than this. What you choose to create – and which tools/methods you use – are, of course, very much down to your skill level and ambition.
Setting the model's origin
Once you’ve created your model, there are potentially a few extra steps that you might need to work through to make it ready for a successful export. The first of these concerns the position of your object’s origin. It’s the origin that will be used, as the model’s overall position, when the model is instanced to a point geometry within your GIS. So, to avoid half of your model being hidden under the terrain, you’ll probably want the origin to be positioned at the bottom of your model, typically at its centre.
In Blender 3D Viewport, a model’s origin is represented by a small orange circle. As the origin is a fundamental part of the overall object, rather than a part of its mesh geometry, you can’t just select and move it into position. Instead, one option is to select and move the entire mesh geometry (in Edit Mode) to an appropriate relative position. However, a better, more precise alternative is to align the 3D cursor to a selected geometry in Edit Mode ( <Shift><S> -> ’Cursor to Selected’), then, when back in Object Mode, choose Object->Set_Origin->Origin_To_3D_Cursor from the 3D Viewport menu.
Centre the object
Some applications may expect your object to be centred at (0,0,0). As such, you can easily sort this out by selecting your model, opening the 3D Viewport’s side menu () and then, under the Item tab, setting the values within the Transform->Location parameter to (0m, 0m, 0m).
Other modelling considerations
Our simple tree model, as created above, is now ready for export. However, if your model is more complex, you may then find that a few additional steps are required before the model is ready to use. Some common examples of these are as follows:
Scaling the model: You may wish to scale your model, within Blender, so that it conforms to real-world dimensions. By default, Blender’s own coordinate system is set to be metric, so this is typically easy to achieve. Alternatively, GIS systems typically allow 3D symbols to be scaled, so this step could be deferred until later.
Applying Transformations: If you’ve been scaling and/or rotating your object (as opposed to the mesh within it), the Rotation and Scale parameters will no longer be set at (0,0,0) and (1,1,1) respectively. As such, it’s always a good idea to ‘apply’ the current settings, using (Rotation & Scale) when in Object Mode.
Applying Modifiers: If you’ve been using any modifiers (‘Mirror’, ‘Bevel’, etc) when creating your model, you should ideally ‘Apply’ these before initiating the export. Yes, some of the export scripts might attempt to do this for you, by default, but it’s better not to rely on this.
'Realize Instances' (Geometry Nodes: Following on from the previous point, if you’ve used Geometry Nodes (Blender’s procedural modelling tool) in the creation of your model, you should use a ‘Realize Instances’ node to convert any instances back to regular mesh objects before applying the Geometry Nodes modifier itself.
Retopology: When Blender users wish to create ‘organic’ models, they’ll often use modelling techniques (sculpting, subdivision surface, etc) that utilise many thousands, if not millions, of polygons. Such high-detail models are not suitable for use as 3D symbols. As such, low-poly variants of the model must be created, based upon their high-poly equivalents. The workflow for doing this is known as ‘retopology’ and is something that can be learned from relevant YouTube videos.
Baking Complex Materials: Whilst it can be relatively straightforward to create geometry for ‘3D symbol’ objects, the creation and application of materials has the potential to be far more problematic, should you want anything more complex than a few basic colours. The reason for this is that the file formats that you’ll later be exporting to typically only support a small fraction of Blender’s functionality and thus very few of the tools and options that you’d typically use withing the Shader Editor environment are going to work upon export. This leaves us with two options – keep the materials super-simple, or ‘bake’ the model’s appearance into image textures. It’s the latter of these that broadens the options in terms of what’s possible, but learning how texture baking works within Blender takes time and effort. To pursue this, we suggest searching out a baking tutorial video on YouTube, along with something that explains how UV texture coordinates work, should that also be new to you.
To export your completed model, you’ll need to use Blender’s ‘Export’ tool, which can be found under the main File menu (File->Export). When using this, you’ll notice that there are a lot of export formats available to you. Which of these you choose to use will be somewhat dependent upon the GIS application you’re going to be working with. The paragraphs below give export instructions for two of the more common GIS applications – ESRI ArcGIS Pro and QGIS. If you’re going to be using any other tool…or even a future revision of one of these…some amount of research and experimentation might be required.
By default, ArcGIS Pro supports several 3D file formats including Collada (.dae), Wavefront Object (.obj), OpenFlight (.flt) and 3DS Max (.3ds). Of these, we suggest using Collada, as the exporter interface is, arguably, slightly clearer. For this choice, you’ll then need to undertake the following:
Choose an output folder and name the file.
Make sure the ‘Selection Only’ checkbox is checked.
Under Global Orientation, make sure Forward Axis is ‘Y’ and Up Axis is ‘Z’.
Having worked through these steps, your model should then be exported into the chosen folder. You’re then done with Blender!
With your custom 3D symbol created, you’re now ready to set up a scene within your GIS application of choice and import it. Exactly how you go about this will very much depend upon which GIS you’re intending to use. We’ll explicitly cover ESRI ArcGIS Pro and QGIS within this document, as these are commonly found tools that we’re familiar with ourselves. However, there are certainly other options that could be explored.
ArcGIS Pro is well equipped, by default, to support 3D projects. If you’re a regular ESRI user, you’ll likely already know what needs to be done. However, should you need some help, we suggest the following:
Open a new Scene project and choose a background map.
Open or generate a layer of point geometries, making sure it sits under the ‘3D Layers’ heading. These points will later be represented by your custom 3D symbol.
Open the Symbology panel for the imported data. In the Format Point Symbol area, choose Layers from the Properties tab. Within this, choose 3D model marker from the drop-down box, as shown…
Using the File button, locate and open your exported 3D symbol.
Use the other available parameters to set up the scene as you wish. Don’t be surprised if you find that you need to scale your model to some degree. Be aware that if the ‘Tint’ option is chosen, your model might not be the colour you’d expected (it’s probably best to turn that off, at least initially). It’s also worth noting that the Position option, with its Anchor Point presets, can be very handy if you’ve forgotten to centre your model at (0,0,0), as it can effectively override that and correctly place it, regardless.
Apply the Symbology settings.
The techniques described above cover the basics of creating and using a custom 3D symbol. Of course, what’s covered here is only the start of what’s possible. As you’ll have discovered, Blender contains a huge amount of functionality. Whilst lots of that has little relevance to this subject, there remains a lot that is. This is particularly the case, should you be willing to explore texture-baking techniques. There’s certainly a lot to be discovered! Of course, there will also be more to explore from within your GIS tool, also, particularly when it comes to the use of attribution.
In summary, if you already like to use the 3D environments that can be found in GIS applications, the ability to create your own customer 3D symbols is going to give your output an element of uniqueness and character. If you already have 3D modelling skills, then this another avenue for you to make practical use of these. Alternatively, if 3D modelling is new to you, then creating 3D symbols could very well be a great way to develop your skills in a useful context.