Stereoscopic
Stereoscopic
Hi, I want to change the viewport so i could have a Stereoscopic type of view using a googlecardboard for the game. At first i though about going into split screen mode for 2 players but changing the viewport player for player 1 to have the same screen side by side. Any idea what i should change in the code to help me do that ? ( example of viewport i want : https://farm1.static.flickr.com/119/256 ... 1e50_o.jpg )
Re: Stereoscopic
You get the basic stereoscopic shift by, well, shifting one of the cameras to the side by the distance of the eyes. What you do is that you set up basic side-by-side splitscreen and modify the code for the second view so that instead of the usual camera update, it just copies all values from the first view's camera (pos, dir, fov, z, rise, top should do), then move 'pos' a little to the side, like this:
Important to know: our units are approximately meters, walls have a height of 1. It may look better if you assume that's actually 1.5 meters...
Of course, for a true Cardboard view, what's missing would be some distortion to compensate for what the lenses are doing. It seems you can get away without that.
Code: Select all
float eyeDistance = 0.05;
pos = pos + dir.Turn(0, eyeDistance);
Of course, for a true Cardboard view, what's missing would be some distortion to compensate for what the lenses are doing. It seems you can get away without that.
Re: Stereoscopic
Do you know where I need to change the code and add that line ?
Re: Stereoscopic
Search for eCamera::Timestep. That's the function you can put this stuff into. Or eCamera::Render. Render has the advantage that you don't have to worry about ordering: Put your code at the top. It will then run between both Timestep calls (one for each view, one of them doing an update you don't actually want) and right before actually setting the view parameters up for rendering, so nobody is going to mess with your setup any more.