LogoLogo
OS Docs HomeOS NGDOS APIsOS Download ProductsMore than MapsContact Us
  • More than Maps
  • Geographic Data Visualisation
    • Guide to cartography
      • Introduction to cartography
      • Types of maps
      • Symbology
      • Colour
      • Text on maps
      • Generalisation
      • Coordinate reference systems
      • Projections
      • Scale
      • Map legends
      • Map layout
      • Relief representation
      • North arrows
    • Guide to data visualisation
      • Introduction to data visualisation
      • GeoDataViz design principles
      • Types of visualisation
      • Thematic mapping techniques
      • Data visualisation critique
      • Accessible data visualisation
      • Ethical data visualisation
      • Software
      • Data
    • GeoDataViz assets
      • GeoDataViz basemaps
      • Stylesheets
      • GeoDataViz virtual gallery
      • Equal area cartograms
      • How did I make that?
        • Apollo 11 Landing
        • North York Moors National Park, 70 years
        • Snowdonia National Park, 70 years
        • Great Britain's National Parks
        • Great Britain's Islands
        • Great Britain's AONB's and National Scenic Areas
        • Famous shipwrecks of Pembrokeshire
        • Trig pillars today
        • Britain's most complex motorway junctions
      • #30DayMapChallenge
  • Data in Action
    • Examples
  • Demonstrators
    • 🆕Product Viewer
    • Addressing & location demonstrators
      • Address Portfolio overview
      • Which address product should you use?
      • AddressBase
      • AddressBase Core
      • AddressBase Plus
      • AddressBase Premium
      • Address Classifications
      • Addressing Lifecycle
      • OS Emergency Services Gazetteer
      • What are Vertical Streets?
      • Why are there differences in boundaries?
    • Contextual demonstrators
    • Customer best practice
      • Channel Shift
      • Data Management and OS Data Hub
      • End User Licence vs Contractor Licence
      • 🆕 IDs vs Spatial Relationships
      • Why we should capture good quality addresses at source
      • Why we Snap and Trace
    • Network Demonstrators
      • OS Detailed Path Network
      • OS Multi Modal Routing Network
        • OS Multi Modal Routing Network
      • Water Networks overview
      • OS MasterMap Highways Network and OS NGD Speeds
      • OS MasterMap® Highways Network and OS Open Roads™
    • OS MasterMap Generation APIs
      • Using the OS Features API
      • Using the OS Features API Archive
      • Using the OS Downloads API
      • Using OS APIs in ESRI Software
    • 🆕OS NGD (National Geographic Database)
      • OS NGD Address
      • OS NGD Boundaries
      • 🆕OS NGD Buildings
        • 🆕Building and Building Access Feature Types
        • Building Part and Building Line Feature Types
      • 🆕OS NGD Geographical Names
      • OS NGD Land
      • OS NGD Land Cover enhancements
      • 🆕OS NGD Land Use
      • OS NGD Land Use enhancements
      • 🆕OS NGD Structures
        • 🆕OS NGD Structures
        • Field Boundaries
      • 🆕OS NGD Transport Features
      • 🆕OS NGD Transport Network
      • OS NGD Transport RAMI
      • OS NGD Water Features
      • OS NGD Water Network
      • OS NGD API - Features
      • Ordering OS NGD data
      • Change only updates
      • OS NGD Versioning
      • Creating a topographic map from OS NGD Data
      • Analytical styling for OS NGD data
    • OS MasterMap® demonstrators
    • 🆕Product & API Comparisons
      • 🆕Comparison of Water Network Products
  • Tutorials
    • GeoDataViz
      • Thematic Mapping Techniques
      • Downloading and using data from the OS Data Hub
      • How to download and use OS stylesheets
      • How to use the OS Maps API
      • Creating a bespoke style in Maputnik
    • GIS
      • Analysing pavement widths
      • Basic routing with OS Open Data and QGIS
      • Walktime analysis using OS Multi-modal Routing Network and QGIS
      • Creating 3D Symbols for GIS Applications
      • Constructing a Single Line Address using a Geographic Address
      • Creating a Digital Terrain Model (DTM)
      • Visualising a road gradient using a Digital Terrain Model
      • Visualising a road gradient using OSMM Highways
    • 🆕APIs
      • 🆕Using OS APIs with EPC API
      • 🆕OS APIs and ArcGIS
  • Deep Dive
    • Introduction to address matching
    • Guide to routing for the Public Sector
      • Part 1: Guide to routing
      • Part 2: Routing software and data options
      • Part 3: Building a routable network
    • Unlocking the Power of Geospatial Data
    • Using Blender for Geospatial Projects
    • A Guide to Coordinate Systems in Great Britain
      • Myths about coordinate systems
      • The shape of the Earth
      • What is position?
        • Types of coordinates
        • We need a datum
        • Position summary
      • Modern GNSS coordinate systems
        • Realising WGS84 with a TRF
        • The WGS84 broadcast TRF
        • The International Terrestrial Reference Frame (ITRF)
        • The International GNSS Service (IGS)
        • European Terrestrial Reference System 1989 (ETRS89)
      • Ordnance Survey coordinate systems
        • ETRS89 realised through OS Net
        • National Grid and the OSGB36 TRF
        • Ordnance Datum Newlyn
        • The future of British mapping coordinate systems
        • The future of British mapping coordinate systems
      • From one coordinate system to another: geodetic transformations
        • What is a geodetic transformation?
        • Helmert datum transformations
        • National Grid Transformation OSTN15 (ETRS89–OSGB36)
        • National Geoid Model OSGM15 (ETRS89-Orthometric height)
        • ETRS89 to and from ITRS
        • Approximate WGS84 to OSGB36/ODN transformation
        • Transformation between OS Net v2001 and v2009 realisations
      • Transverse Mercator map projections
        • The National Grid reference convention
      • Datum, ellipsoid and projection information
      • Converting between 3D Cartesian and ellipsoidal latitude, longitude and height coordinates
      • Converting between grid eastings and northings and ellipsoidal latitude and longitude
      • Helmert transformation worked example
      • Further information
  • Code
    • Ordnance Survey APIs
    • Mapping
    • Routing with pgRouting
      • Getting started with OS MasterMap Highways and pgRouting
      • Getting started with OS MasterMap Highways Network - Paths and pgRouting
      • Getting started with OS NGD Transport Theme and pgRouting
      • Getting started with OS NGD Transport Path features and pgRouting
  • RESOURCES
    • 🆕Data Visualisation External Resources
