Stellarium  23.2
Data Structures
3D Sceneries plug-in

3D foreground renderer. Walk around, find and avoid obstructions in your garden, find and demonstrate possible astronomical alignments in temples, see shadows on sundials etc. More...

Data Structures

class  Scenery3d
 Main class of the module, inherits from StelModule. More...

Detailed Description

To move around, press Ctrl+cursor keys. To lift eye height, use Ctrl+PgUp/PgDn. Movement speed is linked to field of view (i.e. zoom in for fine adjustments). You can even keep moving by releasing Ctrl before cursor key.

Development of this plugin was in parts supported by the Austrian Science Fund (FWF) project ASTROSIM (P 21208-G19). More:

Data Structure Documentation

◆ Scenery3d

class Scenery3d

Manages initialization, provides an interface to change Scenery3d properties and handles user input

Main class of the 3D Sceneries plug-in.

Georg Zotti, Simon Parzer, Peter Neubauer, Andrei Borza, Florian Schaukowitsch

Public Slots

void relativeMove (const Vec3d &move)
 Performs a relative translation of the viewer's position. More...
void reloadShaders ()
 Clears the shader cache, forcing a reload of shaders on use.
void showMessage (const QString &message)
 Display text message on screen, fade out automatically.
void showStoredViewDialog ()
 Shows the stored view dialog.
void setEnableScene (const bool val)
 Enables/Disables the plugin.
bool getEnableScene () const
void setEnablePixelLighting (const bool val)
bool getEnablePixelLighting (void) const
void setEnableShadows (const bool enableShadows)
 Use this to set/get the enableShadows flag. More...
bool getEnableShadows (void) const
void setUseSimpleShadows (const bool simpleShadows)
 If true, only 1 shadow cascade is used, giving a speedup.
bool getUseSimpleShadows () const
void setEnableBumps (const bool enableBumps)
 Use this to set/get the enableBumps flag. More...
bool getEnableBumps (void) const
S3DEnum::ShadowFilterQuality getShadowFilterQuality (void) const
 Returns the current shadow filter quality.
void setShadowFilterQuality (const S3DEnum::ShadowFilterQuality val)
 Sets the shadow filter quality.
void setEnablePCSS (const bool val)
bool getEnablePCSS () const
S3DEnum::CubemappingMode getCubemappingMode (void) const
 Returns the current cubemapping mode.
void setCubemappingMode (const S3DEnum::CubemappingMode val)
 Sets the cubemapping mode.
bool getUseFullCubemapShadows () const
void setUseFullCubemapShadows (const bool useFullCubemapShadows)
void setEnableDebugInfo (const bool debugEnabled)
 Set to true to show some rendering debug information.
bool getEnableDebugInfo () const
void setEnableLocationInfo (const bool enableLocationInfo)
 Set to true to show the current standing position as text on screen.
bool getEnableLocationInfo () const
void setLocationInfoStyle (const S3DRenderer::LocationInfoStyle style)
 Set location info style.
S3DRenderer::LocationInfoStyle getLocationInfoStyle () const
void setForceHorizonPolyline (const bool forcePolyline)
 Set the overdrawing of a landscape (horizon) polygon after the 3D scenery. More...
bool getForceHorizonPolyline () const
void setEnableTorchLight (const bool enableTorchLight)
 Set to true to add an additional light source centered at the current position, useful in night scenes.
bool getEnableTorchLight () const
void setTorchStrength (const float torchStrength)
 Sets the strength of the additional illumination that can be toggled when pressing a button.
float getTorchStrength () const
void setTorchRange (const float torchRange)
 Sets the range of the torchlight.
float getTorchRange () const
void setDirectionalLightPush (const float push)
 Sets the exaggeration strength for directional light (default: 1). More...
float getDirectionalLightPush () const
void setIgnoreInitialView (const bool ignore)
 Allow ignoring the configured start_az_alt_fov. More...
