PTB-OpengGL stereo rendering and eye seperation value

87 Views Asked by At

I tried to draw a 3D dot cloud using OpenGL asymmetric frustum parallel axis projection. The general principle can be found on this website(http://paulbourke.net/stereographics/stereorender/#). But the problem now is that when I use real eye separation(0.06m), my eyes do not fuse well. When using eye separation = 1/30 * focal length, there is no pressure. I don’t know if there is a problem with the calculation, or there is a problem with the parameters? Part of the code is posted below. Thank you all.

for view = 0:stereoViews
    % Select 'view' to render (left- or  right-eye):
    Screen('SelectStereoDrawbuffer', win,  view);

    % Manually reenable 3D mode in  preparation of eye draw cycle:
    Screen('BeginOpenGL', win);

    % Set the eye seperation:
    eye = 0.06; % in meter

    % Caculate the frustum shift at the near plane:
    fshift = 0.5 * eye *  depthrangen/(vdist/100);  % vdist is the focal length, 56cm, 0.56m
    right_near = depthrangen *  tand(FOV/2); % depthrangen is the depth of the near plane, 0.4. %FOV is the field of view, 18°
    left_near = -right_near;
    top_near = right_near* aspectr;
    bottom_near = -top_near;

    % Setup frustum projection for this  eyes 'view':
    glMatrixMode(GL.PROJECTION)
    glLoadIdentity;
    eyeside = 1+(-2*view); % 1 for left eye, -1 for right eye
    glFrustum(left_near + eyeside *  fshift, right_near + eyeside * fshift,  bottom_near, top_near, %depthrangen,  depthrangefObj);         

    % Setup camera for this eyes 'view':
    glMatrixMode(GL.MODELVIEW);
    glLoadIdentity;
    gluLookAt(0 - eyeside * 0.5 * eye, 0,  0, 0 - eyeside * 0.5 * eye, 0, -1, 0, 1, 0);
    
    % Clear color and depths buffers:
    glClear;
    moglDrawDots3D(win, xyz(:,:,iframe),  10, [], [], 1);
    moglDrawDots3D(win,  xyzObj(:,:,iframe), 10, [], [], 1);

    % Manually disable 3D mode before  calling Screen('Flip')!
    Screen('EndOpenGL', win);
    % Repeat for other eyes view if in stereo presentation mode...
end
0

There are 0 best solutions below