Revert "Destroyed cesium integration (markdown)"

This reverts commit 7405d82d42df0171cf794c23ec4d5e9309cf2b93.
Andreas Hocevar
2014-07-14 10:29:55 +02:00
parent 7405d82d42
commit d0b8df5df9

90
cesium-integration.md Normal file

@@ -0,0 +1,90 @@
# Work packages
## Synchronize views
Idea: A vector on the 2D map displays the view point and the view direction:
* When moving the 3D view, it adjusts the 2D vector.
* When moving the 2D vector, the 3D view is adjusted.
See example with OpenLayers 2 and Google Earth plugin: http://plan.epfl.ch/?lang=en, click in the right menu on 3d. 2D and 3D are snychronized.
Question: How to get the same control feeling when manipulating the Ol3 view / the Cesium view?
Uses cases are: stacked views or separated views like for EPFL.
## Smooth transition between 2d and 3d
Idea: A la google map, share the bottom line and tilt. Forward and Backward.
Some thoughts about the camera movement: https://gist.github.com/tonio/750dbc843ef95601c4be (might be outdated with the experience of the following POCs)
Ongoing work:
* 1. POC: http://bl.ocks.org/tonio/raw/9759909/
* To be developed further: http://bl.ocks.org/gberaudo/raw/51f050326d91d4e9c09a/1b55ad64a1f3de2dcba5673ecb52f976104a4592/#
Remarks:
* all directions must be handled (not just NS and EW);
* all tilted situations must be handled (starting from an arbitrary tilted angle);
* always keep center of bottom line fixed in general, whole line for NS and EW.
## Sync raster data sources
Idea: If a user adds a WMS/TMS/WMTS layer to ol3.js map it should also be added to the cesium globe.
Known limitations: for now, ol3js and cesium don't support the same layer type:
* ol3js: WMTS, WMS, OSM, Bing
* cesiumjs:
* WMS (this is not a single request, but multiple WMS tiled requests, but no WMS-C, can't specify the grid)
* TMS,
* OSM,
* Bing,
* ESRI
WMTS issue, see: https://github.com/AnalyticalGraphicsInc/cesium/issues/1890
## Share vector data
Idea: Bring vector data the user interact with in 2d into 3d. Allow same styling, labels and tooltip information.
Cesium supported format:
* GeoJSON, OK!
* KML is an ongoing work: https://github.com/AnalyticalGraphicsInc/cesium/tree/kml & https://github.com/AnalyticalGraphicsInc/cesium/issues/873
Cesium examples:
* Styling:
* Points/Billboards: http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Billboards.html&label=Showcases
* Polylines: http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Polylines.html&label=Showcases
* Polygons: http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Polygons.html&label=Showcases
* Geometries: http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Geometry%20and%20Appearances.html&label=Showcases
* Labels: http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Labels.html&label=Showcases
* Tooltips?
Notes
* Cesium places the 2D GeoJSON on the terrain according following rules:
* Vertexes are precisely placed on the terrain
* Segments go straight (in 3D) between the 2 Vertexes
## Share edit
Idea: use cesium picking information to get the coordinates in 3D. and send them back to the traditionnal transactional webservice
http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Picking.html&label=Showcases
## Share the same user interaction
Idea: same keyboard shortcut to rotate a map in ol3 as to rotate the globe in cesium.
For now, we have:
* rotation:
* ol3js: `shift` - drag
* cesiumjs: `control` - drag
# Architecture
This integration is developed in an open source layer built ontop of ol3js as ol3js is not bound to a specific 3D globe. This layer should allow to provide a common and efficient way to have ol3js and cesium working closely together.
## Technical issues
* How to keep both ol3js and cesium synchronized?
* Apply vector transformations (diff from current state) each time a context change?
* Compute from scratch a new state from the new context?
* Save computing resources
* disable rendering of the underlying map or globe if it's hidden by the overlayed one
* still preserve context synchronization
* Smooth transition needs to know the elevation of the destination point of the camera
* cesium provides an asynchronous method, synchronous planned for August
* cesium provides in a dev branch a specific method. TDB: WHERE?
* Cesium camera entering the terrain
> In regards to the camera falling through the terrain, you will want to upgrade to Cesium 1.0 in August, which will include Camera/terrain interaction (see https://github.com/AnalyticalGraphicsInc/cesium/pull/1817 and https://github.com/AnalyticalGraphicsInc/cesium/issues/1670).