Continuing camera issues

Do cameras face forward or backward?

That is, when tying them to a Spatial by a CameraNode, do they look down that Spatial’s -Z axis , and have that Spatial’s +X pointing to the right edge of the ViewPort and that Spatial’s +Y to the top of the ViewPort?

I really wish Cameras behaved like the rest of my scene. They appear to defy the conventions, as I can have a camera facing down my world’s -z axis, but as soon as I bind them to a Spatial, they yaw 180 degrees and look down +Z.

My suspicions that these are doing the wrong thing seem strengthened by

Camera.setAxes(Vector3f left, Vector3f up, Vector3f direction) {

this.rotation.fromAxes(left, up, direction);


Where the left, up, direction parameters are then handed to a function bearing the contradictory signature:

Quaternion.fromAxes(Vector3f xAxis, Vector3f yAxis, Vector3f zAxis)

The implication here is that the camera’s LEFT is being handed to a Quaternion which regards it as RIGHT (+X).

Can someone address my concern that there is a confusing inconsistency here?

My test case is that if I place a Box at at 0,0,-10 and the camera at the origin, I see the box.

However, when I then place a CameraNode at the origin with no rotation, the box is no longer visible. Yawing the CameraNode 180 degrees reveals the Box. Conclusion: cameras in CameraNodes face down +Z with up = +Y when the simplest, expected behavior would be fwd = -Z, up = +Y