Stellarium  HEAD
Data Structures
3D Sceneries plug-in

Data Structures

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

Detailed Description

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.

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: http://astrosim.univie.ac.at/


Data Structure Documentation

◆ Scenery3d

class Scenery3d

Main class of the module, inherits from StelModule.

Main class of the 3D Sceneries plug-in.

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

Authors
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...
 

Signals

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...
 

Properties

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 ,
  ActionHandleKeys
}
 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)
overridevirtual

Detect or show the configuration GUI elements for the module.

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

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

Reimplemented from StelModule.

◆ deinit()

void Scenery3d::deinit ( )
overridevirtual

Called before the module will be deleted, and before the OpenGL context is suppressed.

Deinitialize all OpenGL texture in this method.

Reimplemented from StelModule.

◆ draw()

void Scenery3d::draw ( StelCore core)
overridevirtual

Execute all the drawing functions for this module.

Parameters
corethe core to use for the drawing

Reimplemented from StelModule.

◆ getCallOrder()

double Scenery3d::getCallOrder ( StelModuleActionName  actionName) const
overridevirtual

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.

Parameters
actionNamethe name of the action for which we want the call order
Returns
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
slot

Gets the SceneInfo of the scene that is currently being displayed.

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

◆ getCurrentView

StoredView Scenery3d::getCurrentView ( ) const
slot

Returns a StoredView that represents the current observer position + view direction.

Label and description are empty.

◆ getLoadingScene

SceneInfo Scenery3d::getLoadingScene ( ) const
inlineslot

Gets the SceneInfo of the scene that is currently in the process of being loaded.

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

◆ handleKeys()

void Scenery3d::handleKeys ( QKeyEvent *  e)
overridevirtual

Walk/Fly Navigation with Ctrl+Cursor and Ctrl+PgUp/Dn keys.

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 ( )
overridevirtual

Initialize itself.

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

Implements StelModule.

◆ loadScenery3dByID

SceneInfo Scenery3d::loadScenery3dByID ( const QString &  id)
slot

This starts the scene loading process.

This is asynchronous, this method returns after metadata loading.

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

◆ loadScenery3dByName

SceneInfo Scenery3d::loadScenery3dByName ( const QString &  name)
slot

This starts the scene loading process.

This is asynchronous, this method returns after metadata loading.

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

◆ relativeMove

void Scenery3d::relativeMove ( const Vec3d move)
slot

Performs a relative translation of the viewer's position.

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)
slot

Sets the size used for cubemap rendering.

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

◆ setDirectionalLightPush

void Scenery3d::setDirectionalLightPush ( const float  push)
slot

Sets the exaggeration strength for directional light (default: 1).

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)
slot

Use this to set/get the enableBumps flag.

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

◆ setEnableShadows

void Scenery3d::setEnableShadows ( const bool  enableShadows)
slot

Use this to set/get the enableShadows flag.

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

◆ setForceHorizonPolyline

void Scenery3d::setForceHorizonPolyline ( const bool  forcePolyline)
slot

Set the overdrawing of a landscape (horizon) polygon after the 3D scenery.

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)
slot

Allow ignoring the configured start_az_alt_fov.

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)
slot

Sets the size used for shadowmap rendering.

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

◆ update()

void Scenery3d::update ( double  deltaTime)
overridevirtual

Update the module with respect to the time.

Parameters
deltaTimethe time increment in second since last call.

Reimplemented from StelModule.