More QGIS 3D

Crowdfunding Status: Completed

Time Remaining:

Update: We have reached the target - many thanks to everyone who contributed! We will be starting the work soon.

Vesuvio

QGIS 3.0 will be the first release with support for 3D map views. This new functionality has been added thanks to a grant from QGIS.org and implemented by Lutra Consulting. The initial 3D support provides 3D views where the map is rendered over terrain generated from a digital elevation model. 3D renderers can also be configured for map layers to provide true 3D rendering of data (e.g. 3D models of trees or extruded polygons of buildings).

Over the past few months, we’ve received a lot of great feedback from users which resulted in a long wish-list for additional functionality to further improve QGIS’ 3D display capabilities beyond the budget, scope and time frame of the initial grant funding.

This crowdfunding campaign aims to fund the development of the most requested features to bring QGIS’ 3D capabilities on par with those of proprietary GIS software!

New Features

Print layout support. It’s already possible to save the 3D map view as an image file, but for those requiring print layouts, this still requires a multi-step process of saving 3D scene images and then embedding them within print layouts. Moreover, the resolution of the saved images is limited to the size of the 3D window. To overcome these limitations, we will add a new type of layout item, capable of high resolution exports of 3D map scenes. This will simplify the use of 3D scenes for printing and allow high resolution scene exports.

Camera animation support. Users may prepare a path for the camera to follow in order to create fly-throughs. The idea is to allow users to define keyframes on a timeline with camera positions and view directions for various points in time. The 3D engine should then be able to interpolate camera parameters between keyframes, creating animations that can be played within the 3D view or exported frame-by-frame to a series of images (that can be further processed into a video file). This should also open the possibility of animating other entities in 3D scenes in the future!

Mont Blanc

Better camera control. Having good camera control capability is crucial for the efficient inspection of data in 3D scenes. The basic controls for moving and rotating the camera are already implemented, but we would like to add some additional camera controls:

  • Allow rotating the camera without moving it (currently it can only rotate around a point)
  • Respecting the actual terrain height when rotating the camera around a point
  • "Elevator" - allowing changes to the camera’s elevation while maintaining its view direction
  • Unlock viewing angles to allow looking under the terrain - useful for geologists

Rule-based 3D rendering. One of the strengths of 3D view in QGIS is how easy one can configure 3D renderers for vector layers. However currently it is only possible to define one 3D renderer per layer meaning all features appear the same. We would like to add rule-based rendering for 3D just like there is already support for rule-based 2D rendering and labelling. This will make it much easier to apply more complex styling in 3D without having to duplicate vector layers and apply filters.

Earth as a globe. Often when working with data covering large areas of the world it is more appropriate to display the Earth in its true shape - as a globe. Users should therefore be able to display data either in a planar 3D scene (using the CRS of their choice) or on a globe. The are several terrain tile providers with global coverage, however each has different formats and terms of use. There is AGI (used by Cesium), Pelican Mapping (used by osgEarth) and Amazon/Mapzen. We will evaluate which one will best fit QGIS' 3D needs best.

Globe

Global terrain coverage. While it is possible to use any raster layer as a digital elevation model (for generating the terrain in the 3D view), it would be more convenient to have easy access to at least one existing online terrain tile provider. This would make it much quicker / easier to create 3D scenes without needing to download and prepare DEMs manually.

Skybox. As of now the whole 3D scene uses a single background colour. Skybox support will allow the scene to be rendered using sky images, making the scene look more realistic by using a blue sky with clouds or a romantic sunset!

Skybox
Image courtesy of Learn OpenGL

Map themes for terrain. The texture used for the terrain in 3D view is made from a styled 2D render of map layers, so it has the same styling as the ordinary 2D map canvas. Sometimes it is useful to use a different map style for the 3D terrain - for example we may want to avoid rendering trees as green circles on the terrain if they have a 3D renderer assigned. Using QGIS' map themes functionality, users can define multiple map styles and switch between them for 2D map views. By allowing a choice of map themes for terrain in 3D view it will then be easy to have dedicated map themes for 3D views and to switch between them at any time.

Configuration of lights. Right now the 3D view always uses just one white light placed above the centre of the 3D scene. It would be nice to give users the power to set up light source position, colour and intensity - or even define multiple lights for some interesting effects.

Loading map tiles in parallel. When loading terrain tiles (that is, generating geometry from the DEM and texturing it based on the 2D map), we use a simple loading queue where only one tile is loaded at a time. These days, with multi-core CPUs it would be a shame not to load multiple tiles at the same time, making better use of the CPU, resulting in faster loading of data in 3D scenes.

If you have a technical question or would like to discuss this project further please contact Martin Dobias, the primary project developer.

Crowdfunding

This is a crowdfunded project. Crowdfunding spreads the burden of development costs for projects that benefit the wider QGIS community. Find out more below and on our main crowdfunding page.

Campaign Start 6 February 2018
Campaign Deadline 16 March 2018
Project Duration* 7 weeks
Project Start* 3 April 2018
Goal 12,500 €
Minimum donation 100 €

* Project start date and duration are indicative.

Support this Project

This project cannot go ahead without your support! We use crowdfunding to raise funds for projects like this one which benefit a wide community of users. The project will only go ahead if sufficient funding can be raised before the project crowdfunding deadline. Please see our main crowdfunding page for more information about our crowdfunding initiative and how it works.

Pledging funds is safe and easy. Simply fill in the pledge form to state how much you want to pledge - pledges only become binding if the funding target is reached before the deadline.