We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

QGIS 3D: current state and future plans

00:00

Formal Metadata

Title
QGIS 3D: current state and future plans
Title of Series
Number of Parts
295
Author
Contributors
License
CC Attribution 3.0 Germany:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
QGIS 3D native rendering has been introduced since QGIS 3.0, thanks for the funding we received from QGIS.org. Over the past couple of years, we have added several features and enhancements. QGIS 3D can now render raster, vector and mesh layers. Depending on the data or geometry type, there are various method of visualising and styling the 3D data. In this talk, we will go through: - Supported 3D data formats - Sources (repositories/download sites and services) where to get 3D data from - Global and per layer configuration options - 3D rendering options (symbology/styling, rule based renderer) - Thematic maps with data-defined extrusions and the rule-based renderer - Drape 2D-data to 2.5d with Processing and a DTM - Animating a movie based on key frames - Printing 3D in a layout The features we'd like to develop in future will include: - Rendering of point cloud - Enhancing the 3D rendering performance - Support for globe
Keywords
AreaSkewnessSoftware developerView (database)Polygon meshGrass (card game)GUI widgetProcess (computing)Level (video gaming)MappingMereologyRaster graphicsEndliche ModelltheorieWaveWindowDigitizingMultiplication signVisualization (computer graphics)Bookmark (World Wide Web)FreewareInformation technology consultingINTEGRALDemosceneConfiguration spacePlug-in (computing)Projective planeContent (media)BitSoftwareCodeTexture mappingDefault (computer science)Three-dimensional spacePerspective (visual)Cartesian coordinate systemVolumenvisualisierungSummierbarkeitGauge theoryMenu (computing)Revision controlLecture/Conference
Maß <Mathematik>Discrete element methodRaster graphicsData typeImage resolutionView (database)Scale (map)Vector spaceAsynchronous Transfer ModeLogarithmLeast squaresDatabasePolygon meshHTTP cookieBit rateLoop (music)Scaling (geometry)Point (geometry)MereologyCategory of beingGraph coloringAdditionSymbol tableComputer configurationMathematicsVolumenvisualisierungLevel (video gaming)CuboidGUI widgetWeb browserCoefficient of determinationVector spaceComputer animation
Endliche ModelltheorieSphereCylinder (geometry)Library (computing)Differential algebraic equationPoint (geometry)SphereGraph coloringComputer configurationRange (statistics)Limit (category theory)Transformation (genetics)Endliche ModelltheorieFile formatCodeComputer fileDemosceneWaveLibrary (computing)Symbol tableObject (grammar)Cylinder (geometry)Projective planeCubeConnectivity (graph theory)WavefrontCollisionMathematicsMoment (mathematics)Computer animation
Clique-widthPixelLine (geometry)Line (geometry)Revision controlPoint (geometry)Right angleBuffer solutionArtistic renderingPixelComputer configurationMathematicsZoom lensClique-widthExecution unitLevel (video gaming)MetreDistanceComputer animation
GeometryPolygon meshPatch (Unix)MultiplicationTrianglePlanar graphPolygonSurfaceAttribute grammarPoint (geometry)PlanningVisualization (computer graphics)Polygon meshLogical constantObject (grammar)Planar graphSurfaceMetreBuildingComputer configurationSource codeGeometryCuboidDefault (computer science)Multiplication signCASE <Informatik>PolygonShape (magazine)TriangleLevel (video gaming)Different (Kate Ryan album)NumberSelf-organizationSpecial unitary groupHill differential equationExpressionComputer animation
Clique-widthInversion (music)DiffusionPolygonPolygonRevision controlEndliche ModelltheorieArtistic renderingBuildingSymbol table
Rule of inferenceBuildingKeyboard shortcutVertex (graph theory)GeometryVertex (graph theory)MappingSymbol tableSampling (statistics)Rule of inferenceConfiguration spaceDifferent (Kate Ryan album)Graph coloringComputer configurationType theoryDecision theoryInsertion lossWebsiteBuildingLevel (video gaming)Revision controlKeyboard shortcutCodeTouchscreenArtistic renderingEvent horizonComputer animation
Keyboard shortcutTouchscreenDrag (physics)Arrow of timeShift operatorControl flowWeb pageMetreMeasurementLetterpress printingMenu (computing)DemosceneKeyboard shortcutCodeGUI widgetResultantFunctional (mathematics)View (database)Revision controlSystem identificationLevel (video gaming)Arithmetic meanDistanceConfiguration spaceLetterpress printingCoefficient of determinationWindowMappingGame controllerSingle-precision floating-point formatProjective planePoint (geometry)Line (geometry)CodeRoundness (object)MeasurementGoodness of fitFlow separationComputer animation
Function (mathematics)Directory serviceClique-widthFrame problemEndliche ModelltheoriePosition operatorMultiplication signDefault (computer science)Different (Kate Ryan album)Graph coloringSingle-precision floating-point formatDemosceneTexture mappingInterpreter (computing)InterpolationCASE <Informatik>BitComputer animation
Computer configurationGeometrySemantics (computer science)BootingBuildingWikiFile formatGraph coloringSingle-precision floating-point formatComputer configurationDefault (computer science)DemoscenePosition operatorSource codeOpen setComputer fileLevel (video gaming)BuildingGoodness of fitInformationWindows RegistryFeedbackPlug-in (computing)FreewareFile formatBootingComputer animation
DemosceneAcoustic shadowObject (grammar)Vector spaceLine (geometry)Type theoryFile formatTwitterDemosceneElectronic mailing listAcoustic shadowCommunications protocolCountingMaterialization (paranormal)Object (grammar)Point cloudPresentation of a groupMultiplication signFreezingUser interfaceTexture mappingComputer hardwareTesselationAreaFunctional (mathematics)Point (geometry)Uniqueness quantificationArtistic renderingComputer animation
Point (geometry)Electronic mailing listLaptopINTEGRALMultiplication signPoint cloudOpen sourceEndliche ModelltheorieProjective planeCASE <Informatik>Library (computing)Internet service providerOrder (biology)Extension (kinesiology)ImplementationArmGeometryWhiteboardScaling (geometry)WordArtistic renderingGraphics processing unitComputer hardwareValidity (statistics)File formatGrass (card game)CuboidGoodness of fitMeeting/Interview
Transcript: English(auto-generated)
Hi everyone. Very quick poll. Who has used QGIS 3D before? Okay, cool. Quite some people. Alright. Just very briefly about me.
I'm a software developer. I work for Lutra Consulting and we do QGIS software development among other things. But the most important thing, QGIS 3D. Why do we need 3D views? There are plenty of reasons. I chose one of my favorites because 3D terrain visualization is very cool.
It has a lot of views for urban planning and plenty of other applications. QGIS has been going on for quite a lot of time now, but the 3D third dimension was always lacking.
Before we had the native QGIS 3D support, there were some other free software tools that people could use. There was this Envis tool from Grass GIS, GV-Sig had some support for 3D views.
There still is a globe plug-in in QGIS itself. But the integration was never great with the rest of QGIS and we wanted to have really this nice integrated experience like you have with all the other tools.
Very quickly about history, in 2017 we had the QGIS grant proposal accepted to start the initial work on QGIS 3D and then one year later the first release of QGIS 3D
was there in QGIS 3.0. Most recent news is that this year during the summer we had the Summer of Code project with Ismael Suni here, you can wave to others, who has done a really great job
and implemented a bunch of new nice things. So, quickly about how to use QGIS 3D. If you use some of the more recent versions, you just click the view menu, new 3D map view
and there you get like a new widget where you can see the 3D content. So it can look something like this, so on the top parts that's the usual 2D map canvas, on the bottom part you can see the 3D view already with some 3D styling.
So, this is just like a bit of a zoomed in portion of that scene. So let's go slowly about like what are the pieces of the 3D scenes that we work with.
So let's start with terrain. The terrain we generated based on heat maps and so you have a raster layer with your digital terrain elevation model and so based on that we generate this 3D mesh like you
can see here on the illustration and then on top of this mesh we need to apply some texture. This texture we just take the 2D rendered map and we put it there. So basically when you first time open the 3D window you see the 2D map as usual but
with the thing that you can start turning the map even into the perspective and so on. So, the terrain you can configure it in the configuration dialogue, so on the left side
you can see the default view when the terrain is just flat with texture on top of it, on the right side when we already apply some digital elevation model there.
You can also set the vertical scale to kind of make your 3D terrain look more pronounced. Now how about the vector data. So the key part when dealing with vectors is to use this layer styling dog widget.
You can also double click on the layer to open the full dialogue with properties but this one is more handy because immediately it applies your changes and so there is this new tab with this kind of colorful box where you can set the 3D render.
So every layer in addition to the 2D map render it can also have a 3D map render assigned. So, now for points, for points we have three basic ways how to render them.
So the first one is to just use basic symbols like spheres or cubes or cylinders and a few more options and you just apply a color maybe some transformation to scale
them up or down, rotate and so on and that's it. The second option is to use 3D models so we use the asset import library to load the 3D models so there is a wide range of models like the colada format or the
wavefront object files and maybe 20 more. These you can load and you can as well change their color. Right now there are some limitations so you can only change the color of the whole model.
You can't change the colors of individual components. Then, yeah, thanks to Raymond can you also wave your hand?
Ah, that's true. So we also have some 3D models from the community that you can use that are included with QGIS. If you have any suggestions what would you like to have as 3D models maybe you can talk to Raymond. And most recently we have also support for so-called billboards and that's basically
if you want to use some 2D markers to be shown in the 3D scene this is what you get. So these are some kind of special objects or entities that whenever you move the map around
and rotate it they are always facing the camera so they don't seem to be like from the 3D world. That's one of the new features done during the Summer of Code project. The billboard support is not even released yet but it will become released in 3.10 version.
So now for line rendering there are two options right now how to do that. One is the simple lines where you define the line within pixels and the width doesn't change
when you zoom in or zoom out. The other option is with the buffered approach so that what we do is just to take the line and buffer it with some distance let's say five meters and so this is
this is the width defined in map units so that as soon as you start zooming closer also the line appears zoom out. The kind of unfortunate thing is that with buffered rendering we ignore the z coordinates but hopefully that will get fixed as well
at some point. Now for polygon rendering that's even more interesting so there are basically four basic options what to do. The most basic one is if you use just the
planar entity so if you have let's say footprints of something by default it would be shown just as a like a planar feature. You can use extrusion to get this kind of box shape and the extrusion
it can be based on some it can be either a constant height let's say 20 meters or you can have it based on an expression or so it can be a data defined value maybe you have an attribute with
a number of levels of a building so you say that the extrusion is number of levels times let's say three meters. For more advanced use there is support for 3D geometries
so one option is to use so-called polyhedral surfaces or some call it polygon z so you have objects like this where you have like really individual pieces of the object so these are like planes that you render and the last one is the triangular meshes
it looks nearly the same the only difference is that in this case it's a really object consisting of the individual triangles. It depends on the source of the data you get
sometimes it's like the triangular mesh sometimes it's the polyhedral surfaces and you can get a nice visualization like this including roofs and everything in one of the recent versions we have added the highlighting of polygon edges so this has been
very important improvement for the rendering of buildings this is for example a model of city of Prague with the buildings there so it's one of the free models that you can download
and use. Another thing for the styling is that we also support rule-based rendering so it's not that you use just the single symbol for all the features within a layer but
you can define a bunch of rules every rule can have let's say different colors or even different types of symbols. Just a short note about the handling of z values so if you have true 3d coordinates there are several ways how the z value can be applied so this is decided by
the altitude clamping which you can set in the layer configuration so it can be either relative where you also use the z value of the terrain plus z value of the geometry itself or just
use the absolute or clamp it to terrain. Another thing is the altitude binding where you kind of decide whether the terrain elevation is taken just from the centroid which is let's say more useful for rendering of buildings and or the other option is to use per vertex so for example
if you have a road you don't want to just take a centroid of the whole road but you want to sample the z value from every vertex. Now for the 3d maps tools so the basic tool of course
is navigation you can use mouse or keyboard to navigate now with a not yet released version that's another improvement from summer of code you can also use on-screen controls it's good for beginners when they are not yet completely sure about the other means of
moving the map. There is identification tool which works exactly the same way as with 2d map tool for identification just click on a point it can be either on the terrain or it can be the 3d entity
and you will get the results on a dog widget. Another improvement from the summer of code project is the measurement tool so now you can go around if you can see this orange line
line here click several points and get the true 3d distance. So and for some more functionality we have print layout support so if you need to print maps
now you can as well you can even put multiple views on the same 3d scene into a single print layout you just set the view in your main window and then get it get all the configuration copied to the print layout. Okay we have support for animations so if this works
you can define several keyframes within your animation so let's say in for the first keyframe at the time zero you set the camera position to be here for next keyframe you set
the camera position somewhere else and QG3d will do the interpolation of the frames and yeah do the hard work for you.
Then we can also do export of animations so the animation you have prepared you don't need to export it frame by frame manually that would be a bit tedious you can with this tool create like a whole bunch of pictures in one folder and then use some third-party tool
to kind of join all the pictures together to some avi animation or so. For some of the advanced features or advanced it's possible to also enable terrain shading
so by default we just render the texture as it is without applying any light on it but in various cases if you want to better see let's say like small details in the
terrain model you can enable the shading and you can see that the small differences are much easier to see or you can even apply like some shininess to the model.
As well you can configure lights like by default there is a single light on top of the scene in the center but if you are up for something something more fancy you can change the colors of the lights or their positions and so on. So quickly about the data for 3d
one very nice source for the data is the city gml format or its kind of younger cousin city json there is nowadays very nice plugin city json loader which with like few clicks you can load the data in qgis and you can as well get the data automatically styled so for example here
this is one of the example files from delft i think and yeah it's very handy open street map is a good source of buildings data but not that many buildings have like elevation
information so that's also something for the open street map community maybe to keep working on and for myself i started for me doing like a registry of 3d data available there is not that
much there yet so if you have some good tips with free open data i would be happy to see some feedback from you on that and finally for the future the near future is that there is another small qgis grant to kind of improve support for large scenes to make them
load faster to make them load in the background so it doesn't freeze your user interface and like for the far future we have a long wish list like i'm very happy that's every time
i do a presentation about qgis 3d i need to change the wish list because there are new and new features implemented from it so but still there are plenty of rendering techniques we would like to implement like shadows or transparency new materials like to be able to show textured
objects and plenty of other things of course support for globes right now we just support like let's say local scenes which are in one like flat area yeah some protocols like 3d tiles
support for point clouds that would be amazing and things like animation of data within the scene so right now you can only move the camera around but it would be nice to be also able to let's say move individual objects there and that's it so thank you very much it's perfect
20 minutes exactly as you did so i don't know what my function is here but there probably
some questions i expect uh are there there's five minutes left okay i count about five i think uh starts in the back can you tell anything about the hardware you need
the hardware you need to do all this just any ordinary laptop is fine um the reason i asked this is uh can you also run it within the vm without any hardware for the gpu yes yes uh vincent says you can i haven't tried it
myself but it should be possible if you have the like um some extended gpu supports there or maybe it just works out of the box another item for your wish list perhaps but uh have you
considered procedural modeling aka city engine in other worlds uh ability to drive 3d models yes that would be detail perhaps that would be awesome i will probably put it to the wish list for the next time uh what about the post gis 3d support
it has been improved but uh how far but this should just work out of the box so if you have 3d geometries in post gis you can just load them and they
tin should work as well i think haven't tried though thanks for nice overview and i'm interested in this billboard implementation do you also implement that for the labels not yet so labels i think that will be like the next thing that
would be worth implementing with uh billboards so this was kind of like first step in order to be able to also show labels later more questions i think we still have time
but i left my phone on my seat thank you very much have you considered about something about the point clouds as just displaying the point clouds over the city scale or what are small projects yeah i would love to have point cloud support in
qges the thing is that there is kind of longer path towards that so first of all we kind of need to have some um like support to just like for data providers to open these formats and so on
some to integrate some libraries that already work with point clouds and then maybe the next step would be to allow like 2d and 3d rendering of them so definitely something we would like to have but we are not there yet maybe if possible we would try to run like a crowdfunding
campaign to get like interested parties to help out with that okay because there are some other successful open source projects which could be easily integrated to qgis as we have in qgis we have done it with grass and other projects so i think it would have been it would make sense to
build on the top of that just for the project and start from there because then you don't need to build the basic engines for that yeah definitely like the for point clouds especially there is this great pdol library or poodle or i don't know what's the proto valid pronunciation
and that one would be like the first thing to look at for the integration okay good thank you very much any more questions i think we still have time one more minute no then thank you martin