16 #ifndef QGS3DMAPSCENE_H
17 #define QGS3DMAPSCENE_H
21 #include <Qt3DCore/QEntity>
30 class QRenderSettings;
43 class QForwardRenderer;
52 class QgsTerrainEntity;
53 class QgsChunkedEntity;
96 QVector<QgsPointXY> viewFrustum2DExtent();
99 int terrainPendingJobsCount()
const;
105 int totalPendingJobsCount()
const;
126 float worldSpaceError(
float epsilon,
float distance );
172 void updateTemporal();
175 void onCameraChanged();
176 void onFrameTriggered(
float dt );
177 void createTerrain();
178 void onLayerRenderer3DChanged();
179 void onLayersChanged();
180 void createTerrainDeferred();
181 void onBackgroundColorChanged();
182 void onLayerEntityPickedObject( Qt3DRender::QPickEvent *pickEvent,
QgsFeatureId fid );
184 void updateCameraLens();
185 void onRenderersChanged();
186 void onSkyboxSettingsChanged();
187 void onShadowSettingsChanged();
188 void onEyeDomeShadingSettingsChanged();
189 void onDebugShadowMapSettingsChanged();
190 void onDebugDepthMapSettingsChanged();
191 void onCameraMovementSpeedChanged();
193 bool updateCameraNearFarPlanes();
198 void addCameraViewCenterEntity( Qt3DRender::QCamera *camera );
201 void updateSceneState();
203 void finalizeNewEntity( Qt3DCore::QEntity *newEntity );
204 int maximumTextureSize()
const;
210 Qt3DLogic::QFrameAction *mFrameAction =
nullptr;
212 QgsTerrainEntity *mTerrain =
nullptr;
213 QList<QgsChunkedEntity *> mChunkEntities;
215 Qt3DCore::QEntity *mEntityCameraViewCenter =
nullptr;
217 QMap<QgsMapLayer *, Qt3DCore::QEntity *> mLayerEntities;
218 QMap<const QgsAbstract3DRenderer *, Qt3DCore::QEntity *> mRenderersEntities;
219 bool mTerrainUpdateScheduled =
false;
222 QList<Qgs3DMapScenePickHandler *> mPickHandlers;
224 QList<Qt3DCore::QEntity *> mLightEntities;
225 QList<QgsMapLayer *> mModelVectorLayers;
228 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.
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.
SceneState
Enumeration of possible states of the 3D scene.
@ Ready
The scene is fully loaded/updated.
@ Updating
The scene is still being loaded/updated.
void totalPendingJobsCountChanged()
Emitted when the total number of pending jobs changes.
void fpsCounterEnabledChanged(bool fpsCounterEnabled)
Emitted when the FPS counter is activated or deactivated.
QgsCameraController * cameraController()
Returns camera controller.
void sceneStateChanged()
Emitted when the scene's state has changed.
SceneState sceneState() const
Returns the current state of the scene.
void terrainEntityChanged()
Emitted when the current terrain entity is replaced by a new one.
QgsTerrainEntity * terrainEntity()
Returns terrain entity (may be temporarily nullptr)
Base class for all renderers that may to participate in 3D view.
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.
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features