Forum Discussion

🚨 This forum is archived and read-only. To submit a forum post, please visit our new Developer Forum. 🚨
rupy's avatar
rupy
Honored Guest
11 years ago

[BROKEN] Dimensions DK2

Oculus, can you post the official pixel position on the screen of the center of the lenses? For DK1 and DK2...

What about diopters for the DK2 lenses?

What about DPI for the screens both DK1 and DK2!

What is the plastics IPD or the distance between the lens centers? I read 64mm here and 65mm there...

9 Replies

  • "rupy" wrote:
    Oculus, Can you post the official pixel position on the screen of the center of the lenses?

    There is no single specific pixel position that will appear at the lens center for all combinations of users and Rift adjustments.

    Imagine extending a line from the center of a user's eye, through the center of the lens, which intersects a specific pixel on the screen. Depending on how far the user's eye is from the fixed IPD used for lens spacing, a corresponding variable offset would be needed to decide which pixel appears in the center of the lens. And lens distortion may also need to be taken into account, along with which lens set (A, B, or C) is installed, and how far the user's eye is from the lens. The specific pixel position would also depend on vertical alignment of the lenses when the user adjusts the Rift on his face to find the "sweet spot", or for comfortable fit.

    HTH

    Of course, "official" proclamations are made all the time (especially by politicians) that have no basis in reality. But in this case, I am not aware of any "official" position, real of otherwise.
  • rupy's avatar
    rupy
    Honored Guest
    I meant if the users eyes are "perfect" = exactly aligned with the lenses. It's not hard, I'm just asking for easy data if you have the CAD file... or the DPI of the screen!
  • "geekmaster" wrote:
    "rupy" wrote:
    Oculus, Can you post the official pixel position on the screen of the center of the lenses?

    There is no single specific pixel position that will appear at the lens center for all combinations of users and Rift adjustments.

    Imagine extending a line from the center of a user's eye, through the center of the lens, which intersects a specific pixel on the screen. Depending on how far the user's eye is from the fixed IPD used for lens spacing, a corresponding variable offset would be needed to decide which pixel appears in the center of the lens. And lens distortion may also need to be taken into account, along with which lens set (A, B, or C) is installed, and how far the user's eye is from the lens. The specific pixel position would also depend on vertical alignment of the lenses when the user adjusts the Rift on his face to find the "sweet spot", or for comfortable fit.

    HTH

    Of course, "official" proclamations are made all the time (especially by politicians) that have no basis in reality. But in this case, I am not aware of any "official" position, real of otherwise.


    This is a common misconception. Collimating lenses however do project a "center" pixel (the one that sits at the optical center of the lens) to all positions on the other side of the lens. So as you move your eye position across the lens you will still be staring at the center pixel and it will move with your eye.
  • "brantlew" wrote:
    This is a common misconception. Collimating lenses however do project a "center" pixel (the one that sits at the optical center of the lens) to all positions on the other side of the lens. So as you move your eye position across the lens you will still be staring at the center pixel and it will move with your eye.

    That does not make sense to me. Are we talking about the same thing? Perhaps we interpreted the original post in different ways.

    A specific pixel will hit different places of the retina depending on how you position your eye in front of the lens. You can see for yourself by sliding your Rift upward towards your hair, or downwards toward your mouth, or a little left or right. You will see different portions of the screen, each with their own different apparent "lens center".

    The misconception is assuming that all viewers will have their eye centered over that optical center of the lens. As I said, if your eye is off center, the center of the viewing area will contain a different pixel than if it is centered over the lens axis.

    Perhaps it will make more sense with a diagram:

    Imagine that the "object" arrow is displayed on the LCD with its point on the center axis of the lens. Imagine also that the "image" arrow is focused on your retina. As your eye moves away from the lens center, different parts of the image arrow (and therefore different pixels) will focus at the center of the retina. Looking straight forward at the "infinite horizon" will appear as the center of the lens viewing area (not the lens optical axis), but will see different pixels depending on eye position. That is WHY there is an IPD adjustment in the SDK.

    EDIT: After rereading the original post a few times, looking for different possible interpretations, perhaps he DID want to know the pixel directly on the optical axis of the lens. I thought he meant the pixel perceived as the center by the viewer. Because all lens sets have a common optical axis, viewing directly through that axis should converge on a common specific central pixel (within the tolerance of panel mounting). So my reply may have been based on a different (in this case incorrect) interpretation of the meaning of the first post, which is why my posts tend to be so long, trying to precisely nail what I am trying to say while minimizing alternate interpretations. I also see that additional requests have been edited into the first post, which neither of us have addressed.
  • The perceived center pixel and the actual center pixel are one and the same. This is what happens with collimating lenses and objects placed at the focal length. The light from the center pixel shines in all directions, but as rays pass through the lens they all exit traveling parallel. So if you are looking through the central axis or shifted to the side, the light from that center pixel is still moving straight into your eye.

    Image-translation-1.png

    Image-translation-2.png
  • rupy's avatar
    rupy
    Honored Guest
    Ok, that's great and all, but what is that center pixel or/and the DPI of the screen in/for the DK1?

    You have to realize to avoid simulator sickness you need these to align well so that the view in the left and right eye are as similar as possible before stereoscopic eye distance is applied.

    But I think I got it right now:


    glScissor(0, 25, 750, 750);
    glViewport(0, 25, 750, 750);

    ...

    glScissor(640, 25, 750, 750);
    glViewport(535, 25, 750, 750);


    Edit: @geekmaster Yes I want THE pixel in the center of the axis of the lens!

    Edit 2: @brantlew On a more general note why is it so hard for you to pull data, that you have (since you specified the product to be manufactured) out of your hat?
  • "rupy" wrote:
    Ok, that's great and all, but what is that center pixel or the DPI of the screen in/for the DK1?


    The HMDInfo structure from the SDK contains the width of the screen in meters, the lens axis seperation in meters, and the resolution of the screen. That is everything you need to calculate what you're asking.

    What percentage of the screen is between the lenses, versus between the lenses and the sides of the display:

    float percentBetweenLenses = LensSeparationInMeters / ScreenSizeInMeters.w;



    How many pixels does that represent:

    float pixelsBetweenLenses = percentBetweenLenses * ResolutionInPixels.w;



    How many pixels are between the edge of the screen and one of the lens axes:

    float pixelsPerSide = (ResolutionInPixels.w - pixelsBetweenLenses) / 2.0f;


    Left 'center pixel':

    float leftX = pixelsPerSide;
    float leftY = ResolutionInPixels.h / 2.0f;


    Right 'center pixel':

    float rightX = pixelsPerSide + pixelsBetweenLenses;
    float rightY = ResolutionInPixels.h / 2.0f;
  • rupy's avatar
    rupy
    Honored Guest
    ok thx, totally forgot about the HMDInfo, working it...

    Edit: Ok works for 0.2.X SDK!
  • rupy's avatar
    rupy
    Honored Guest
    But how would one do this with the 0.3.X SDK for DK2 when using your own rendering?