16 #ifndef QGS3DMAPSETTINGS_H 
   17 #define QGS3DMAPSETTINGS_H 
   24 #include <Qt3DRender/QCamera> 
   74     void resolveReferences( 
const QgsProject &project );
 
  153     void setBackgroundColor( 
const QColor &color );
 
  155     QColor backgroundColor() 
const;
 
  158     void setSelectionColor( 
const QColor &color );
 
  160     QColor selectionColor() 
const;
 
  170     void setLayers( 
const QList<QgsMapLayer *> &layers );
 
  180     QList<QgsMapLayer *> layers() 
const;
 
  190     void setTerrainVerticalScale( 
double zScale );
 
  192     double terrainVerticalScale() 
const;
 
  198     void setMapTileResolution( 
int res );
 
  204     int mapTileResolution() 
const;
 
  210     void setMaxTerrainScreenError( 
float error );
 
  219     float maxTerrainScreenError() 
const;
 
  225     void setMaxTerrainGroundError( 
float error );
 
  233     float maxTerrainGroundError() 
const;
 
  240     void setTerrainElevationOffset( 
float offset );
 
  255       if ( mTerrainRenderingEnabled )
 
  256         return mTerrainGenerator.get();
 
  265     void setTerrainShadingEnabled( 
bool enabled );
 
  294     void setTerrainMapTheme( 
const QString &theme );
 
  309     void setRenderers( 
const QList<QgsAbstract3DRenderer *> &renderers 
SIP_TRANSFER );
 
  311     QList<QgsAbstract3DRenderer *> 
renderers()
 const { 
return mRenderers; }
 
  314     void setShowTerrainBoundingBoxes( 
bool enabled );
 
  318     void setShowTerrainTilesInfo( 
bool enabled );
 
  326     void setShowCameraViewCenter( 
bool enabled );
 
  338     void setShowLightSourceOrigins( 
bool enabled );
 
  347     void setShowLabels( 
bool enabled );
 
  356     void setEyeDomeLightingEnabled( 
bool enabled );
 
  365     void setEyeDomeLightingStrength( 
double strength );
 
  374     void setEyeDomeLightingDistance( 
int distance );
 
  383     void setDebugShadowMapSettings( 
bool enabled, Qt::Corner corner, 
double size );
 
  396     void setDebugDepthMapSettings( 
bool enabled, Qt::Corner corner, 
double size );
 
  408     QList<QgsPointLightSettings> 
pointLights()
 const { 
return mPointLights; }
 
  420     void setPointLights( 
const QList<QgsPointLightSettings> &pointLights );
 
  426     void setDirectionalLights( 
const QList<QgsDirectionalLightSettings> &directionalLights );
 
  438     void setFieldOfView( 
const float fieldOfView );
 
  450     void setProjectionType( 
const Qt3DRender::QCameraLens::ProjectionType projectionType ) 
SIP_SKIP;
 
  477     void setCameraMovementSpeed( 
double movementSpeed );
 
  544     void setIsFpsCounterEnabled( 
bool fpsCounterEnabled );
 
  558     void setTerrainRenderingEnabled( 
bool terrainRenderingEnabled );
 
  722     QColor mBackgroundColor = Qt::black;   
 
  723     QColor mSelectionColor; 
 
  724     double mTerrainVerticalScale = 1;   
 
  725     std::unique_ptr<QgsTerrainGenerator> mTerrainGenerator;  
 
  726     int mMapTileResolution = 512;   
 
  727     float mMaxTerrainScreenError = 3.f;   
 
  728     float mMaxTerrainGroundError = 1.f;  
 
  729     float mTerrainElevationOffset = 0.0f; 
 
  730     bool mTerrainShadingEnabled = 
false;   
 
  732     QString mTerrainMapTheme;  
 
  733     bool mShowTerrainBoundingBoxes = 
false;  
 
  734     bool mShowTerrainTileInfo = 
false;  
 
  735     bool mShowCameraViewCenter = 
false;  
 
  736     bool mShowLightSources = 
false; 
 
  737     bool mShowLabels = 
