16#ifndef QGS3DMAPSCENE_H
17#define QGS3DMAPSCENE_H
21#include <Qt3DCore/QEntity>
29 class QRenderSettings;
40 class QForwardRenderer;
51class QgsTerrainEntity;
52class QgsChunkedEntity;
59class Qgs3DMapSceneEntity;
103 QVector<QgsPointXY> viewFrustum2DExtent()
const;
106 int terrainPendingJobsCount()
const;
112 int totalPendingJobsCount()
const;
128 float worldSpaceError(
float epsilon,
float distance )
const;
215 Q_DECL_DEPRECATED
static QMap< QString, Qgs3DMapScene * > openScenes()
SIP_DEPRECATED;
237 void enableClipping( const QList<QVector4D> &clipPlaneEquations );
245 void disableClipping();
249 static std::function< QMap< QString, Qgs3DMapScene * >() > sOpenScenesFunction;
287 void updateTemporal();
290 void onCameraChanged();
291 void onFrameTriggered(
float dt );
292 void createTerrain();
293 void onLayerRenderer3DChanged();
294 void onLayersChanged();
295 void createTerrainDeferred();
296 void onBackgroundColorChanged();
298 void updateCameraLens();
299 void onSkyboxSettingsChanged();
300 void onShadowSettingsChanged();
301 void onAmbientOcclusionSettingsChanged();
302 void onEyeDomeShadingSettingsChanged();
303 void onDebugShadowMapSettingsChanged();
304 void onDebugDepthMapSettingsChanged();
305 void onCameraMovementSpeedChanged();
306 void onCameraNavigationModeChanged();
307 void onDebugOverlayEnabledChanged();
309 void on3DAxisSettingsChanged();
311 bool updateCameraNearFarPlanes();
321 void addCameraViewCenterEntity( Qt3DRender::QCamera *camera );
324 void updateSceneState();
325 void updateScene(
bool forceUpdate =
false );
326 void finalizeNewEntity( Qt3DCore::QEntity *newEntity );
327 int maximumTextureSize()
const;
329 void handleClippingOnEntity( QEntity *entity )
const;
330 void handleClippingOnAllEntities()
const;
337 Qt3DLogic::QFrameAction *mFrameAction =
nullptr;
339 QgsTerrainEntity *mTerrain =
nullptr;
340 QList<Qgs3DMapSceneEntity *> mSceneEntities;
342 Qt3DCore::QEntity *mEntityCameraViewCenter =
nullptr;
344 QMap<QgsMapLayer *, Qt3DCore::QEntity *> mLayerEntities;
345 bool mTerrainUpdateScheduled =
false;
348 QList<Qt3DCore::QEntity *> mLightEntities;
349 QList<QgsMapLayer *> mModelVectorLayers;
352 Qt3DCore::QEntity *mEntityRotationCenter =
nullptr;
357 bool mSceneUpdatesEnabled =
true;
359 QList<QVector4D> mClipPlanesEquations;
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)
bool hasSceneUpdatesEnabled() const
Returns whether updates of the 3D scene's entities are allowed.
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.
void setSceneUpdatesEnabled(bool enabled)
Sets whether updates of the 3D scene's entities are allowed.
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.