QGIS API Documentation 4.3.0-Master (16eddb2670e)
Loading...
Searching...
No Matches
qgsquantizedmeshterraingenerator.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsterraingenerator.h
3 --------------------------------------
4 Date : August 2024
5 Copyright : (C) 2024 by David Koňařík
6 Email : dvdkon at konarici dot cz
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#pragma once
17
18#include "qgs3drendercontext.h"
19#include "qgschunknode.h"
22#include "qgsrectangle.h"
23#include "qgsterraingenerator.h"
24#include "qgstiledsceneindex.h"
25#include "qgstiledscenelayer.h"
26#include "qgstiles.h"
27
28#include <QPointer>
29
30#define SIP_NO_FILE
31
32class QgsTerrainEntity;
33
34
41{
42 Q_OBJECT
43 public:
48
50
51 void setTerrain( QgsTerrainEntity *t ) override;
52 QgsTerrainGenerator *clone() const override SIP_FACTORY;
53 QgsTerrainGenerator::Type type() const override;
54 void setExtent( const QgsRectangle &extent ) override;
55 QgsRectangle rootChunkExtent() const override;
56 float rootChunkError( const Qgs3DMapSettings &map ) const override;
57 void rootChunkHeightRange( float &hMin, float &hMax ) const override;
58 float heightAt( double x, double y, const Qgs3DRenderContext &context ) const override;
59 QFuture<QgsChunkLoaderResult> loadChunk( QgsChunkNode *node ) override;
60 // Root node has zoom=0, x=0, y=0.
61 // It corresponds to a fake zoom=-1 tile for QgsTileMatrix
62 QgsChunkNode *createRootNode() const override;
63 QFuture<QVector<QgsChunkNode *>> createChildren( QgsChunkNode *node ) override;
64
69 bool setLayer( QgsTiledSceneLayer *layer );
71 QgsTiledSceneLayer *layer() const;
72
73 private:
74 QPointer<QgsTiledSceneLayer> mLayer;
75 std::optional<QgsQuantizedMeshMetadata> mMetadata;
76 QgsCoordinateTransform mTileCrsToMapCrs;
77 QgsTiledSceneIndex mIndex;
78 QgsRectangle mMapExtent;
79 QgsTileXYZ nodeIdToTile( QgsChunkNodeId nodeId ) const;
80 static QgsTerrainTileEntity *loadEntityInWorker(
81 QgsChunkNode *node, Qgs3DRenderContext renderCtx, QgsTiledSceneIndex index, QgsCoordinateTransform tileCrsToMapCrs, double vertScale, bool shadingEnabled, long long tileId, QgsVector3D chunkOrigin
82 );
83 Qt3DCore::QEntity *finishEntity( QgsTerrainTileEntity *entity, QgsTerrainGenerator::TerrainTextureResources textureResources, Qt3DCore::QEntity *parent );
84};
Definition of the world.
Rendering context for preparation of 3D entities.
Handles coordinate transforms between two coordinate systems.
static QgsTerrainGenerator * create()
Creates a new instance of a QgsQuantizedMeshTerrainGenerator object.
A rectangle specified with double values.
Base class for generators of terrain.
QgsTerrainGenerator()
Create new terrain generator.
virtual void setTerrain(QgsTerrainEntity *t)
Sets terrain entity for the generator (does not transfer ownership).
virtual QgsTerrainGenerator * clone() const =0SIP_FACTORY
Makes a copy of the current instance.
Stores coordinates of a tile in a tile matrix set.
Definition qgstiles.h:43
An index for tiled scene data providers.
Represents a map layer supporting display of tiled scene objects.
A 3D vector (similar to QVector3D) with the difference that it uses double precision instead of singl...
Definition qgsvector3d.h:33
#define SIP_FACTORY
Definition qgis_sip.h:83