Hi @clk ,
Thanks for your post.
This seems to be picking up from the idea where your thread here landed 3D and 2D screens at the same time - #17 by clk
I think this conversation here with input from the Cesium team and users is getting at pretty much the same idea you are inquiring about regarding multiple displays of the same scene in a single viewer two viewer primitives synchronize - #2 by omar
I also think you will be interested to take a look at this issue in GitHub tracking the possibility of building this capability into the CesiumJS library
opened 11:46PM - 17 Apr 17 UTC
type - roadmap
category - graphics
Allow for multiple viewports/camera views in a single canvas.
* One `SceneMan… ager` containing multiple `Scene`s
* `SceneManager` contains all non-view dependent primitives.
* Primitives updated once and rendered in each viewport
* Option on each primitive to hide for any number of viewports
* Each `Scene` contains a copy of view dependent primitives.
* Includes `Globe`
* All globes search terrain geometry and texture cache before requests
* All globes have the same terrain and imagery providers?
* Allow globes to have different terrain and imagery providers?
* Allow for different celestial bodies? (not implemented)
* Includes 3D Tilesets
* All tilesets search a geometry and texture cache before requests
* Allow different styling?
* Each tileset will have its own style and batch table
* Any other primitive where each vertex needs to be multiplied by a view dependent transform on the CPU.
* One `Scene` with a list of `Viewport`s that contain a camera and viewport rectangle.
* Non-view dependent primitives updated and rendered in each viewport.
* View dependent primitives can keep a command list per-viewport after updating for each camera
* Can not have different terrain or imagery provider
* Can not style 3D Tilesets per viewport.
The first option is more flexible but more complex. The second option is simpler but has a couple of constraints.
* Z-order the viewports. Model after `PrimitiveCollection`.
* `ScreenSpaceCameraController` needs to know which viewport the input originated in.
* Viewport positioning.
* Absolute values. App responsible for resizes
* Custom positioning implementation
* Position with CSS and hidden `div`s. Potentially expensive.
* Screen space passes for each viewport and for the final framebuffer.
* Allow the same primitive to have a different material in each viewport? (probably not)
I hope those resources are interesting and helpful to you as you explore you ideas for implementing multiple displays in Cesium.
Thanks,
Luke