VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtSilverliningGroup.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvOsg/vrvOsg.h>
15 
16 #include <osg/Camera>
17 #include <osg/Group>
18 #include <osg/Geode>
19 #include <osg/LightSource>
20 #include <osg/Uniform>
21 #include <osg/observer_ptr>
22 
23 #include <OpenThreads/Mutex>
24 
25 #include <matrix/vlVector.h>
26 #include <matrix/referenceEllipsoid.h>
27 #include <matrix/geodeticCoord.h>
28 
31 
32 #include <vrvCore/DtCloudLayer.h>
34 
35 #include <list>
36 #include <map>
37 
38 namespace SilverLining
39 {
40  class Atmosphere;
41  class CloudLayer;
42  class LocalTime;
43  class Location;
44  class ThreadCameraStreamData;
45 }
46 
47 namespace makVrv
48 {
49  class DtChannel;
50  class DtDe;
51  class DtOsgFogComponent;
52  class DtLightManagerGroup;
53  class DtOsgSkyObject;
54  class DtCloudLayerManager;
55  class DtWindow;
56 
57  struct DtSilverLiningFogParameters;
58  class DtSilverLiningFogManager;
59  class DtSilverLiningContextManager;
60  class DtSilverLiningCameraManager;
61 
64 
67 
69  template <>
70  inline const char* creatorTypeName<DtSilverliningGroup>(void) { return "DtSilverliningGroupCreator"; }
71 
72  struct DtCrepuscularRaysModifiers;
73  struct DtCrepuscularRaysParameters;
74 
75 
79  class DT_DLL_VRVOSG DtSilverliningGroup : public osg::Group
80  {
81  public:
84 
86  virtual ~DtSilverliningGroup();
87 
88  protected:
91 
92  public:
94  virtual void setGenerateCubeMaps(bool enabled);
95 
98  virtual unsigned int getCubeMap(const osg::ref_ptr<const osg::Camera>& osgCamera) const;
99 
100  virtual void installIntoChannel(DtChannel*);
101 
105  virtual void applyFog(osg::ref_ptr<const osg::Camera> osgCamera, bool adjustForCoverage, SilverLining::ThreadCameraStreamData* tcsData);
106 
108  virtual void deleteGeods();
109 
111  virtual void setGeocentricMode(bool mode);
112 
114  virtual bool geocentricMode() const;
115 
117  virtual void setHiResCumulus(bool enabled);
118 
120  virtual bool hiResCumulus() const;
121 
123  virtual void setLensFlare(bool enabled);
124 
126  virtual bool lensFlare() const;
127 
129  virtual void setForcedMoonPhase(float phase);
130 
132  virtual void clearForcedMoonPhase();
133 
135  virtual bool moonPhaseIsForced() const;
136 
138  virtual float forcedMoonPhase() const;
139 
143  virtual void setForcedSunAndMoon(double sunLat, double sunLon, double moonLat,
144  double moonLon, bool horizonCoords = true);
145 
146  // Clear any forced sun & moon position set with ForceSunAndMoon()
147  virtual void clearForcedSunAndMoon();
148 
150  virtual bool sunAndMoonPositionIsForced() const;
151 
153  virtual void getForcedSunAndMoonPosition(double& sunLat, double& sunLon,
154  double& moonLat, double& moonLon, bool& horizonCoords) const;
155 
158  virtual void setLightPollution(double Wm2);
159 
161  virtual double lightPollution() const;
162 
164  virtual void setDateAndTime(unsigned short year, unsigned char month,
165  unsigned char day, unsigned char hour, unsigned char minutes,
166  double seconds, bool observeDaylightSavings);
167 
169  virtual void updateTime();
170 
173  virtual void setLocation(const DtVector& location, SilverLining::ThreadCameraStreamData* tcsData, bool setForAll);
174 
176  virtual void update(const osg::Matrix& modelViewMatrix, SilverLining::ThreadCameraStreamData* tcsData);
177 
179  virtual void update2D(const osg::Matrix& m);
180 
183  virtual void updateConditions(DtOsgSkyObject* skyObject);
184 
186  virtual void removeCloudLayer(DtCloudLayerId layerId);
187 
189  virtual void removeCloudLayers();
190 
193  virtual void setFogColor(const osg::Vec4f& rgbA);
194 
196  virtual void setFogHeight(float height);
197 
200  virtual void setFogBlend(const osg::Vec4f& rgbA, float density);
201 
203  virtual void setFogOverride(osg::ref_ptr<const osg::Camera> osgCamera, const osg::Vec4f& rgbA, float density);
204 
207  virtual void setFogThresholdDistance(float distance);
208 
210  virtual void setHorizonColor(const osg::Vec4f& rgbA);
211 
213  virtual void setCubeMapDirty();
214 
216  virtual void setUse16BitEnviroMap(bool flag);
217 
219  virtual bool getUse16BitEnviroMap();
220 
222  virtual void setUsingSensorFXShader(bool flag);
223 
225  virtual bool getUsingSensorFXShader();
226 
228  virtual void clearHorizonColor();
229 
231  virtual void clearFogOverride(osg::ref_ptr<const osg::Camera> osgCamera);
232 
234  virtual void clearFogOverrideForAllCameras(void);
235 
239  void setUseGlobalTimeZone(bool b);
240 
242  virtual bool useGlobalTimeZone() const;
243 
245  virtual float getSunAlpha() const;
246 
248  virtual void setDrawSunAndMoonIntoEnvMap(bool draw);
249 
251  virtual bool drawSunAndMoonIntoEnvMap() const;
252 
254  virtual float getSkyCoverage() const;
255 
257  virtual void addCirroCumulus(DtCloudLayerId layerId, const DtVector& position, float orientation,
258  const DtVector& bounds, bool infinite, bool relative, bool fadeAtAltitude, bool altitudeIsHAT);
259 
261  virtual void addCirroStratus(DtCloudLayerId layerId, const DtVector& position, float orientation,
262  const DtVector& bounds, bool infinite, bool relative, bool fadeAtAltitude, bool altitudeIsHAT);
263 
265  virtual void addCirrusFibratus(DtCloudLayerId layerId, const DtVector& position, float orientation,
266  const DtVector& bounds, bool infinite, bool relative, bool fadeAtAltitude, bool altitudeIsHAT);
267 
269  virtual void addNimbostratus(DtCloudLayerId layerId, const DtVector& position, float orientation,
270  const DtVector& bounds, double density, bool infinite, bool relative, bool fadeAtAltitude, bool altitudeIsHAT);
271 
273  virtual void addCumulusMediocris(DtCloudLayerId layerId, const DtVector& position, float orientation,
274  float cornerRadius, const DtVector& bounds, double density, bool infinite, bool relative, bool fadeAtAltitude,
275  bool altitudeIsHAT);
276 
278  virtual void addCumulusCongestus(DtCloudLayerId layerId, const DtVector& position, float orientation,
279  float cornerRadius, const DtVector& bounds, double density, bool infinite, bool relative, bool fadeAtAltitude,
280  bool altitudeIsHAT);
281 
283  virtual void addCumulonimbusCappilatus(DtCloudLayerId layerId, const DtVector& position, float orientation,
284  const DtVector& bounds, double density, bool relative, bool fadeAtAltitude, bool altitudeIsHAT);
285 
287  virtual void addStratocumulus(DtCloudLayerId layerId, const DtVector& position, float orientation,
288  float cornerRadius, const DtVector& bounds, double density, bool infinite, bool relative, bool fadeAtAltitude, bool altitudeIsHAT);
289 
291  virtual void addGroundFog(DtCloudLayerId layerId, const DtVector& position, float orientation, float cornerRadius,
292  const DtVector& bounds, double density, bool infinite, bool relative, bool fadeAtAltitude, bool altitudeIsHAT);
293 
294  virtual void setCloudLayerEnabled(DtCloudLayerId layerId, bool enabled, SilverLining::ThreadCameraStreamData* tcsData, bool setForAll);
295  virtual void setCloudLayerPositionAndOrientation(DtCloudLayerId layerId, const DtVector& position, float orientation, SilverLining::ThreadCameraStreamData* tcsData, bool setForAll);
296 
297  virtual void setWind(const double directionDEN, const double minAltitude,
298  const double maxAltitude, const double velocity);
299 
300  virtual void setAirTurbidity(float turbidity);
301  virtual void setVisibleDistance(float distance, SilverLining::ThreadCameraStreamData* tcsData, bool setForAll);
302  virtual float getVisibleDistance() const;
303 
304  virtual void createAtmosphere();
305  virtual void destroyAtmosphere();
306 
307  // if create atmosphere failed this is set to true.
308  virtual bool getFailedInit() { return myFailedInit; }
309 
310  virtual void addRain(float mmPerHour, bool global);
311  virtual void addSleet(float mmPerHour, bool global);
312  virtual void addSnow(float mmPerHour, bool global, bool wet);
313  virtual void clearAllPrecipitation(SilverLining::ThreadCameraStreamData* tcsData);
314 
317  virtual bool realizeLayers(SilverLining::ThreadCameraStreamData* tcsData);
318 
319  virtual SilverLining::Atmosphere* findAtmosphere();
320  virtual const SilverLining::Atmosphere* findAtmosphere() const;
321 
322  //get the Julian Date and Time in the GMT time zone
323  virtual void getGMTDateTime(long &julianDate, double &GMTTod);
324 
325  //return the node that is the parent to the clouds
326  virtual osg::Node *getCloudsNode();
327 
328  //return the node that is the parent to the sky
329  virtual osg::Node *getSkyNode();
330 
331  //set the flag for drawing the silverlining sun/moon
332  virtual void setSunMoonEnabled(bool drawSunMoon);
333 
334  //get the flag for drawing the silverlining sun/moon
335  virtual bool sunMoonEnabled();
336 
337  //set the flag for drawing the silverlining stars
338  virtual void setStarsEnabled(bool drawStars);
339 
340  //get the flag for drawing the silverlining stars
341  virtual bool starsEnabled();
342 
343  virtual void enableLighting(osg::ref_ptr<osg::Camera> osgCamera, bool enable);
344 
347  void setEnableHDR(bool enable);
348 
350  virtual osg::LightSource *skyLight();
351 
352  virtual const CloudLayerMap& cloudLayerMap() const;
353 
354  virtual osg::Vec3f & getLastUpVector() { return myLastUpVector; }
355 
357  virtual void fillCrepuscularRaysParameters(DtCrepuscularRaysParameters& params, const osg::Camera* osgCamera) const;
358 
360  virtual void updateImGuiAndGetModifiersOffOfImgGui(DtCrepuscularRaysModifiers& modifiers
361  , float r, float g, float b
362  , float sunPosX, float sunPosY, float sunPosZ
363  , float exposure) const;
364 
367  virtual void slot_windowToBeDestroyed(DtWindow* window);
368 
373  virtual void addGraphicsContextIfNecessary(const osg::Camera* osgCamera);
374 
376  const DtSilverLiningCameraManager* silverLiningCameraManager(void) const;
377 
379  DtSilverLiningCameraManager* silverLiningCameraManager(void);
380 
382  const DtCloudLayerManager* cloudLayerManager(void) const;
383 
385  DtCloudLayerManager* cloudLayerManager(void);
386  protected:
387 
389  virtual void addLayer(DtCloudLayerId layerId, const DtSilverLiningCloudLayer& layer);
390 
391  virtual void destroyLayer(const DtSilverLiningCloudLayer& layer);
392 
393  virtual int CalculateZoneByLongitude(double longitude) const;
394 
396  void SetTimeAndLocation();
397 
398  virtual void addPrecipitationToClouds(int type, float mmPerHour);
399 
400  virtual void updatePrecipitation(SilverLining::ThreadCameraStreamData* tcsData, const DtVector& location);
401 
402  virtual void setCloudVisibility(SilverLining::ThreadCameraStreamData* tcsData, bool setForAll);
403 
405  virtual void traverse(osg::NodeVisitor& nv);
406  virtual void resetLayers();
407  virtual void forceResetLayers();
408 
411  virtual void updateCubeMap(void);
412 
414  virtual void slot_reloadShader();
415 
416  //Setup the light override IMGUI sliders which allow for debug overriding of light position
417  virtual void updateLightOverrideGui(float x, float y, float z);
418 
421  virtual void calculateAndFillFogParameters(DtSilverLiningFogParameters& fogParameters, bool adjustCoverage, SilverLining::ThreadCameraStreamData* tcsData) const;
422 
424  virtual void createFogAttributeIfNeeded(void);
425 
426  protected:
427 
430 
431  DtReferenceEllipsoid myRefEllip;
432  DtGeodeticCoord myGeod;
433 
435  SilverLining::Atmosphere* myAtmosphere;
436  SilverLining::LocalTime* myLocalTime;
437  SilverLining::Location* myLocation;
438 
440 
445 
446  osg::Vec4f myFogColor, myBlendedFogColor, myHorizonColor;
447  osg::Vec3f myLastUpVector;
448  osg::Vec2f myWind;
449 
452 
454  float myTurbidity;
461 
472 
475 
478 
479  float myFogHeight, myFogThresholdDistance;
480  float mySunAlpha;
482 
485 
487 
489 
491 
492  //default OpenGL compiled shaders needed for silver lining to work after sensorFX is installed
493  std::vector<unsigned int> myDefaultShaderVector;
494 
497 
499 
502 
505 
510 
514  };
515 }
516 
517 
bool myDrawStars
Definition: DtSilverliningGroup.h:495
bool myFailedInit
Definition: DtSilverliningGroup.h:501
DtSilverLiningContextManager * myContextManager
Definition: DtSilverliningGroup.h:512
Abstract Base class.
Definition: DtWindow.h:25
osg::ref_ptr< DtLightManagerGroup > myLightManagerGroup
Definition: DtSilverliningGroup.h:444
Definition: DtSilverLiningCloudLayer.h:28
osg::ref_ptr< osg::Geode > myCloudGeode
Definition: DtSilverliningGroup.h:443
intermediate structure for computing and returning fog parameters
Definition: DtSilverLiningFogManager.h:25
std::unordered_map< DtCloudLayerId, DtSilverLiningCloudLayer > CloudLayerMap
Definition: DtSilverLiningCloudLayer.h:71
bool myDrawSunMoon
Definition: DtSilverliningGroup.h:496
DtSilverLiningCameraManager * myCameraManager
Definition: DtSilverliningGroup.h:513
DtCloudLayerManager * myLayerManager
Definition: DtSilverliningGroup.h:439
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
osg::Vec3f myLastUpVector
Definition: DtSilverliningGroup.h:447
Definition: featureContext.h:37
Contains makVrv::DtCloudCoverManager class.
osg::ref_ptr< DtOsgGlobalShaderComponent > myGlobalShaderComponent
Definition: DtSilverliningGroup.h:490
float myForcedMoonLat
Definition: DtSilverliningGroup.h:467
float myForcedSunLat
Definition: DtSilverliningGroup.h:465
osg::Vec2f myWind
Definition: DtSilverliningGroup.h:448
DtSilverLiningFogManager * myFogManager
Definition: DtSilverliningGroup.h:511
OpenThreads::Mutex myMutex
Definition: DtSilverliningGroup.h:429
double myLastImGuiSimTime
Definition: DtSilverliningGroup.h:508
friend DtSilverliningGroupCreator
only creator can created
Definition: DtSilverliningGroup.h:83
struture used to exhchange/communicate various crepuscular rays parameters
Definition: DtCrepuscularRaysParameters.h:20
An OSG implementation of the sky.
Definition: DtOsgSkyObject.h:28
osg::ref_ptr< DtOsgFogComponent > myFogComponent
Definition: DtSilverliningGroup.h:488
bool myUse16BitEnviroMap
Definition: DtSilverliningGroup.h:473
virtual osg::Vec3f & getLastUpVector()
Definition: DtSilverliningGroup.h:354
bool myCubeMapFullRegenerate
Definition: DtSilverliningGroup.h:458
osg::Vec4f myHorizonColor
Definition: DtSilverliningGroup.h:446
A group node which adds a silver-lining sky and will light all Children with the proper lighting para...
Definition: DtSilverliningGroup.h:79
Definition: DtSilverLiningCameraManager.h:50
int myGlobalPrecipitationType
Definition: DtSilverliningGroup.h:483
bool myLensFlareEnabled
Definition: DtSilverliningGroup.h:460
float myFogDensity
Definition: DtSilverliningGroup.h:451
float myForcedMoonLon
Definition: DtSilverliningGroup.h:468
bool myUseGlobalTimeZone
Definition: DtSilverliningGroup.h:500
const char * creatorTypeName< DtSilverliningGroup >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtSilverliningGroup.h:70
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:22
The abstract Channel Class.
Definition: DtChannel.h:30
SilverLining::Location * myLocation
Definition: DtSilverliningGroup.h:437
bool myHasFixedHorizonColor
Definition: DtSilverliningGroup.h:450
bool myForcedSunAndMoonUsingHorizonCoords
Definition: DtSilverliningGroup.h:469
DtDe & myDe
Definition: DtSilverliningGroup.h:428
std::string myOriginalVoxelDimension
Definition: DtSilverliningGroup.h:504
int myCubeMapDirtyState
Definition: DtSilverliningGroup.h:457
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points.
float myForcedSunLon
Definition: DtSilverliningGroup.h:466
DtReferenceEllipsoid myRefEllip
Definition: DtSilverliningGroup.h:431
float myTurbidity
Definition: DtSilverliningGroup.h:454
bool myDrawSunAndMoonIntoEnvMap
Definition: DtSilverliningGroup.h:471
float mySunAlpha
Definition: DtSilverliningGroup.h:480
bool mySunAndMoonPositionForced
Definition: DtSilverliningGroup.h:464
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
bool myMoonPhaseForced
Definition: DtSilverliningGroup.h:462
bool myLastAtmosphereFogEnabled
Definition: DtSilverliningGroup.h:503
Definition: DtCloudLayerManager.h:50
std::vector< unsigned int > myDefaultShaderVector
Definition: DtSilverliningGroup.h:493
OpenThreads::Mutex Mutex
Definition: DtOsgThreadingUtils.h:12
Contains vrvCore::DtCloudLayerRecord declaration.
bool myCubeMapEnabled
Definition: DtSilverliningGroup.h:459
osg::ref_ptr< osg::Uniform > myLightLevelUniform
Definition: DtSilverliningGroup.h:476
osg::Vec3f myOverrideLightPosition
Definition: DtSilverliningGroup.h:507
Definition: DtSilverLiningContextManager.h:41
DtVirtualBaseClassCreator< DtSilverliningGroup > DtSilverliningGroupCreator
creator
Definition: DtSilverliningGroup.h:63
bool myNeedsResetFlag
Definition: DtSilverliningGroup.h:456
bool myGeocFlag
Definition: DtSilverliningGroup.h:455
bool myCurveCloudsTowardGround
Definition: DtSilverliningGroup.h:481
Base class to provide boost signal/slot management.
SilverLining::Atmosphere * myAtmosphere
my atmosphere.
Definition: DtSilverliningGroup.h:435
bool myForceRelight
Definition: DtSilverliningGroup.h:486
bool myUsingSensorFXShader
Definition: DtSilverliningGroup.h:474
float myGlobalPrecipitationIntensity
Definition: DtSilverliningGroup.h:484
osg::ref_ptr< osg::Uniform > myLightAmbientUniform
Definition: DtSilverliningGroup.h:477
manages fog settings for multiple cameras(windows/views/channels)
Definition: DtSilverLiningFogManager.h:50
const char int mode
Definition: ioapi.h:38
osg::ref_ptr< osg::LightSource > mySkyLight
Definition: DtSilverliningGroup.h:442
DtGeodeticCoord myGeod
Definition: DtSilverliningGroup.h:432
long long DtCloudLayerId
Definition: DtCloudLayer.h:26
Contains DLL export macros.
osg::ref_ptr< osg::Geode > mySkyGeode
Definition: DtSilverliningGroup.h:441
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
bool myUseAzimuthElevationForOverrideGui
Definition: DtSilverliningGroup.h:509
bool myOverrideLightPositionEnabled
Definition: DtSilverliningGroup.h:506
Contains makVrv::DtSilverLiningCloudLayer struct.
bool myHiResCumulus
Definition: DtSilverliningGroup.h:470
float myFogThresholdDistance
Definition: DtSilverliningGroup.h:479
SilverLining::LocalTime * myLocalTime
Definition: DtSilverliningGroup.h:436
float myForcedMoonPhase
Definition: DtSilverliningGroup.h:463
float myVisibility
Definition: DtSilverliningGroup.h:453
Contains the DtOsgGlobalShaderComponent class.
virtual bool getFailedInit()
Definition: DtSilverliningGroup.h:308
DtSignalConnectionManager myConnections
Definition: DtSilverliningGroup.h:498
Definition: vrfObjectManipulationHandlerBaseClass.h:65

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)