bool getIgnoreInitialView () const
void setEnableLazyDrawing (const bool val)
 Sets the state of the cubemap lazy-drawing mode.
bool getEnableLazyDrawing () const
void setOnlyDominantFaceWhenMoving (const bool val)
 When true, only the face which currently is most dominantly visible is updated while moving.
bool getOnlyDominantFaceWhenMoving () const
void setSecondDominantFaceWhenMoving (const bool val)
bool getSecondDominantFaceWhenMoving () const
void forceCubemapRedraw ()
 Forces a redraw of the cubemap.
void setLazyDrawingInterval (const double val)
 Sets the interval for cubemap lazy-drawing mode.
double getLazyDrawingInterval () const
void setCubemapSize (const uint val)
 Sets the size used for cubemap rendering. More...
uint getCubemapSize () const
void setShadowmapSize (const uint val)
 Sets the size used for shadowmap rendering. More...
uint getShadowmapSize () const
bool getIsGeometryShaderSupported () const
bool getAreShadowsSupported () const
bool getIsShadowFilteringSupported () const
bool getIsANGLE () const
uint getMaximumFramebufferSize () const
SceneInfo getCurrentScene () const
 Gets the SceneInfo of the scene that is currently being displayed. More...
QString getCurrentSceneID () const
 Returns the ID of the currently loaded scene, or an null string if nothing is displayed.
QString getLoadingSceneID () const
 Returns the ID of the currently loading scene, or null if nothing is being loaded.
SceneInfo getLoadingScene () const
 Gets the SceneInfo of the scene that is currently in the process of being loaded. More...
SceneInfo loadScenery3dByName (const QString &name)
 This starts the scene loading process. More...
SceneInfo loadScenery3dByID (const QString &id)
 This starts the scene loading process. More...
QString getDefaultScenery3dID () const
void setDefaultScenery3dID (const QString &id)
void setView (const StoredView &view, const bool setDate)
 Changes the current view to the given view. JD is updated only if view contains valid data and setDate is true.
StoredView getCurrentView () const
 Returns a StoredView that represents the current observer position + view direction. More...


void enableSceneChanged (const bool val)
void enablePixelLightingChanged (const bool val)
void enableShadowsChanged (const bool val)
void useSimpleShadowsChanged (const bool val)
void enableBumpsChanged (const bool val)
void shadowFilterQualityChanged (const S3DEnum::ShadowFilterQuality val)
void enablePCSSChanged (const bool val)
void cubemappingModeChanged (const S3DEnum::CubemappingMode val)
void useFullCubemapShadowsChanged (const bool val)
void enableDebugInfoChanged (const bool val)
void enableLocationInfoChanged (const bool val)
void locationInfoStyleChanged (S3DRenderer::LocationInfoStyle style)
void forceHorizonPolylineChanged (const bool val)
void enableTorchLightChanged (const bool val)
void torchStrengthChanged (const float val)
void torchRangeChanged (const float val)
void directionalLightPushChanged (const float val)
void ignoreInitialViewChanged (const bool ignore)
void enableLazyDrawingChanged (const bool val)
void lazyDrawingIntervalChanged (const double val)
void onlyDominantFaceWhenMovingChanged (const bool val)
void secondDominantFaceWhenMovingChanged (const bool val)
void cubemapSizeChanged (const uint val)
void shadowmapSizeChanged (const uint val)
void currentSceneChanged (const SceneInfo &sceneInfo)
void currentSceneIDChanged (const QString &sceneID)
void loadingSceneIDChanged (const QString &sceneID)
void progressReport (const QString &str, int val, int min, int max) const
 This signal is emitted from another thread than this QObject belongs to, so use QueuedConnection.

Public Member Functions

void init () override
 Initialize itself. More...
void deinit () override
 Called before the module will be deleted, and before the OpenGL context is suppressed. More...
void draw (StelCore *core) override
 Execute all the drawing functions for this module. More...
