In my project I'm using two Orthographic cameras:
a Zelda-type for ingame content (slightly tilted, zoomed out and pushed up a bit);
a simple frontal one (for various messages delivered between levels).
Now I'm trying to add a nice "wallpaper" effect (an image rendered in the back of everything) to the game itself. Using the "ingame" camera that'd be pretty cumbersome to position and maintain because first I'd have to calculate all sorts of things just to make it fit from top left to bottom right.
So during the game's PrgState OnRender, I thought the way to go about it would be to switch the camera to the frontal one, simply render the wallpaper and then switch back to the "ingame" camera for everything else. Same principle could apply for other elements (see related thread).
But although this can be easily done in ZExpression with
Code: Select all
Prg.Camera = Frontal;
Prg.Camera = Projection;
I discovered this doesn't work... The only way to do it right now is to use Kjell's method in Layer2d example which, if I understood correctly, requires writing transformation matrices and duplicating code that is already in ZGE. Wouldn't it be better if we could just switch cameras instead?
In my opinion the ideal implementation of this would be if the Camera component had two "modes", maybe selectable from a drop down menu under the Component's comment: selecting "Define" shows the whole Camera options like it is now, while selecting "Switch" just shows a drop down menu with the list of all the other cameras. So during OnRender one'd simply sandwich all the components between two Camera components...
I also liked this idea:
Rado1 wrote:My idea is to have, e.g., a variant (or a "2D" flag of) of the RenderTransformGroup/RenderTransform which would work in "camera's space", similarly to RenderText.