The maps3D widget allows to display Map Items 3D with different types of projections.
Maps 3D architecture
As for the 2D environment, the 3D Maps uses a Map3d widget which enables multiple sources of information with different coordinates systems using Map3D source widgets. It also includes one or multiple camera 3D. Only one camera is active to display the 3D view but you can switch between them.
The Map3D widget reference also the aircraft coordinates which make sense with some data format available and with the camera AC mode. Also, the camera events are send from this widget to client to avoid following different camera widgets.
The map3Dsource widget contains one or multiple Maps3DList, and provide way to define the map data format of location used by 3D maps items. See map widgets for more information on map, mapSource and mapList widget
There is different data formats availables for 3D :
A661_M3DDF_LAT_LONG_ALT : lattitude, longitude (in degrees) and altitude (in meters)
A661_M3DDF_NORTH_EAST_DOWN : north, east, down (in meters)
A661_M3DDF_DIST_BRG_ELEV : distance (in meters), bearing and elevation (in degrees) according to aircraft coordinates
JavaFX Server
The 3D JavaFX implementation of the Map3DWidget using a SubScene Node set to support 3D. It is using some elements (cone, pyramid...) of an external library called FXYZ. Some components have been extracted (like Model3D equivalent) or fully rewritten ( BillBoard).
An unique 3D Billboard Manager is used in the map3D environement to make 2D node facing always the camera.
The Map3D renderer implements a native 2D Winder Rose which indicates the orientation of the camera, its rotation gives the impression to be a 3D element.
Menu
The view also have a simple menu display displayed in the 3D environment (so as elements can still be over the menu). The menu always facing the camera. A click outside the menu hide it. The menu is currently used on waypoint items and all renderers of map items can access it. Maybe the 3D implementation of the menu is a mistake because the menu should find a better place as a 2D element upon the view for not be hidden by other 3D items or 3D fields.
See also
Map Items 3D: Map3DItems are similar to Maps Items for 2D Maps, but they have three coordinates rather than two