void update (double deltaTime) override
 Update the module with respect to the time. More...
double getCallOrder (StelModuleActionName actionName) const override
 Return the value defining the order of call for the given action For example if stars.callOrder[ActionDraw] == 10 and constellation.callOrder[ActionDraw] == 11, the stars module will be drawn before the constellations. More...
bool configureGui (bool show) override
 Detect or show the configuration GUI elements for the module. More...
void handleKeys (QKeyEvent *e) override
 Walk/Fly Navigation with Ctrl+Cursor and Ctrl+PgUp/Dn keys. More...
void updateProgress (const QString &str, int val, int min, int max) const
 Sends the progressReport() signal, which eventually updates the progress bar. Can be called from another thread.
- Public Member Functions inherited from StelModule
 StelModule ()
 Constructor. Every derived class MUST call setObjectName(className) in its constructor.
virtual QSettings * getSettings ()
 Return module-specific settings. More...
virtual QString getModuleVersion () const
 Get the version of the module, default is stellarium main version.
virtual QString getAuthorName () const
 Get the name of the module author.
virtual QString getAuthorEmail () const
 Get the email address of the module author.
virtual void handleMouseClicks (class QMouseEvent *)
 Handle mouse clicks. More...
virtual void handleMouseWheel (class QWheelEvent *)
 Handle mouse wheel. More...
virtual bool handleMouseMoves (int x, int y, Qt::MouseButtons b)
 Handle mouse moves. More...
virtual bool handlePinch (qreal scale, bool started)
 Handle pinch gesture events. More...


bool enableScene
bool enablePixelLighting
bool enableShadows
bool useSimpleShadows
bool enableBumps
S3DEnum::ShadowFilterQuality shadowFilterQuality
bool enablePCSS
S3DEnum::CubemappingMode cubemappingMode
bool useFullCubemapShadows
bool enableDebugInfo
bool enableLocationInfo
S3DRenderer::LocationInfoStyle locationInfoStyle
bool forceHorizonPolyline
bool enableTorchLight
float torchStrength
float torchRange
float directionalLightPush
bool ignoreInitialView
bool enableLazyDrawing
double lazyDrawingInterval
bool onlyDominantFaceWhenMoving
bool secondDominantFaceWhenMoving
uint cubemapSize
uint shadowmapSize
QString currentSceneID
QString loadingSceneID
bool isGeometryShaderSupported
bool areShadowsSupported
bool isShadowFilteringSupported
bool isANGLE
uint maximumFramebufferSize

Additional Inherited Members

- Public Types inherited from StelModule
enum  StelModuleSelectAction { AddToSelection, ReplaceSelection, RemoveFromSelection }
 Enum used when selecting objects to define whether to add to, replace, or remove from the existing selection list. More...
