16#ifndef QGS3DMAPSCENE_H
17#define QGS3DMAPSCENE_H
21#include <Qt3DCore/QEntity>
30 class QRenderSettings;
41 class QForwardRenderer;
52class QgsTerrainEntity;
53class QgsChunkedEntity;
104 QVector<QgsPointXY> viewFrustum2DExtent()
const;
107 int terrainPendingJobsCount()
const;
113 int totalPendingJobsCount()
const;
129 float worldSpaceError(
float epsilon,
float distance )
const;
198 Q_DECL_DEPRECATED
static QMap< QString, Qgs3DMapScene * > openScenes()
SIP_DEPRECATED;
202 static std::function< QMap< QString, Qgs3DMapScene * >() > sOpenScenesFunction;
240 void updateTemporal();
243 void onCameraChanged();
244 void onFrameTriggered(
float dt );
245 void createTerrain();
246 void onLayerRenderer3DChanged();
247 void onLayersChanged();
248 void createTerrainDeferred();
249 void onBackgroundColorChanged();
251 void updateCameraLens();
252 void onSkyboxSettingsChanged();
253 void onShadowSettingsChanged();
254 void onAmbientOcclusionSettingsChanged();
255 void onEyeDomeShadingSettingsChanged();
256 void onDebugShadowMapSettingsChanged();
257 void onDebugDepthMapSettingsChanged();
258 void onCameraMovementSpeedChanged();
259 void onCameraNavigationModeChanged();
260 void onDebugOverlayEnabledChanged();
262 void on3DAxisSettingsChanged();
264 bool updateCameraNearFarPlanes();
274 void addCameraViewCenterEntity( Qt3DRender::QCamera *camera );
277 void updateSceneState();
278 void updateScene(
bool forceUpdate =
false );
279 void finalizeNewEntity( Qt3DCore::QEntity *newEntity );
280 int maximumTextureSize()
const;
281 Qgs3DMapSceneEntity::SceneContext buildSceneContext( )
const;
287 Qt3DLogic::QFrameAction *mFrameAction =
nullptr;
289 QgsTerrainEntity *mTerrain =
nullptr;
290 QList<Qgs3DMapSceneEntity *> mSceneEntities;
292 Qt3DCore::QEntity *mEntityCameraViewCenter =
nullptr;
294 QMap<QgsMapLayer *, Qt3DCore::QEntity *> mLayerEntities;
295 bool mTerrainUpdateScheduled =
false;
298 QList<Qt3DCore::QEntity *> mLightEntities;
299 QList<QgsMapLayer *> mModelVectorLayers;
302 Qt3DCore::QEntity *mEntityRotationCenter =
nullptr;
Manages the various settings the user can choose from when exporting a 3D scene 3.
void terrainPendingJobsCountChanged()
Emitted when the number of terrain's pending jobs changes.
Qgs3DAxis * get3DAxis() const
Returns the 3D axis object.
void viewed2DExtentFrom3DChanged(QVector< QgsPointXY > extent)
Emitted when the viewed 2D extent seen by the 3D camera has changed.
void fpsCountChanged(float fpsCount)
Emitted when the FPS count changes.
Qgs3DMapSettings * mapSettings() const
Returns the 3D map settings.
QgsAbstract3DEngine * engine() const
Returns the abstract 3D engine.
void gpuMemoryLimitReached()
Emitted when one of the entities reaches its GPU memory limit and it is not possible to lower the GPU...
QgsCameraController * cameraController() const
Returns camera controller.
SceneState
Enumeration of possible states of the 3D scene.
@ Ready
The scene is fully loaded/updated.
@ Updating
The scene is still being loaded/updated.
QgsTerrainEntity * terrainEntity()
Returns terrain entity (may be temporarily nullptr)
void totalPendingJobsCountChanged()
Emitted when the total number of pending jobs changes.
Qt3DCore::QEntity * layerEntity(QgsMapLayer *layer) const
Returns the entity belonging to layer.
void fpsCounterEnabledChanged(bool fpsCounterEnabled)
Emitted when the FPS counter is activated or deactivated.
void sceneStateChanged()
Emitted when the scene's state has changed.
SceneState sceneState() const
Returns the current state of the scene.
QList< QgsMapLayer * > layers() const
Returns the layers that contain chunked entities.
void terrainEntityChanged()
Emitted when the current terrain entity is replaced by a new one.
Base class for all renderers that may to participate in 3D view.
QgsRange which stores a range of double values.
Base class for all map layer types.
A rectangle specified with double values.
Base class for all skybox types.
Contains the configuration of a skybox entity.