QGIS Crowdfunding: 2.5D Rendering

QGIS has a great variety of rendering possibilities from categorization to data defined settings which allows to make awesome cartographic products. It also features some extensions like qgis2threejs and globe that make it possible to explore the third dimension. While these extensions are great tools they have their limitations like they do not fully integrate with the styling system or cannot be used in print composers.

2.5D rendering

Mockup of a possible rendering result with a combination of classify and 2.5D effect

This project aims to improve the internal possibilities of QGIS to give an oblique view 3D effect based on a height attribute and an angle while fully preserving all the possibilities which the QGIS styling offers. But it doesn’t stop there, the whole rendering is built in a modular way so you can use all of its parts for countless other possibilities.

Funds are already available for a major part of this project thanks to ADUGA and the Regional Council of Picardy. For the missing pieces we would like to ask the community to help us to create the required extensions to include these amazing new functionalities into QGIS.

Geometry modifiers

Every building exists of the parts: floor, walls and roof. To get a nice effect can paint a shadow on the floor, then draw the walls for the buildings and finally paint the roof.

The wall as well as the roof geometries are nothing but modified versions of the source geometry. The roof is a translated version of it, the walls a 2 dimensional extrusion (the area between footprint and translated roof outline).

A new possibility to define a geometry modifier will be introduced. For every symbol layer in the layer styling it will be possible to define an expression that transforms the geometry before it is being painted.

Rendering order

Because buildings which are further apart from the camera need to be painted first and buildings closest to the camera last it is required that we can control the order in which features are rendered. It will be possible to define an expression (or simply a field) in which features are rendered. For this use-case this will be based on the geometry but you may use this to control the rendering order of any kind of layer. Or if you are a plugin author you can just send any feature request with an order by to the layer.

It is planned that for best compatibility this will be implemented in a provider independent way. Due to performance considerations we plan to add the possibility to delegate this job to the database in the future and will keep this in mind during the implementation.

Expressions

A series of expressions will need to be developed

Translation of a geometry

Extrusion of a 2D geometry

Evaluation of a string as expression

Degrees to radians

Extract the individual points of a linestring

Azimuth of a line segment

Order a multipolygon by centroid (to render the walls of a building in the appropriate sequence)

Style variables

To make it easy to configure the style a new possibility to assign style variables will be introduced. This will make it possible to specify an expression which will define the height of individual buildings one single time on the style dialog and then reference and use this variable from various places within the rendering system.

Detailed specification

We have written a document that contains more detailed specifications for the individual parts. If you would like to get access to this, please contact us and we will send you a digital copy of it.

Tagged with: , ,
Posted in 3D, C++, Featured, QGIS
4 Comments » for QGIS Crowdfunding: 2.5D Rendering
  1. Ale says:

    Great news. Thank you all. I hope in future we will have full 3d (all geometries included)support in qgis so if possible try to consider this in your development

3 Pings/Trackbacks for "QGIS Crowdfunding: 2.5D Rendering"
  1. […] the first parts of our recent crowdfunding project for 2.5D rendering have been merged into QGIS master and will be shipped with QGIS […]

  2. […] the first parts of our recent crowdfunding project for 2.5D rendering have been merged into QGIS master and will be shipped with QGIS […]

Leave a Reply

Contribute

Status

Completed
Thanks to everybody who made it possible to make this happen!

Deadline

November 30, 2015

Participate

There are two possibilities to fund this project.
Paypal
The easy way is to use paypal to raise the progress bar.
Invoice
If it is not possible for your organization to participate this way, we can also write an offer and an invoice. Please contact us directly by mail.
All funds will be returned if the minimum required amount of CHF 19800 cannot be raised by November 30, 2015.