enum  StelModuleActionName {
  ActionDraw, ActionUpdate, ActionHandleMouseClicks, ActionHandleMouseMoves,
 Define the possible action for which an order is defined. More...
- Protected Member Functions inherited from StelModule
class StelActionaddAction (const QString &id, const QString &groupId, const QString &text, QObject *target, const char *slot, const QString &shortcut="", const QString &altShortcut="")
 convenience methods to add an action (call to slot) to the StelActionMgr object. More...
class StelActionaddAction (const QString &id, const QString &groupId, const QString &text, const char *slot, const QString &shortcut="", const QString &altShortcut="")
 convenience methods to add an action (call to own slot) to the StelActionMgr object. More...
StelActionaddAction (const QString &id, const QString &groupId, const QString &text, QObject *contextObject, std::function< void()> lambda, const QString &shortcut="", const QString &altShortcut="")
 convenience methods to add an action (call to Lambda functor) to the StelActionMgr object. More...

Member Function Documentation

◆ configureGui()

bool Scenery3d::configureGui ( bool  show)

This is to be used with plugins to display a configuration dialog from the plugin list window.

showif true, make the configuration GUI visible. If false, hide the config GUI if there is one.
true if the module has a configuration GUI, else false.

Reimplemented from StelModule.

◆ deinit()

void Scenery3d::deinit ( )

Deinitialize all OpenGL texture in this method.

Reimplemented from StelModule.

◆ draw()

void Scenery3d::draw ( StelCore core)
corethe core to use for the drawing

Reimplemented from StelModule.

◆ getCallOrder()

double Scenery3d::getCallOrder ( StelModuleActionName  actionName) const
actionNamethe name of the action for which we want the call order
the value defining the order. The closer to 0 the earlier the module's action will be called

Reimplemented from StelModule.

◆ getCurrentScene

SceneInfo Scenery3d::getCurrentScene ( ) const

Check SceneInfo::isValid to determine if a scene is displayed.

◆ getCurrentView

StoredView Scenery3d::getCurrentView ( ) const

Label and description are empty.

◆ getLoadingScene

SceneInfo Scenery3d::getLoadingScene ( ) const

Check SceneInfo::isValid to determine if a scene is loaded.

◆ handleKeys()

void Scenery3d::handleKeys ( QKeyEvent *  e)

Pressing Ctrl-Alt: 5x, Ctrl-Shift: 10x speedup; Ctrl-Shift-Alt: 50x! To allow fine control, zoom in. If you release Ctrl key while pressing cursor key, movement will continue.

Reimplemented from StelModule.

◆ init()

void Scenery3d::init ( )

If the initialization takes significant time, the progress should be displayed on the loading bar.

Implements StelModule.

◆ loadScenery3dByID

SceneInfo Scenery3d::loadScenery3dByID ( const QString &  id)

This is asynchronous, this method returns after metadata loading.

ida valid scene id/folder path
The loaded SceneInfo. Check SceneInfo::isValid to make sure loading was successful.

◆ loadScenery3dByName

SceneInfo Scenery3d::loadScenery3dByName ( const QString &  name)

This is asynchronous, this method returns after metadata loading.

namea valid scene name
The loaded SceneInfo. Check SceneInfo::isValid to make sure loading was successful.

◆ relativeMove

void Scenery3d::relativeMove ( const Vec3d move)

The values should usually be given pre-adjusted with the delta time. Does nothing if no scene is currently loaded.

The first component specifies movement in the "right" direction, the second component in the "forward" direction, and the last value is used to adjust the height offset of the viewer (he is still positioned according to the heightmap).

◆ setCubemapSize

void Scenery3d::setCubemapSize ( const uint  val)

For best compatibility and performance, this should be a power of 2.

◆ setDirectionalLightPush

void Scenery3d::setDirectionalLightPush ( const float  push)

Going over 1 can be useful for very tiny holes casting important specks of light into dark interiors. Example: meridiana "sundials" in Italian churches.

◆ setEnableBumps

void Scenery3d::setEnableBumps ( const bool  enableBumps)

If set to true, bump mapping is enabled for the 3D scene.

◆ setEnableShadows

void Scenery3d::setEnableShadows ( const bool  enableShadows)

If set to true, shadow mapping is enabled for the 3D scene.

◆ setForceHorizonPolyline

void Scenery3d::setForceHorizonPolyline ( const bool  forcePolyline)

This shows the difference (error) between our planar (tangential plane) modelling and effects of earth curvature. The landscape has to include such a polygon, of course.

◆ setIgnoreInitialView

void Scenery3d::setIgnoreInitialView ( const bool  ignore)

This may be helpful in a digital planetarium where fov should stay at ~180...200° and view direction is usually close to zenith.

◆ setShadowmapSize

void Scenery3d::setShadowmapSize ( const uint  val)

For best compatibility and performance, this should be a power of 2.

◆ update()

void Scenery3d::update ( double  deltaTime)
deltaTimethe time increment in second since last call.

Reimplemented from StelModule.