Powered by GitBook

Website

  • Ordnance Survey

Data

  • OS Data Hub
On this page
  • Introduction
  • Creating a basic map symbol in Blender
  • Exporting the model
  • Using the 3D symbol in your GIS application
  • Going forward...

Was this helpful?

  1. Tutorials
  2. GIS

Creating 3D Symbols for GIS Applications

Using Blender to Derive More Value from Your Point Layer Datasets

PreviousWalktime analysis using OS Multi-modal Routing Network and QGISNextConstructing a Single Line Address using a Geographic Address

Last updated 1 year ago

Was this helpful?

Introduction

Whilst 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.

Creating a basic map symbol in Blender

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.

Exporting the model

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’.

A common way to work with 3D scenes within QGIS is to install and use the ‘Qgis2threejs’ plug-in. This plug-in supports two 3D formats Collada (.dae) or gITF 2.0 (.glb). Instructions for exporting Collada are included above, so if, instead, you were to choose the latter format in the Export screen, you’d thus need to:

  • Select the filename and output folder for the model that you’re exporting.

  • Choose ‘selection only’, so that only the selected ‘tree’ model gets exported. If you’ve chosen the gITF 2.0 format, you’ll need to open the ‘> Include’ sub-menu to find this option, as shown here.

Having worked through these steps, your model should then be exported into the chosen folder. You’re then done with Blender!

Using the 3D symbol in your GIS application

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:

  1. Open a new Scene project and choose a background map.

  2. 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.

  3. 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…

  1. Using the File button, locate and open your exported 3D symbol.

  2. 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.

  3. Apply the Symbology settings.

  1. If you’ve not already got it, open QGIS and install the “Qgis2threejs” plug-in using the Plugins menu. Having done this, you’ll then need to restart QGIS.

  2. Open a new QGIS project and…

    a. add your choice of background mapping.

    b. add or create a point feature layer.

  3. Open the Qgis2threejs ‘exporter’ window. (Web->Qgis2threejs-> Qgis2threejs Exporter)

    a. A new window will appear, showing a 3D view of your project (although you may have to make the layers visible via their checkboxes). The detail shown in this view will dynamically reflect the content chosen in the main QGIS view.

    b. You can navigate the 3D window by click-and-dragging the scroll wheel.

    c. In this environment, point features will, by default, be represented by 3D sphere objects. Obviously, we’ll want to replace these with our own 3D symbols.

  4. In the 3D view, right-click the point layer entry (under Layers) and choose ‘Properties’. A new Layer Properties window will appear, where you can choose a new symbol. We want to use the symbol exported from Blender, so:

    a. Under ‘Type’, choose ‘3D Model’.

    b. In the File Path section below, click ‘…’ to open a file browser.

    c. In the file browser, find and open the ‘tree’ model that you exported from Blender.

    d. Back at the Layer Properties menu, press ‘OK’. You should now notice that the default spheres have been replaced with your Blender model.

    e. If necessary, return to the Layer Properties screen to adjust the model’s scale.

Going forward...

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.

A very simple tree model
Origin moved to base of model.
Exporting 3D symbol in Collada format
Exporting 3D symbol in gITF format
3D symbol, once imported into ArcGIS Pro
Custom 3D symbols, with QGIS