false; 
 
  738     QList<QgsPointLightSettings> mPointLights;  
 
  739     QList<QgsDirectionalLightSettings> mDirectionalLights;  
 
  740     float mFieldOfView = 45.0f; 
 
  741     Qt3DRender::QCameraLens::ProjectionType mProjectionType = Qt3DRender::QCameraLens::PerspectiveProjection;  
 
  743     double mCameraMovementSpeed = 5.0;
 
  744     QList<QgsMapLayerRef> mLayers;   
 
  745     QList<QgsAbstract3DRenderer *> mRenderers;  
 
  751     bool mIsFpsCounterEnabled = 
false;
 
  753     bool mIsSkyboxEnabled = 
false;  
 
  757     bool mEyeDomeLightingEnabled = 
false;
 
  758     double mEyeDomeLightingStrength = 1000.0;
 
  759     int mEyeDomeLightingDistance = 1;
 
  761     bool mDebugShadowMapEnabled = 
false;
 
  762     Qt::Corner mDebugShadowMapCorner = Qt::Corner::TopLeftCorner;
 
  763     double mDebugShadowMapSize = 0.2;
 
  765     bool mDebugDepthMapEnabled = 
false;
 
  766     Qt::Corner mDebugDepthMapCorner = Qt::Corner::TopRightCorner;
 
  767     double mDebugDepthMapSize = 0.2;
 
  769     bool mTerrainRenderingEnabled = 
true;
 
