* Interaction speed is not dependent on framerate
* Split up interaction code in files and perform smooth interpolation when changing focus
* Abstract interaction code in to functions.
* Interpolation time is dependent on angle to focus node.
* Use correct delta time when interpolating
* Fix bug regarding decomposition of camera rotation.
* Make orbital interaction mode behave as globe browsing and no longer use interactiondepth below ellipsoid.
* Do not always rotate with object. Depending on distance
* Remove interaction depth below ellipsoid. Now able to interact without renderable
* Remove specification of interactionDepthBelowEllipsoid and cameraMinHeight
* Remove GlobeBrowsingInteractionMode
* Rename OrbitalInteractionMode to OrbitalNavigator and no longer extend interactionmode.
* Move properties from interaction handler to orbital navigator
* Use smooth step for follow rotation interpolator
* Rename KeyframeInteractionMode to KeyframeNavigator
* Rename files
* Clean up.
* Separate mousestate from orbitalnavigator
* Clean up
* Split keybindingmanager from interactionhandler interactionhandler
* Rename interactionhandler to navigationhandler
* Rename files
* Clean up
* Take back usage of gotochunk and gotogeo
* Rename lua library navigation
* Move functionality from navigationhandler to keyframenavigator
* Update scripts for navigation
* Comment code
* Clean up
* Solve but that caused NaN values for camera position when being in center of globe and setting focus to the globe.
* Update jenkins file to remove build folder before building.
* Fix error in jenkins script
* Update jenkins file
* Update jenkins file
* Revert jenkins file
* I hope this makes Jenkins happy.
* Line endings God damnit
* Line endings
* Clean up
* Fix compilation issue
* Take back default scene.
* Fix indentation
* Move functions goToGeo and goToChunk to GlobeBrowsingModule.
* Include algorithm for std::find
* Remove auto and other clean up
Restructure GuiPropertyComponent to take a source function that returns a list of PropertyOwner%s instead of registering individual properties
Apply restructuring
- When loading SPICE kernels, coverage for each body is stored.
- If the body does not have spk coverage a position is estimated.
- Added "pulsating" transparency levels for renderableModels with
estimated position.
- Spice manager clean up, left a few unused methods but removed a lot of
dead code.
- To support multiple missins being loaded, some errors are simply
ignored in spicemanager, for better or worse.
- Added start time and stop time as dictionary keys for renderables.
- Made RenderableTrails only show the time between gaps.
- Added but out commented vesta coordinate system swich in renderengine.
NOTE: Renderables using spiceEphemeris will give errors if body keyword
is omitted in modfile (When checking SPK coverage in position update).
Added functionality:
- New class renderablesphericalgrid is repurposed code from powerscaledsphere class.
Due to z-buffer issues used as reference grid to confirm planetary orbits are correct.
This has been a major problem as prior we had no visual reference.
Now we have a Galactic-, Celestial- and Ecliptic-coordinate grid.
To this also added separate shader: grid_vs.glsl / grid_fs.glsl
These grids have a static-rotational matrix derived from partiview (thanks to Brian)
since spice req. to-from frame to compute rotational matrix.
Time dependency:
- Added struct RuntimeData - which for now only contains openspace time and is passed to all renderables
- All renderables accept runtimeData, keep private reference and use for computation of rotational matrix
- This obviously carries corresponding changes to Scenegraph and ScenegraphNode.
Spicemanager:
- Added function that more easily provides access to rotational matrix used in spice
(used in renderableplanet for computing planetary objects spin around axis)
Ephemeris-classes:
- Now compute ephemeris from spice based on timeepoch in runtimedata
TODO: once z-buffer fixed - set ephemeris correctly as meters (not kilometers)
Renderengine:
- Advances time with the advanceTime method in RuntimeData struct
ISSUES:
- Our Y axis NOT same as SPICE or star-catalogue, all renderables rotated now 90deg, needs redefinition,
lots of debugging and major headaches before this conclusion.
- Depth buffer needs to be fixed in order to properly place planets.
- Spice kernels have finite time-range, when time stops - simulation ends - ugly fix: reset time to zero.
Possible fix: kernels de431 (part 1-2) cover huge timespan and most likely have functions to extrapolate time,
drawback is that they are 1,7 gb each.
TODO:
- Compute and draw dynamic ephemeries for each renderable. Either do full year sweep then update for each point or
create a tail of linesegments for each planet. Dont know yet how to do this, would like spicephemeris to be
sub-class of Renderable (have own render() method) - good/bad?