The only thing left to do is to tilt the synthetic camera apropriatly and thats where things can get confusing. Heres some explanation of how the irrlicht coordinate system works.
Irrlicht uses a left-handed coordinate system so when you model something the Z direction is inverted (in relation to a right-handed cordinate system). Y is considered the up direction in Irrlicht for the FPS camera and the Maya camera.
Think of coordinates as (X,Y,Z). X axis is red, Y green and Z blue as we see in modelers. This helps remenber XYZ = RGB. Imagine the X (red) axis running horizontaly on the screen from left to right with right being the positive directon. Now rotate the X axis 90 degres in positive direction (counter-clockwise) and you will obtain the Y (green) axis running bottom to top with top being positive direction.
Ok so you probably could figure this out by yourself. The not so obvious part is identified the left-handed coordinate system.
Apply the negative cross-product to the normal vectors that represent the X and Y axis and you will obtain a vector aligned with the Z axis of the LHCS. This is how we construct it. If we applied the positive cross-product we would obtain a right-handed coordinate system.
In LHCS the Z (blue) axis is perpendicular to the screen, with the positive direction running away from the screen (running towards the screen in RHCS). The Z axis makes a 90 degree angle with the XY plane because the cross-product of A x B allways creates a vector perpendicular to A and B.
How this can help in seting the camera?
You have three methods for the camera: setPosition, setTarget and setUpVector.
When you position the camera and make it point to a certain target point the camera may still be tilted or "rotated" around its "direction" vector. The direction can be computed from it's postion and target point.
When the camera is looking down the Y axis (up view) you still need to know what direction is up in the terrain mesh (its Z+ in LHCS) and what direction is down in the terrain mesh (its Z- in LHCS) so that the camera is tilted (roated around its direction) correctly. The method setUpVector modifies an imaginary vector applied to center of the camera and perpendicular it's view direction and pointing up relative to the camera.
The correctly set your camera tilt you need to set it's up direction. Check this for more info:
http://www.cs.brown.edu/stc/summer/view ... ry_31.html
In the UVN synthetic camera coordinates the V is the up vector. The UVN coordinate system is independent of the XYZ world system.
This is the minimum to understand in order to use a camera corectlt and it doesn't imply knowing any maths, just conventions.