syl20
02-22-2010, 09:31 PM
Hello
I'm trying to make an immersive display on a wall and I'm using a tracker for head movement
I've been trying to adapt an algorithm that I've found
Calculating Stereo Pairs - Off axis Frustums - OpenGL
http://klee.usr.dico.unimi.it/~dan/PGL/doc/articoli&libri/Calculating%20Stereo%20Pairs.pdf
But I still have problem ... and I don't have a lot of time remaining
For the moment, In short, I have ...
the coordinates of the headtracker (helmetpos)
the 4 screen corners (pul, pur, pdl, pdr)
screen width : 2.4 m
screen height : 1.2 m
the wall is about 1.5 m from the tracking center
znear = helmetpos[Z]-pdl[Z];
zfar = 1000; or some value bigger then znear (constant for the moment)
left = pul[X]-helmetpos[X];
right = pur[X]-helmetpos[X];
bottom = pdl[Y]-helmetpos[Y];
top = pul[Y]-helmetpos[Y];
...
glFrustum( left, right, bottom, top, znear, zFar );
...
screenCenter = (pur+pdl)/2
...
gluLookAt(
helmetpos[X],helmetpos[Y],helmetpos[Z],
screenCenter[X],screenCenter[Y],screenCenter[Z], 0, 1, 0
);
...
But I still have problems to get a realistic view
and there is so many things ... I'm confused
The main problem I see is that:
Going from the left to the right limit of the screen (from a distance) make the scene go totally out of view even if it is supposed to stay in front
I know that I have to watch the screen from an Off axis Frustums but the consequences are far more than expected
Thank you for your help
I'm trying to make an immersive display on a wall and I'm using a tracker for head movement
I've been trying to adapt an algorithm that I've found
Calculating Stereo Pairs - Off axis Frustums - OpenGL
http://klee.usr.dico.unimi.it/~dan/PGL/doc/articoli&libri/Calculating%20Stereo%20Pairs.pdf
But I still have problem ... and I don't have a lot of time remaining
For the moment, In short, I have ...
the coordinates of the headtracker (helmetpos)
the 4 screen corners (pul, pur, pdl, pdr)
screen width : 2.4 m
screen height : 1.2 m
the wall is about 1.5 m from the tracking center
znear = helmetpos[Z]-pdl[Z];
zfar = 1000; or some value bigger then znear (constant for the moment)
left = pul[X]-helmetpos[X];
right = pur[X]-helmetpos[X];
bottom = pdl[Y]-helmetpos[Y];
top = pul[Y]-helmetpos[Y];
...
glFrustum( left, right, bottom, top, znear, zFar );
...
screenCenter = (pur+pdl)/2
...
gluLookAt(
helmetpos[X],helmetpos[Y],helmetpos[Z],
screenCenter[X],screenCenter[Y],screenCenter[Z], 0, 1, 0
);
...
But I still have problems to get a realistic view
and there is so many things ... I'm confused
The main problem I see is that:
Going from the left to the right limit of the screen (from a distance) make the scene go totally out of view even if it is supposed to stay in front
I know that I have to watch the screen from an Off axis Frustums but the consequences are far more than expected
Thank you for your help