The camera is used to parameter the 3d View. You can insert multiple A661_CAMERA_3D in the maps Maps 3D Environment, however only one Camera is active at any moment.
The Camera widget hold all the characteristics relative to the point of view of the Map3D Widget.
Note about field of view: JavaFX implements only define one axis (vertical of horizontal) at the same time.
Main Camera modes
Cameras have two main modes:
- A661_LOOK_AT: we look on a particular point in the 3D world, the Camera is defined relative to this point
- A661_CAMERA_DIRECTION: we set a position in the 3D world for the Camera, and look on the direction of a specified point in the 3D world. This mode is not fully working yet, some rotations aren't correct
Animation transitions and interactions
The JavaFX renderer implements some animation transitions when camera location change. It supports zoom, drag translation and scroll events. Some attributes defined in the camera widget allow you to constraint all those interactions. The zoom support different levels of zoom that can be defined in them.
Transition from 2D to 3D
In look At mode, when the camera elevation is near the camera Max Elevation Allowed, there is a transition to 2D. (elevation is at 90') The 2D effect is obtains by placing the camera at a very big distance and changing his field of view to make illusion that the camera hasn't moved.
Followed trajectory mode
The attribute CameraTrajectoryID is used to specify which trajectory you want to follow. You indicate a mapList ID. Only one trajectory must be in the list. Yet, only the ribbon (see Ribbon Start 3D code) support drag on trajectory. For remove the following of the trajectory you must set the ID to 0 (default value).
Camera AC mode
The AC mode make the camera to center on the aircraft and following it automatically when moving. This done if you update the aircraft coordinates of the maps3D Widget
. The bearing of the camera in this case can be adapt to correspond to the different between the aircraft orientation and the camera. This a Work to do!
Feature: Show most of Trajectory
In the AC mode or the followed trajectory mode, there also a feature not developped yet. This feature would make the camera showing automatically the maximum of the trajectory planned from the current point.
A661_EVT_CAMERA_LOCATION_UPDATED: notify the camera location
A661_EVT_CAMERA_ROTATION_UPDATED: notify the camera rotation
A661_EVT_CAMERA_DISTANCE: send notify camera distance
Look At Request
Some attributes of the camera are used to request to look at a point from the current position camera. It's work in any mode, the camera stay to his position but rotate on itself to centering on the request point.
Possible simplification of camera coordinates
For now, the CameraLat, CameraLon, CameraAlt don't define the same elements between the A661_LOOK_AT and the A661_CAMERA_DIRECTION mode. In Look At, it defines the lookedAt point, wheras in direction mode it defines the camera location. We can imagine other parameters which can always signify the same thing:
- CameraLat, CameraLon, CameraAlt: camera coordinates
- CameraLookAtDist: distance between camera and a particular point (that the point on which the camera is center on)
- CameraLookAtLat, CameraLookAtLon, CameraLookAtAlt: coordinates of a particular point looked at (which is at the distance defined by CameraLookAtDist)
- CameraBearing, CameraElevation Camera Roll: Rotations of the camera
- CameraRequestLat,CameraRequestLon,CameraRequestAlt: used for request to look at a point. The camera keep is position and just rotate on itself
- CameraMode: direction Mode or Look At Mode
- Maps 3D architecture: The maps3D widget allows to display Map Items 3D with different types of projections