void mapTileResolutionChanged()
Emitted when the map tile resoulution has changed.
void terrainVerticalScaleChanged()
Emitted when the vertical scale of the terrain has changed.
Qt::Corner debugDepthMapCorner() const
Returns the corner where the shadow map preview is displayed.
void renderersChanged()
Emitted when the list of map's extra renderers have been modified.
QList< QgsAbstract3DRenderer * > renderers() const
Returns list of extra 3D renderers.
QgsTerrainGenerator * terrainGenerator() const
Returns terrain generator. It takes care of producing terrain tiles from the input data.
void eyeDomeLightingDistanceChanged()
Emitted when the eye dome lighting distance has changed.
void terrainShadingChanged()
Emitted when terrain shading enabled flag or terrain shading material has changed.
double cameraMovementSpeed() const
Returns the camera movement speed.
Qt3DRender::QCameraLens::ProjectionType projectionType() const
Returns the camera lens' projection type.
bool debugDepthMapEnabled() const
Returns whether the shadow map debugging is enabled.
bool isSkyboxEnabled() const
Returns whether the skybox is enabled.
void debugDepthMapSettingsChanged()
Emitted when depth map debugging has changed.
QList< QgsDirectionalLightSettings > directionalLights() const
Returns list of directional lights defined in the scene.
double outputDpi() const
Returns DPI used for conversion between real world units (e.g.
double eyeDomeLightingStrength() const
Returns the eye dome lighting strength value.
void backgroundColorChanged()
Emitted when the background color has changed.
void showTerrainBoundingBoxesChanged()
Emitted when the flag whether terrain's bounding boxes are shown has changed.
Qt::Corner debugShadowMapCorner() const
Returns the corner where the shadow map preview is displayed.
void setMapThemeCollection(QgsMapThemeCollection *mapThemes)
Sets pointer to the collection of map themes.
bool showCameraViewCenter() const
Returns whether to show camera's view center as a sphere (for debugging)
void directionalLightsChanged()
Emitted when the list of directional lights changes.
void cameraNavigationModeChanged()
Emitted when the camera navigation mode was changed.
void shadowSettingsChanged()
Emitted when shadow rendering settings are changed.
void eyeDomeLightingEnabledChanged()
Emitted when the flag whether eye dome lighting is used has changed.
void setOutputDpi(const double dpi)
Sets DPI used for conversion between real world units (e.g.
void setIsSkyboxEnabled(bool enabled)
Sets whether the skybox is enabled.
void setOrigin(const QgsVector3D &origin)
Sets coordinates in map CRS at which our 3D world has origin (0,0,0)
void skyboxSettingsChanged()
Emitted when skybox settings are changed.
QgsShadowSettings shadowSettings() const
Returns the current configuration of shadows.
void terrainMapThemeChanged()
Emitted when terrain's map theme has changed.
Qgs3DMapSettings & operator=(Qgs3DMapSettings const &)=delete
void pointLightsChanged()
Emitted when the list of point lights changes.
double debugDepthMapSize() const
Returns the size of the shadow map preview.
void projectionTypeChanged()
Emitted when the camera lens projection type changes.
float fieldOfView() const
Returns the camera lens' field of view.
void selectionColorChanged()
Emitted when the selection color has changed.
float terrainElevationOffset() const
Returns the elevation offset of the terrain (used to move the terrain up or down)
int eyeDomeLightingDistance() const
Returns the eye dome lighting distance value (contributes to the contrast of the image)
const QgsPathResolver & pathResolver() const
Returns the path resolver for conversion between relative and absolute paths during rendering operati...
void showLightSourceOriginsChanged()
Emitted when the flag whether light source origins are shown has changed.
double debugShadowMapSize() const
Returns the size of the shadow map preview.
void setPathResolver(const QgsPathResolver &resolver)
Sets the path resolver for conversion between relative and absolute paths during rendering operations...
bool showTerrainBoundingBoxes() const
Returns whether to display bounding boxes of terrain tiles (for debugging)
Qgs3DMapSettings()=default
Constructor for Qgs3DMapSettings.
void showLabelsChanged()
Emitted when the flag whether labels are displayed on terrain tiles has changed.
void maxTerrainScreenErrorChanged()
Emitted when the maximum terrain screen error has changed.
bool showLabels() const
Returns whether to display labels on terrain tiles.
bool terrainRenderingEnabled()
Returns whether the 2D terrain surface will be rendered.
void terrainElevationOffsetChanged(float newElevation)
Emitted when the terrain elevation offset is changed.
bool debugShadowMapEnabled() const
Returns whether the shadow map debugging is enabled.
void fpsCounterEnabledChanged(bool fpsCounterEnabled)
Emitted when the FPS counter is enabled or disabled.
bool showTerrainTilesInfo() const
Returns whether to display extra tile info on top of terrain tiles (for debugging)
void layersChanged()
Emitted when the list of map layers for 3d rendering has changed.
void showTerrainTilesInfoChanged()
Emitted when the flag whether terrain's tile info is shown has changed.
QgsMapThemeCollection * mapThemeCollection() const
Returns pointer to the collection of map themes.
void eyeDomeLightingStrengthChanged()
Emitted when the eye dome lighting strength has changed.
QgsSkyboxSettings skyboxSettings() const
Returns the current configuration of the skybox.
bool isTerrainShadingEnabled() const
Returns whether terrain shading is enabled.
void cameraMovementSpeedChanged()
Emitted when the camera movement speed was changed.
QgsCoordinateReferenceSystem crs() const
Returns coordinate reference system used in the 3D scene.
bool eyeDomeLightingEnabled() const
Returns whether eye dome lighting is used.
QgsPhongMaterialSettings terrainShadingMaterial() const
Returns terrain shading material.
bool isFpsCounterEnabled() const
Returns whether FPS counter label is enabled.
QString terrainMapTheme() const
Returns name of the map theme (from the active project) that will be used for terrain's texture.
void fieldOfViewChanged()
Emitted when the camera lens field of view changes.
QList< QgsPointLightSettings > pointLights() const
Returns list of point lights defined in the scene.
QgsCameraController::NavigationMode cameraNavigationMode() const
Returns the navigation mode used by the camera.
void terrainGeneratorChanged()
Emitted when the terrain generator has changed.
bool showLightSourceOrigins() const
Returns whether to show light source origins as a sphere (for debugging)
void debugShadowMapSettingsChanged()
Emitted when shadow map debugging has changed.
void showCameraViewCenterChanged()
Emitted when the flag whether camera's view center is shown has changed.
void maxTerrainGroundErrorChanged()
Emitted when the maximum terrain ground error has changed.
QgsVector3D origin() const
Returns coordinates in map CRS at which 3D scene has origin (0,0,0)
Base class for all renderers that may to participate in 3D view.
NavigationMode
The navigation mode used by the camera.
This class represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Base class for all map layer types.
Container class that allows storage of map themes consisting of visible map layers and layer styles.
Resolves relative paths into absolute paths and vice versa.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Represents a raster layer.
The class is used as a container of context for various read/write operations on other objects.
class containing the configuration of shadows rendering 3
Contains the configuration of a skybox entity.
Base class for objects with an associated (optional) temporal range.
const QgsCoordinateReferenceSystem & crs