0

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
  • 1
    Which kind of display is used for stereoscopic pair? Physical distance between real eyes make sense only in case of HMD; stereoscopic vision on other kind of displays depends on volatile parameters like screen size and viewer distance, and in general never match HMD. Therefore, it doesn't make sense putting eyes' distance here - just make separation and focus parameters configurable to user in a reasonable range. – gkv311 Mar 11 '21 at 14:53
  • The display is a 27-inch monitor. Thanks for your help. – dahua yang Mar 13 '21 at 02:01

0 Answers0