Depth Plane Selection for Multi-Depth Planar Display Systems by User Categorization

The display system uses eye-tracking and waveguides to adjust depth planes based on user calibration and interpupillary distance, addressing the challenge of providing comfortable and realistic VR, AR, and MR experiences by optimizing depth plane switching.

JP7734237B2Active Publication Date: 2025-09-04MAGIC LEAP INC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2024097996
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-07-17
Filing Date
2024-06-18
Publication Date
2025-09-04
Estimated Expiration
2039-08-02

AI Technical Summary

Technical Problem

Existing VR, AR, and MR technologies face challenges in providing comfortable and natural-feeling presentations of virtual image elements due to the complexity of the human visual perception system, particularly in switching between depth planes without proper user calibration.

Method used

A display system that includes a head-mounted device with eye-tracking cameras and processors to determine whether a user is calibrated or a guest, adjusting depth plane switching parameters based on interpupillary distance or depth plane information, using waveguides to output light with varying wavefront divergence for different perceived depths.

Benefits of technology

Enables realistic and comfortable viewing experiences by accurately switching between depth planes, accommodating both calibrated and guest users, enhancing user interaction with virtual content.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007734237000001
    Figure 0007734237000001
  • Figure 0007734237000002
    Figure 0007734237000002
  • Figure 0007734237000003
    Figure 0007734237000003
Patent Text Reader

Abstract

To provide systems and methods for depth plane selection.SOLUTION: A display system includes a head-mounted display configured to project light, having different amounts of wavefront divergence, to an eye of a user to display a virtual image content appearing to be disposed at different depth planes. The wavefront divergence may be changed in discrete steps, with the change in steps being triggered based upon whether the user is fixating on a particular depth plane. The display system may be calibrated for switching depth planes for a main user. Upon determining that a guest user is utilizing the system, rather than undergoing a full calibration, the display system may be configured to switch depth planes based on a rough determination of the virtual content that the user is looking at.SELECTED DRAWING: None
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] (Priority Claim) This application claims priority under 35 U.S.C. § 119(e) to U.S. Provisional Application No. 62 / 714,649, filed August 3, 2018, and entitled "DEPTH PLANE SELECTION FOR MULTI-DEPTH PLANE DISPLAY SYSTEMS BY DETERMINATION OF INTERPUPILLARY DISTANCE," and U.S. Provisional Application No. 62 / 875,474, filed July 17, 2019, and entitled "DEPTH PLANE SELECTION FOR MULTI-DEPTH PLANE DISPLAY SYSTEMS BY USER CATEGORIZATION," both of which are incorporated herein by reference in their entireties. (Incorporated by reference)

[0002] This application incorporates by reference the following patent applications and publications: U.S. Patent Application No. 14 / 555,585, filed November 27, 2014, published July 23, 2015 as U.S. Patent Publication No. 2015 / 0205126; U.S. Patent Application No. 14 / 690,401, filed April 18, 2015, published October 22, 2015 as U.S. Patent Publication No. 2015 / 0302652; U.S. Patent Application No. 14 / 690,401, filed March 14, 2014; U.S. Patent Application No. 14 / 212,961, filed July 14, 2014, published on October 29, 2015 as U.S. Patent Publication No. 2015 / 0309263; U.S. Patent Application No. 14 / 331,218, filed March 21, 2018; U.S. Patent Application No. 15 / 927,808, filed October 12, 2016, published on April 20, 2017; U.S. Patent Application No. 15 / 291,929, filed January 17, 2017, published as U.S. Patent Publication No. 2017 / 0109580; U.S. Patent Application No. 15 / 408,197, filed March 24, 2017, published as U.S. Patent Publication No. 2017 / 0276948 on September 28, 2017; U.S. Patent Application No. 15 / 469369, filed March 24, 2017, published as U.S. Patent Publication No. 2017 / 0276948 on September 28, 2017; This application incorporates in its entirety U.S. Provisional Application No. 62 / 618,559, filed January 17, 2018; U.S. Patent Application No. 16 / 250,931, filed January 17, 2019; U.S. Patent Application No. 14 / 705,741, filed May 6, 2015, published April 21, 2016 as U.S. Patent Publication No. 2016 / 0110920; and U.S. Patent Publication No. 2017 / 0293145, published October 12, 2017. (Technical field)

[0003] The present disclosure relates to display systems, virtual reality, and augmented reality imaging and visualization systems, and more particularly to depth plane selection based in part on a user's interpupillary distance. [Background technology]

[0004] Modern computing and display technologies have facilitated the development of systems for so-called “virtual reality,” “augmented reality,” or “mixed reality” experiences, in which digitally reproduced images, or portions thereof, are presented to a user in a manner that appears or can be perceived as real. Virtual reality, or “VR,” scenarios typically involve the presentation of digital or virtual image information without transparency to other actual real-world visual inputs. Augmented reality, or “AR,” scenarios typically involve the presentation of digital or virtual image information as an augmentation to the visualization of the real world around the user. Mixed reality, or “MR,” relates to the merging of real and virtual worlds to create new environments in which physical and virtual objects coexist and interact in real time. Consequently, the human visual perception system is highly complex, making it challenging to produce VR, AR, or MR technologies that facilitate comfortable, natural-feeling, and rich presentations of virtual image elements among other virtual or real-world image elements. The systems and methods disclosed herein address various challenges associated with VR, AR, and MR technologies. Summary of the Invention [Means for solving the problem]

[0005] Various embodiments of systems and methods for depth plane selection in display systems such as augmented reality display systems, including mixed reality display systems, are disclosed.

[0006] In some embodiments, a display system can be configured to project light into a wearer's eye and display virtual image content within the wearer's field of view, which may also be referred to as a user. The wearer's eye may have a cornea, an iris, a pupil, a lens, a retina, and an optical axis extending through the lens, the pupil, and the cornea. The display system can include a frame configured to be supported on the wearer's head; a head-mounted display disposed on the frame; the display configured to project light into the wearer's eye and display virtual image content within the wearer's field of view with at least one of different amounts of wavefront divergence, such that the displayed virtual image content may appear to occur from different depths and at different time periods; one or more eye-tracking cameras configured to image the wearer's eye; and processing electronics in communication with the display and the one or more eye-tracking cameras. In some embodiments, the processing electronics can be configured to determine whether the wearer is a user or a guest user of a calibrated display system and, based on that categorization, select a scheme for switching the presentation of virtual content between two or more depth planes. For example, the processing electronics may be configured to obtain an estimate of the wearer's interpupillary distance based on eye images obtained using one or more eye tracking cameras and determine whether the wearer is a calibrated or guest user, and for guest users, the display system may be configured to switch between two or more depth planes based in part on the wearer's estimated interpupillary distance or based on depth plane information associated with particular virtual content.

[0007] In some embodiments, the augmented reality display system includes a head-mounted display configured to present virtual content by outputting light to a wearer, the head-mounted display configured to output light to the wearer's eyes with different amounts of wavefront divergence corresponding to different perceived depths away from the wearer. The display system also includes at least one processor communicatively coupled to the head-mounted display. The at least one processor is configured to determine whether the wearer is a calibrated wearer or a guest user. If the wearer is determined to be a calibrated user, the at least one processor is configured to load existing user depth plane switching calibration information and set depth plane switching parameters for the head-mounted display based on the existing user depth plane switching calibration information. If the wearer is determined to be a guest user, the at least one processor is configured to identify a virtual object having an associated depth plane that the guest user is most likely viewing and set depth plane switching parameters for the head-mounted display based on the associated depth plane.

[0008] In some other embodiments, a method for determining parameters for depth plane switching in a display system is provided. The display system is configured to direct image light to a user's eyes, display virtual image content, and present the virtual image content on multiple depth planes. Each depth plane is associated with image light having a different amount of wavefront divergence, and the display system is configured to switch the virtual image content between the different depth planes by varying the wavefront divergence of the image light. The method includes determining whether the user is a calibrated user or a guest user. If the user is determined to be a calibrated user, existing user depth plane switching calibration information is loaded, and depth plane switching parameters for the head-mounted display are set based on the existing user depth plane switching calibration information. If the user is determined to be a guest user, a virtual object viewed by the guest user is determined. The virtual object has an associated depth plane, and depth plane switching parameters for the head-mounted display are set based on the associated depth plane.

[0009] In yet another embodiment, an augmented reality display system includes a head-mounted display configured to present virtual content by outputting light to a wearer. The head-mounted display includes a waveguide stack configured to pass light from the world into the wearer's eye. The waveguide stack includes a plurality of waveguides, one or more of the plurality of waveguides configured to output light to the wearer's eye with a different amount of wavefront divergence than one or more other waveguides of the plurality of waveguides. The different amounts of wavefront divergence are associated with different accommodations by the eye, and the light output with the different amounts of wavefront divergence forms virtual objects at different perceived depths away from the wearer. The display system further includes an imaging device configured to capture an image of the wearer's eye, and at least one processor communicatively coupled to the head-mounted display and the imaging device. The at least one processor is configured to determine whether the wearer is a calibrated user or a guest user based, at least in part, on the image of the wearer's eye from the imaging device. If the wearer is determined to be a calibrated user, the at least one processor is configured to load existing user depth plane switching calibration information and set depth plane switching parameters for the head mounted display based on the existing user depth plane switching calibration information.If the wearer is determined to be a guest user, the at least one processor is configured to determine an interpupillary distance of the guest user and set depth plane switching parameters for the head mounted display based on the determined interpupillary distance.

[0010] In some other embodiments, a method is provided for determining parameters for depth plane switching in a display system configured to direct image light to a user's eyes and display virtual image content. The eyes are separated by an interpupillary distance, and the display system is configured to present the virtual image content on multiple depth planes. Each depth plane is associated with image light having a different amount of wavefront divergence, and the display system is configured to switch the virtual image content between the different depth planes by varying the wavefront divergence of the image light. The method includes determining whether the user is a calibrated user or a guest user. If the user is determined to be a calibrated user, existing user depth plane switching calibration information is loaded, and depth plane switching parameters for the display system are set based on the existing user depth plane switching calibration information. If the user is determined to be a guest user, the interpupillary distance of the guest user is determined, and depth plane switching parameters for the display system are set based on the determined interpupillary distance.

[0011] Additional examples are listed below.

[0012] Example 1 1. An augmented reality display system, comprising: a head-mounted display configured to present virtual content by outputting light to a wearer, the head-mounted display configured to output light to the wearer's eyes with different amounts of wavefront divergence corresponding to different perceived depths away from the wearer; at least one processor communicatively coupled to the head mounted display, determining whether the wearer is a calibrated user or a guest user; Once the wearer is determined to be a calibrated user, Loads existing user depth plane switching calibration information, Setting depth plane switching parameters for the head-mounted display based on existing user depth plane switching calibration information; If the wearer is determined to be a guest user, Identifying a virtual object that is most likely viewed by a guest user, the virtual object having an associated depth plane; setting depth plane switching parameters for the head mounted display based on the associated depth plane; at least one processor configured to: An augmented reality display system comprising:

[0013] Example 2 2. The augmented reality display system of Example 1, wherein the display system is configured to determine whether the wearer is a calibrated user or a guest user by determining the wearer's interpupillary distance.

[0014] Example 3 10. The augmented reality display system of Example 1, wherein the display system is configured to determine whether a guest user is most likely looking at a virtual object by determining whether the guest user's eyes are fixating within a volume that encompasses the virtual object.

[0015] Example 4 The display system is Determining an uncertainty associated with determining the location of the wearer's fixation point; Varying the size of a volume encompassing the virtual object based on the uncertainty; 4. The augmented reality display system of Example 3, configured as follows:

[0016] Example 5 2. The augmented reality display system of Example 1, wherein the display system is configured to transition to dynamic calibration of the guest user if an uncertainty associated with determining the position of the wearer's fixation point exceeds a threshold.

[0017] Example 6 10. The augmented reality display system of claim 1, wherein the display system is configured to transition to dynamic calibration of the guest user if an uncertainty associated with the location of the virtual object exceeds a threshold.

[0018] Example 7 An augmented reality display system as described in Example 1, wherein, after determining that the wearer is a calibrated user, in response to detecting that the calibrated user is no longer wearing the device, the display system is configured to continue utilizing the calibrated user's depth plane switching calibration information for a predetermined amount of time or for a predetermined number of image frames.

[0019] Example 8 The head-mounted display is an augmented reality display system as described in Example 1, comprising a waveguide stack configured to pass light from the world into the wearer's eye, the waveguide stack comprising one or more waveguides configured to output light to the wearer's eye with a different amount of wavefront divergence than one or more other waveguides of the plurality of waveguides.

[0020] Example 9 1. A method for determining parameters for depth plane switching in a display system configured to direct image light to a user's eye and display virtual image content, the display system being configured to present the virtual image content on a plurality of depth planes, each depth plane being associated with image light having a different amount of wavefront divergence, the display system being configured to switch the virtual image content between the different depth planes by varying the wavefront divergence of the image light; determining whether the user is a calibrated user or a guest user; Once the user is determined to be a calibrated user, Loads existing user depth plane switching calibration information, setting depth plane switching parameters for the head mounted display based on existing user depth plane switching calibration information; Once the user is determined to be a guest user, determining whether a guest user is viewing a virtual object, the virtual object having an associated depth plane; setting depth plane switching parameters for the head mounted display based on the associated depth plane; A method comprising:

[0021] Example 10 10. The method of example 9, wherein the step of determining whether the guest user is looking at the virtual object includes a step of determining whether the guest user's eyes are fixating within a volume that contains the virtual object.

[0022] Example 11 determining an uncertainty associated with determining a location of a user's fixation point; Varying a size of a volume containing the virtual object based on the uncertainty; The method of Example 10, further comprising:

[0023] Example 12 The method described in Example 9 further includes a step of transitioning from virtual content-based depth plane switching to dynamic calibration of the guest user if the uncertainty associated with the step of determining the position of the user's fixation point exceeds a threshold, and the virtual content-based depth plane switching includes a step of setting depth plane switching parameters for the head-mounted display based on the associated depth plane.

[0024] Example 13 The method of Example 9, further comprising, after determining that the user is a calibrated user, continuing to utilize the calibrated user's depth plane switching calibration information for a predetermined amount of time or a predetermined number of image frames in response to detecting that the calibrated user is no longer wearing the display of the display system.

[0025] Example 14 The method of Example 9, wherein the display system comprises a waveguide stack configured to pass light from the world into the user's eye, the waveguide stack comprising a plurality of waveguides, the plurality of waveguides comprising one or more waveguides configured to output light to the user's eye with a different amount of wavefront divergence than one or more other waveguides of the plurality of waveguides.

[0026] Example 15 1. An augmented reality display system, comprising: 1. A head-mounted display configured to present virtual content by outputting light to a wearer, comprising: a head mounted display comprising: a waveguide stack configured to pass light from the world into the wearer's eye, the waveguide stack comprising a plurality of waveguides, one or more of the plurality of waveguides configured to output light to the wearer's eye with a different amount of wavefront divergence than one or more other of the plurality of waveguides, the different amounts of wavefront divergence being associated with different accommodation by the eye, and the light output with the different amounts of wavefront divergence forming virtual objects at different perceived depths away from the wearer; an imaging device configured to capture an image of the wearer's eye; at least one processor communicatively coupled to the head mounted display and imaging device, determining whether the wearer is a calibrated user or a guest user based at least in part on an image of the wearer's eye from the imaging device; Once the wearer is determined to be a calibrated user, Loads existing user depth plane switching calibration information, Setting depth plane switching parameters for the head-mounted display based on existing user depth plane switching calibration information; If the wearer is determined to be a guest user, Determine the interpupillary distance of the guest user; setting depth plane switching parameters for the head mounted display based on the determined interpupillary distance; at least one processor configured to: An augmented reality display system comprising:

[0027] Example 16 16. The augmented reality display system of Example 15, wherein the imaging device comprises a left eye tracking system and a right eye tracking system, both configured to measure the wearer's interpupillary distance.

[0028] Example 17 The augmented reality display system of Example 15, wherein the processor is configured to determine whether the wearer is a calibrated user or a guest user based on the wearer's interpupillary distance.

[0029] Example 18 16. The augmented reality display system of Example 15, wherein the processor is configured to determine whether the wearer is a calibrated user or a guest user based on whether the wearer's interpupillary distance is within a predetermined threshold of the calibrated user's interpupillary distance.

[0030] Example 19 16. The augmented reality display system of Example 15, wherein the processor is configured to determine whether the wearer is a calibrated user or a guest user based on whether the wearer's interpupillary distance is within 1.0 mm of the calibrated user's interpupillary distance.

[0031] Example 20 1. A method for determining parameters for depth plane switching in a display system configured to direct image light to a user's eyes and display virtual image content, the eyes being separated by an interpupillary distance, the display system being configured to present the virtual image content on multiple depth planes, each depth plane being associated with image light having a different amount of wavefront divergence, and the display system being configured to switch the virtual image content between the different depth planes by varying the wavefront divergence of the image light; determining whether the user is a calibrated user or a guest user; Once the user is determined to be a calibrated user, loading existing user depth plane switching calibration information; setting depth plane switching parameters for the display system based on existing user depth plane switching calibration information; Once the user is determined to be a guest user, determining an interpupillary distance of a guest user; setting depth plane switching parameters for the display system based on the determined interpupillary distance; A method comprising:

[0032] Example 21 21. The method of example 20, wherein determining the interpupillary distance of the guest user includes determining the interpupillary distance of the guest user's eyes focused at optical infinity.

[0033] Example 22 The method of Example 20, wherein the step of determining whether the user is a calibrated user or a guest user includes a step of determining the user's interpupillary distance using one or more eye tracking cameras configured to image the user's eyes.

[0034] Example 23 The method of Example 20, wherein the step of determining whether the user is a calibrated user includes the steps of determining the user's interpupillary distance using one or more eye tracking cameras configured to image the user's eyes, and determining that the user's interpupillary distance is within a predetermined range.

[0035] Example 24 The method of Example 23, wherein the step of determining whether the user is a guest user includes the steps of determining the user's interpupillary distance using one or more eye tracking cameras, and determining that the user's interpupillary distance is outside a predetermined range.

[0036] Example 25 The method of Example 20, wherein the existing user depth plane switching calibration information includes a measured interpupillary distance of a calibrated user, and the step of determining whether the user is a calibrated user or a guest user includes the steps of determining the user's interpupillary distance, and determining that the user is a calibrated user when the user's interpupillary distance is within 1.0 mm of the measured interpupillary distance of the calibrated user, and determining that the user is a guest user when the user's interpupillary distance is not within 1.0 mm of the measured interpupillary distance of the calibrated user.

[0037] Example 26 21. The method of example 20, wherein determining whether the user is a calibrated user or a guest user includes identifying the user using at least one eye tracking camera.

[0038] Example 27 determining an optical axis for each eye of the user using an eye tracking system; determining a vergence depth of the user based on at least the determined optical axis of the user's eye and the set depth plane switching parameter; The method of Example 20, further comprising:

[0039] Example 28 21. The method of example 20, further comprising determining the user's convergence-divergence movement distance based at least in part on the set depth plane switching parameters.

[0040] Example 29 21. The method of example 20, further comprising selecting a depth plane to use for presenting the virtual image content based at least in part on a depth plane switching parameter.

[0041] Details of one or more implementations of the subject matter described herein are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages will become apparent from the description, drawings, and claims. Neither this summary nor the following detailed description purports to define or limit the scope of the inventive subject matter. The present invention provides, for example, the following items. (Item 1) 1. An augmented reality display system, comprising: a head-mounted display configured to present virtual content by outputting light to a wearer, the head-mounted display configured to output light to the wearer's eyes with different amounts of wavefront divergence corresponding to different perceived depths away from the wearer; at least one processor communicatively coupled to the head mounted display, the at least one processor comprising: determining whether the wearer is a calibrated user or a guest user; If the wearer is determined to be a calibrated user, loading existing user depth plane switching calibration information; setting depth plane switching parameters for the head mounted display based on the existing user depth plane switching calibration information; If the wearer is determined to be a guest user, identifying a virtual object that the guest user is most likely looking at, the virtual object having an associated depth plane; setting depth plane switching parameters for the head mounted display based on the associated depth plane; at least one processor configured to An augmented reality display system comprising: (Item 2) Item 1. The augmented reality display system of item 1, wherein the display system is configured to determine whether the wearer is a calibrated user or a guest user by determining the wearer's interpupillary distance. (Item 3) Item 1. The augmented reality display system of item 1, wherein the display system is configured to determine whether the guest user is most likely to be looking at the virtual object by determining whether the guest user's eyes are fixating within a volume that encompasses the virtual object. (Item 4) The display system comprises: determining an uncertainty associated with determining a position of the wearer's fixation point; Varying the size of the volume containing the virtual object based on the uncertainty; and Item 1. The augmented reality display system of item 1, configured to perform the following: (Item 5) Item 1. The augmented reality display system of item 1, wherein the display system is configured to transition to dynamic calibration of the guest user if an uncertainty associated with determining the position of the wearer's fixation point exceeds a threshold. (Item 6) Item 1. The augmented reality display system of item 1, wherein the display system is configured to transition to dynamic calibration of the guest user if uncertainty associated with the location of the virtual object exceeds a threshold. (Item 7) Item 1. The augmented reality display system of item 1, wherein, after determining that the wearer is a calibrated user, in response to detecting that the calibrated user is no longer wearing the device, the display system is configured to continue to utilize the calibrated user's depth plane switching calibration information for a predetermined amount of time or for a predetermined number of image frames. (Item 8) Item 1, an augmented reality display system, wherein the head-mounted display comprises a waveguide stack configured to pass light from the world into the wearer's eye, the waveguide stack comprising a plurality of waveguides, the plurality of waveguides comprising one or more waveguides configured to output light to the wearer's eye with a different amount of wavefront divergence than one or more other waveguides of the plurality of waveguides. (Item 9) 1. A method for determining parameters for depth plane switching in a display system configured to direct image light to a user's eye and display virtual image content, the display system configured to present the virtual image content on a plurality of depth planes, each depth plane associated with image light having a different amount of wavefront divergence, the display system configured to switch the virtual image content between different depth planes by varying the wavefront divergence of the image light, the method comprising: determining whether the user is a calibrated user or a guest user; Once the user is determined to be a calibrated user, loading existing user depth plane switching calibration information; setting depth plane switching parameters for the head mounted display based on the existing user depth plane switching calibration information; If the user is determined to be a guest user, determining whether the guest user is viewing a virtual object, the virtual object having an associated depth plane; setting depth plane switching parameters for the head mounted display based on the associated depth plane; A method comprising: (Item 10) Item 10. The method of item 9, wherein determining whether the guest user is looking at a virtual object includes determining whether the guest user's eyes are fixating within a volume that encompasses the virtual object. (Item 11) determining an uncertainty associated with determining a location of the user's fixation point; Varying a size of the volume containing the virtual object based on the uncertainty; and Item 11. The method of item 10, further comprising: (Item 12) Item 10. The method of claim 9, further comprising transitioning from virtual content-based depth plane switching to dynamic calibration of the guest user if an uncertainty associated with determining the position of the user's fixation point exceeds a threshold, wherein the virtual content-based depth plane switching comprises setting depth plane switching parameters for the head-mounted display based on the associated depth plane. (Item 13) Item 10. The method of item 9, further comprising, after determining that the user is a calibrated user, continuing to utilize the calibrated user's depth plane switching calibration information for a predetermined amount of time or for a predetermined number of image frames in response to detecting that the calibrated user is no longer wearing a display of the display system. (Item 14) Item 10. The method of item 9, wherein the display system comprises a waveguide stack configured to pass light from the world into the user's eye, the waveguide stack comprising a plurality of waveguides, the plurality of waveguides comprising one or more waveguides configured to output light to the user's eye with a different amount of wavefront divergence than one or more other waveguides of the plurality of waveguides. (Item 15) 1. An augmented reality display system, comprising: 1. A head-mounted display configured to present virtual content by outputting light to a wearer, the head-mounted display comprising: a waveguide stack configured to pass light from the world into the wearer's eye, the waveguide stack comprising a plurality of waveguides, one or more of the plurality of waveguides configured to output light to the wearer's eye with a different amount of wavefront divergence than one or more other waveguides of the plurality of waveguides, the different amounts of wavefront divergence being associated with different accommodation by the eye, and the light output with the different amounts of wavefront divergence forming virtual objects at different perceived depths away from the wearer; a head mounted display comprising: an imaging device configured to capture an image of the wearer's eye; at least one processor communicatively coupled to the head mounted display and the imaging device, the at least one processor comprising: determining whether the wearer is a calibrated user or a guest user based, at least in part, on an image of the wearer's eye from the imaging device; and If the wearer is determined to be a calibrated user, loading existing user depth plane switching calibration information; setting depth plane switching parameters for the head mounted display based on the existing user depth plane switching calibration information; If the wearer is determined to be a guest user, determining an interpupillary distance of the guest user; setting a depth plane switching parameter for the head mounted display based on the determined interpupillary distance; at least one processor configured to An augmented reality display system comprising: (Item 16) Item 16. The augmented reality display system of item 15, wherein the imaging device comprises a left eye tracking system and a right eye tracking system, both configured to measure the wearer's interpupillary distance. (Item 17) Item 16. The augmented reality display system of item 15, wherein the processor is configured to determine whether the wearer is a calibrated user or a guest user based on the wearer's interpupillary distance. (Item 18) Item 16. The augmented reality display system of item 15, wherein the processor is configured to determine whether the wearer is a calibrated user or a guest user based on whether the wearer's interpupillary distance is within a predetermined threshold of the calibrated user's interpupillary distance. (Item 19) Item 16. The augmented reality display system of item 15, wherein the processor is configured to determine whether the wearer is a calibrated user or a guest user based on whether the wearer's interpupillary distance is within 1.0 mm of the calibrated user's interpupillary distance. (Item 20) 1. A method for determining parameters for depth plane switching in a display system configured to direct image light to a user's eyes and display virtual image content, the eyes being separated by an interpupillary distance, the display system being configured to present the virtual image content on a plurality of depth planes, each depth plane being associated with image light having a different amount of wavefront divergence, the display system being configured to switch the virtual image content between different depth planes by varying the wavefront divergence of the image light, the method comprising: determining whether the user is a calibrated user or a guest user; Once the user is determined to be a calibrated user, loading existing user depth plane switching calibration information; setting depth plane switching parameters for the display system based on the existing user depth plane switching calibration information; If the user is determined to be a guest user, determining an interpupillary distance of the guest user; setting depth plane switching parameters for the display system based on the determined interpupillary distance; A method comprising: (Item 21) 21. The method of claim 20, wherein determining the interpupillary distance of the guest user includes determining the interpupillary distance of the guest user's eyes focused at optical infinity. (Item 22) Item 21. The method of item 20, wherein determining whether the user is the calibrated user or a guest user includes determining the interpupillary distance of the user using one or more eye-tracking cameras configured to image the eyes of the user. (Item 23) Item 21. The method of item 20, wherein determining whether the user is the calibrated user includes determining the interpupillary distance of the user using one or more eye tracking cameras configured to image the user's eyes, and determining that the interpupillary distance of the user is within a predetermined range. (Item 24) 24. The method of claim 23, wherein determining whether the user is the guest user includes determining the interpupillary distance of the user using the one or more eye tracking cameras and determining that the interpupillary distance of the user is outside the predetermined range. (Item 25) 21. The method of claim 20, wherein the existing user depth plane switching calibration information includes a measured interpupillary distance of the calibrated user, and determining whether the user is the calibrated user or a guest user includes determining the interpupillary distance of the user, and determining that the user is the calibrated user when the interpupillary distance of the user is within 1.0 mm of the measured interpupillary distance of the calibrated user, and determining that the user is a guest user when the interpupillary distance of the user is not within 1.0 mm of the measured interpupillary distance of the calibrated user. (Item 26) 21. The method of claim 20, wherein determining whether the user is the calibrated user or a guest user includes identifying the user using at least one eye-tracking camera. (Item 27) determining an optical axis for each eye of the user using an eye tracking system; determining a convergence-divergence movement depth of the user based on at least the optical axis determined for the eye of the user and the set depth plane switching parameter; 21. The method of claim 20, further comprising: (Item 28) 21. The method of claim 20, further comprising determining a convergence-divergence distance of the user based at least in part on the set depth plane switching parameter. (Item 29) 21. The method of claim 20, further comprising selecting a depth plane to use for presenting the virtual image content based at least in part on the depth plane switching parameter. [Brief explanation of the drawings]

[0042] [Figure 1] FIG. 1 depicts an illustration of a mixed reality scenario with a virtual reality object and a physical object viewed by a person.

[0043] [Figure 2] FIG. 2 illustrates diagrammatically an example of a wearable system.

[0044] [Figure 3] FIG. 3 diagrammatically illustrates example components of a wearable system.

[0045] [Figure 4] FIG. 4 diagrammatically illustrates an example of a waveguide stack of a wearable device for outputting image information to a user.

[0046] [Figure 5] FIG. 5 diagrammatically illustrates an example of an eye and an exemplary coordinate system for determining the eye posture of the eye.

[0047] [Figure 6] FIG. 6 is a schematic diagram of a wearable system including an eye tracking system.

[0048] [Figure 7A] FIG. 7A is a block diagram of a wearable system that may include an eye tracking system.

[0049] [Figure 7B] FIG. 7B is a block diagram of a rendering controller in a wearable system.

[0050] [Figure 7C] FIG. 7C is a block diagram of an alignment observer in a head mounted display system.

[0051] [Figure 8A] FIG. 8A is a schematic diagram of the eye showing the spherical cornea of ​​the eye.

[0052] [Figure 8B] FIG. 8B illustrates an exemplary corneal phosphene detected by an eye-tracking camera.

[0053] [Figure 8C] 8C-8E illustrate exemplary steps for locating a user's corneal center using an eye tracking module in a wearable system. [Figure 8D] 8C-8E illustrate exemplary steps for locating a user's corneal center using an eye tracking module in a wearable system. [Figure 8E] 8C-8E illustrate exemplary steps for locating a user's corneal center using an eye tracking module in a wearable system.

[0054] [Figure 9A] 9A-9C illustrate an exemplary normalization of the coordinate system of the eye-tracking image. [Figure 9B] 9A-9C illustrate an exemplary normalization of the coordinate system of the eye-tracking image. [Figure 9C] 9A-9C illustrate an exemplary normalization of the coordinate system of the eye-tracking image.

[0055] [Figure 9D] 9D-9G illustrate exemplary steps for locating a user's pupil center using an eye tracking module in a wearable system. [Figure 9E] 9D-9G illustrate exemplary steps for locating a user's pupil center using an eye tracking module in a wearable system. [Figure 9F] 9D-9G illustrate exemplary steps for locating a user's pupil center using an eye tracking module in a wearable system. [Figure 9G] 9D-9G illustrate exemplary steps for locating a user's pupil center using an eye tracking module in a wearable system.

[0056] [Figure 10] FIG. 10 illustrates an example of an eye, including the optical and visual axes of the eye and the center of rotation of the eye.

[0057] [Figure 11] FIG. 11 is a process flow diagram of an example method for using eye tracking to provide feedback regarding alignment within a wearable device when rendering content.

[0058] [Figure 12A] 12A and 12B illustrate the nominal positions of the display elements relative to the user's eyes and illustrate a coordinate system for describing the positions of the display elements and the user's eyes relative to each other. [Figure 12B] 12A and 12B illustrate the nominal positions of the display elements relative to the user's eyes and illustrate a coordinate system for describing the positions of the display elements and the user's eyes relative to each other.

[0059] [Figure 13] FIG. 13 is a set of example graphs illustrating how a wearable system can switch depth planes in response to a user's eye movements.

[0060] [Figure 14] FIG. 14 is a process flow diagram of an example method for depth plane selection using existing calibration, dynamic calibration, and / or content-based switching schemes.

[0061] [Figure 15] FIG. 15 is a process flow diagram of an example method for depth plane selection based, at least in part, on a user's interpupillary distance.

[0062] [Figure 16A] FIG. 16A illustrates an example of a top-down view of a representation of user-viewed content presented by a display system configured to switch depth planes by detecting a user's gaze within one of multiple zones that segment the user's field of view along a horizontal axis.

[0063] [Figure 16B]FIG. 16B illustrates an example of a perspective view of the representation of FIG. 16A.

[0064] [Figure 17A] FIG. 17A illustrates an example of a top-down view of a representation of user-viewed content presented by a display system configured to switch depth planes by detecting a user's gaze within a discrete marker volume within the display frustum.

[0065] [Figure 17B] FIG. 17B illustrates an example of a perspective view of the representation of FIG. 16A.

[0066] [Figure 18] FIG. 18 illustrates a flowchart of an example process for selecting a depth plane based on content-based switching.

[0067] [Figure 19] FIG. 19 illustrates a flowchart of another exemplary process for adjusting zones based on content-based switching.

[0068] Throughout the drawings, reference numbers may be reused to indicate correspondence between referenced elements. The drawings are provided to illustrate example embodiments described herein and are not intended to limit the scope of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0069] As described herein, a display system (e.g., an augmented reality or virtual reality display system) may render virtual content for presentation to a user at different perceived depths from the user. In an augmented reality display system, different depth planes may be utilized to project the virtual content, with each depth plane associated with a particular perceived depth from the user. For example, a stack of waveguides configured to output light with different wavefront divergences may be utilized, with each depth plane having a corresponding wavefront divergence and associated with at least one waveguide. As the virtual content moves around the user's field of view, the virtual content may be adjusted along three discrete axes. For example, the virtual content may be adjusted along the X, Y, and Z axes such that the virtual content may be presented at different perceived depths from the user. The display system may switch between depth planes such that the virtual content is perceived as being moved farther away from or closer to the user. It should be understood that switching depth planes may involve changing the wavefront divergence of the light forming the virtual content in discrete steps. In waveguide-based systems, in some embodiments, such depth plane switching may involve switching waveguides that output light and form virtual content.

[0070] In some embodiments, the display system may be configured to monitor the line of sight of a user's eyes and determine a three-dimensional fixation point at which the user is fixating. The fixation point may be determined based on, among other things, the distance between the user's eyes and the gaze direction of each eye. It should be understood that these variables may be understood to form a triangle with the fixation point at one corner of the triangle and the eye at the other corner. It should also be understood that calibration may be performed to accurately track the orientation of the user's eyes, determine or estimate the line of sight of those eyes, and determine the fixation point. Thus, after undergoing full calibration, the display device may have a calibration file or calibration information regarding the primary user of the device. The primary user may also be referred to herein as the calibrated user. Further details regarding calibration and eye tracking may be found, for example, in U.S. Patent Application No. 15 / 993,371, entitled "EYE TRACKING CALIBRATION TECHNIQUES," which is incorporated herein by reference in its entirety.

[0071] The display system may sometimes be used by guest users who have not completed a full calibration. Additionally, these guest users may not have the time or desire to perform a full calibration. However, if the display system does not actually track the guest user's fixation point, depth plane switching may not be appropriate for providing a realistic and comfortable viewing experience for the user.

[0072] It should be understood that a current user of a display system may therefore be categorized as a calibrated user or a guest user. In some embodiments, the display system may be configured to categorize the current user by determining whether the current user is a calibrated user, for example, by performing an identification or authentication process to determine whether information provided by and / or obtained from the current user matches information associated with a calibrated user. For example, the authentication or identification process may be one or more of asking for and verifying a username and / or password, performing an iris scan (e.g., by comparing a current image of the user's iris with a reference image), performing voice recognition (e.g., by comparing a current sample of the user's voice with a reference voice file), and IPD matching. In some embodiments, IPD matching may include determining whether the IPD of the current user matches the IPD of a calibrated user. If a match exists, the current user may, in some embodiments, be assumed to be a calibrated user. If a match does not exist, the current user may, in some embodiments, be assumed to be a non-calibrated user (e.g., a guest user). In some other embodiments, multiple authentication processes may be performed on the current user to increase the accuracy of determining whether the current user is a calibrated user.

[0073] In some embodiments, if the current user is determined to be not a calibrated user (e.g., a guest user), the display system may use content-based depth plane switching. For example, rather than determining the user's eye fixation point and switching depth planes based on the depth plane in which the fixation point is located, the display system may be configured to display content (e.g., a virtual object) with an appropriate amount of wavefront divergence defined for the location of that content in 3D space. It should be understood that a virtual object may have an associated location or coordinates within a three-dimensional volume around the user, and the display system may be configured to present the object using light with an amount of wavefront divergence appropriate for the object's depth relative to the user within that three-dimensional volume.

[0074] When multiple virtual objects at different depths are to be displayed, content-based depth plane switching may involve making a coarse determination about the virtual object being fixated and then using the location of that virtual object to establish the plane to which depth plane switching should switch. For example, in response to determining that a user is generally fixating on a particular virtual object, the display system may be configured to output light with a wavefront divergence corresponding to a depth plane associated with that virtual object. In some embodiments, this coarse determination of whether a user is fixating on an object may involve determining whether the fixation point is within a display system-defined volume unique to the object, and, if applicable, switching to the depth plane associated with that object regardless of the depth of the determined fixation point (such that if the volume extends across multiple depth planes, the display system would switch to the depth plane associated with the object).

[0075] In some embodiments, if the current user is determined to be not a calibrated user (e.g., a guest user), the display system may perform a coarse calibration by measuring the interpupillary distance (IPD) of the guest user. This coarse calibration may also be referred to as dynamic calibration. Preferably, the IPD is measured while the user's eyes are pointed at or focused on an object at optical infinity. In some embodiments, this IPD value may be understood to be the maximum IPD value. The maximum IPD value may be used, or a selected smaller value within a distribution of sampled values ​​(e.g., a value at the 95th percentile of the sampled IPD values) may be utilized as a reference value for determining the fixation point. For example, this IPD value may constitute one side (e.g., base) of an imaginary triangle, with the fixation point forming a corner (e.g., vertex).

[0076] Thus, in some embodiments, the display system may be configured to monitor whether a user is a main user or a guest user. If the user is a main user, a calibration file may be accessed. If the user is a guest user, content-based depth plane switching may be utilized, and / or a rough calibration involving determining an IPD may be performed to establish a reference IPD value. The display system may be configured to use this reference IPD value to determine or estimate the guest user's point of fixation and, accordingly, make decisions regarding when to switch depth planes (e.g., when to switch the wavefront divergence of the light used to form the virtual content).

[0077] In some embodiments, the display system may transition from implementing content-based depth plane switching to implementing depth plane switching based on the current user's dynamic calibration. For example, such a transition may occur in situations where data obtained in connection with a content-based depth plane switching scheme is deemed unreliable (e.g., values ​​related to a virtual object the user is generally fixating have a high level of uncertainty or variability), or where content is provided at different depth ranges spanning multiple depth planes (e.g., virtual content spans more than a threshold number of depth planes).

[0078] Reference is now made to the drawings in which like reference numerals refer to like parts throughout. Unless otherwise indicated, the drawings are schematic and are not necessarily drawn to scale. Example of a 3D display for a wearable system

[0079] A wearable system (also referred to herein as an augmented reality (AR) system) can be configured to present 2D or 3D virtual images to a user. The images may be still images, frames of video, or videos, in combination or the like. At least a portion of the wearable system can be implemented on a wearable device, which may present a VR, AR, or MR environment, alone or in combination, for user interaction. A wearable device can be used synonymously with an AR device (ARD). Additionally, for purposes of this disclosure, the term "AR" is used synonymously with the term "MR."

[0080] Figure 1 depicts an illustration of a mixed reality scenario involving a virtual reality object and a physical object viewed by a person. In Figure 1, an MR scene 100 is depicted in which a user of the MR technology sees a real-world park-like setting 110 featuring people, trees, a building in the background, and a concrete platform 120. In addition to these items, the user of the MR technology also perceives as "seeing" a robotic figure 130 standing on the real-world platform 120 and a flying, cartoon-like avatar character 140 that appears to be an anthropomorphic bumblebee, although these elements do not exist in the real world.

[0081] In order for a 3D display to produce a true depth sensation, and more specifically, a simulated sensation of surface depth, it may be desirable for the display to generate, for each point in its field of view, an accommodation response that corresponds to that point's virtual depth. If the accommodation response to a display point does not correspond to that point's virtual depth as determined by convergence and stereoscopic binocular depth cues, the human eye may experience accommodation conflict, resulting in unstable imaging, adverse eye strain, headaches, and, in the absence of accommodative information, a near-complete lack of surface depth.

[0082] VR, AR, and MR experiences can be provided by a display system having a display that provides a viewer with images corresponding to multiple depth planes. The images may be different for each depth plane (e.g., providing slightly different presentations of a scene or object) and may be focused separately by the viewer's eyes, thereby serving to provide depth cues to the user based on the ocular accommodation required to focus on different image features of a scene located on different depth planes, or based on observing different image features on different depth planes that are out of focus. As discussed elsewhere herein, such depth cues provide a believable perception of depth.

[0083] FIG. 2 illustrates an example of a wearable system 200, which can be configured to provide an AR / VR / MR scene. The wearable system 200 may also be referred to as an AR system 200. The wearable system 200 includes a display 220 and various mechanical and electronic modules and systems to support the functionality of the display 220. The display 220 may be coupled to a frame 230 that is wearable by a user, wearer, or viewer 210. The display 220 can be positioned directly in front of the eyes of the user 210. The display 220 can present AR / VR / MR content to the user. The display 220 may comprise a head-mounted display (HMD) worn on the head of the user 210.

[0084] In some embodiments, a speaker 240 is coupled to the frame 230 and positioned adjacent the user's ear canal (in some embodiments, another speaker, not shown, is positioned adjacent the user's other ear canal to provide stereo / shapeable sound control). The display 220 can include an audio sensor (e.g., a microphone) 232 to detect audio streams from the environment and capture ambient sounds. In some embodiments, one or more other audio sensors, not shown, are positioned to provide stereo sound reception. The stereo sound reception can be used to determine the location of a sound source. The wearable system 200 can perform voice or speech recognition on the audio stream.

[0085] The wearable system 200 may include an outward-facing imaging system 464 (shown in FIG. 4 ) that observes the world in the user's surrounding environment. The wearable system 200 may also include an inward-facing imaging system 462 (shown in FIG. 4 ) that may track the user's eye movements. The inward-facing imaging system may track either one eye's movements or both eyes' movements. The inward-facing imaging system 462 may be mounted to the frame 230 and may be in electrical communication with a processing module 260 or 270 that may process image information obtained by the inward-facing imaging system and determine, for example, the pupil diameter or orientation of the user's 210 eyes, eye movement, or eye posture. The inward-facing imaging system 462 may include one or more cameras. For example, at least one camera may be used to image each eye. Images obtained by the cameras may be used to determine pupil size or eye posture for each eye separately, thereby allowing the presentation of image information to each eye to be dynamically adjusted for that eye.

[0086] As an example, the wearable system 200 can obtain an image of the user's posture using an outward-facing imaging system 464 or an inward-facing imaging system 462. The image may be a still image, a frame from a video, or a video.

[0087] The display 220 can be operably coupled (250) to a local data processing module 260, which can be mounted in a variety of configurations, such as fixedly attached to the frame 230, by wired or wireless connection, fixedly attached to a helmet or hat worn by the user, built into headphones, or otherwise removably attached to the user 210 (e.g., in a backpack configuration, in a belt-coupled configuration).

[0088] The local processing and data module 260 may comprise a hardware processor and digital memory, such as non-volatile memory (e.g., flash memory), both of which may be utilized to aid in processing, caching, and storing data. The data may include a) data captured from sensors (e.g., that may be operatively coupled to the frame 230 or otherwise attached to the user 210), such as an image capture device (e.g., a camera in an inward-facing or outward-facing imaging system), audio sensors (e.g., a microphone), an inertial measurement unit (IMU), an accelerometer, a compass, a global positioning system (GPS) unit, a wireless device, or a gyroscope, or b) data obtained or processed using the remote processing module 270 or remote data repository 280, possibly for passing to the display 220 after processing or retrieval. The local processing and data module 260 may be operably coupled to a remote processing module 270 or a remote data repository 280 over a communication link 262 or 264, such as via a wired or wireless communication link, such that these remote modules are available as resources to the local processing and data module 260. In addition, the remote processing module 280 and the remote data repository 280 may be operably coupled to each other.

[0089] In some embodiments, remote processing module 270 may comprise one or more processors configured to analyze and process data or image information. In some embodiments, remote data repository 280 may comprise a digital data storage facility, which may be available through the Internet or other networking configuration in a "cloud" resource configuration. In some embodiments, all data is stored and all calculations are performed in the local processing and data module, allowing for fully autonomous use from the remote module. Example Components of a Wearable System

[0090] FIG. 3 diagrammatically illustrates example components of a wearable system. FIG. 3 shows a wearable system 200, which may include a display 220 and a frame 230. A blowup 202 diagrammatically illustrates various components of the wearable system 200. In some implementations, one or more of the components illustrated in FIG. 3 may be part of the display 220. The various components, alone or in combination, may collect various data associated with a user of the wearable system 200 or the user's environment (e.g., auditory or visual data, etc.). It should be understood that other embodiments may have additional or fewer components, depending on the application for which the wearable system is used. Note that FIG. 3 provides a basic idea of ​​some of the various components and the types of data that may be collected, analyzed, and stored through the wearable system.

[0091] FIG. 3 shows an exemplary wearable system 200, which may include a display 220. The display 220 may include a display lens 226 that may be mounted to a housing or frame 230 that corresponds to the user's head. The display lens 226 may include one or more transparent mirrors positioned by the housing 230 in front of the user's eyes 302, 304 and may be configured to bounce projected light 338 into the eyes 302, 304, facilitating beam shaping while also allowing transmission of at least some light from the local environment. The wavefront of the projected light beam 338 may be bent or focused to match a desired focal length of the projected light. As shown, two wide-field machine vision cameras 316 (also referred to as world cameras) are coupled to the housing 230 and can image the environment around the user. These cameras 316 may be dual-capture visible / invisible (e.g., infrared) light cameras. Camera 316 may be part of the outward-facing imaging system 464 shown in Figure 4. Images acquired by world camera 316 may be processed by pose processor 336. For example, pose processor 336 may implement one or more object recognizers 708 (e.g., shown in Figure 7) to identify the pose of the user or another person in the user's environment, or to identify physical objects in the user's environment.

[0092] Continuing with reference to FIG. 3, a pair of scanning laser-shaped wavefront (e.g., for depth) light projection modules along with display mirrors and optics are shown configured to project light 338 into the eyes 302, 304. The depicted diagram also shows two miniature infrared cameras 324 paired with infrared light sources 326 (such as light-emitting diodes (LEDs)) configured to track the user's eyes 302, 304 and support rendering and user input. The cameras 324 may be part of the inward-facing imaging system 462 shown in FIG. 4. The wearable system 200 may further feature a sensor assembly 339, which may include X-, Y-, and Z-axis accelerometer capabilities, a magnetic compass, and X-, Y-, and Z-axis gyroscope capabilities, and may preferably provide data at a relatively high frequency, such as 200 Hz. The sensor assembly 339 may be part of an IMU, as described with reference to FIG. 2A. The depicted system 200 may also include a head pose processor 336, such as an ASIC (Application Specific Integrated Circuit), FPGA (Field Programmable Gate Array), or ARM processor (Advanced Reduced Instruction Set Machine), which may be configured to calculate real-time or near real-time user head pose from the wide FOV image information output from the capture device 316. The head pose processor 336 may be a hardware processor and may be implemented as part of the local processing and data module 260 shown in FIG. 2A.

[0093] The wearable system may also include one or more depth sensors 234. The depth sensors 234 may be configured to measure the distance between objects in the environment and the wearable device. The depth sensors 234 may include a laser scanner (e.g., LIDAR), an ultrasonic depth sensor, or a depth-sensing camera. In some implementations where the camera 316 has depth-sensing capabilities, the camera 316 may also be considered a depth sensor 234.

[0094] Also shown is a processor 332 configured to perform digital or analog processing and derive attitude from gyroscope, compass, or accelerometer data from sensor assembly 339. Processor 332 may be part of local processing and data module 260, shown in FIG. 2. Wearable system 200 may also include a positioning system, such as, for example, a GPS 337 (Global Positioning System), as shown in FIG. 3, to assist in attitude and positioning analysis. In addition, the GPS may further provide remotely based (e.g., cloud-based) information about the user's environment. This information may be used to recognize objects or information within the user's environment.

[0095] The wearable system may combine data obtained by the GPS 337 and a remote computing system (e.g., the remote processing module 270, another user's ARD, etc.), which can provide more information about the user's environment. As one example, the wearable system can determine the user's location based on GPS data and retrieve a world map (e.g., by communicating with the remote processing module 270) that includes virtual objects associated with the user's location. As another example, the wearable system 200 can monitor the environment using the world camera 316 (which may be part of the outward-facing imaging system 464 shown in FIG. 4). Based on the images obtained by the world camera 316, the wearable system 200 can detect objects in the environment (e.g., by using one or more object recognizers 708 shown in FIG. 7). The wearable system can further interpret characters using data obtained by the GPS 337.

[0096] The wearable system 200 may also include a rendering engine 334, which can be configured to provide local rendering information to the user for the user's view of the world and facilitate the operation of the scanner and imaging into the user's eye. The rendering engine 334 may be implemented by a hardware processor (e.g., a central processing unit or a graphics processing unit, etc.). In some embodiments, the rendering engine is part of the local processing and data module 260. The rendering engine 334 can be communicatively coupled to other components of the wearable system 200 (e.g., via wired or wireless links). For example, the rendering engine 334 can be coupled to the eye camera 324 via communication link 274 and to the projection subsystem 318 (which can project light into the user's eyes 302, 304 via a scanning laser array in a manner similar to a retinal scanning display) via communication link 272. The rendering engine 334 can also communicate with other processing units, such as the sensor pose processor 332 and the image pose processor 336, via links 276 and 294, respectively.

[0097] A camera 324 (e.g., a small infrared camera) may be utilized to track eye pose and support rendering and user input. Some example eye poses may include where the user is looking or the depth of focus (which may be estimated using eye convergence and divergence). A GPS 337, gyroscope, compass, and accelerometer 339 may be utilized to provide coarse or fast pose estimation. One or more of the cameras 316 may obtain images and poses, which, along with data from associated cloud computing resources, may be utilized to map the local environment and share the user's view with others.

[0098] The example components depicted in FIG. 3 are for illustrative purposes only. Multiple sensors and other functional modules are shown together for ease of illustration and description. Some embodiments may include only one or a subset of these sensors or modules. Furthermore, the locations of these components are not limited to the locations depicted in FIG. 3. Some components may be mounted or stored within other components, such as belt-mounted, handheld, or helmet-mounted components. As an example, the image pose processor 336, the sensor pose processor 332, and the rendering engine 334 may be located within a beltpack and configured to communicate with other components of the wearable system via wireless communications, such as ultra-wideband, Wi-Fi, Bluetooth, or via wired communications. The depicted housing 230 is preferably head-mountable and wearable by a user. However, some components of the wearable system 200 may be worn on other parts of the user's body. For example, the speaker 240 may be inserted into the user's ear to provide sound to the user.

[0099] With respect to projecting light 338 into the user's eyes 302, 304, in some embodiments, the camera 324 may be utilized to measure where the center of the user's eyes geometrically converges, which generally corresponds to the position of the eye's focal point or "depth of focus." The three-dimensional surface of all points at which the eyes converge may be referred to as the "monocular locus." The focal distance may have a finite number of depths or may vary infinitely. Light projected from the convergence distance appears focused on the subject's eyes 302, 304, while light in front of or behind the convergence distance is blurred. Examples of wearable systems and other display systems of the present disclosure are also described in U.S. Patent Publication No. 2016 / 0270656, which is incorporated herein by reference in its entirety.

[0100] The human visual system is complex, making it difficult to provide a realistic perception of depth. A viewer of an object may perceive the object as three-dimensional due to a combination of vergence-divergence shifts and accommodation. Vergence-divergence shifts of the two eyes relative to one another (e.g., pupil rotation, such that the pupils move toward or away from one another, converging the eyes' gaze and fixating on an object) are closely linked to the focusing of the eye's lenses (or "accommodation"). Under normal conditions, a change in the focus of the eye's lenses or accommodation of the eye to change focus from one object to another at a different distance will automatically produce a matching change in vergence-divergence at the same distance, a relationship known as the "accommodation-vergence-divergence reflex." Similarly, a change in vergence-divergence will induce a matching change in accommodation under normal conditions. Display systems that provide better matching between accommodation and vergence-divergence may produce more realistic and comfortable simulations of three-dimensional images.

[0101] Furthermore, spatially coherent light with a beam diameter of less than approximately 0.7 millimeters can be properly resolved by the human eye regardless of where the eye is focused. Therefore, to create the proper illusion of depth of focus, the eye's convergence and divergence movements may be tracked using the camera 324, and the rendering engine 334 and projection subsystem 318 may be utilized to render all objects on or near the single visual path in focus and all other objects variably out of focus (e.g., using intentional blur). Preferably, the system 220 renders to the user at a frame rate of approximately 60 frames per second or greater. As described above, the camera 324 may preferably be utilized for eye tracking, and software may be configured to capture not only convergence and divergence geometry but also focus location cues to serve as user input. Preferably, such a display system is configured with brightness and contrast suitable for daytime or nighttime use.

[0102] In some embodiments, the display system preferably has a latency of less than about 20 milliseconds for visual object alignment, an angular alignment of less than about 0.1 degrees, and a resolution of about 1 arc minute, which, without being limited by theory, is believed to be approximately the limit of the human eye. The display system 220 may be integrated with a localization system, which may involve a GPS element, optical tracking, a compass, an accelerometer, or other data sources to assist in position and attitude determination. The localization information may be utilized to facilitate accurate rendering within the user's view of the relevant world (e.g., such information would help the glasses understand their location relative to the real world).

[0103] In some embodiments, the wearable system 200 is configured to display one or more virtual images based on the accommodation of the user's eyes. Unlike traditional 3D display approaches that force the user to focus where the image is projected, in some embodiments, the wearable system is configured to automatically vary the focus of the projected virtual content, allowing for a more comfortable viewing of one or more images presented to the user. For example, if the user's eyes have a current focus of 1 m, the image may be projected to match the user's focus. If the user shifts focus to 3 m, the image will be projected to match the new focus. Thus, rather than forcing a predetermined focus on the user, the wearable system 200 of some embodiments allows the user's eyes to function in a more natural manner.

[0104] Such a wearable system 200 may eliminate or reduce the incidence of eye strain, headaches, and other physiological symptoms typically observed with virtual reality devices. To achieve this, various embodiments of the wearable system 200 are configured to project virtual images at variable focal lengths through one or more variable focus elements (VFEs). In one or more embodiments, 3D perception may be achieved through a multi-planar focus system that projects images onto a fixed focal plane from the user. Other embodiments employ a variable planar focus, where the focal plane is moved back and forth in the z-direction to match the user's current state of focus.

[0105] In both multi-plane and variable-plane focus systems, the wearable system 200 may employ eye tracking to determine the convergence and divergence of the user's eyes, determine the user's current focus, and project the virtual image at the determined focus. In other embodiments, the wearable system 200 includes a light modulator that variably projects a variably focused light beam in a raster pattern across the retina through a fiber scanner or other light-generating source. Thus, the wearable system 200's display's ability to project images at variable focal lengths not only facilitates accommodation for the user to view objects in 3D, but may also be used to compensate for the user's ocular abnormalities, as further described in U.S. Patent Publication No. 2016 / 0270656 (incorporated herein by reference in its entirety). In some other embodiments, a spatial light modulator may project an image to the user through various optical components. For example, as further described below, the spatial light modulator may project the image onto one or more waveguides, which then transmit the image to the user. (Waveguide stack assembly)

[0106] FIG. 4 illustrates an example of a waveguide stack for outputting image information to a user. Wearable system 400 includes a stack of waveguides or stacked waveguide assembly 480 that can be utilized to provide three-dimensional perception to the eye / brain using multiple waveguides 432b, 434b, 436b, 438b, 440b. In some embodiments, wearable system 400 may correspond to wearable system 200 of FIG. 2, with FIG. 4A schematically illustrating several portions of wearable system 200 in more detail. For example, in some embodiments, waveguide assembly 480 may be integrated into display 220 of FIG. 2.

[0107] Continuing with reference to FIG. 4 , waveguide assembly 480 may also include multiple features 458, 456, 454, 452 between the waveguides. In some embodiments, features 458, 456, 454, 452 may be lenses. In some embodiments, the lenses may be variable focus elements (VFEs). For example, in some embodiments, waveguide assembly 480 may simply include two variable focus elements and one or more waveguides between the two variable focus elements. An example of a waveguide assembly with a VFE is disclosed in U.S. Patent Publication No. 2017 / 0293145, published October 12, 2017, the entire disclosure of which is incorporated herein by reference. In other embodiments, features 458, 456, 454, 452 may not be lenses. Rather, they may simply be spacers (e.g., cladding layers or structures to form air gaps).

[0108] Waveguides 432b, 434b, 436b, 438b, 440b or multiple lenses 458, 456, 454, 452 may be configured to transmit image information to the eye using various levels of wavefront curvature or ray divergence. Each waveguide level may be associated with a particular depth plane and configured to output image information corresponding to that depth plane. Image injection devices 420, 422, 424, 426, 428 may be utilized to inject image information into waveguides 440b, 438b, 436b, 434b, 432b, respectively, which may be configured to disperse incident light across each individual waveguide for output toward the eye 410. Light exits the output surfaces of image injection devices 420, 422, 424, 426, 428 and is injected into the corresponding input edges of waveguides 440b, 438b, 436b, 434b, 432b. In some embodiments, a single beam of light (e.g., a collimated beam) may be injected into each waveguide, outputting an entire field of cloned collimated beams directed toward eye 410 at a particular angle (and divergence) corresponding to the depth plane associated with the particular waveguide.

[0109] In some embodiments, image input devices 420, 422, 424, 426, 428 are discrete displays that each generate image information for input into a corresponding waveguide 440b, 438b, 436b, 434b, 432b, respectively. In some other embodiments, image input devices 420, 422, 424, 426, 428 are outputs of a single multiplexed display that may, for example, send image information to each of image input devices 420, 422, 424, 426, 428 via one or more optical conduits (such as fiber optic cables).

[0110] A controller 460 controls the operation of stacked waveguide assembly 480 and image injection devices 420, 422, 424, 426, 428. Controller 460 includes programming (e.g., instructions in a non-transitory computer-readable medium) that coordinates the timing and provision of image information to waveguides 440b, 438b, 436b, 434b, 432b. In some embodiments, controller 460 may be a single integrated device or a distributed system connected by a wired or wireless communication channel. Controller 460 may, in some embodiments, be part of processing module 260 or 270 (shown in FIG. 2).

[0111] Waveguides 440b, 438b, 436b, 434b, 432b may be configured to propagate light within each individual waveguide by total internal reflection (TIR). Waveguides 440b, 438b, 436b, 434b, 432b may each be planar or have another shape (e.g., curved) with major top and bottom surfaces and edges extending between their major top and bottom surfaces. In the illustrated configuration, waveguides 440b, 438b, 436b, 434b, 432b may each include light extraction optical elements 440a, 438a, 436a, 434a, 432a configured to extract light from the waveguides by redirecting the light, causing it to propagate within each individual waveguide, and outputting image information from the waveguides to the eye 410. The extracted light may also be referred to as out-coupled light, and the light extraction optical element may also be referred to as out-coupling optical element. The extracted light beam is output by the waveguide where the light propagating within the waveguide strikes the light redirecting element. The light extraction optical element (440a, 438a, 436a, 434a, 432a) may be, for example, a reflective or diffractive optical feature. While shown disposed on the bottom major surfaces of the waveguides 440b, 438b, 436b, 434b, 432b for ease of explanation and clarity of drawing, in some embodiments, the light extraction optical element 440a, 438a, 436a, 434a, 432a may be disposed on the top or bottom major surfaces or directly within the volume of the waveguides 440b, 438b, 436b, 434b, 432b. In some embodiments, the light extraction optical elements 440a, 438a, 436a, 434a, 432a may be formed in a layer of material attached to a transparent substrate and forming the waveguides 440b, 438b, 436b, 434b, 432b. In some other embodiments, the waveguides 440b, 438b, 436b, 434b, 432b may be monolithic pieces of material, and the light extraction optical elements 440a, 438a, 436a, 434a, 432a may be formed on and / or within the material pieces.

[0112] Continuing with reference to FIG. 4, as discussed herein, each waveguide 440b, 438b, 436b, 434b, 432b is configured to output light and form an image corresponding to a particular depth plane. For example, the waveguide 432b closest to the eye may be configured to deliver collimated light to the eye 410 as it is launched into such waveguide 432b. The collimated light may represent an optical infinity focal plane. The next upper waveguide 434b may be configured to send collimated light that passes through a first lens 452 (e.g., a negative lens) before reaching the eye 410. The first lens 452 may be configured to create a slight convex wavefront curvature so that the eye / brain interprets light emerging from the next upper waveguide 434b as emerging from a first focal plane closer inward from optical infinity toward the eye 410. Similarly, the third upper waveguide 436b passes its output light through both the first lens 452 and the second lens 454 before reaching the eye 410. The combined refractive power of the first and second lenses 452 and 454 may be configured to produce another, increasing amount of wavefront curvature such that the eye / brain interprets the light emerging from the third waveguide 436b as originating from a second focal plane that is closer inward from optical infinity towards the person than was the light from the next upper waveguide 434b.

[0113] Other waveguide layers (e.g., waveguides 438b, 440b) and lenses (e.g., lenses 456, 458) are similarly configured, with the highest waveguide 440b in the stack used to send its output through all of the lenses between it and the eye for a collective focal power representing the focal plane closest to the person. To compensate for the stack of lenses 458, 456, 454, 452 when viewing / interpreting light originating from the world 470 on the other side of the stacked waveguide assembly 480, a compensating lens layer 430 may be placed on top of the stack to compensate for the collective power of the lower lens stacks 458, 456, 454, 452. (The compensatory lens layer 430 and stacked waveguide assembly 480 may be configured collectively so that light originating from the world 470 is transmitted to the eye 410 with substantially the same level of divergence (or collimation) as the light had when originally received by the stacked waveguide assembly 480.) Such a configuration provides as many perceived focal planes as there are available waveguide / lens pairs. Both the light extraction optical elements of the waveguides and the focusing sides of the lenses may be static (e.g., not dynamic or electro-active). In some alternative embodiments, one or both may be dynamic using electro-active features.

[0114] Continuing with reference to FIG. 4 , light extraction optical elements 440a, 438a, 436a, 434a, 432a may be configured to redirect light from their respective waveguides and output the light with an appropriate amount of divergence or collimation for a particular depth plane associated with that waveguide. As a result, waveguides with different associated depth planes may have differently configured light extraction optical elements that output light with different amounts of divergence depending on the associated depth plane. In some embodiments, as discussed herein, light extraction optical elements 440a, 438a, 436a, 434a, 432a may be volume or surface features that can be configured to output light at specific angles. For example, light extraction optical elements 440a, 438a, 436a, 434a, 432a may be volume holograms, surface holograms, and / or diffraction gratings. Light extraction optical elements such as diffraction gratings are described in U.S. Patent Publication No. 2015 / 0178939, published June 25, 2015, which is incorporated herein by reference in its entirety.

[0115] In some embodiments, light extraction optical elements 440a, 438a, 436a, 434a, 432a are diffractive features or "diffractive optical elements" (also referred to herein as "DOEs") that form a diffraction pattern. Preferably, the DOEs have a relatively low diffraction efficiency so that only a portion of the light in the beam is deflected toward the eye 410 at each intersection of the DOE, while the remainder continues traveling through the waveguide via total internal reflection. The light carrying the image information is thus split into several related output beams that exit the waveguide at multiple locations, which can result in a very uniform pattern of output emission toward the eye 304 for this particular collimated beam bouncing within the waveguide.

[0116] In some embodiments, one or more DOEs may be switchable between an "on" state in which they actively diffract and an "off" state in which they do not significantly diffract. For example, a switchable DOE may comprise a layer of polymer-dispersed liquid crystal in which microdroplets comprise a diffractive pattern in a host medium, and the refractive index of the microdroplets may be switched to substantially match the refractive index of the host material (in which case the pattern does not significantly diffract incident light), or the microdroplets may be switched to a refractive index that does not match that of the host medium (in which case the pattern actively diffracts incident light).

[0117] In some embodiments, the number and distribution of depth planes or depths of field may be dynamically varied based on the size or orientation of the viewer's pupil. The depth of field may vary inversely with the viewer's pupil size. As a result, as the size of the viewer's pupil decreases, the depth of field increases so that a plane that is indistinguishable because its location exceeds the eye's depth of focus may become distinguishable and appear more focused with a corresponding decrease in pupil size and an increase in depth of field. Similarly, the number of spaced depth planes used to present different images to the viewer may be reduced with a decreased pupil size. For example, a viewer may not be able to clearly perceive details in both a first depth plane and a second depth plane at one pupil size without adjusting their eye's accommodation from one depth plane to the other. However, these two depth planes may be sufficient to simultaneously focus on the user at another pupil size without changing accommodation.

[0118] In some embodiments, the display system may vary the number of waveguides receiving image information based on a determination of pupil size or orientation or in response to receiving an electrical signal indicating a particular pupil size or orientation. For example, if a user's eye is unable to distinguish between two depth planes associated with two waveguides, controller 460 (which may be an embodiment of local processing and data module 260) can be configured or programmed to stop providing image information to one of those waveguides. Advantageously, this may reduce the processing burden on the system, thereby increasing system responsiveness. In embodiments in which the DOE for a waveguide is switchable between on and off states, the DOE may be switched to the off state when the waveguide receives image information.

[0119] In some embodiments, it may be desirable to have the output beam satisfy the condition of having a diameter less than the diameter of the viewer's eye. However, meeting this condition may be difficult in light of the variability in the size of the viewer's pupil. In some embodiments, this condition is met over a wide range of pupil sizes by varying the size of the output beam in response to a determination of the size of the viewer's pupil. For example, as the pupil size decreases, the size of the output beam may also decrease. In some embodiments, the output beam size may be varied using a variable aperture.

[0120] The wearable system 400 may include an outward-facing imaging system 464 (e.g., a digital camera) that images a portion of the world 470. This portion of the world 470 may be referred to as the world camera's field of view (FOV), and the imaging system 464 is sometimes also referred to as the FOV camera. The world camera's FOV may or may not be the same as the viewer 210's FOV, which encompasses the portion of the world 470 that the viewer 210 perceives at a given time. For example, in some situations, the world camera's FOV may be larger than the viewer 210's field of view of the wearable system 400. The entire area available for viewing or imaging by the viewer may be referred to as the field of view (FOR). The FOR may include a solid angle of 4π steradians surrounding the wearable system 400, since the wearer may move their body, head, or eyes and perceive virtually any direction in space. In other contexts, the wearer's movement may be more constrained, and the wearer's FOR may correspondingly subtend a smaller solid angle. Images obtained from the outward-facing imaging system 464 can be used to track gestures (e.g., hand or finger gestures) made by the user, detect objects in the world 470 in front of the user, etc.

[0121] The wearable system 400 includes an audio sensor 232, e.g., a microphone, that can capture ambient sounds. As described above, in some embodiments, one or more other audio sensors can be positioned to provide stereo sound reception useful in determining the location of a speech source. As another example, the audio sensor 232 can include a directional microphone, which can also provide such useful directional information regarding where an audio source is located. The wearable system 400 can use information from both the outward-facing imaging system 464 and the audio sensor 230 in locating a speech source or to determine the active speaker at a particular moment, etc. For example, the wearable system 400 can use voice recognition, alone or in combination with a reflected image of the speaker (e.g., as seen in a mirror), to determine the speaker's identity. As another example, the wearable system 400 can determine the speaker's location within the environment based on sound obtained from a directional microphone. The wearable system 400 can use speech recognition algorithms to analyze sounds originating from the speaker's location, determine the content of the speech, and use voice recognition techniques to determine the speaker's identity (e.g., name or other demographic information).

[0122] The wearable system 400 may also include an inward-facing imaging system 466 (e.g., a digital camera) that observes user movements, such as eye and facial movements. The inward-facing imaging system 466 may be used to capture images of the eyes 410 and determine the size and / or orientation of the pupils of the eyes 304. The inward-facing imaging system 466 may be used to obtain images for use in determining the direction the user is looking (e.g., eye pose) or for biometric identification of the user (e.g., via iris identification). In some embodiments, at least one camera may be utilized for each eye independently to separately determine the pupil size or eye pose of each eye, thereby allowing the presentation of image information to each eye to be dynamically adjusted for that eye. In some other embodiments, the pupil diameter or orientation of only a single eye 410 (e.g., using only a single camera per pair of eyes) is determined and assumed to be similar for both eyes of the user. Images obtained by inward-facing imaging system 466 may be analyzed to determine the user's eye posture or mood, which may be used by wearable system 400 to determine audio or visual content to be presented to the user. Wearable system 400 may also determine head pose (e.g., head position or head orientation) using sensors such as an IMU, accelerometer, gyroscope, etc.

[0123] The wearable system 400 may include a user input device 466 through which a user may input commands into the controller 460 and interact with the wearable system 400. For example, the user input device 466 may include a trackpad, touchscreen, joystick, multi-degree-of-freedom (DOF) controller, capacitive sensing device, game controller, keyboard, mouse, directional pad (D-pad), wand, tactile device, totem (e.g., functioning as a virtual user input device), etc. A multi-DOF controller may sense user input in possible translation (e.g., left / right, forward / backward, or up / down) or rotation (e.g., yaw, pitch, or roll) of some or all of the controller. A multi-DOF controller that supports translation may be referred to as 3DOF, while a multi-DOF controller that supports translation and rotation may be referred to as 6DOF. In some cases, a user may use a finger (e.g., a thumb) to press or swipe across a touch-sensitive input device to provide input to the wearable system 400 (e.g., to provide user input to a user interface provided by the wearable system 400). The user input device 466 may be held by the user's hand during use of the wearable system 400. The user input device 466 may communicate with the wearable system 400 via wired or wireless communication. Other Components of a Wearable System

[0124] In many implementations, the wearable system may include other components in addition to or as an alternative to the components of the wearable system described above. The wearable system may include, for example, one or more tactile devices or components. The tactile device or component may be operable to provide a tactile sensation to the user. For example, the tactile device or component may provide a tactile sensation of pressure or texture upon touching virtual content (e.g., a virtual object, virtual tool, other virtual structure). The tactile sensation may replicate the tactile sensation of a physical object represented by the virtual object, or may replicate the sensation of an imaginary object or character (e.g., a dragon) represented by the virtual content. In some implementations, the tactile device or component may be worn by the user (e.g., user-wearable gloves). In some implementations, the tactile device or component may be held by the user.

[0125] A wearable system may include, for example, one or more physical objects that can be manipulated by a user to enable input to or interaction with the wearable system. These physical objects may be referred to herein as totems. Some totems may take the form of inanimate objects, such as, for example, a piece of metal or plastic, a wall, a table surface, etc. In some implementations, a totem may not actually have any physical input structures (e.g., keys, triggers, joysticks, trackballs, rocker switches). Instead, the totem may simply provide a physical surface, and the wearable system may render a user interface to appear to the user on one or more surfaces of the totem. For example, the wearable system may render an image of a computer keyboard and trackpad to appear to reside on one or more surfaces of the totem. For example, the wearable system may render a virtual computer keyboard and virtual trackpad to appear on the surface of a thin rectangular plate of aluminum that serves as the totem. The rectangular plate itself does not have any physical keys or trackpads or sensors. However, the wearable system may detect user manipulation or interaction or touch with the rectangular plate as a selection or input made via a virtual keyboard or virtual trackpad. User input device 466 (shown in FIG. 4) may be an embodiment of a totem, which may include a trackpad, touchpad, trigger, joystick, trackball, rocker or virtual switch, mouse, keyboard, multi-degree-of-freedom controller, or another physical input device. A user may use the totem alone or in combination with posture to interact with the wearable system or other users.

[0126] Examples of tactile devices and totems usable with the wearable devices, HMDs, and display systems of the present disclosure are described in U.S. Patent Publication No. 2015 / 0016777, which is incorporated herein by reference in its entirety. Example of eye image

[0127] 5 illustrates an image of an eye 500 with eyelid 504, sclera 508 ("white of the eye"), iris 512, and pupil 516. Curve 516a indicates the pupillary boundary between the pupil 516 and iris 512, and curve 512a indicates the limbal boundary between the iris 512 and sclera 508. Eyelid 504 includes upper eyelid 504a and lower eyelid 504b. Eye 500 is illustrated in a natural resting position (e.g., oriented such that both the user's face and gaze would be directed toward a distant object directly in front of the user). The natural resting position of the eye 500 may be indicated by the natural resting direction 520, which is a direction that is perpendicular to the surface of the eye 500 when in the natural resting position (e.g., straight out the plane relative to the eye 500 shown in FIG. 5) and, in this embodiment, is centered within the pupil 516.

[0128] As the eye 500 moves to look toward different objects, the eye pose will change relative to the natural resting direction 520. The current eye pose can be determined with reference to an eye pose direction 524, which is a direction orthogonal to the surface of the eye (and centered within the pupil 516), but oriented toward the object at which the eye is currently pointed. With reference to the exemplary coordinate system shown in FIG. 5, the pose of the eye 500 can be represented as two angular parameters indicating the azimuth and zenith deflections of the eye's eye pose direction 524, both relative to the eye's natural resting direction 520. For illustrative purposes, these angular parameters can be represented as θ (the azimuth deflection, determined from the origin azimuth angle) and Φ (the zenith deflection, sometimes also referred to as the polar deflection). In some implementations, the angular roll of the eye about the eye pose direction 524 can be included in the determination of eye pose, and the angular roll can be included in the following analysis. In other implementations, other techniques for determining eye pose can be used, for example, pitch, yaw, and optionally roll systems.

[0129] The eye images can be obtained from the video using any suitable process, for example, using a video processing algorithm that can extract images from one or more sequential frames. The eye pose can be determined from the eye images using various eye tracking techniques. For example, the eye pose can be determined by considering the lens effect of the cornea on the provided light source. Any suitable eye tracking technique can be used to determine the eye pose in the eyelid shape estimation techniques described herein. Example of an eye tracking system

[0130] FIG. 6 illustrates a schematic diagram of a wearable system 600 including an eye tracking system. The wearable system 600, in at least some embodiments, may include components located in a head-mounted unit 602 and components located in a non-head-mounted unit 604. The non-head-mounted unit 604 may be, by way of example, a belt-mounted component, a handheld component, a component in a backpack, a remote component, etc. Incorporating some of the components of the wearable system 600 into the non-head-mounted unit 604 may help reduce the size, weight, complexity, and cost of the head-mounted unit 602. In some implementations, some or all of the functionality described as being performed by one or more components of the head-mounted unit 602 and / or the non-head-mounted unit 604 may be provided using one or more components included anywhere within the wearable system 600. For example, some or all of the functionality described below in connection with CPU 612 of head-mounted unit 602 may be provided using CPU 616 of non-head-mounted unit 604, or vice versa. In some embodiments, some or all of such functionality may be provided using peripheral devices of wearable system 600. Furthermore, in some implementations, some or all of such functionality may be provided using one or more cloud computing devices or other remotely located computing devices, in a manner similar to that described above with reference to FIG. 2.

[0131] As shown in FIG. 6 , the wearable system 600 may include an eye tracking system including a camera 324 that captures images of the user's eyes 610. If desired, the eye tracking system may also include light sources 326 a and 326 b (such as light-emitting diodes (LEDs)). The light sources 326 a and 326 b may generate a flash of light (i.e., a reflection from the user's eye that appears in an image of the eye captured by the camera 324). The position of the light sources 326 a and 326 b relative to the camera 324 may be known, so that the position of the flash of light in the image captured by the camera 324 may be used in tracking the user's eyes (as will be discussed in more detail below in connection with FIGS. 7-11 ). In at least one embodiment, there may be one light source 326 and one camera 324 associated with one of the user's eyes 610. In another embodiment, there may be one light source 326 and one camera 324 associated with each of the user's eyes 610. In still other embodiments, there may be one or more cameras 324 and one or more light sources 326 associated with one or each of the user's eyes 610. As a specific example, there may be two light sources 326a and 326b and one or more cameras 324 associated with each of the user's eyes 610. As another example, there may be three or more light sources, such as light sources 326a and 326b, and one or more cameras 324 associated with each of the user's eyes 610.

[0132] The eye tracking module 614 may receive images from the eye tracking camera 324, analyze the images, and extract various information. As an example, the eye tracking module 614 may detect the user's eye posture, the three-dimensional position of the user's eyes relative to the eye tracking camera 324 (and head-mounted unit 602), the direction in which one or both of the user's eyes 610 are focused, the user's convergence and divergence depth (i.e., the depth from the user at which the user is focused), the position of the user's pupils, the position of the user's cornea and corneal sphere, the center of rotation of each of the user's eyes, and the center of gaze of each of the user's eyes. The eye tracking module 614 may extract such information using techniques described below in connection with FIGS. 7-11. As shown in FIG. 6, the eye tracking module 614 may be a software module implemented using the CPU 612 in the head-mounted unit 602. Further details discussing the creation, adjustment, and use of the eye tracking module components are described in the "EYE No. 15 / 993,371, entitled "TRACKING CALIBRATION TECHNIQUES," which is incorporated herein by reference in its entirety.

[0133] Data from the eye tracking module 614 may be provided to other components within the wearable system. As an example, such data may be transmitted to components within the non-head-mounted unit 604, such as the CPU 616, including software modules for a light field rendering controller 618 and an alignment observer 620.

[0134] The rendering controller 618 may use information from the eye tracking module 614 to adjust the images displayed to the user by the rendering engine 622 (e.g., the rendering engine, which may be a software module within the GPU 620 and may provide images to the display 220). As an example, the rendering controller 618 may adjust the images displayed to the user based on the user's center of rotation or center of viewpoint. In particular, the rendering controller 618 may use information about the user's center of viewpoint to simulate a rendering camera (i.e., simulate the collection of images from the user's viewpoint) and adjust the images displayed to the user based on the simulated rendering camera.

[0135] A "rendering camera," sometimes referred to as a "pinhole perspective camera" (or simply, a "perspective camera") or a "virtual pinhole camera" (or simply, a "virtual camera"), is a simulated camera for use in rendering virtual image content, possibly from a database of objects in a virtual world. The objects may have a location and orientation relative to a user or wearer, and possibly relative to real objects in the environment surrounding the user or wearer. In other words, the rendering camera may represent a viewpoint in the rendering space from which the user or wearer should view the 3D virtual content (e.g., virtual objects) of the rendering space. The rendering camera may render a virtual image based on a database of virtual objects to be presented to the eye, managed by a rendering engine. The virtual image may be rendered as if taken from the user's or wearer's perspective. For example, a virtual image may be rendered as if it were captured by a pinhole camera (corresponding to a "rendering camera") having a specific set of intrinsic parameters (e.g., focal length, camera pixel size, principal point coordinates, distortion / distortion parameters, etc.) and a specific set of extrinsic parameters (e.g., translation and rotation components relative to the virtual world). The virtual image is captured from the viewpoint of such a camera having the rendering camera's position and orientation (e.g., the rendering camera's extrinsic parameters). It follows that the system may define and / or adjust the intrinsic and extrinsic rendering camera parameters. For example, the system may define a particular set of extrinsic rendering camera parameters so that the virtual image may be rendered as if it were captured from the viewpoint of a camera having a specific location relative to the user's or wearer's eyes to provide an image that appears as if it were from the user's or wearer's perspective. The system may later dynamically adjust the extrinsic rendering camera parameters on the fly to maintain alignment with the specific location. Similarly, intrinsic rendering camera parameters may also be defined and dynamically adjusted over time.In some implementations, the image is rendered as if it were captured from the viewpoint of a camera having an aperture (e.g., a pinhole) at a specific location (such as the center of viewpoint or center of rotation or other location) relative to the user's or wearer's eyes.

[0136] In some embodiments, the system may create or dynamically reposition and / or reorient one rendering camera for the user's left eye and another rendering camera for the user's right eye as the user's eyes are physically separated from one another and therefore consistently positioned in different locations. In at least some implementations, virtual content rendered from the perspective of a rendering camera associated with the viewer's left eye may be presented to the user through a left eyepiece of a head-mounted display (e.g., head-mounted unit 602), and virtual content rendered from the perspective of a rendering camera associated with the user's right eye may be presented to the user through a right eyepiece of such head-mounted display. Further details discussing the creation, adjustment, and use of rendering cameras in the rendering process are provided in U.S. Patent Application No. 15 / 274,823, entitled "METHODS AND SYSTEMS FOR DETECTING AND COMBINING STRUCTURAL FEATURES IN 3D RECONSTRUCTION," which is expressly incorporated herein by reference in its entirety for all purposes.

[0137] In some embodiments, one or more modules (or components) of system 600 (e.g., light field rendering controller 618, rendering engine 620, etc.) may determine the position and orientation of a rendering camera within a rendering space based on the position and orientation of the user's head and eyes (e.g., as determined based on head pose and eye tracking data, respectively). For example, system 600 may effectively map the user's head and eye position and orientation to a specific location and angular position within the 3D virtual environment, place and orient the rendering camera to the specific location and angular position within the 3D virtual environment, and render virtual content for the user as it would be captured by the rendering camera. Further details discussing the real-world / virtual-world mapping process are provided in U.S. patent application Ser. No. 15 / 296,869, entitled "SELECTING VIRTUAL OBJECTS IN A THREE-DIMENSIONAL SPACE," which is expressly incorporated herein by reference in its entirety for all purposes. As an example, rendering controller 618 may adjust the depth at which an image is displayed by selecting the depth plane (or depth planes) that will be utilized at any given time to display the image. In some implementations, such depth plane switching may be performed through adjustment of one or more intrinsic rendering camera parameters.

[0138] The alignment observer 620 may use information from the eye tracking module 614 to identify whether the head-mounted unit 602 is properly positioned on the user's head. As an example, the eye tracking module 614 may provide eye location information, such as the location of the center of rotation of the user's eyes, which indicates the three-dimensional position of the user's eyes relative to the camera 324, and the head-mounted unit 602 and eye tracking module 614 may use the location information to determine whether the display 220 is properly aligned within the user's field of view or whether the head-mounted unit 602 (or headset) has slipped or is otherwise misaligned with the user's eyes. As examples, alignment observer 620 may be able to determine whether head-mounted unit 602 has slipped off the bridge of the user's nose, thus moving display 220 away from and downwardly away from the user's eyes (which may be undesirable), whether head-mounted unit 602 has moved above the bridge of the user's nose, thus moving display 220 closer to and upwardly away from the user's eyes, whether head-mounted unit 602 has been shifted left or right relative to the bridge of the user's nose, whether head-mounted unit 602 has been lifted above the bridge of the user's nose, or whether head-mounted unit 602 has been moved away from a desired position or range of positions in these or other ways. In general, alignment observer 620 may be able to determine whether head-mounted unit 602, and display 220 in particular, are properly positioned directly in front of the user's eyes. In other words, alignment observer 620 may determine whether the left display in display system 220 is properly aligned with the user's left eye, and whether the right display in display system 220 is properly aligned with the user's right eye. Alignment observer 620 may determine whether head-mounted unit 602 is properly positioned by determining whether head-mounted unit 602 is positioned and oriented within a desired range of position and / or orientation relative to the user's eyes.

[0139] In at least some embodiments, alignment observer 620 may generate user feedback in the form of alerts, messages, or other content. Such feedback may be provided to the user to inform the user of any misalignment of head-mounted unit 602, along with optional feedback on how to correct the misalignment (such as suggestions to adjust head-mounted unit 602 in a particular manner).

[0140] Exemplary alignment observation and feedback techniques that may be utilized by alignment observer 620 are described in U.S. patent application Ser. No. 15 / 717,747, filed Sep. 27, 2017 (Attorney Docket No. MLEAP.052A2), which is incorporated herein by reference in its entirety. Example of an eye tracking module

[0141] A detailed block diagram of an exemplary eye tracking module 614 is shown in Figure 7A. As shown in Figure 7A, the eye tracking module 614 may include a variety of different sub-modules, may provide a variety of different outputs, and may utilize a variety of available data in tracking the user's eyes. As an example, the eye tracking module 614 may utilize available data, including extrinsic and intrinsic properties of eye tracking, such as the geometry of the eye tracking camera 324 relative to the light source 326 and head-mounted unit 602, assumed eye dimensions 704, such as a typical distance of approximately 4.7 mm between the center of curvature of the user's cornea and the average center of rotation of the user's eye or a typical distance between the user's center of rotation and the center of gaze, and per-user calibration data 706, such as the interpupillary distance of a particular user. Additional examples of extrinsic properties, intrinsic properties, and other information that may be employed by the eye tracking module 614 are described in U.S. patent application Ser. No. 15 / 497,726, filed April 26, 2017 (Attorney Docket No. MLEAP.023A7), which is incorporated herein by reference in its entirety.

[0142] Image preprocessing module 710 may receive images from an eye camera, such as eye camera 324, and may perform one or more preprocessing (i.e., adjustment) operations on the received images. As examples, image preprocessing module 710 may apply Gaussian blur to the images, downsample the images to a lower resolution, apply an unsharp mask, apply an edge sharpening algorithm, or apply other suitable filters to aid in the subsequent detection, location, and labeling of phosphenes, pupils, or other features in images from eye camera 324. Image preprocessing module 710 may apply a low-pass filter or a morphological filter, such as an open filter, which may remove high-frequency noise from pupil boundary 516a (see FIG. 5), thereby removing noise that may interfere with pupil and phosphene determination. Image preprocessing module 710 may output the preprocessed images to pupil identification module 712 and phosphene detection and labeling module 714.

[0143] The pupil identification module 712 may receive preprocessed images from the image preprocessing module 710 and may identify regions of those images that contain the user's pupil. The pupil identification module 712, in some embodiments, may determine the coordinates of the location of the user's pupil within the eye tracking images from the camera 324, i.e., the coordinates of the center or centroid. In at least some embodiments, the pupil identification module 712 may identify contours (i.e., contours of the pupil-iris boundary) within the eye tracking images, identify contour moments (i.e., center of mass), apply starburst pupil detection and / or Canny edge detection algorithms, filter out outliers based on intensity values, identify sub-pixel boundary points, correct for eye camera distortion (e.g., distortion in images captured by the eye camera 324), apply a random sample consensus (RANSAC) iterative algorithm, fit ellipses to boundaries within the eye tracking images, apply tracking filters to the images, and identify sub-pixel image coordinates of the user's pupil centroid. Pupil identification module 712 may output pupil identification data, which may indicate regions of preprocessed image module 712 that have been identified as indicative of the user's pupil, to flash detection and labeling module 714. Pupil identification module 712 may provide 2D coordinates of the user's pupil in each eye tracking image (i.e., 2D coordinates of the center of gravity of the user's pupil) to flash detection module 714. In at least some embodiments, pupil identification module 712 may also provide the same type of pupil identification data to coordinate system normalization module 718.

[0144] Pupil detection techniques that may be utilized by pupil identification module 712 are described in U.S. Patent Publication No. 2017 / 0053165, published February 23, 2017, and U.S. Patent Publication No. 2017 / 0053166, published February 23, 2017 (each of which is incorporated by reference in its entirety herein).

[0145] The flash detection and labeling module 714 may receive the preprocessed image from module 710 and the pupil identification data from module 712. The flash detection module 714 may use this data to detect and / or identify flashes (i.e., reflections of light from the light source 326 off the user's eye) in areas of the preprocessed image that represent the user's pupil. As an example, the flash detection module 714 may search for bright areas, sometimes referred to herein as "blobs" or local intensity maxima, in the eye tracking image that are in the vicinity of the user's pupil. In at least some embodiments, the flash detection module 714 may rescale (e.g., expand) the pupil ellipse to include additional flashes. The flash detection module 714 may filter flashes by size and / or intensity. The flash detection module 714 may also determine the 2D location of each flash within the eye tracking image. In at least some embodiments, glint detection module 714 may determine the 2D position of the glint relative to the user's pupil, which may also be referred to as the pupil-glint vector. The glint detection and labeling module 714 may label the glint and output preprocessed images with the labeled glints to the 3D corneal center estimation module 716. The glint detection and labeling module 714 may also pass data such as the preprocessed images from module 710 and pupil identification data from module 712.

[0146] Pupil and phosphene detection, as performed by modules such as modules 712 and 714, can use any suitable technique. As an example, edge detection can be applied to the eye image to identify phosphenes and pupils. Edge detection can be applied by various edge detectors, edge detection algorithms, or filters. For example, a Canny edge detector can be applied to the image to detect edges, such as lines, in the image. Edges may include points located along the lines that correspond to local maximum derivatives. For example, pupil boundary 516a (see FIG. 5) can be located using a Canny edge detector. Once the location of the pupil is determined, various image processing techniques can be used to detect the “pose” of pupil 116. Determining the eye pose of the eye image may also be referred to as detecting the eye pose of the eye image. Pose may also be referred to as gaze, facing direction, or eye orientation. For example, the pupil may be looking left toward an object, and the pupil pose may be classified as a left-looking pose. Other methods can also be used to detect the location of the pupil or phosphene. For example, concentric rings may be located in the eye image using a Canny edge detector. As another example, an integro-differential operator may be used to find the limbal boundary of the pupil or iris. For example, a Daugman integro-differential operator, a Hough transform, or other iris segmentation techniques can be used to return a curve that estimates the boundary of the pupil or iris.

[0147] The 3D corneal center estimation module 716 may receive preprocessed images from modules 710, 712, and 714, including detected phosphene data and pupil identification data. The 3D corneal center estimation module 716 may use these data to estimate the 3D position of the user's cornea. In some embodiments, the 3D corneal center estimation module 716 may estimate the 3D position of the center of the eye's corneal curvature or the user's corneal sphere, i.e., the center of an imaginary sphere having a surface portion generally coextensive with the user's cornea. The 3D corneal center estimation module 716 may provide data indicating the estimated 3D coordinates of the corneal sphere and / or the user's cornea to the coordinate system normalization module 718, the optical axis determination module 722, and / or the light field rendering controller 618. Further details of the operation of the 3D corneal center estimation module 716 are provided herein in connection with FIGS. 8A-8E . Techniques for estimating the position of ocular features, such as the cornea or corneal sphere, that may be utilized by the 3D corneal center estimation module 716 and other modules in the wearable system of the present disclosure are discussed in U.S. Patent Application No. 15 / 497,726, filed April 26, 2017 (Attorney Docket No. MLEAP.023A7), which is incorporated herein by reference in its entirety.

[0148] Coordinate system normalization module 718 may optionally be included within eye tracking module 614 (as indicated by its dashed outline). Coordinate system normalization module 718 may receive data indicating the estimated 3D coordinates of the center of the user's cornea (and / or the center of the user's corneal sphere) from 3D corneal center estimation module 716, and may also receive data from other modules. Coordinate system normalization module 718 may normalize the eye camera coordinate system, which may help to compensate for slippage of the wearable device (e.g., slippage of a head-mounted component from its normal resting position on the user's head, which may be identified by alignment observer 620). The coordinate system normalization module 718 may rotate the coordinate system to align the z-axis (i.e., the convergence-divergence depth axis) of the coordinate system with the corneal center (e.g., as indicated by the 3D corneal center estimation module 716) and may translate the camera center (i.e., the origin of the coordinate system) a predetermined distance away from the corneal center, such as 30 mm (i.e., module 718 may zoom in or out on the eye tracking image depending on whether the eye camera 324 is determined to be closer or farther than the predetermined distance). Using this normalization process, the eye tracking module 614 may be able to establish consistent orientations and distances in the eye tracking data relatively independent of variations in the headset positioning on the user's head. The coordinate system normalization module 718 may provide the 3D coordinates of the center of the cornea (and / or corneal sphere), pupil identification data, and preprocessed eye tracking images to the 3D pupil center locator module 720. Further details of the operation of the coordinate system normalization module 718 are provided herein in connection with Figures 9A-9C.

[0149] The 3D pupil center locator module 720 may receive data including the 3D coordinate of the center of the user's cornea (and / or corneal sphere), pupil location data, and preprocessed eye tracking images in a normalized or non-normalized coordinate system. The 3D pupil center locator module 720 may analyze such data to determine the 3D coordinate of the center of the user's pupil in a normalized or non-normalized eye camera coordinate system. The 3D pupil center locator module 720 may determine the location of the user's pupil in three dimensions based on the 2D location of the pupil centroid (as determined by module 712), the 3D location of the corneal center (as determined by module 716), assumed eye dimensions 704 such as the size of a typical user's corneal sphere and the typical distance from the corneal center to the pupil center, and optical properties of the eye such as the refractive index of the cornea (relative to the refractive index of air), or any combination thereof. Further details of the operation of 3D pupil center locator module 720 are provided herein in connection with Figures 9D-9G. Techniques for estimating the position of eye features, such as the pupil, that may be utilized by 3D pupil center locator module 720 and other modules in the wearable system of the present disclosure are discussed in U.S. Patent Application No. 15 / 497,726, filed April 26, 2017 (Attorney Docket No. MLEAP.023A7), which is incorporated herein by reference in its entirety.

[0150] Optical axis determination module 722 may receive data from modules 716 and 720 indicating the 3D coordinates of the user's cornea and the center of the user's pupil. Based on such data, optical axis determination module 722 may identify a vector from the location of the corneal center (i.e., from the center of the corneal sphere) to the center of the user's pupil, which may define the optical axis of the user's eye. Optical axis determination module 722 may provide outputs to modules 724, 728, 730, and 732 that define the user's optical axis, as an example.

[0151] The center of rotation (CoR) estimation module 724 may receive data from module 722 including parameters of the optical axis of the user's eye (i.e., data indicating the orientation of the optical axis in a coordinate system with a known relationship to the head-mounted unit 602). The CoR estimation module 724 may estimate the center of rotation of the user's eye (i.e., the point around which the user's eye rotates when the user's eye rotates left, right, up, and / or down). Even if the eye cannot rotate perfectly around a single point, it is assumed that a single point may be sufficient. In at least some embodiments, the CoR estimation module 724 may estimate the center of rotation of the eye by moving the center of the pupil (identified by module 720) or the center of curvature of the cornea (as identified by module 716) a specific distance along the optical axis (identified by module 722) toward the retina. This specific distance may be the assumed eye dimension 704. As an example, the specific distance between the center of curvature of the cornea and the CoR may be approximately 4.7 mm. This distance may be varied for a particular user based on any relevant data, including the user's age, gender, vision prescription, other relevant characteristics, etc.

[0152] In at least some embodiments, the CoR estimation module 724 may refine its estimate of the center of rotation of each of the user's eyes over time. As an example, over time, the user will eventually rotate their eyes (to look elsewhere, closer, or further away, or to the left, right, up, or down at certain times), causing a shift in the optical axis of each of their eyes. The CoR estimation module 724 may then analyze the two (or more) optical axes identified by module 722 and locate the 3D point of intersection of those optical axes. The CoR estimation module 724 may then determine a center of rotation at that 3D point of intersection. Such techniques may provide estimates of the center of rotation with improving accuracy over time. Various techniques may be employed to increase the accuracy of the CoR estimation module 724 and the determined CoR positions of the left and right eyes. As an example, the CoR estimation module 724 may estimate the CoR by finding the average point of intersection of the optical axes determined over time for a variety of different eye postures. As an additional example, the module 724 may filter or average the estimated CoR position over time, calculate a moving average of the estimated CoR position over time, and / or apply a Kalman filter and known dynamics of the eye and eye tracking system to estimate the CoR position over time. As a specific example, the module 724 may calculate a weighted average of the determined point of intersection of the optical axes and the assumed CoR position (e.g., 4.7 mm from the center of the eye's corneal curvature) so that the determined CoR may slowly shift from the assumed CoR position (i.e., 4.7 mm behind the center of the eye's corneal curvature) to a slightly different location within the user's eye over time as eye tracking data is acquired for the user, thereby allowing for per-user refinement of the CoR position.

[0153] The interpupillary distance (IPD) estimation module 726 may receive data from the CoR estimation module 724 indicating estimated 3D positions of the centers of rotation of the user's left and right eyes. The IPD estimation module 726 may then estimate the user's IPD by measuring the 3D distance between the centers of rotation of the user's left and right eyes. Generally, the distance between the estimated CoR of the user's left eye and the estimated CoR of the user's right eye may be approximately equal to the distance between the centers of the user's pupils when the user is looking at optical infinity (i.e., the optical axes of the user's eyes are approximately parallel to each other), which is a typical definition of interpupillary distance (IPD). The user's IPD may be used by various components and modules within the wearable system. As an example, the user's IPD may be provided to the alignment observer 620 and used in assessing the degree to which the wearable device is aligned with the user's eyes (e.g., whether the left and right display lenses are properly spaced according to the user's IPD). As another example, the user's IPD may be provided to the convergence-divergence depth estimation module 728 and used in determining the user's convergence-divergence depth. The module 726 may employ various techniques to increase the accuracy of the estimated IPD, such as those discussed in connection with the CoR estimation module 724. As an example, the IPD estimation module 724 may apply filtering, averaging over time, weighted averaging including assumed IPD distances, Kalman filtering, etc. as part of estimating the user's IPD in an accurate manner.

[0154] In some embodiments, the IPD estimation module 726 may receive data from the 3D pupil center locator module and / or the 3D corneal center estimation module 716 indicating the estimated 3D positions of the user's pupils and / or cornea. The IPD estimation module 726 may then estimate the user's IPD by referencing the distance between the pupils and cornea. Typically, these distances will vary over time as the user rotates their eyes and changes their convergence depth. In some cases, the IPD estimation module 726 may look for the maximum measured distance between the pupils and / or cornea that should occur while the user is looking near optical infinity and that should generally correspond to the user's interpupillary distance. In other cases, the IPD estimation module 726 may fit the measured distance between the user's pupils (and / or cornea) to a mathematical relationship of how a person's interpupillary distance changes as a function of their convergence depth. In some embodiments, using these or other similar techniques, the IPD estimation module 726 may be able to estimate the user's IPD without observing that the user is looking at optical infinity (e.g., by extrapolating from one or more observations that the user was verging at distances closer than optical infinity).

[0155] The vergence-divergence movement depth estimation module 728 may receive data from various modules and sub-modules (as shown in connection with FIG. 7A ) within the eye tracking module 614. In particular, the vergence-divergence movement depth estimation module 728 may employ data indicative of an estimated 3D position of the pupil center (e.g., as provided by module 720 described above), one or more determined parameters of the optical axis (e.g., as provided by module 722 described above), an estimated 3D position of the center of rotation (e.g., as provided by module 724 described above), an estimated IPD (e.g., the Euclidean distance between the estimated 3D positions of the centers of rotation) (e.g., as provided by module 726 described above), and / or one or more determined parameters of the optical axis and / or visual axis (e.g., as provided by module 722 and / or module 730 described below). The convergence depth estimation module 728 may detect or otherwise obtain a measurement of the user's convergence depth, which may be the distance from the user at which the user's eyes are focused. As an example, when the user is looking at an object three feet in front of them, the user's left and right eyes have a convergence depth of three feet, while when the user is looking at a distant scene (i.e., the optical axes of the user's eyes are approximately parallel to one another such that the distance between the centers of the user's pupils may be approximately equal to the distance between the centers of rotation of the user's left and right eyes), the user's left and right eyes have a convergence depth of infinity. In some implementations, the convergence depth estimation module 728 may utilize data indicative of estimated centers of the user's pupils (e.g., as provided by module 720) and determine the 3D distance between the estimated centers of the user's pupils. The convergence-divergence depth estimation module 728 may obtain a measure of convergence-divergence depth by comparing such determined 3D distance between pupil centers with an estimated IPD (e.g., the Euclidean distance between the estimated 3D positions of the centers of rotation) (e.g., as shown by module 726 described above).In addition to the 3D distance between pupil centers and the estimated IPD, the convergence movement depth estimation module 728 may utilize known, assumed, estimated, and / or determined geometric shapes to calculate the convergence movement depth. As an example, the module 728 may combine the 3D distance between pupil centers, the estimated IPD, and the 3D CoR position in a trigonometric calculation to estimate (i.e., determine) the user's convergence movement depth. In fact, an evaluation of such determined 3D distance between pupil centers relative to the estimated IPD may serve as an indication of the user's current convergence movement depth relative to optical infinity. In some examples, the convergence movement depth estimation module 728 may simply receive or have access to data indicating the estimated 3D distance between the estimated centers of the user's pupils for purposes of obtaining such a measurement of the convergence movement depth. In some embodiments, the vergence movement depth estimation module 728 may estimate the vergence movement depth by comparing the user's left and right optical axes. In particular, the vergence movement depth estimation module 728 may estimate the vergence movement depth by locating the distance from the user where the user's left and right optical axes intersect (or where projections of the user's left and right optical axes on a plane, such as a horizontal plane, intersect). The module 728 may utilize the user's IPD in this calculation by setting zero depth to be the depth where the user's left and right optical axes are separated by the user's IPD. In at least some embodiments, the vergence movement depth estimation module 728 may determine the vergence movement depth by triangulating eye tracking data with known or derived spatial relationships.

[0156] In some embodiments, the convergence-divergence depth estimation module 728 may estimate the user's convergence depth based on the intersection of the user's visual axes (instead of their optical axes), which may provide a more accurate indication of the distance the user is focusing. In at least some embodiments, the eye tracking module 614 may include an optical axis / visual axis mapping module 730. As discussed in further detail in connection with FIG. 10 , a user's optical axis and visual axis are generally not aligned. The visual axis is the axis along which a person looks, while the optical axis is defined by the center of the person's lens and pupil and may run through the center of the person's retina. In particular, the user's visual axis is generally defined by the location of the user's fovea, which may be offset from the center of the user's retina, thereby resulting in different optical and visual axes. In at least some of these embodiments, the eye tracking module 614 may include an optical axis / visual axis mapping module 730. The optical axis / visual axis mapping module 730 may correct for differences between the user's optical axis and visual axis and provide information about the user's visual axis to other components in the wearable system, such as the vergence-divergence depth estimation module 728 and the light field rendering controller 618. In some examples, the module 730 may use assumed eye dimensions 704 that include a typical offset of approximately 5.2° inward (nasally, toward the user's nose) between the optical axis and the visual axis. In other words, the module 730 may shift the user's left optical axis 5.2° nasally (toward the user's nose) to the right and the user's right optical axis 5.2° nasally (toward the left) to estimate the direction of the user's left and right optical axes. In other examples, the module 730 may utilize per-user calibration data 706 when mapping the optical axis (e.g., as shown by module 722 described above) to the visual axis. As an additional example, module 730 may shift the user's optical axis nasally by 4.0° to 6.5°, 4.5° to 6.0°, 5.0° to 5.4°, etc., or any range formed by any of these values.In some arrangements, module 730 may apply the shift based, at least in part, on characteristics of the particular user, such as their age, gender, vision prescription, or other relevant characteristics, and / or may apply the shift based, at least in part, on a calibration process for the particular user (i.e., to determine the particular user's optical axis-visual axis offset). In at least some embodiments, module 730 may also shift the origins of the left and right optical axes to correspond to the user's CoP (as determined by module 732) instead of the user's CoR.

[0157] An optional center of perspective (CoP) estimation module 732, when provided, may estimate the location of the user's left and right centers of perspective (CoP). The CoP is a useful location for wearable systems and, in at least some embodiments, may be a location directly in front of the pupil. In at least some embodiments, the CoP estimation module 732 may estimate the location of the user's left and right centers of perspective based on the 3D location of the user's pupil center, the 3D location of the user's corneal curvature center, or any such suitable data, or any combination thereof. As an example, the user's CoP may be approximately 5.01 mm in front of the center of corneal curvature (i.e., 5.01 mm from the center of the corneal sphere, toward the cornea of ​​the eye, in a direction along the optical axis) and approximately 2.97 mm behind the outer surface of the user's cornea along the optical or visual axis. The user's center of perspective may be directly in front of the center of their pupil. As examples, the user's CoP may be less than about 2.0 mm from the user's pupil, less than about 1.0 mm from the user's pupil, or less than about 0.5 mm from the user's pupil, or any range between any of these values. As another example, the center of gaze may correspond to a location within the anterior chamber of the eye. As other examples, the CoP may be between 1.0 mm and 2.0 mm, about 1.0 mm, 0.25 mm and 1.0 mm, 0.5 mm and 1.0 mm, or 0.25 mm and 0.5 mm.

[0158] The centers of view described herein (as potentially desirable locations for the rendering camera's pinhole and anatomical locations within the user's eye) may be locations that serve to reduce and / or eliminate undesirable parallax shift. In particular, the optical system of the user's eye roughly corresponds to a theoretical system formed by a pinhole in front of a lens projecting onto a screen, with the pinhole, lens, and screen roughly corresponding to the user's pupil / iris, lens, and retina, respectively. Furthermore, it may be desirable for there to be little or no parallax shift when two point sources (or objects) at different distances from the user's eye are rotated strictly around the pinhole opening (e.g., rotated along radii of curvature equal to their respective distances from the pinhole opening). Thus, one would think that the CoP should be located at the center of the eye's pupil (and such a CoP may be used in some embodiments). However, in addition to the lens and pupil pinhole, the human eye includes a cornea, which imparts additional refractive power to light propagating toward the retina. Thus, the anatomical equivalent of a pinhole in the theoretical system described in this paragraph may be a region of a user's eye located between the outer surface of the cornea of ​​the user's eye and the center of the pupil or iris of the user's eye. For example, the anatomical equivalent of a pinhole may correspond to a region within the anterior chamber of the user's eye. For various reasons discussed herein, it may be desirable to set the CoP at such a location within the anterior chamber of the user's eye. The derivation and significance of the CoP are discussed in more detail in the appendix (Chapters 1 and 2), which form a part of this application.

[0159] As discussed above, the eye tracking module 614 may provide data such as estimated 3D positions of the left and right eye centers of rotation (CoR), vergence and divergence movement depth, left and right eye optical axes, 3D positions of the user's eyes, 3D positions of the user's left and right centers of corneal curvature, 3D positions of the user's left and right pupil centers, 3D positions of the user's left and right gaze centers, and the user's IPD to other components in the wearable system, such as the light field rendering controller 618 and the alignment observer 620. The eye tracking module 614 may also include other sub-modules that detect and generate data associated with other aspects of the user's eyes. As an example, the eye tracking module 614 may include an eye blink detection module that provides a flag or other alert whenever the user blinks, and a saccade detection module that provides a flag or other alert whenever the user's eyes saccade (i.e., rapidly shift focus to another point). Rendering Controller Example

[0160] A detailed block diagram of an exemplary light field rendering controller 618 is shown in FIG. 7B. As shown in FIGS. 6 and 7B, the rendering controller 618 may receive eye tracking information from the eye tracking module 614 and provide output to the rendering engine 622, which may generate images to be displayed for viewing by a user of the wearable system. As an example, the rendering controller 618 may receive other eye data such as vergence and divergence depth, left and right eye rotation centers (and / or gaze centers), and eye blink data, saccade data, etc.

[0161] The depth plane selection module 750 may receive convergence depth information and other ocular data and, based on such data, may cause the rendering engine 622 to convey content to the user at a particular depth plane (i.e., a particular accommodation or focal length). As discussed in connection with FIG. 4 , the wearable system may include multiple discrete depth planes formed by multiple waveguides, each conveying image information with a variable level of wavefront curvature. In some embodiments, the wearable system may include one or more variable depth planes, such as optical elements, conveying image information with a time-varying level of wavefront curvature. In these and other embodiments, the depth plane selection module 750 may cause the rendering engine 622 to convey content to the user at a selected depth (i.e., cause the rendering engine 622 to instruct the display 220 to switch depth planes) based, in part, on the user's convergence depth. In at least some embodiments, depth plane selection module 750 and rendering engine 622 may render content at different depths and may also generate and / or provide depth plane selection data to display hardware, such as display 220. Display hardware, such as display 220, may perform electronic depth plane switching in response to depth plane selection data (which may be control signals) generated and / or provided by modules, such as depth plane selection module 750 and rendering engine 622.

[0162] In general, it may be desirable for depth plane selection module 750 to select a depth plane that matches the user's current convergence-divergence depth so that the user is provided with accurate accommodation cues. However, it may also be desirable to switch depth planes in a discreet and unobtrusive manner. As an example, it may be desirable to avoid excessive switching between depth planes and / or to switch depth planes at times when the user is unlikely to notice the switch, such as during an eyeblink or eye saccade.

[0163] The hysteresis band crossing detection module 752 may help avoid excessive switching between depth planes, particularly when the user's convergence-divergence depth fluctuates at the midpoint or transition point between two depth planes. In particular, module 752 may cause the depth plane selection module 750 to exhibit hysteresis in its selection of depth planes. As an example, module 752 may cause the depth plane selection module 750 to switch from a first, more distant depth plane to a second, closer depth plane only after the user's convergence-divergence depth passes a first threshold. Similarly, module 752 may cause the depth plane selection module 750 (and thus may indicate on a display, such as display 220) to switch to the first, more distant depth plane only after the user's convergence-divergence depth passes a second threshold that is farther from the user than the first threshold. In the overlap region between the first and second thresholds, module 750 may cause depth plane selection module 750 to maintain either depth plane as currently selected as the selected depth plane, thus avoiding excessive switching between depth planes.

[0164] The eye event detection module 750 may receive other eye data from the eye tracking module 614 of FIG. 7A and may cause the depth plane selection module 750 to delay some depth plane switches until an eye event occurs. As an example, the eye event detection module 750 may cause the depth plane selection module 750 to delay a planned depth plane switch until a user blink is detected, or may receive data from an eye blink detection component within the eye tracking module 614 indicating that the user is currently blinking, and in response, cause the depth plane selection module 750 to perform a planned depth plane switch during the blink event (e.g., by having the module 750 instruct the display 220 to perform a depth plane switch during the blink event). In at least some embodiments, the wearable system may be able to shift content onto a new depth plane during the blink event such that the user is unlikely to perceive the shift. As another example, the eye event detection module 750 may delay a planned depth plane switch until an eye saccade is detected. As discussed in relation to eye blinking, such an arrangement can facilitate discrete shifts in the depth plane.

[0165] If desired, the depth plane selection module 750 may delay a planned depth plane switch for only a limited period of time before executing a depth plane switch, even in the absence of an eye event. Similarly, the depth plane selection module 750 may execute a depth plane switch when the user's convergence-divergence depth is substantially outside the currently selected depth plane (i.e., when the user's convergence-divergence depth exceeds a predetermined threshold that exceeds the normal threshold for a depth plane switch), even in the absence of an eye event. These arrangements may help ensure that the eye event detection module 754 does not delay a depth plane switch indefinitely and does not delay a depth plane switch when a large accommodation error is present. Further details of the operation of the depth plane selection module 750 and how the module may time a depth plane switch are provided herein in connection with FIG. 13.

[0166] The rendering camera controller 758 may provide information indicating the locations of the user's left and right eyes to the rendering engine 622. The rendering engine 622 may then generate content by simulating cameras at the locations of the user's left and right eyes and generating content based on the perspectives of the simulated cameras. As discussed above, the rendering camera is a simulated camera for use in rendering virtual image content, possibly from a database of objects in the virtual world. The objects may have a location and orientation relative to the user or wearer, and possibly relative to real objects in the environment surrounding the user or wearer. The rendering camera may be included in the rendering engine and render virtual images based on the database of virtual objects to be presented to the eyes. The virtual images may be rendered as if they were taken from the perspective of the user or wearer. For example, the virtual images may be rendered as if they were captured by a camera (corresponding to a "rendering camera") having an aperture, lens, and detector that views objects in the virtual world. The virtual images are taken from the perspective of such a camera, which has the location of the "rendering camera." For example, the virtual image may be rendered as if it were captured from a camera viewpoint having an aperture at a specific location relative to the user's or wearer's eyes, to provide an image that appears to be from the user's or wearer's point of view. In some implementations, the image is rendered as if it were captured from a camera viewpoint having an aperture at a specific location relative to the user's or wearer's eyes (such as a viewpoint center or rotation center or other location as discussed herein).

[0167] The rendering camera controller 758 may determine the positions of the left and right cameras based on the left and right eye centers of rotation (CoR) determined by the CoR estimation module 724 and / or based on the left and right eye centers of viewpoint (CoP) determined by the CoP estimation module 732. In some embodiments, the rendering camera controller 758 may switch between the CoR and CoP locations based on various factors. As examples, the rendering camera controller 758 may, in various modes, always align the rendering camera to the CoR location, always align the rendering camera to the CoP location, toggle or discretely switch between aligning the rendering camera to the CoR location and aligning the rendering camera to the CoP location over time based on various factors, or dynamically align the rendering camera to any of a range of different positions along the optical (or visual) axis between the CoR and CoP locations over time based on various factors. The CoR and CoP positions may optionally be passed through a smoothing filter 756 (in any of the aforementioned modes for rendering camera positioning), which may average the CoR and CoP locations over time to reduce noise in these positions and prevent jitter when rendering the simulated rendering camera.

[0168] In at least some embodiments, the rendering camera may be simulated as a pinhole camera with the pinhole placed at the location of the estimated CoR or CoP identified by the eye tracking module 614. Because the CoP is offset from the CoR, whenever the rendering camera's position is based on the user's CoP, the locations of both the rendering camera and its pinhole shift as the user's eyes rotate. In contrast, whenever the rendering camera's position is based on the user's CoR, the location of the rendering camera's pinhole does not move with eye rotation, although the rendering camera (behind the pinhole) may move with eye rotation in some embodiments. In other embodiments where the rendering camera's position is based on the user's CoR, the rendering camera may not move (i.e., rotate) with the user's eyes. Alignment observer implementation example

[0169] A block diagram of an exemplary alignment observer 620 is shown in FIG. 7C. As shown in FIGS. 6, 7A, and 7C, the alignment observer 620 may receive eye tracking information from the eye tracking module 614 (FIGS. 6 and 7A). As an example, the alignment observer 620 may receive information about the user's left and right eye rotation centers (e.g., the three-dimensional locations of the rotation centers of the user's left and right eyes, which may be on a common coordinate system or have a common frame of reference with the head-mounted display system 600). As another example, the alignment observer 620 may receive display extrinsic properties, fit tolerances, and eye tracking enable indicators. The display extrinsic properties may include information about the display (e.g., display 200 of FIG. 2), such as the display's field of view, the size of one or more display surfaces, and the position of the display surfaces relative to the head-mounted display system 600. The fit tolerances may include information about the display alignment volume, which may indicate the distance the user's left and right eyes may move from a nominal position before display performance is affected. Additionally, the fit tolerance may indicate the amount of display performance impact that is expected as a function of the user's eye position.

[0170] 7C , the alignment observer 620 may include a 3D position adaptation module 770. The position adaptation module 770 may acquire and analyze various data, including, by way of example, a left eye center of rotation 3D position (e.g., CoR left), a right eye center of rotation 3D position (e.g., CoR right), display extrinsic properties, and fit tolerances. The 3D position adaptation module 770 may determine the distances of the user's left and right eyes from their respective left and right eye nominal positions (e.g., calculate a 3D left error and a 3D right error) and provide the error distances (e.g., a 3D left error and a 3D right error) to a device 3D adaptation module 772.

[0171] The 3D position adaptation module 770 may also compare the error distance to display characteristics and fit tolerances to determine whether the user's eyes are within a nominal volume, a partially degraded volume (e.g., a volume within which the performance of the display 220 is partially degraded), or a fully degraded or nearly fully degraded volume (e.g., a volume within which the display 220 is substantially unable to provide content to the user's eyes). In at least some embodiments, the 3D position adaptation module 770 or the 3D adaptation module 772 may provide an output that qualitatively describes the fit of the HMD on the user, such as the fit quality output shown in FIG. 7C. As an example, the module 770 may provide an output indicating whether the current fit of the HMD on the user is good, acceptable, or unsuccessful. A good fit may correspond to a fit that allows the user to see at least a certain percentage of the image (such as 90%), an acceptable fit may allow the user to see at least a lower percentage of the image (such as 80%), while a failed fit may be a fit in which only an even lower percentage of the image is visible to the user.

[0172] As another example, 3D position adaptation module 770 and / or device 3D adaptation module 772 may calculate a visible area metric, which may be the percentage of the overall area (or pixels) of the image displayed by display 220 that is visible to the user. Modules 770 and 772 may calculate the visible area metric by assessing the position of the user's left and right eyes relative to display 220 (which may be based on the center of rotation of the user's eyes, for example) using one or more models (e.g., mathematical or geometric models), one or more lookup tables, or other techniques or a combination of these and other techniques, and determining the percentage of the image that is visible to the user as a function of the user's eye position. Additionally, modules 770 and 772 may determine the region or portion of the image displayed by display 220 that is expected to be visible to the user as a function of the user's eye position.

[0173] The alignment observer 620 may also include a device 3D adaptation module 772. The module 772 may receive data from the 3D position adaptation module 770 and may also receive an eye tracking validity indicator, which may be provided by the eye tracking module 614 and may indicate whether the eye tracking system is currently tracking the position of the user's eyes or whether eye tracking data is unavailable or under an error condition (e.g., determined to be unreliable). The device 3D adaptation module 772 may modify the fit quality data received from the 3D position adaptation module 770, as desired, depending on the status of the eye tracking validity data. For example, if data from the eye tracking system is indicated as unavailable or having an error, the device 3D adaptation module 772 may provide a notification that an error exists and / or not provide an output to the user regarding the fit quality or fit error.

[0174] In at least some embodiments, alignment observer 620 may provide feedback to the user regarding the quality of the fit and details of the nature and magnitude of any errors. By way of example, the head-mounted display system may provide feedback to the user during the calibration or donning process (e.g., as part of a setup procedure) and may also provide feedback during operation (e.g., if the fit deteriorates due to slippage, alignment observer 620 may prompt the user to readjust the head-mounted display system). In some embodiments, alignment analysis may be performed automatically (e.g., during use of the head-mounted display system) and feedback may be provided without user input. These are merely illustrative examples. Example of Locating a User's Cornea Using an Eye Tracking System

[0175] 8A is a schematic diagram of an eye showing the spherical cornea of ​​the eye. As shown in FIG. 8A, a user's eye 810 may have a cornea 812, a pupil 822, and a lens 820. The cornea 812 may have a generally spherical shape, as indicated by a spherical corneal surface 814. The spherical corneal surface 814 may have a center point 816, also referred to as the corneal center, and a radius 818. The hemispherical cornea of ​​the user's eye may curve around the corneal center 816.

[0176] 8B-8E illustrate an example of using the 3D corneal center estimation module 716 and the eye tracking module 614 to locate the corneal center 816 of a user.

[0177] 8B , the 3D corneal center estimation module 716 may receive an eye tracking image 852, including a corneal flash 854. The 3D corneal center estimation module 716 may then simulate the known 3D positions of the eye camera 324 and light source 326 (which may be based on data in the eye tracking extrinsic and intrinsic properties database 702, the assumed eye dimensions database 704, and / or the per-user calibration data 706) in the eye camera coordinate system 850 to project a ray 856 into the eye camera coordinate system. In at least some embodiments, the eye camera coordinate system 850 may have its origin at the 3D position of the eye tracking camera 324.

[0178] 8C, the 3D corneal center estimation module 716 simulates a corneal sphere 814a (which may be based on assumed eye dimensions from the database 704) and a corneal center of curvature 816a at a first position. The 3D corneal center estimation module 716 may then check whether the corneal sphere 814a will properly reflect light from the light source 326 to the glint position 854. As shown in FIG. 8C, the first position does not match because the light ray 860a does not intersect with the light source 326.

[0179] 8D, the 3D corneal center estimation module 716 similarly simulates the corneal sphere 814b and the corneal center of curvature 816b at a second position. The 3D corneal center estimation module 716 then checks whether the corneal sphere 814b properly reflects light from the light source 326 to the glint position 854. As shown in FIG. 8D, the second position also does not match.

[0180] 8E, the 3D corneal center estimation module 716 can ultimately determine that the correct location of the corneal sphere is corneal sphere 814c and corneal center of curvature 816c. The 3D corneal center estimation module 716 verifies that the illustrated location is correct by checking that light from source 326 will properly reflect off the corneal sphere and be imaged by camera 324 at the correct location of flash 854 on image 852. Using this arrangement and the known 3D positions of light source 326, camera 324, and the camera's optical properties (such as focal length), the 3D corneal center estimation module 716 can determine the 3D location (relative to the wearable system) of the corneal center of curvature 816.

[0181] The process described herein with respect to at least FIGS. 8C-8E may effectively be an iterative, iterative, or optimization process for identifying the 3D location of the user's corneal center. Accordingly, any of a number of techniques (e.g., iterative, optimization, etc.) may be used to efficiently and quickly filter or reduce the search space of possible locations. Furthermore, in some embodiments, the system may include two, three, four, or more light sources, such as light source 326, some of which may be positioned at different locations, resulting in multiple photes, such as photes 854, located at different locations on image 852, and multiple light rays, such as ray 856, having different origins and directions. Such an embodiment may improve the accuracy of 3D corneal center estimation module 716, because module 716 may seek to identify a corneal location that results in some or all of the photes and light rays being properly reflected between that individual light source and that individual location on image 852. In other words, in these embodiments, the position of some or all of the light sources may depend on the 3D corneal position determination (eg, iterative, optimization techniques, etc.) process of FIGS. 8B-8E. Example of normalizing the coordinate system of eye-tracking images

[0182] 9A-9C illustrate example normalization of the coordinate system of the eye tracking images by a component in the wearable system, such as coordinate system normalization module 718 of FIG. 7A. Normalization of the coordinate system of the eye tracking images relative to the user's pupil location can compensate for slippage of the wearable system relative to the user's face (i.e., headset slippage), and such normalization can establish a consistent orientation and distance between the eye tracking images and the user's eyes.

[0183] 9A, coordinate system normalization module 718 may receive estimated 3D coordinates 900 of the center of rotation of the user's cornea and may receive a non-normalized eye tracking image, such as image 852. Eye tracking image 852 and coordinates 900 may be in a non-normalized coordinate system 850, based, as an example, on the location of eye tracking camera 324.

[0184] In a first normalization step, the coordinate system normalization module 718 may rotate the coordinate system 850 into the rotated coordinate system 902 so that the z-axis (i.e., the convergence-divergence depth axis) of the coordinate system may be aligned with the vector between the origin of the coordinate system and the corneal curvature center coordinate 900, as shown in Figure 9B. In particular, the coordinate system normalization module 718 may rotate the eye tracking image 850 into the rotated eye tracking image 904 until the user's corneal curvature center coordinate 900 is normal to the plane of the rotated image 904.

[0185] As a second normalization step, the coordinate system normalization module 718 may translate the rotated coordinate system 902 into the normalized coordinate system 910 so that the corneal curvature center coordinate 900 is at a standard normalized distance 906 from the origin of the normalized coordinate system 910, as shown in FIG. 9C . In particular, the coordinate system normalization module 718 may translate the rotated eye tracking image 904 into the normalized eye tracking image 912. In at least some embodiments, the standard normalized distance 906 may be approximately 30 millimeters. If desired, the second normalization step may be performed prior to the first normalization step. Example of locating a user's pupil centroid using an eye tracking system

[0186] 9D-9G illustrate an example of using the 3D pupil center locator module 720 and the eye tracking module 614 to locate the user's pupil center (i.e., the center of the user's pupil 822 as shown in FIG. 8A).

[0187] 9D , 3D pupil center locator module 720 may receive a normalized eye tracking image 912, including a pupil centroid 913 (i.e., the center of the user's pupil as identified by pupil identification module 712). 3D pupil center locator module 720 may then simulate a normalized 3D position 910 of the eye camera 324 and project a ray 914 through the pupil centroid 913 into the normalized coordinate system 910.

[0188] 9E, 3D pupil center locator module 720 may simulate a corneal spherical surface, such as corneal spherical surface 901 having a center of curvature 900, based on data from 3D corneal center estimation module 716 (and as discussed in more detail in connection with FIGS. 8B-8E). As an example, corneal spherical surface 901 may be positioned within normalized coordinate system 910 based on the location of center of curvature 816c identified in connection with FIG. 8E and based on the normalization process of FIGS. 9A-9C. Additionally, 3D pupil center locator module 720 may identify a first intersection point 916 between ray 914 (i.e., the ray between the origin of normalized coordinate system 910 and the normalized location of the user's pupil) and the simulated cornea, as shown in FIG. 9E.

[0189] As shown in FIG. 9F , the 3D pupil center locator module 720 may determine a pupil sphere 918 based on the corneal sphere 901. The pupil sphere 918 may share a common center of curvature with the corneal sphere 901 but have a small radius. The 3D pupil center locator module 720 may determine the distance between the corneal center 900 and the pupil sphere 918 (i.e., the radius of the pupil sphere 918) based on the distance between the corneal center and the pupil center. In some embodiments, the distance between the pupil center and the corneal center of curvature may be determined from the assumed eye dimensions 704 of FIG. 7A , from the eye tracking extrinsic and intrinsic properties database 702, and / or from the per-user calibration data 706. In other embodiments, the distance between the pupil center and the corneal center of curvature may be determined from the per-user calibration data 706 of FIG. 7A .

[0190] 9G , 3D pupil center locator module 720 may locate the 3D coordinates of the user's pupil center based on various inputs. As an example, 3D pupil center locator module 720 may determine the 3D coordinates of the user's pupil center using the 3D coordinates and radius of pupil sphere 918, the 3D coordinates of intersection 916 between simulated corneal sphere 901 and ray 914 associated with pupil centroid 913 in normalized eye tracking image 912, information about the refractive index of the cornea, and other relevant information, such as the refractive index of air (which may be stored in eye tracking extrinsic and intrinsic properties database 702). In particular, 3D pupil center locator module 720 may bend ray 916 into refracted ray 922 in the simulation based on the refractive index difference between air (at a first refractive index of approximately 1.00) and corneal material (at a second refractive index of approximately 1.38). After accounting for refraction caused by the cornea, the 3D pupil center locator module 720 may determine the 3D coordinate of a first intersection point 920 between the refracted light ray 922 and the pupil sphere 918. The 3D pupil center locator module 720 may determine that the user's pupil center 920 is located approximately at the first intersection point 920 between the refracted light ray 922 and the pupil sphere 918. Using this arrangement, the 3D pupil center locator module 720 can determine the 3D location (relative to the wearable system) of the pupil center 920 within the normalized coordinate system 910. If desired, the wearable system can de-normalize the coordinates of the pupil center 920 into the original eye camera coordinate system 850. The pupil center 920 may be used in conjunction with the corneal curvature center 900 to determine, among other things, the user's optical axis using the optical axis determination module 722 and the user's convergence and divergence movement depth using the convergence and divergence movement depth estimation module 728. Example of the difference between the optical axis and the visual axis

[0191] As discussed in connection with the optical axis / visual axis mapping module 730 of FIG. 7A , a user's optical axis and visual axis are generally not aligned, in part because the user's visual axis is defined by their fovea, which is generally not at the center of the person's retina. Thus, when a person desires to focus on a particular object, the person aligns their visual axis with the object, ensuring that light from the object falls on their fovea, while their optical axis (defined by the center of their pupil and the center of curvature of their cornea) is actually slightly offset from the object. FIG. 10 is an example of an eye 1000 illustrating the eye's optical axis 1002, the eye's visual axis 1004, and the offset between these axes. Additionally, FIG. 10 illustrates the eye's pupil center 1006, the eye's corneal center of curvature 1008, and the eye's mean center of rotation (CoR) 1010. In at least some populations, the eye's center of corneal curvature 1008 may be approximately 4.7 mm in front of the eye's mean center of rotation (CoR) 1010, as indicated by dimension 1012. Additionally, the eye's center of gaze 1014 may be approximately 5.01 mm in front of the eye's center of corneal curvature 1008, approximately 2.97 mm behind the outer surface 1016 of the user's cornea, and / or directly in front of the user's pupil center 1006 (e.g., corresponding to a location within the anterior chamber of the eye 1000). As additional examples, dimension 1012 may be between 3.0 mm and 7.0 mm, between 4.0 and 6.0 mm, between 4.5 and 5.0 mm, or between 4.6 and 4.8 mm, or any range between any value within any of these ranges. The eye's center of perspective (CoP) 1014 can be a useful location for wearable systems because, in at least some embodiments, aligning the rendering camera to the CoP can help reduce or eliminate parallax artifacts.

[0192] 10 also illustrates such locations within the human eye 1000 with which the rendering camera pinhole may be aligned. As shown in FIG. 10 , the rendering camera pinhole may be aligned with a location 1014 along the optical axis 1002 or visual axis 1004 of the human eye 1000 that is closer to the outer surface of the cornea than both (a) the center of the pupil or iris 1006 and (b) the center of corneal curvature 1008 of the human eye 1000. For example, as shown in FIG. 10 , the rendering camera pinhole may be aligned with a location 1014 along the optical axis 1002 of the human eye 1000 that is approximately 2.97 millimeters posterior to the outer surface of the cornea 1016 and approximately 5.01 millimeters anterior to the center of corneal curvature 1008. The location 1014 of the rendering camera's pinhole and / or the anatomical region of the human eye 1000 to which the location 1014 corresponds may be considered to represent the center of view of the human eye 1000. The optical axis 1002 of the human eye 1000 as shown in Figure 10 represents the shortest line passing through the center of corneal curvature 1008 and the center of the pupil or iris 1006. The visual axis 1004 of the human eye 1000 differs from the optical axis 1002 because it represents a line extending from the fovea of ​​the human eye 1000 to the center of the pupil or iris 1006. Exemplary Process for Rendering Content and Checking Alignment Based on Eye Tracking

[0193] 11 is a process flow diagram of an example method 1100 for using eye tracking to provide feedback regarding alignment within a wearable device when rendering content. Method 1100 may be implemented by a wearable system described herein. An embodiment of method 1100 can be used by a wearable system to render content and provide feedback regarding alignment (i.e., the fit of the wearable device with the user) based on data from the eye tracking system.

[0194] In block 1110, the wearable system may capture images of one or both of the user's eyes. The wearable system may capture the eye images using one or more eye cameras 324, as shown in at least the example of FIG. 3. Optionally, the wearable system may also include one or more light sources 326 configured to shine IR light on the user's eyes and produce corresponding flashes of light in the eye images captured by the eye cameras 324. As discussed herein, the flashes of light may be used by the eye tracking module 614 to derive various information about the user's eyes, including where the eyes are looking.

[0195] In block 1120, the wearable system may detect flashes of light and pupils in the eye image captured in block 1110. As an example, block 1120 may include processing the eye image by flash detection and labeling module 714 to identify a two-dimensional location of the flash of light in the eye image, and processing the eye image by pupil identification module 712 to identify a two-dimensional location of the pupil in the eye image.

[0196] In block 1130, the wearable system may estimate the three-dimensional positions of the user's left and right corneas relative to the wearable system. As an example, the wearable system may estimate the locations of the centers of curvature of the user's left and right corneas and the distances between those centers of curvature and the user's left and right corneas. Block 1130 may involve a 3D corneal center estimation module 716 that identifies the locations of the centers of curvature, as described herein in connection with at least Figures 7A and 8A-8E.

[0197] In block 1140, the wearable system may estimate the three-dimensional location of the user's left and right pupil centers relative to the wearable system. As an example, the wearable system and 3D pupil center locator module 720 may estimate the location of the user's left and right pupil centers as part of block 1140, particularly as described in connection with at least Figures 7A and 9D-9G.

[0198] In block 1150, the wearable system may estimate the three-dimensional location of the user's left and right center or rotation (CoR) relative to the wearable system. As an example, the wearable system and CoR estimation module 724 may estimate the location of the CoR for the user's left and right eyes, particularly as described in connection with at least FIGS. 7A and 10. As a particular example, the wearable system may find the CoR of the eye by tracing backward along the optical axis from the center of curvature of the cornea toward the retina.

[0199] In block 1160, the wearable system may estimate the user's IPD, convergence depth, center of gaze (CoP), optical axis, visual axis, and other desired attributes from the eye tracking data. As an example, as part of block 1160, the IPD estimation module 726 may estimate the user's IPD by comparing the 3D positions of the left and right CoR, the convergence depth estimation module 728 may estimate the user's depth by finding the intersection (or near intersection) of the left and right optical axes or the intersection of the left and right visual axes, the optical axis determination module 722 may identify the left and right optical axes over time, the optical axis / visual axis mapping module 730 may identify the left and right visual axes over time, and the CoP estimation module 732 may identify the left and right centers of gaze.

[0200] In block 1170, the wearable system may render content and, optionally, provide feedback regarding alignment (i.e., the fit of the wearable system with the user's head) based in part on the eye-tracking data identified in blocks 1120-1160. As an example, the wearable system may identify a preferred location for a rendering camera, as discussed in connection with light field rendering controller 618 ( FIG. 7B ) and rendering engine 622, and then generate content for the user based on the location of the rendering camera. As another example, the wearable system may determine whether it is properly fitted to the user or has slipped out of its proper place relative to the user, as discussed in connection with alignment observer 620, and may provide optional feedback to the user indicating whether the fit of the device needs adjustment. In some embodiments, the wearable system may adjust rendered content based on improper or sub-ideal alignment in an attempt to reduce, minimize, or compensate for the effects of the improper or misaligned alignment. Example of an alignment coordinate system

[0201] 12A-12B illustrate an exemplary eye position coordinate system that may be used to define the three-dimensional positions of a user's left and right eyes relative to the display of a wearable system described herein. As an example, the coordinate system may include axes x, y, and z. Axis z of the coordinate system may correspond to depth, i.e., the distance between the plane in which the user's eyes lie and the plane in which the display 220 lies (e.g., a direction normal to the plane in front of the user's face). Axis x of the coordinate system may correspond to the left-right direction, such as the distance between the user's left and right eyes. Axis y of the coordinate system may correspond to the up-down direction, which may be the vertical direction when the user is standing upright.

[0202] FIG. 12A illustrates a side view of a user's eye 1200 and a display surface 1202 (which may be part of the display 220 of FIG. 2), while FIG. 12B illustrates a top-down view of the user's eye 1200 and the display surface 1202. The display surface 1202 may be located in front of the user's eye and may output image light to the user's eye. As an example, the display surface 1202 may comprise one or more out-coupling light elements and active or pixelated display elements, or may be part of a stack of waveguides, such as the stacked waveguide assembly 480 of FIG. 4. In some embodiments, the display surface 1202 may be planar. In some other embodiments, the display surface 1202 may have other topologies (e.g., curved). It should be understood that the display surface 1202 may be the physical surface of the display, or simply a plane or other imaginary surface through which image light is understood to propagate from the display 220 to the user's eye.

[0203] 12A , the user's eye 1200 may have an actual position 1204 that is offset from a nominal position 1206, and the display surface 1202 may be at a position 1214. FIG. 12A also illustrates the corneal apex 1212 of the user's eye 1200. The user's line of sight (e.g., their optical and / or visual axis) may be substantially along a line between the actual position 1204 and the corneal apex 1212. As shown in FIGS. 12A and 12B , the actual position 1204 may be offset from the nominal position 1206 by a z-offset 1210, a y-offset 1208, and an x-offset 1209. The nominal position 1206 may represent a preferred position (sometimes also referred to as a design position, which may be generally centered within a desired volume) for the user's eye 1200 relative to the display surface 1202. As the user's eye 1200 moves away from the nominal position 1206, the performance of the display surface 1202 may degrade, for example, as discussed herein in connection with FIG.

[0204] It should be understood that a point or volume associated with the user's eye 1200 may be used to represent the position of the user's eye in the alignment analysis herein. The representative point or volume may be any point or volume associated with the eye 1200 and is preferably used consistently. For example, the point or volume may be on or within the eye 1200, or may be located away from the eye 1200. In some embodiments, the point or volume is the center of rotation of the eye 1200. The center of rotation may be determined as described herein and may have the advantage of simplifying the alignment analysis by allowing a single display alignment volume that is generally symmetrically positioned on various axes within the eye 1200 and aligned with the optical axis to be utilized for the analysis.

[0205] 12A also illustrates that display surface 1202 may be centered below the user's horizon (as viewed along the y-axis when the user is looking straight ahead with its optical axis parallel to the ground) and tilted (with respect to the y-axis). In particular, display surface 1202 may be positioned somewhat below the user's horizon, such that when eye 1200 is at position 1206, the user would need to look down at approximately angle 1216 to see the center of display surface 1202. This may promote a more natural and comfortable interaction with display surface 1202, particularly when viewing content rendered at a shorter depth (or distance from the user), because the user may be more comfortable viewing content below the horizon than above it. Additionally, display surface 1202 may be tilted (with respect to the y-axis), such as at angle 1218, so that when the user is looking at the center of display surface 1202 (e.g., looking slightly below the user's horizon), display surface 1202 is generally perpendicular to the user's line of sight. In at least some embodiments, display surface 1202 may also be shifted left or right (e.g., along the x-axis) relative to the nominal position of the user's eyes. As an example, the left-eye display surface may be shifted rightward, and the right-eye display surface may be shifted leftward (e.g., display surfaces 1202 may be shifted toward each other) so that the user's line of sight strikes the center of the display surface when focused at a distance less than infinity, which may increase user comfort during typical use on a wearable device. Illustrative Graph for Rendering Content in Responsive to User Eye Movements

[0206] 13 includes a set of example graphs 1200a-1200j illustrating how a wearable system may switch depth planes in response to a user's eye movement. As discussed herein in connection with FIGS. 4 and 7, the wearable system may include multiple depth planes, with the various depth planes configured to present content to the user at different simulated depths or with different accommodation cues (i.e., with various levels of wavefront curvature or ray divergence). As an example, the wearable system may include a first depth plane configured to simulate a first depth range and a second depth plane configured to simulate a second depth range, where these two ranges may desirably overlap to facilitate hysteresis in switching, although the second depth range may generally extend a greater distance from the user. In such embodiments, the wearable system may track the user's convergence depth, saccade movements, and eyeblinks, and switch between the first and second depth planes in a manner that seeks to avoid excessive depth plane switching, excessive accommodation-vergence-divergence mismatch, and excessive periods of accommodation-vergence-divergence mismatch, and to reduce the visibility of depth plane switching (i.e., by shifting the depth plane during eyeblinks and saccades).

[0207] Graph 1200a illustrates an example of a user's convergence-divergence movement depth over time, and graph 1200b illustrates an example of a user's saccade signal or eye movement velocity over time.

[0208] Graph 1200c may illustrate vergence-divergence depth data generated by the eye tracking module 614, and in particular, data generated by the vergence-divergence depth estimation module 728. As shown in graphs 1200c-1200h, eye tracking data may be sampled within the eye tracking module 614 at a rate of approximately 60 Hz. As shown between graphs 1200b and 1200c, the eye tracking data within the eye tracking module 614 may lag behind the user's actual eye movement by a delay 1202. As an example, at time t1, the user's vergence-divergence depth may cross the hysteresis threshold 1210a, but the eye tracking module 614 may not recognize the event until time t2, after the delay 1202.

[0209] Graph 1200c also illustrates various thresholds 1210a, 1210b, 1210c within a hysteresis band, which may be associated with transitions between a first depth plane and a second depth plane (i.e., depth planes #1 and #0 in FIG. 13). In some embodiments, the wearable system may attempt to display content using depth plane #1 whenever the user's convergence-divergence depth exceeds threshold 1210b and to display content using depth plane #0 whenever the user's convergence-divergence depth falls below threshold 1210b. However, to avoid excessive switching, the wearable system may implement hysteresis, whereby the wearable system will not switch from depth plane #1 to depth plane #0 until the user's convergence-divergence depth exceeds outer threshold 1210c. Similarly, the wearable system will not switch from depth plane #0 to depth plane #1 until the user's convergence-divergence depth exceeds outer threshold 1210a.

[0210] Graph 1200d illustrates an internal flag that may be generated by the depth plane selection module 750 or the hysteresis band crossing detection module 752 that indicates whether the user's convergence-divergence movement depth is generally within the volume associated with depth plane #1 or generally within the volume associated with depth plane #2 (i.e., whether the user's convergence-divergence movement depth is above or below threshold 1210b).

[0211] Graph 1200e illustrates an internal hysteresis band flag that may be generated by depth plane section module 750 or hysteresis band crossing detection module 752 to indicate whether the user's convergence-divergence depth crosses an outer threshold, such as threshold 1210a or 1210c. In particular, graph 1200e illustrates a flag that indicates whether the user's convergence-divergence depth completely crosses the hysteresis band and falls into a region outside the volume of the active depth plane (i.e., into a region associated with a depth plane other than the active depth plane), thus potentially leading to undesirable accommodation-vergence-divergence mismatch (AVM).

[0212] Graph 1200f illustrates an internal AVM flag that may be generated by the depth plane selection module 750 or the hysteresis band crossing detection module 752, indicating whether the user's convergence-divergence movement has been outside the volume of the active depth plane for more than a predetermined time. The AVM flag may therefore identify when the user may have been experiencing undesirable accommodation-vergence-divergence mismatch for a near-too-long or excessive period of time. Additionally, or alternatively, the internal AVM flag may also indicate whether the user's convergence-divergence movement has extended a predetermined distance beyond the volume of the active depth plane, thus potentially resulting in excessive accommodation-vergence-divergence mismatch. In other words, the AVM flag may indicate when the user's convergence-divergence movement exceeds thresholds 1210a and 1210c by an additional threshold from threshold 1210b.

[0213] Graph 1200g illustrates an internal blink flag that may be generated by eye event detection module 754, which may determine when a user has blinked or is blinking. As described herein, it may be desirable to switch depth planes in response to a user blink, reducing the likelihood that the user will perceive a switch in depth planes.

[0214] Graph 1200h illustrates an example output from depth plane selection module 750. In particular, graph 1200h shows that depth plane selection module 750 may output instructions to a rendering engine, such as rendering engine 622 (see FIG. 6), to utilize a selected depth plane, which may change over time.

[0215] Graphs 1200i and 1200j illustrate delays that may be present in a wearable system, including delays due to the rendering engine 622 switching depth planes and delays due to the display 220, which may need to provide light associated with the new image frame in the new depth plane to effect the change in depth plane.

[0216] Here, various times (t0-t 10 ) refer to the events illustrated in graphs 1200a-1200j.

[0217] At some point around time t0, the user's convergence-divergence depth may exceed threshold 1210a, which may be outside the hysteresis threshold. After a delay associated with image capture and signal processing, the wearable system may generate a signal indicating that the user's convergence-divergence depth is within the hysteresis band, as shown in graph 1200e. In the example of graph 1200e, the eye tracking module 614 may flag the hysteresis band being exceeded at approximately time t1 in conjunction with the user's convergence-divergence depth exceeding threshold 1210a.

[0218] The user's convergence-divergence depth may continue to decrease from time t0 until approximately time t4, after which it may increase.

[0219] At time t1, the user's convergence-divergence depth may exceed threshold 1210b, which may be the midpoint between two depth planes, such as depth planes #1 and #0. After a processing delay 1202, the eye tracking module 614 may modify an internal flag, as shown in graph 1200d, to indicate that the user's convergence-divergence depth has moved from a volume generally associated with depth plane #1 to a volume generally associated with depth plane #0.

[0220] At time t3, the eye tracking module 614 may determine that the user's convergence-divergence depth has moved entirely through the hysteresis band and exceeded outer threshold 1210c, as shown in graph 1200a. As a result, the eye tracking module 614 may generate a signal indicating that the user's convergence-divergence depth is outside the hysteresis band, as shown in graph 1200e. In at least some embodiments, the eye tracking module 614 may switch between the first and second depth planes only when the user's convergence-divergence depth is outside the hysteresis band between those two depth planes.

[0221] In at least some embodiments, the eye tracking module 614 may be configured to switch depth planes at time t3. In particular, the eye tracking module 614 may be configured to switch depth planes based on a determination that the convergence-divergence depth moves from the volume of the currently selected depth plane (depth plane #1, as shown by graph 1200h) to the volume of another depth plane (depth plane #0), generally exceeding the hysteresis band. In other words, the eye tracking module 614 may implement a depth plane switch whenever the hysteresis band is exceeded (graph 1200e is high) and an accommodation-vergence-divergence mismatch based on the duration or magnitude of the mismatch is detected (graph 1200f is high). In such embodiments, the eye tracking module 614 may provide a signal to the rendering engine 622 instructing the rendering engine 622 to switch to the other depth plane (depth plane #0). However, in the example of Figure 13, the eye tracking module 614 may be configured to delay depth plane switching until at least one other condition is met. These additional conditions may include, by way of example, an eyeblink condition, an accommodation-vergence-divergence mismatch timeout condition, and an accommodation-vergence-divergence magnitude condition.

[0222] At time t4, in the example of FIG. 13 , the eye tracking module 614 may be configured to switch depth planes. In particular, the eye tracking module 614 may determine that the user's convergence / divergence movement has been within the volume associated with depth plane #0 for a time period greater than a predetermined threshold time (and, optionally, within a hysteresis band for that time period). Examples of the predetermined threshold time include 5 seconds, 10 seconds, 20 seconds, 30 seconds, 1 minute, and 90 seconds, as well as any range between any of these values. In response to such a determination, the eye tracking module 614 may generate an AVM flag, as shown in graph 1200f, and instruct the rendering engine 622 to switch to depth plane #0, as shown in graph 1200h. In some embodiments, the eye tracking module 614 may generate an AVM flag and instruct the rendering engine 622 to switch depth planes if the user's convergence / divergence depth is detected greater than a threshold distance from the currently selected depth volume.

[0223] At time t5, after a delay 1204, the rendering engine 622 may begin rendering content to the newly selected depth plane #0. After a delay 1206 associated with rendering and transmitting light to the user through the display 220, the display 220 may be fully switched to the newly selected depth plane #0 by time t6.

[0224] Thus, graphs 1200a-j illustrate how, between times t0 and t6, the system may respond to the user's changing convergence-divergence motion and switch depth planes after the user's convergence-divergence motion has moved away from the previous depth volume for more than a predetermined period of time. 10 10 illustrates how the system may respond to the user's changing convergence-divergence movements, which may precede a predetermined period of time, and may switch depth planes in response to detecting the user's eye blink.

[0225] At time t7, the eye tracking module 614 may detect that the user's convergence-divergence depth has entered the hysteresis region between depth planes #0 and #1 (i.e., the user's convergence-divergence depth has exceeded outer threshold 1210c). In response, the eye tracking module 614 may modify the hysteresis flag, as shown in graph 1200e.

[0226] At time t8, the eye tracking module 614 may detect that the user's convergence-divergence depth has exceeded threshold 1210b and moved from a volume generally associated with depth plane #0 to a volume generally associated with depth plane #1. Accordingly, the eye tracking module 614 may alter the depth-volume flag, as shown in graph 1200d.

[0227] At time t9, the eye tracking module 614 may detect that the user's convergence-divergence depth has exceeded threshold 1210a and moved from the hysteresis volume to a volume generally associated exclusively with depth plane #1. In response, the eye tracking module 614 may modify the hysteresis flag, as shown in graph 1200e.

[0228] Time t 10 Around time t, the user may blink, and the eye tracking module 614 may detect that blink. As an example, the eye event detection module 754 may detect the user's blink. In response, the eye tracking module 614 may generate a blink flag, as shown in graph 1200h. In at least some embodiments, the eye tracking module 614 may implement depth plane switching whenever a hysteresis band is exceeded (graph 1200e is high) and a blink is detected (graph 1200g is high). Thus, the eye tracking module 614 may notify the rendering engine 622 that a blink has occurred at time t 10 , one can command the depth plane to be switched. Exemplary Process for Calibrating Depth Plane Selection

[0229] As discussed herein, a head-mounted display, such as display 220 of Figure 2, may include multiple depth planes, each providing a different amount of wavefront divergence to provide a different accommodation cue to the user's eye. The depth planes may be formed from optical elements, such as waveguides 432b, 434b, 436b, and 440b of Figure 4, which may be configured to transmit image information to the user's eye with a desired level of wavefront divergence, as an example.

[0230] In at least some embodiments, a wearable system including the display 220 may be configured to display image content with accommodation cues based on the user's current fixation point or vergence depth of the gaze (e.g., to reduce or minimize accommodation-vergence mismatch). In other words, the wearable system may be configured to identify the user's vergence depth of the gaze (e.g., using the vergence depth estimation module 728 of FIG. 7A , as an example) and then display image content on a depth plane that provides accommodation cues associated with the current vergence depth. Thus, when a user is looking at optical infinity, the wearable system may display image content on a first depth plane that provides accommodation cues for optical infinity. In contrast, when a user is looking within a close distance (e.g., within one meter), the wearable system may display image content on a second depth plane that provides accommodation cues within or at least closer to the close distance.

[0231] As mentioned above, the convergence depth estimation, which may be performed by the convergence depth estimation module 728 of FIG. 7A , may be based, in part, on the user's current interpupillary distance (IPD). In particular, in some embodiments, determining the convergence depth may involve projecting the optical and / or visual axes of the user's left and right eyes (to determine their respective line of sight) and determining where those axes intersect in space, and thus where the user's fixation point or convergence depth is located. Geometrically, the optical and / or visual axes are the sides of a triangle, the base of the triangle is the user's IPD, and the tip of the triangle is the user's fixation point or convergence depth. It should be appreciated, therefore, that the user's IPD is useful in determining the convergence depth.

[0232] In various embodiments, the wearable system may be calibrated for a specific primary user. Calibration may involve various processes and may include determining the extent to which the user's eyes move as the user focuses on objects at different locations and depths. Calibration may also include identifying the user's IPD (e.g., the distance between the user's pupils when the user focuses at optical infinity). Calibration may also include determining the user's interpupillary distance when the user focuses on objects closer than optical infinity, such as objects in the close distance (e.g., less than 2.0 meters) and objects in the medium distance (e.g., approximately 2.0 to 3.0 meters). Based on such calibration data, the wearable system may be able to determine the depth at which the user is looking by monitoring the user's interpupillary distance. In other words, when the user's interpupillary distance is at its maximum value (e.g., equal to or close to the user's IPD), the wearable system may be able to infer that the user's convergence distance is at or near optical infinity. In contrast, when the user's pupillary distance is near its minimum, the wearable system may be able to infer that the user's convergence-divergence distance is close to that of the user at the distance determined by calibration.

[0233] In some embodiments, the wearable system may utilize one or more alternative processes for depth plane selection. As an example, the wearable system may implement a content-based switching scheme. It should be understood that virtual content may include information about the location in virtual space where the content should be located. Given this location, the virtual content may effectively define an associated amount of wavefront divergence. As a result, rather than determining a user's eye fixation point and switching depth planes (e.g., to switch the amount of wavefront divergence of light to form a virtual object), the display system may be configured to switch depth planes based on a desired location in virtual space in which to place the virtual content.

[0234] In some embodiments, the wearable system may still make a determination regarding whether the user is looking at virtual content in order to switch to a depth plane defined for that virtual content. For example, the display system may still track the user's gaze and determine whether they are looking at a virtual object, and once that determination is made, may use depth information associated with the virtual content to determine whether to switch depth planes. As another example, the wearable system may identify the real or virtual object the user is most likely looking at based on an assumption that the user will be looking at a particular real or virtual object. For example, the wearable system may present a video to the user on a 2D virtual screen one meter away from the user. Although the user may look away from the screen and look at another object, it may be reasonable to assume that the user is looking at the video screen. In some embodiments, the wearable system may be configured to make the assumption that the user is looking at real or virtual content that has more movement or visible change than other real or virtual content. For example, the wearable system may assign a score to the amount of movement or change in visual appearance caused by real or virtual content in the user's field of view, and make the assumption that the user is viewing the real or virtual content with the highest score (e.g., the most movement or visual change, such as a virtual screen displaying a video).

[0235] Another example of an alternative depth plane selection process is dynamic calibration. Dynamic calibration can be beneficial when the current user has not (or has not yet) performed a dedicated calibration process. As an example, dynamic calibration may be utilized when a guest user is wearing the device. In one example of a dynamic calibration system, the wearable system may collect eye-tracking data to estimate the current user's IPD and then use the estimated IPD (and their eye gaze direction, as discussed in connection with module 728 of FIG. 7A) to estimate the user's convergence-divergence depth. IPD estimation may be performed by IPD estimation module 726 of FIG. 7A; additional details and exemplary embodiments are discussed herein in connection with module 726. Dynamic calibration may occur as a background process and require no specific action from the user. Additionally, dynamic calibration may continually acquire samples or images of the user's eyes to further refine the IPD estimate. As discussed in more detail below, the wearable system may estimate the user's IPD as the 95th percentile (or other percentile) of all measured IPD values. In other words, up to 5% of the measured IPD values ​​may be excluded, and then the largest remaining measured IPD value may be determined as the user's IPD. The IPD value calculated in this manner may be referred to herein as IPD_95.

[0236] It should be understood that the display system may be configured to continuously monitor the IPD. Thus, the number of samples or individual IPD measurements used to determine a value associated with a particular percentile may increase over time, potentially increasing the accuracy of the IPD determination. In some embodiments, the IPD value (e.g., IPD) may be updated continuously or periodically. For example, the IPD value may be updated after a predetermined amount of time has passed and / or after a predetermined number of individual IPD measurements have been made.

[0237] In some embodiments, the dynamic calibration process may require identifying the user's IPD (e.g., the user's maximum pupil distance, such as when the user is looking at optical infinity). In such embodiments, the wearable system may be able to calibrate depth plane selection based solely on the IPD.

[0238] As a specific example, it has been determined that if a user's pupillary distance is reduced by 0.6 mm from its maximum IPD, the user is likely to be focused to a depth of approximately 78 mm. 78 mm may, in some embodiments disclosed herein, correspond to a switch point between depth planes (e.g., the system may prefer to utilize a first depth plane when the user is focused below 78 mm and a second depth plane when the user is focused above 78 mm). In embodiments with switch points occurring at different focal depths, the associated pupillary distance reduction for that maximum IPD will change in relation to the change in switch point (e.g., from 78 mm to wherever the switch point is in such embodiments).

[0239] In some instances, a wearable system may refine its calculation of a user's convergence depth by not simply considering the difference between the user's current pupillary distance and its maximum IPD, but also by considering the degree to which such relationship varies in relation to the user's maximum IPD. In particular, the 0.6 mm number discussed above may be an average number that applies to the population as a whole and accounts for various biases within the wearable system (e.g., a user who, on average, has a current pupillary distance 0.6 mm less than their maximum IPD may converge to a distance of 78 mm). However, the actual IPD difference (between the maximum and current value) associated with a 78 mm convergence depth (or other switch point distance as discussed in the preceding paragraph) may be greater than or exceed 0.6 mm and may be a function of the user's anatomical IPD. As a specific example, a person with an IPD of 54 mm may have a convergence / divergence distance of 78 mm when their current IPD is 0.73 mm less than their maximum IPD (e.g., their IPD when looking at a distance of at least 10 meters), a person with an IPD of 64 mm may have a convergence / divergence distance of 78 mm when their current IPD is 0.83 mm less than their maximum IPD, and a person with an IPD of 72 mm may have a convergence / divergence distance of 78 mm when their current IPD is 0.93 mm less than their maximum IPD. These numbers may differ from the 0.6 mm number for various reasons, including, but not limited to, the 0.6 mm number not distinguishing between users with different IPDs and the 0.6 mm number may refer to an IPD_95 value (e.g., an IPD value that is actually slightly lower than the user's anatomical IPD when looking at optical infinity). In some embodiments, the 0.6 mm number may vary depending on the user's maximum IPD. For example, predetermined number deviations from the 0.6 mm number may be available and may be associated with different ranges of maximum IPD values.

[0240] Using such a relationship, the wearable system may be able to determine the user's current convergence depth by comparing its maximum IPD with the current interpupillary distance (which may be reduced according to one or more mathematical functions as the convergence distance decreases). Determining the user's maximum IPD may involve, by way of example, collecting data about the user's IPD over time and identifying the maximum IPD within the collected data. In other embodiments, the wearable system may use heuristics or other processes to determine the user's maximum IPD even when the user is not looking at optical infinity. In particular, the wearable system may extrapolate the user's maximum IPD from multiple interpupillary distances associated with closer convergence depths. The wearable system may also prompt the user to look at optical infinity by presenting virtual content at optical infinity and asking the user to focus their attention on the virtual content.

[0241] 14 is a process flow diagram of an example method 1400 for depth plane selection using existing calibration, a content-based switching scheme, and / or dynamic calibration. Method 1400 may be implemented by a wearable system described herein. Embodiments of method 1400 can be used by a wearable system to render content onto a depth plane that generally reduces or minimizes any vergence-accommodation mismatch that would otherwise lead to user discomfort and fatigue.

[0242] In block 1402, the wearable system may determine that it is not being worn by a user. The wearable system may determine that it is not being worn using one or more sensors, such as an eye tracking system like eye camera 324. As an example, the wearable system may determine that it is not being worn by a user based on determining that an eye is not present in eye tracking images captured by eye camera 324. In particular, the wearable system may determine that the wearable system is not being worn by a user after failing to detect an eye in the eye tracking images for at least a given period of time (e.g., a predetermined period of time, a dynamically determined period of time, etc.).

[0243] In response to detecting one or both of the user's eyes in an eye-tracking image, such as one captured by camera 324, method 1400 may proceed to block 1404. In block 1404, the wearable system may determine that it is being worn. In some embodiments, some or all of the determinations associated with block 1402 and / or block 1406 may be made, at least in part, based on data from one or more other sensors from the wearable system, such as an IMU, accelerometer, gyroscope, proximity sensor, touch sensor, and the like. For example, in these embodiments, the wearable system may monitor data from one or more IMUs, accelerometers, and / or gyroscopes for an indication that the wearable system has been placed on or removed from the user's head, may monitor data from one or more proximity sensors and / or touch sensors to detect the user's physical presence, or both. For example, the wearable system may compare data received from one or more of these sensors, and the wearable system may have thresholds associated with individual sensors. In one example, the wearable system may then determine that the device has been removed from the user's head based on values ​​from one or more proximity sensors meeting or exceeding a threshold, optionally in conjunction with data from an IMU, accelerometer, and / or gyroscope, indicating sufficient movement (e.g., exceeding a threshold) to support a conclusion that the device has been removed.

[0244] In block 1406, the wearable system may attempt to identify the current user by performing an identification process. As one example, the wearable system may estimate the current user's IPD and determine whether the current user's IPD matches the calibrated user's IPD (e.g., whether the two IPDs are within a threshold of each other). In some embodiments, the wearable system may determine that the current user is a calibrated user if the calibrated IPD and the current user's IPD are within a threshold of the calibrated user's IPD, e.g., 0.5 mm, 1.0 mm, 1.5 mm, or 2.0 mm. In general, a larger threshold may facilitate faster determination and help ensure that a calibrated user is identified and their calibration parameters are used. For example, a larger threshold may be biased toward finding that the current user is a calibrated user. In at least some embodiments, the wearable system may be able to determine the current user's IPD with relatively high accuracy (e.g., 95%) within a relatively short time frame (e.g., 5-7 seconds of eye tracking data, which may correspond to approximately 150-200 frames of eye tracking images).

[0245] If a match exists between the current user's IPD and the calibrated user's IPD, the wearable system may assume the current user is the calibrated user and load an existing calibration in block 1408. The existing calibration may be calibration parameters or data generated during a calibration process with the calibrated user wearing the wearable system. If the current user is not actually the calibrated user but simply has a similar IPD, the calibration data loaded in block 1408 may be an acceptable calibration that provides reasonable performance for the current user while allowing the current user to use the wearable system without performing further detailed calibration.

[0246] In some embodiments, the wearable system may identify the current user using measurements other than (or in addition to) the user's IPD. As an example, the wearable system may ask the user for a username and / or password, and the wearable system may perform iris scanning (e.g., comparing a current image of the user's iris with a reference image and determining whether a match exists, with a match being interpreted as meaning the current user is a calibrated user), voice recognition (e.g., comparing a current sample of the user's voice with a reference voice file, with a match being interpreted as meaning the current user is a calibrated user), or some combination of these and other authentication or identification techniques. In some embodiments, two or more identification processes may be performed to increase the accuracy of determining whether the current user is a calibrated user. For example, the current user may be assumed to be a calibrated user, but may be determined to not be a calibrated user if all of the identification processes performed fail to identify the current user as a calibrated user. As another example, the results from the various performed identification processes may be aggregated into a combined score, and the current user may be assumed to be the calibrated user unless the combined score exceeds a predetermined threshold.

[0247] In some embodiments, if a display system includes multiple calibration files for multiple users, additional criteria may be required to select the appropriate calibration file. For example, the user may be prompted to select the appropriate calibration file, and / or multiple ones of the identification schemes disclosed herein may be utilized.

[0248] In some embodiments, multiple identification schemes may be utilized to increase the accuracy of user identification. For example, it should be understood that IPD is a relatively rough identification criterion. In some embodiments, IPD may be used as a first criterion to identify whether the current user is likely to be a calibrated user, and then a more precise or accurate identification scheme may be utilized (e.g., iris scanning). Such a multi-step identification scheme may advantageously conserve processing resources, as more accurate identification schemes may be more resource-intensive. As a result, processing resources may be conserved by delaying the use of a more accurate, resource-intensive identification scheme until an IPD determination indicates that a calibrated user is present.

[0249] 14 , if the current user's IPD does not match the calibrated user's IPD, the wearable may perform dynamic calibration at block 1410. Dynamic calibration may involve monitoring eye tracking data and estimating the degree to which the user's interpupillary distance changes as a function of its convergence distance, as discussed herein. As one example, dynamic calibration may involve estimating the user's maximum IPD and then using the maximum IPD together with the current interpupillary distance to estimate the current convergence distance.

[0250] In block 1412, the wearable system may implement content-based switching. With content-based switching, depth plane selection is based on the depth of virtual content determined to be viewed by the user (e.g., the most important or interesting content being displayed, which may be identified by the content creator, based on the user's eye gaze, etc.). In at least some embodiments, block 1412 may be performed when selected by the content creator or other designer of the wearable system, regardless of whether the current user is a calibrated user. In various embodiments, the content-based switching at block 1412 may be performed when a calibrated user is not present. In such embodiments, block 1406 may be skipped, as desired. Additionally, in some embodiments, the content-based switching at block 1412 may be performed regardless of whether blocks 1408 and / or 1410 (and their associated blocks) are implemented or available to the display system. For example, in some embodiments, the display system may perform only block 1412 to determine depth plane switching.

[0251] As described herein, each virtual object may be associated with location information, such as three-dimensional location information. The wearable system may present each virtual object to the user based on the location information. For example, the location information for a particular virtual object may indicate X, Y, and Z coordinates at which the object should be presented (e.g., the center or center of gravity of the object may be presented in coordinates). Thus, the wearable system may obtain information indicating the depth plane at which each virtual object should be presented.

[0252] As will be described in further detail below with respect to FIGS. 16A-18 , the wearable system may assign a distinct volume of space (also referred to herein as a “zone” or marker) to surround each object. These volumes of space preferably may not overlap. The wearable system may identify the user's line of sight and identify a zone that contains the user's line of sight. For example, the line of sight may indicate a three-dimensional location (e.g., an approximate three-dimensional location) at which the user is fixating. The wearable system may then cause the presentation of virtual content in a depth plane associated with a virtual object contained within the identified zone. Thus, in some embodiments, once the display system makes a determination regarding the object the user is looking at, switching between depth planes may occur based on the location or depth plane associated with the virtual object rather than the user's eye fixation point.

[0253] In block 1414, the wearable system may perform depth plane switching. The depth plane switching in block 1414 may be performed using configuration parameters loaded or generated in blocks 1408, 1410, or 1412. In particular, if the current user is a calibrated user, block 1414 may perform depth plane switching according to configuration parameters generated during calibration with that user. If the current user is identified as not being a calibrating user and dynamic calibration was performed in block 1410, block 1412 may involve depth plane switching according to the calibration parameters generated in block 1410 as part of the dynamic calibration. In at least some embodiments, the calibration parameters generated in block 1410 may be the user's IPD, and the depth plane switching in block 1414 may be based on the user's IPD. If the wearable system implements content-based switching in block 1412 (which may occur when a calibrated user is not present and / or when a content creator or user prefers to utilize content-based switching), depth plane switching may be performed according to the depth of the content the user is assumed to be viewing.

[0254] 14 , it should be understood that the display system may be configured to continuously verify the user's identity. For example, after block 1414, the display system may be configured to return to block 1406 and identify the user. In some instances, the display system may lose track of a calibrated user previously detected in block 1406 wearing the display device. This may occur, for example, because the calibrated user has removed the display device, or may be due to latency issues or sensing errors that erroneously indicate that the display device is no longer being worn by the user, even when the calibrated user is still wearing the display device. In some embodiments, even when the display device detects that the calibrated user is no longer wearing the display device, the display system may continue to use the calibrated user's calibration profile for a predetermined amount of time or for a predetermined number of frames before switching to the content-based depth plane switching scheme or the dynamic calibration scheme of blocks 1412 and 1410, respectively. As discussed herein, the display system may be configured to continuously perform block 1406 and may not continue to detect the calibrated user. In response to determining that the calibrated user has not been detected for a predetermined amount of time or a predetermined number of frames, the system may switch to the content-based depth plane switching scheme or the dynamic calibration scheme of blocks 1412 and 1410, respectively. Advantageously, because the calibrated user is typically the most likely user of the display device, by continuing to use the calibration profile of the calibrated user, the calibrated user may not experience a significant degradation in the user experience if the system erroneously fails to detect the calibrated user.

[0255] Another example of a method for depth plane selection is shown in FIG. 15. FIG. 15 is a process flow diagram of an example method 1500 for depth plane selection based on a user's interpupillary distance. Method 1500 may be implemented by a wearable system described herein. An embodiment of method 1500 can be used by a wearable system to render content onto a depth plane that generally reduces or minimizes any convergence-accommodation mismatch that would otherwise lead to user discomfort and fatigue.

[0256] In block 1502, the wearable system may determine that it is not being worn by a user. As an example, the wearable system may determine that it is not being worn after failing to detect the user's eyes via the eye tracking system for more than a threshold time period (5 seconds, 10 seconds, 20 seconds, etc.).

[0257] In block 1504, the wearable system may determine that it is being worn by a user. The wearable system may determine that it is being worn using one or more sensors. As an example, the wearable system may include a proximity sensor or touch sensor that is triggered when the wearable system is placed on the user's head, and may determine that the system is being worn based on a signal from such a sensor. As another example, the wearable system may determine that it is being worn after identifying the presence of the user's eyes in an eye tracking image. In some instances, the wearable system may be able to distinguish between 1) failing to detect the user's eyes because the user has closed their eyes and 2) failing to detect the user's eyes because the user has removed the wearable system. Thus, when the wearable system detects the user's closed eyes, the wearable system may determine that the device is being worn. In some embodiments, some or all of the decisions associated with block 1502 and / or block 1504 may be similar to or substantially identical to those associated with block 1402 and / or block 1404, respectively, as described above with reference to FIG. 14 .

[0258] In block 1506, the wearable system may check whether it has been previously calibrated for any user. Block 1506, in various embodiments, may involve obtaining the IPD of the calibrated user as part of identifying whether the current user is a calibrated user (or one of the calibrated users, if there are multiple calibrated users). In some embodiments, the wearable system may implement content-based switching as discussed herein and may activate content-based switching in block 1516 if the wearable system has not been previously calibrated for any user (or any such calibration has been deleted or removed from the wearable system). The wearable system may also implement content-based switching for specific content and / or upon request by a user or content creator. In other words, a content creator or user may be able to specify or request the use of content-based switching both when the wearable system has been previously calibrated and when the wearable system is being calibrated for the current user.

[0259] In block 1508, the wearable system may estimate the current user's IPD, and in block 1510, the wearable system may accumulate eye tracking data related to the current user's IPD. The IPD data accumulated in block 1510 may be measurements of the user's interpupillary distance over time, measurements of the user's left and right centers of rotation over time, an indication of the maximum interpupillary distance measured over time, or any other relevant data. In at least some embodiments, the wearable system may be able to determine the current user's IPD in block 1508 with a relatively high accuracy (e.g., 95%) within a relatively short time frame (e.g., 5-7 seconds of eye tracking data, which may correspond to approximately 150-200 frames of eye tracking images).

[0260] In some embodiments, the wearable system may estimate the user's IPD as a particular percentile (e.g., the 95th percentile) of all IPD values ​​collected (e.g., during dynamic calibration at block 1518 and / or during IPD data accumulation at block 1510). For example, for the 95th percentile, up to 5% of the measured IPD values ​​may be excluded, and then the largest remaining measured IPD value may be determined as the user's IPD. The IPD value calculated in this manner may be referred to as IPD_95 herein. One advantage of calculating the user's IPD value in this manner is that outliers that may exceed the user's anatomical IPD may be excluded. Without being limited by theory, it is believed that, given a sufficient number of measured IPD values ​​near or at the user's anatomical IPD, the IPD_95 value accurately reflects the user's anatomical IPD. As an example, if approximately 10% of IPD measurements are close to the user's anatomical IPD, the IPD_95 value should still reflect the user's anatomical IPD value even if up to 5% of values ​​are excluded. Other IPD calculations may be used, which may involve excluding a different percentage of the maximum measured IPD value, as desired. As an example, an IPD_100 value may be used, where no IPD values ​​are excluded, or an IPD_98 value may be used, where only up to 2% of values ​​are excluded (which may be preferred in systems involving eye tracking systems that produce relatively few outlying IPD measurements). As additional examples, an IPD_90 value may be used, an IPD_85 value may be used, or other IPD values ​​may be used, where a desired percentage of measured values ​​are excluded.

[0261] In block 1512, the wearable system may determine whether the current user's estimated IPD is within a threshold IPD of the calibrated user (or, if multiple such users exist, one of the IPDs of one of the calibrated users). The threshold may be, by way of example, 0.5 mm, 1.0 mm, 1.5 mm, 2.0 mm, or 2.5 mm. As one particular example, the threshold may be 1.0 mm, which may be large enough so that a calibrated user is quickly and accurately recognized as a calibrated user, while a non-calibrated user may generally be identified as a non-calibrated user. In general, it may be preferable to mistakenly identify a non-calibrated user as a calibrated user rather than risk failing to identify a calibrated user as a calibrated user. In other words, a non-detection in user identification for calibration may be worse than a false detection because the desire for optimal performance for a calibrated user may outweigh the slight sacrifice for a non-calibrated or guest user, and because a calibrated user may be a more likely or more frequent user of a given display system.

[0262] If the current user's IPD is within the threshold of the calibrated user's IPD, the wearable system may assign the current user as the calibrated user and may load the associated calibration parameters in block 1514. As an example, the calibration parameters loaded in block 1514 may include the calibrated user's IPD, a visual optical axis offset parameter, and other available calibration parameters.

[0263] If the current user's IPD is not within the calibrated user's IPD threshold, the wearable system may assume that the current user is a guest user and may perform dynamic calibration in block 1518 (or content-based switching in block 1516). In block 1518, the wearable system may activate dynamic calibration (e.g., dynamically generate calibration parameters), which may include on-the-fly calibration based on the current user's estimated IPD, as discussed herein.

[0264] In block 1516, the wearable system may implement content-based switching under circumstances discussed herein, such as when previous calibration data is unavailable. In this block, depth plane selection may be made according to the depth associated with the virtual content being displayed, as opposed to tracking the user's convergence-divergence depth, as discussed herein. Content-based depth plane switching is further discussed with respect to Figures 16-17B.

[0265] In block 1520, the wearable system may perform depth plane switching. The depth plane switching in block 1520 may be performed using configuration parameters loaded or generated in blocks 1514, 1516, or 1518. In particular, if the current user is a calibrated user, block 1520 may perform depth plane switching according to configuration parameters generated during calibration with that user. If the current user is identified as not being a calibrating user and dynamic calibration was performed in block 1518, block 1520 may involve depth plane switching according to calibration parameters generated in block 1520 as part of the dynamic calibration. In at least some instances, the calibration parameters generated in block 1518 may be the user's IPD, and the depth plane switching in block 1520 may be based on the user's IPD. If the wearable system implements content-based switching in block 1516 (which may occur when a calibrated user is not present and / or when a content creator or user chooses to utilize content-based switching), the depth plane switching in block 1520 may be performed according to the depth of the content determined to be viewed by the user. Content-Based Switching

[0266] As described herein, the wearable system may present virtual content through a particular depth plane. As the virtual content is updated, for example, as virtual objects move and / or are replaced with different virtual objects, the wearable system may select a different depth plane at which to present the virtual content. As an additional non-limiting example, as a user of the wearable system focuses on a different virtual object or a different location along the user's field of view, the wearable system may select a different depth plane at which to present the virtual content.

[0267] An exemplary scheme for selecting a depth plane, referred to herein as content-based switching, is further discussed below with reference to FIGS. 16A-17B. In content-based switching, the wearable system may select a depth plane in which to present virtual content based on a determination of a virtual object the user is likely looking at. In some embodiments, this determination may be made depending on whether the user is fixating within a particular zone. For example, the wearable system may associate a zone with each virtual object to be presented to the user as virtual content. A zone may be, for example, a volume of space surrounding the virtual object. The volume of space may be a sphere, a cube, a hypercuboid, a pyramid, or any arbitrary three-dimensional polygon (e.g., a polyhedron). As will be explained, zones preferably do not overlap, and therefore the space encompassed by each zone may be associated with only a single virtual object.

[0268] In some embodiments, the wearable system may monitor the user's line of sight and, for example, identify a location (e.g., within the user's field of view) where the user is looking. For the example line of sight, the wearable system may identify a zone that includes the location where the user is looking. With an identified zone, in this example with only one virtual object within that zone, the wearable system may select a depth plane that corresponds to the virtual object contained within the identified zone. The wearable system may then present virtual content in the selected depth plane, which is the depth plane associated with the virtual object.

[0269] Advantageously, the wearable system may utilize higher latency eye tracking or otherwise less accurate eye tracking schemes than might be required if depth plane switching relied on accurately determining the depth of the fixation point. In some embodiments, for scenarios in which multiple virtual objects are displayed at different depths, statistical probability or spatial correlation may be utilized to distinguish content to which the user is likely to observe or attend. Thus, the wearable system may determine a fixed area or volume (e.g., rather than a precise fixation point) and select a depth plane based on the fixed area or volume. In some embodiments, weighting factors such as the last application used or the extent to which the user's gaze has changed can adjust the statistical probability and therefore the size / shape of the zone. In some embodiments, the size / shape of the zone is correlated with the statistical probability that the user is fixating within a particular volume. For example, if a large amount of uncertainty exists (e.g., if the uncertainty exceeds a threshold due to noise, low tolerances in the eye tracking system, tracking details of the most recently used application, the rate at which the user's gaze changes, etc.), the size of the zone may be increased; if not much uncertainty exists, the size of the zone may be decreased.

[0270] 16A, in some embodiments, a zone may encompass a discrete angular distance (e.g., extending from the user's eye to infinity from the user). In this example, the wearable system may therefore require accuracy sufficient only to locate the user's line of sight within a particular portion of the X and Y plane.

[0271] In some embodiments, the display system may transition from implementing content-based depth plane switching to implementing dynamic calibration-based depth plane switching. Such a transition may occur, for example, when data acquired to implement the content-based depth plane switching scheme is determined to be unreliable or when content is provided at different depth ranges spanning multiple depth planes. As described herein, the amount of uncertainty calculated in determining the zone at which the user is fixating may vary based on various factors, such as noise, tolerances of the eye tracking system, tracking details of the most recently used application, and the rate at which the user's gaze changes. In some embodiments, the display system may be configured to transition to dynamic calibration-based depth plane switching when the uncertainty (e.g., uncertainty associated with determining the location of the user's fixation point) exceeds a threshold. In some other embodiments, certain virtual content may span across multiple depth planes. For content that spans across a threshold number of depth planes (e.g., three depth planes), the display system may be configured to transition to dynamic calibration-based depth plane switching.

[0272] In some embodiments, the display system may be configured to transition from performing content-based depth plane switching to performing dynamic calibration-based depth plane switching in response to determining that uncertainty associated with the depth of virtual content exceeds a threshold. For example, the display system may determine that depth or location information regarding virtual content made available by a particular application running on the display system is relatively unreliable (e.g., the particular application indicates that the depth or location of the mixed reality virtual content relative to the user remains static even as the user's position changes or as the user moves beyond a predetermined level of position change or movement, respectively), and may thus transition to dynamic calibration-based depth plane switching. Such a transition may promote a more comfortable and / or realistic viewing experience.

[0273] While primarily described in the context of depth plane switching, it should be understood that one or more of the techniques described herein with reference to FIGS. 14 and / or 15 may be utilized in any of a variety of different display systems capable of outputting light to a user's eyes with different amounts of wavefront divergence. For example, in some embodiments, one or more of the techniques described herein with reference to FIGS. 14 and / or 15 may be utilized in a head-mounted display system including one or more variable focus elements (VFEs). For example, one or more of lenses 458, 456, 454, 452 (FIG. 4) may be VFEs as discussed herein. In these embodiments, the head-mounted display system may control the operation of its one or more VFEs in real time based, at least in part, on whether the wearer of the head-mounted display system is determined to be a calibrated user or a guest user. That is, the head-mounted display system may control or adjust the amount of wavefront divergence (the focal length of the light) through which light is output to the wearer based, at least in part, on whether the wearer of the head-mounted display system is determined to be a calibrated user or a guest user. Examples of architectures and control schemes for variable focus eyepieces are disclosed in U.S. Patent Publication Nos. 2016 / 0110920, published April 21, 2016, and 2017 / 0293145, published October 12, 2017, each of which is incorporated by reference in its entirety. Other configurations are also possible.

[0274] 16A illustrates a representation of a user's field of view 1602. The user's field of view 1602 (in the illustrated embodiment, a three-dimensional frustum) may include multiple depth planes 1604A-D extending in the z-direction from the user's eye 1606. The field of view 1602 may be separated into different zones 1608A-D. Each zone may therefore encompass a particular volume of space contained within the field of view 1602. In this example, each zone preferably encompasses a volume of space that includes all of the different depth planes 1604A-D. For example, zone 1608A may extend along the z-direction from the user's eye 1606, e.g., to infinity from the eye 1606. Along an orthogonal direction, such as the x-direction, zone 1608A may extend from the end of the field of view 1602 to the boundary line between zones 1608A and 1608B.

[0275] In the illustrated embodiment, zone 1608B includes a tree virtual object 1610. The tree virtual object 1610 is illustrated as being presented in depth plane C 1604C. For example, the tree virtual object 1610 may be associated with location information (e.g., stored on or otherwise accessible to the wearable system). As described above, this location information may be utilized to identify a three-dimensional location where the tree virtual object 1610 should be presented. As shown, the display system may also display a book as a virtual object 1612. Zone 1608C includes the book virtual object 1612. Thus, the wearable system is presenting virtual content comprising the tree virtual object 1610 and the book virtual object 1612.

[0276] The user's eye 1606 moves around the field of view 1602 and may, for example, fixate or view different locations along the field of view 1602. If the user's eye 1606 fixates a tree virtual object 1610, i.e., depth plane C, the wearable system may determine to select depth plane C 1604C for presenting virtual content. Similarly, if the user's eye 1606 fixates a book virtual object 1612, i.e., depth plane B, the wearable system may determine to select depth plane B 1604B for presenting virtual content. As illustrated in at least FIG. 14 , the wearable system may utilize different schemes to effect depth plane selection.

[0277] With regard to content-based switching, the wearable system may identify a zone that includes a location fixated by the user's eye 1606. The wearable system may then select a depth plane that corresponds to a virtual object contained within the identified zone. For example, FIG. 16A illustrates an exemplary fixation point 1614. The wearable system may determine, based on the user's eye 1606, that the user is viewing the fixation point 1614. The wearable system may then identify that the fixation point 1614 is contained within zone 1608C. Because this zone 1608C includes a book virtual object 1612, the wearable system may cause the presentation of virtual content to occur in depth plane C 1604C. Without being limited by theory, it is believed that this provides a comfortable viewing experience because the only virtual object that can be fixated within zone 1608C is the book virtual object 1612, and therefore, it would be appropriate to switch to the depth plane of the book virtual object 1612.

[0278] As a result, if the user adjusts their gaze to fixation point 1616 or 1618, the wearable system may maintain the presentation at depth plane C 1604B. However, if the user adjusts their gaze within zone 1608B, the wearable system may select depth plane C 1604C to present the virtual content. While the example of FIG. 16A includes four zones, it should be understood that fewer or more zones may be utilized. Optionally, the number of zones may be the same as the number of virtual objects, with a unique zone for each virtual object, and in some embodiments, the number of zones may vary dynamically as the number of virtual objects changes (preferably, as long as the zones can extend from the front to the back of the display frustum, with no more than one object occupying the same zone, e.g., no two or more objects generally within the same line of sight to the user). For example, two zones may be utilized in the example of FIG. 16A, which has two virtual objects that do not have overlapping line of sight to the user. Optionally, the wearable system may dynamically adjust the volume of space encompassed by each zone, for example, the volume of space may increase, decrease, or zone as the accuracy of gaze detection increases or decreases.

[0279] FIG. 16B illustrates an example, shown in perspective view, of the volume of space encompassed by each zone of FIG. 16A . As shown, each zone 1608A, 1608B, 1608C, and 1608D extends in the z-direction from the front to the back of the display frustum 1602. As illustrated on the xy axis, the zones extend vertically, segmenting or dividing the field of view along the x-axis. In some other embodiments, on the xy axis, the zones may extend horizontally and segment the field of view along the y-axis. In such embodiments, the illustrated frustum may effectively be rotated 90° on the xy plane. In still other embodiments, on the xy axis, the zones may segment or divide the field of view on both the x and y axes, thereby forming a grid on the xy axis. In all these embodiments, each zone still preferably extends from the front to the back of the display frustum 1602 (e.g., from the nearest plane to the farthest plane on which the display system may display content).

[0280] FIG. 17A illustrates another representation of a user's field of view 1602 for content-based switching. In the example of FIG. 17A, as in FIG. 16A, the user's field of view 1602 includes depth planes A-D 1604A-D. However, the volume of space associated with each virtual object differs from FIGS. 16A-B. For example, the zone 1702 within which the book virtual object 1612 is located is illustrated as encompassing an enclosed shape, such as a spherical volume of space, a cylindrical volume of space, a cube, a polyhedron, or the like. Preferably, the zone 1702 extends on the z-axis to less than the entire depth of the display frustum 1602. Advantageously, such an arrangement of zones allows for differentiation between objects that may have similar line-of-sight to the user.

[0281] Optionally, the wearable system may adjust the zones in FIG. 17A based on eye tracking accuracy exceeding one or more thresholds. For example, the size of the zones may decrease as confidence in tracking accuracy increases. As another example, it should be understood that each virtual object has an associated zone. The wearable system may adjust the zones in FIG. 17A to avoid overlapping zones. For example, if a new virtual object is to be displayed within a zone corresponding to a different virtual object, the zones for one or both virtual objects may be reduced in size to avoid overlap. For example, if book virtual object 1612 in FIG. 17A is moved in front of tree virtual object 1610 (e.g., within zone 1608A), the wearable system may adjust the zones in FIG. 17A to attach closer to the virtual objects (e.g., as illustrated in FIG. 17A) and prevent overlap.

[0282] Continuing with reference to FIG. 17A , a tree virtual object 1610 is illustrated as being contained within a first zone 1706 and a second zone 1708. Optionally, the first zone 1706 may represent a relatively small volume of space surrounding the tree virtual object 1610. The second zone 1708 may represent the current volume of space surrounding the tree virtual object 1610. For example, as the virtual object moves around within the field of view 1602, the volume of space encompassed by the zones may be adjusted (e.g., in real time). In this example, the adjustment may ensure that each zone does not overlap with any other zone. Thus, if a book virtual object 1612 moves closer to the tree virtual object 1610, the wearable system may reduce the volume of space of the zones surrounding the tree virtual object 1610, the book virtual object 1612, or both. For example, the second zone 1708 may be reduced in volume so that it is closer to the first zone 1706 .

[0283] As described herein, in content-based depth plane switching, the depth plane associated with a virtual object, rather than the fixation point, governs. An example of this is illustrated with respect to fixation point 1704. As shown, example zone 1702 of book virtual object 1612 may encompass a volume of space that includes the portion defined by depth plane B 1604B and depth plane 1604C. In one case, the wearable system determines that the user is fixating on point 1704 in depth plane C and identifies this fixation point 1704 as being contained within zone 1702. Because the depth plane associated with book virtual object 1612 governs depth plane switching, the wearable system switches to depth plane B of book virtual object 1612 rather than depth plane C of fixation point 1704. FIG. 17B illustrates an example of a perspective view of the representation of FIG. 17A .

[0284] 18 illustrates a flowchart of an example process for selecting a depth plane based on content-based switching. For convenience, process 1800 will be described as being performed by a wearable system of one or more processors (e.g., a wearable system such as wearable system 200 described above).

[0285] In block 1802, the wearable system presents virtual content at a particular depth plane. As described above, the depth planes may be utilized to provide accommodation cues to a user of the wearable system. For example, each depth plane may be associated with an amount of wavefront divergence of light presented to the user by the wearable system. The virtual content may comprise one or more virtual objects.

[0286] In block 1804, the wearable system determines a fixation point. The wearable system may utilize sensors, such as cameras, to estimate the three-dimensional location where the user is fixating. These cameras may update at a particular rate, such as 30 Hz or 60 Hz. The wearable system may determine vectors extending from the user's eyes (e.g., from the center of the eyes or pupils) and estimate the three-dimensional location where the vectors intersect. In some embodiments, the fixation point may be estimated based on IPD, where a predetermined change in IPD from maximum IPD is assumed to correlate with fixation at a particular depth plane. Additionally, optionally, the user's line of sight may be determined in addition to IPD to further locate the approximate location of the fixation point. This estimated location may have some error associated with it, and the wearable system may therefore determine a volume of space within which the fixation point for the virtual content is likely to be located.

[0287] In block 1806, the wearable system identifies a zone that includes the fixation point. As discussed with respect to Figures 16A-17B, the wearable system may associate a zone with each virtual object. For example, a zone may include a particular (e.g., single) virtual object. Preferably, zones for different virtual objects do not overlap.

[0288] At block 1808, the wearable system selects a depth plane associated with virtual content contained within the identified zone. The wearable system may identify virtual content associated with the zone identified at block 1806. The wearable system may then obtain information indicating a depth plane in which the virtual content should be presented. For example, the virtual content may be associated with location information indicating a three-dimensional location. The wearable system may then identify a depth plane associated with the three-dimensional location. This depth plane may be selected to present the virtual content.

[0289] 19 illustrates a flowchart of an example process for adjusting zones based on content-based switching. For convenience, process 1800 will be described as being implemented by a wearable system of one or more processors (e.g., a wearable system such as wearable system 200 described above).

[0290] In block 1902, the wearable system presents a virtual object. The wearable system may have zones associated with the presented virtual object, as described herein. For example, a zone may encompass a volume of space and contain a particular virtual object (e.g., a single virtual object). A zone may be any shape or polyhedron and, in some embodiments, may extend infinitely in one or more directions. Examples of zones are illustrated in Figures 16A-17B.

[0291] In block 1904, the wearable system adjusts some virtual objects or adjusts the location of the virtual objects. The wearable system may present additional virtual objects; for example, five virtual objects may be presented in block 1902. Eight virtual objects may be presented in block 1904. Optionally, the wearable system may update the location of the virtual objects. For example, the virtual object presented in block 1902 may be a bee. The virtual object may therefore progress around the user's field of view.

[0292] In block 1906, the wearable system updates the zones associated with one or more virtual objects. For examples in which additional virtual objects are presented, the virtual objects may move closer together. Because each zone may only be allowed to contain a single virtual object, in some embodiments, an increase in the number of virtual objects may require adjusting the zones. For example, FIG. 16A illustrates two virtual objects. If additional virtual objects are included, they may be contained within a zone that also contains either of the two virtual objects. Accordingly, the wearable system may adjust the zones, for example, adjust the volume of space allocated to each zone (e.g., reduce the volume of space). In this way, each zone may contain a single virtual object. For examples in which virtual objects move, the moving virtual object may move closer to another virtual object. Accordingly, the moving virtual object may extend into zones associated with other virtual objects. Similar to above, the wearable system may adjust the zones to ensure that each virtual object is contained within its own zone.

[0293] As an example of updating, the wearable system may associate a zone with the virtual object identified in block 1902. For example, the zone may resemble zones 1608A-1608D illustrated in FIG. 16A. The wearable system may adjust the zone to encompass a smaller volume of space. For example, the wearable system may update the zone to resemble zones 1702, 1706 illustrated in FIG. 17A.

[0294] As another example of an update, a zone may be similar to the zones in FIG. 17A . With reference to FIG. 17A , if the virtual book object 1612 moves closer to the virtual tree object 1610, the zone 1708 surrounding the virtual tree object 1610 may include the virtual book object 1612. Accordingly, the wearable system may update the zone 1708 to reduce the volume of space it encompasses. For example, the zone 1708 may be adjusted to become the zone 1706. As another example, the zone 1708 may be adjusted to be closer to the zone 1706. As illustrated in FIG. 17A , the zone 1706 may optionally reflect the smallest zone around the virtual tree object 1610. Computer vision for detecting objects in the environment

[0295] As discussed above, the display system may be configured to detect objects or properties thereof in the environment surrounding the user. Detection may be accomplished using various techniques, including various environmental sensors (e.g., cameras, audio sensors, temperature sensors, etc.), as discussed herein.

[0296] In some embodiments, objects present in the environment may be detected using computer vision techniques. For example, as disclosed herein, a forward-facing camera of a display system may be configured to image the surrounding environment, and the display system may be configured to perform image analysis on the images to determine the presence of objects in the surrounding environment. The display system may analyze images obtained by an outward-facing imaging system to perform scene reconstruction, event detection, video tracking, object recognition, object pose estimation, learning, indexing, motion estimation, image restoration, or the like. As another example, the display system may be configured to perform face and / or eye recognition to determine the presence and location of faces and / or human eyes within a user's field of view. One or more computer vision algorithms may be used to perform these tasks. Non-limiting examples of computer vision algorithms include Scale Invariant Feature Transform (SIFT), Speed-Up Robust Features (SURF), Orientation FAST and Rotation BRIEF (ORB), Binary Robust Invariant Scalable Keypoints (BRISK), Fast Retinal Keypoints (FREAK), Viola-Jones algorithm, Eigenfaces approach, Lucas-Kanade algorithm, Horn-Schunk algorithm, Mean-shift algorithm, visual simultaneous localization and mapping (vSLAM) techniques, sequential Bayes estimators (e.g., Kalman filter, extended Kalman filter, etc.), bundle adjustment, adaptive thresholding (and other thresholding techniques), iterative nearest neighbor (ICP), semi-global matching (SGM), semi-global block matching (SGBM), feature point histograms, various machine learning algorithms (e.g., support vector machines, k-nearest neighbor algorithms, naive Bayes, neural networks (including convolutional or deep neural networks), or other supervised / unsupervised models, etc.), etc.

[0297] One or more of these computer vision techniques may also be used in conjunction with data obtained from other environmental sensors (e.g., microphones, etc.) to detect and determine various properties of objects detected by the sensors.

[0298] As discussed herein, objects within the surrounding environment may be detected based on one or more criteria. When the display system detects the presence or absence of a criterion within the surrounding environment using computer vision algorithms or using data received from one or more sensor assemblies (which may or may not be part of the display system), the display system may then signal the presence of the object. Machine Learning

[0299] Various machine learning algorithms may be used to learn to identify the presence of objects in the surrounding environment. Once trained, the machine learning algorithms may be stored by the display system. Some examples of machine learning algorithms may include supervised or unsupervised machine learning algorithms, including regression algorithms (e.g., ordinary least squares regression, etc.), instance-based algorithms (e.g., learning vector quantization, etc.), decision tree algorithms (e.g., classification and regression trees, etc.), Bayesian algorithms (e.g., naive Bayes, etc.), clustering algorithms (e.g., k-means clustering, etc.), association rule learning algorithms (e.g., a priori algorithm, etc.), artificial neural network algorithms (e.g., Perceptron, etc.), deep learning algorithms (e.g., deep Boltzmann machines, i.e., deep neural networks, etc.), dimensionality reduction algorithms (e.g., principal component analysis, etc.), ensemble algorithms (e.g., stacked generalization, etc.), or other machine learning algorithms. In some embodiments, individual models may be customized for individual datasets. For example, the wearable device may generate or store a base model. The base model may be used as a starting point to generate additional models specific to a data type (e.g., a particular user), a data set (e.g., a set of additional images acquired), a conditional situation, or other variations. In some embodiments, the display system can be configured to utilize multiple techniques to generate models for analysis of aggregated data. Other techniques may include using predefined thresholds or data values.

[0300] The criteria for detecting an object may include one or more threshold conditions. If analysis of the data obtained by the environmental sensors indicates that the threshold condition has been reached, the display system may provide a signal indicating the detection of the presence of an object in the surrounding environment. The threshold condition may involve a quantitative and / or qualitative measurement. For example, the threshold condition may include a score or percentage associated with the likelihood that a reflection and / or object is present in the environment. The display system may compare the score calculated from the environmental sensor data to the threshold score. If the score is higher than the threshold level, the display system may detect the presence of the reflection and / or object. In some other embodiments, the display system may signal the presence of an object in the environment if the score is lower than the threshold. In some embodiments, the threshold condition may be determined based on the user's emotional state and / or the user's interaction with the surrounding environment.

[0301] In some embodiments, threshold conditions, machine learning algorithms, or computer vision algorithms may be specialized for a specific context. For example, in a diagnostic context, a computer vision algorithm may be specialized to detect certain responses to stimuli. As another example, a display system may run a facial recognition algorithm and / or an event tracing algorithm to sense a user's reaction to a stimuli, as discussed herein.

[0302] It should be understood that each of the processes, methods, and algorithms described herein and / or depicted in the accompanying figures may be embodied in code modules, and thereby fully or partially automated, executed by one or more physical computing systems, hardware computer processors, application-specific circuits, and / or electronic hardware configured to execute specific computer instructions. For example, a computing system may include a general-purpose computer (e.g., a server) or a special-purpose computer, special-purpose circuitry, etc., programmed with specific computer instructions. Code modules may be compiled and linked into an executable program, installed within a dynamic link library, or written in an interpreted programming language. In some implementations, particular operations and methods may be performed by circuitry specific to a given function.

[0303] Furthermore, certain implementations of the functionality of the present disclosure may be sufficiently mathematically, computationally, or technically complex that special-purpose hardware (utilizing appropriate specialized executable instructions) or one or more physical computing devices may be required to perform the functionality, e.g., due to the amount or complexity of the calculations involved or to provide results in substantially real time. For example, a video may contain many frames, each frame may have millions of pixels, and specifically programmed computer hardware may be required to process the video data to provide the desired image processing task or application in a commercially reasonable amount of time.

[0304] Code modules or any type of data may be stored on any type of non-transitory computer-readable medium, such as physical computer storage, including hard drives, solid-state memory, random access memory (RAM), read-only memory (ROM), optical disks, volatile or non-volatile storage devices, combinations of the same, and / or the like. In some embodiments, the non-transitory computer-readable medium may be part of one or more of the local processing and data module (140), the remote processing module (150), and the remote data repository (160). The methods and modules (or data) may also be transmitted as a data signal generated over various computer-readable transmission media, including wireless-based and wired / cable-based media, (e.g., as part of a carrier wave or other analog or digital propagated signal), and may take various forms (e.g., as part of a single or multiplexed analog signal, or as multiple discrete digital packets or frames). The results of the disclosed processes or process steps may be stored, persistently or otherwise, in any type of non-transitory tangible computer storage device or communicated via a computer-readable transmission medium.

[0305] Any process, block, state, step, or functionality in the flow diagrams described herein and / or depicted in the accompanying figures should be understood as potentially representing a code module, segment, or portion of code, comprising one or more executable instructions for implementing a specific function (e.g., logical or arithmetic) or step in the process. Various processes, blocks, states, steps, or functionality may be combined, rearranged, added, deleted, modified, or otherwise changed from the illustrative examples provided herein. In some embodiments, additional or different computing systems or code modules may perform some or all of the functionality described herein. The methods and processes described herein are also not limited to any particular sequence, and the blocks, steps, or states associated therewith can be performed in other suitable sequences, e.g., serially, in parallel, or in some other manner. Tasks or events may be added to or removed from the disclosed exemplary embodiments. Furthermore, the separation of various system components in the implementations described herein is for illustrative purposes and should not be understood as requiring such separation in all implementations. It should be understood that the described program components, methods, and systems may generally be integrated together in a single computer product or packaged in multiple computer products. Many implementation variations are possible. Other considerations

[0306] Each of the processes, methods, and algorithms described herein and / or depicted in the accompanying figures may be embodied in code modules executed by one or more physical computing systems, hardware computer processors, application-specific circuits, and / or electronic hardware configured to execute specific computer instructions, and thereby may be fully or partially automated. For example, a computing system may include a general-purpose computer (e.g., a server) or a special-purpose computer programmed with specific computer instructions, special-purpose circuitry, etc. Code modules may be compiled and linked into an executable program, installed within a dynamic link library, or written in an interpreted programming language. In some implementations, particular operations and methods may be performed by circuitry specific to a given function.

[0307] Furthermore, certain implementations of the functionality of the present disclosure may be sufficiently mathematically, computationally, or technically complex that special-purpose hardware (utilizing appropriate specialized executable instructions) or one or more physical computing devices may be required to perform the functionality, e.g., due to the amount or complexity of the calculations involved or to provide results in substantially real time. For example, a moving picture or video may contain many frames, each frame having millions of pixels, and specifically programmed computer hardware is required to process the video data to provide the desired image processing task or application in a commercially reasonable amount of time.

[0308] Code modules or any type of data may be stored on any type of non-transitory computer-readable medium, such as physical computer storage devices, including hard drives, solid-state memory, random-access memory (RAM), read-only memory (ROM), optical disks, volatile or non-volatile storage devices, combinations of the same, and / or the like. The methods and modules (or data) may also be transmitted as data signals (e.g., as part of a carrier wave or other analog or digital propagated signal) generated over various computer-readable transmission media, including wireless-based and wired / cable-based media, and may take various forms (e.g., as part of a single or multiplexed analog signal, or as multiple discrete digital packets or frames). The results of the disclosed processes or process steps may be stored, persistently or otherwise, in any type of non-transitory tangible computer storage device or communicated via a computer-readable transmission medium.

[0309] Any process, block, state, step, or functionality in the flow diagrams described herein and / or depicted in the accompanying figures should be understood as potentially representing a code module, segment, or portion of code, comprising one or more executable instructions for implementing a specific function (e.g., logical or arithmetic) or step in the process. Various processes, blocks, states, steps, or functionality can be combined, rearranged, added, deleted, modified, or otherwise changed from the illustrative examples provided herein. In some embodiments, additional or different computing systems or code modules may perform some or all of the functionality described herein. The methods and processes described herein are also not limited to any particular sequence, and the blocks, steps, or states associated therewith can be performed in other suitable sequences, e.g., serially, in parallel, or in some other manner. Tasks or events may be added to or removed from the disclosed exemplary embodiments. Furthermore, the separation of various system components in the implementations described herein is for illustrative purposes and should not be understood as requiring such separation in all implementations. It should be understood that the described program components, methods, and systems may generally be integrated together in a single computer product or packaged in multiple computer products. Many implementation variations are possible.

[0310] The processes, methods, and systems can be implemented in a network (or distributed) computing environment. Network environments include enterprise-wide computer networks, intranets, local area networks (LANs), wide area networks (WANs), personal area networks (PANs), cloud computing networks, crowdsourced computing networks, the Internet, and the World Wide Web. The network can be a wired or wireless network or any other type of communication network.

[0311] The systems and methods of the present disclosure each have several innovative aspects, none of which is solely responsible for or required for the desirable attributes disclosed herein. The various features and processes described above may be used independently of one another or combined in various ways. All possible combinations and subcombinations are intended to fall within the scope of the present disclosure. Various modifications of the implementations described in the present disclosure will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other implementations without departing from the spirit or scope of the present disclosure. Therefore, the claims are not intended to be limited to the implementations shown herein, but are to be accorded the widest scope consistent with the present disclosure, the principles, and novel features disclosed herein.

[0312] Certain features described herein in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features described in the context of a single implementation can also be implemented separately in multiple implementations or in any suitable subcombination. Furthermore, while features may be described above as operative in a combination and may even be initially claimed as such, one or more features from the claimed combination may, in some cases, be deleted from the combination, and the claimed combination may be directed to a subcombination or a variation of the subcombination. No single feature or group of features is required or essential to every embodiment.

[0313] Conditional statements used herein, such as "can," "could," "might," "may," "eg," and the like, among others, are intended to generally convey that certain embodiments include certain features, elements, or steps, while other embodiments do not, unless specifically stated otherwise or understood otherwise within the context as used. Thus, such conditional statements are not generally intended to agree that features, elements, and / or steps are in any way required for one or more embodiments, or that one or more embodiments necessarily include logic for determining whether those features, elements, and / or steps should be included or performed in any particular embodiment, with or without authorial input or prompting. The terms "comprising," "including," "having," and the like, are synonymous and used inclusively in a non-limiting manner and do not exclude additional elements, features, acts, operations, etc. Also, the term "or" is used in its inclusive sense (and not its exclusive sense), so, for example, when used to connect a list of elements, the term "or" means one, some, or all of the elements in the list. Additionally, the articles "a," "an," and "the," as used in this application and the appended claims, unless otherwise specified, shall be construed to mean "one or more" or "at least one."

[0314] As used herein, a phrase referring to "at least one of" a list of items refers to any combination of those items, including single elements. As an example, "at least one of A, B, or C" is intended to cover A, B, C, A and B, A and C, B and C, and A, B, and C. Transitional phrases such as "at least one of X, Y, and Z" are generally understood differently in the context in which they are used to convey that an item, term, etc. may be at least one of X, Y, or Z, unless specifically stated otherwise. Thus, such transitional phrases generally are not intended to suggest that an embodiment requires that at least one of X, at least one of Y, and at least one of Z, respectively, be present.

[0315] Similarly, while operations may be depicted in the figures in a particular order, it should be recognized that such operations need not be performed in the particular order shown, or in sequential order, or that all of the depicted operations need not be performed to achieve desirable results. Furthermore, the figures may diagrammatically depict one or more example processes in the form of a flowchart. However, other operations not depicted may be incorporated within the diagrammatically depicted example methods and processes. For example, one or more additional operations may be performed before, after, simultaneously with, or between any of the depicted operations. Additionally, operations may be rearranged or reordered in other implementations. In some situations, multitasking and parallel processing may be advantageous. Furthermore, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems may generally be integrated together in a single software product or packaged in multiple software products. Additionally, other implementations are within the scope of the following claims. In some cases, the actions recited in the claims may be performed in a different order and still achieve desirable results.

Claims

1. 1. An augmented reality display system, comprising: a head-mounted display configured to present virtual content on multiple depth planes by outputting image light to a wearer; at least one processor communicatively coupled to the head mounted display; wherein the at least one processor is configured to access a map of the real world including respective locations of a plurality of virtual objects, each of the virtual objects having a separate associated depth plane, and wherein the at least one processor is configured to: determining a virtual object that the wearer is most likely to be viewing by identifying a virtual object that has a greatest amount of visual change within the wearer's field of view, the greatest amount of visual change comprising a greatest amount of movement within the field of view; Retrieving associated depth information for the virtual object; switching the head mounted display to output the image light in a depth plane among the plurality of depth planes that corresponds to the associated depth information for the virtual object; 1. An augmented reality display system configured to perform content-based depth plane switching by:

2. 2. The augmented reality display system of claim 1, wherein the augmented reality display system is configured to determine whether the wearer is a calibrated user or a guest user by determining an interpupillary distance of the wearer, and wherein the content-based depth plane switching is performed based on determining that the wearer is a guest user.

3. 10. The augmented reality display system of claim 1, wherein the augmented reality display system is configured to determine that the wearer is most likely viewing the virtual object by determining that the wearer's eyes are fixating within a volume that encompasses the virtual object.

4. The augmented reality display system includes: determining an uncertainty associated with determining a position of the wearer's fixation point; Varying the size of the volume containing the virtual object based on the uncertainty; and The augmented reality display system of claim 3 configured to:

5. 10. The augmented reality display system of claim 1, wherein the augmented reality display system is configured to transition to dynamic calibration of the wearer based on uncertainty associated with determining a position of the wearer's fixation point exceeding a threshold.

6. 10. The augmented reality display system of claim 1, wherein the augmented reality display system is configured to transition to dynamic calibration of the wearer based on uncertainty associated with the location of the virtual object exceeding a threshold.

7. 2. The augmented reality display system of claim 1, wherein the head-mounted display comprises a plurality of waveguides forming a waveguide stack, one or more of the waveguides configured to output image light to the wearer's eyes having a different amount of wavefront divergence than one or more other of the waveguides, the different amounts of wavefront divergence corresponding to different depth planes at different distances away from the wearer, and the head-mounted display configured to output image light from waveguides for different depth planes at different times.

8. The augmented reality display system of claim 1 , wherein the content-based depth plane switching is performed without utilizing pre-existing eye-tracking calibration information for the wearer.

9. The augmented reality display system of claim 1 , wherein the content-based depth plane switching is performed without performing eye-tracking calibration for the wearer.

10. 10. The augmented reality display system of claim 1, wherein the content-based depth plane switching is performed without utilizing existing eye tracking calibration information for the wearer and without performing eye tracking calibration for the wearer.

11. 1. A method for presenting virtual content using a head-mounted display, comprising: determining, in response to determining that the head mounted display will perform content-based depth plane switching for the virtual content to be presented to a wearer of the head mounted display, a virtual object that is most likely to be seen by the wearer by identifying a virtual object that has a greatest amount of visual change within a field of view of the wearer, the greatest amount of visual change comprising a greatest amount of movement within the field of view, the head mounted display being configured to present the virtual content on a plurality of depth planes by outputting image light to the wearer; Retrieving associated depth information for the virtual object; switching the head mounted display to output the image light at a particular depth plane among the plurality of depth planes that corresponds to the associated depth information for the virtual object; A method comprising:

12. 12. The method of claim 11, further comprising determining whether the wearer is a calibrated user or a guest user by determining an interpupillary distance of the wearer, and wherein the content-based depth plane switching is performed based on determining that the wearer is a guest user.

13. 12. The method of claim 11, wherein determining that the wearer is most likely looking at the virtual object comprises determining that the wearer's eyes are fixating within a volume that encompasses the virtual object.

14. determining an uncertainty associated with determining a position of the wearer's fixation point; Varying the size of the volume containing the virtual object based on the uncertainty; and 14. The method of claim 13, further comprising:

15. 12. The method of claim 11, further comprising transitioning to dynamic calibration of the wearer based on an uncertainty associated with determining a location of a fixation point for the wearer exceeding a threshold.

16. The method of claim 11 , further comprising transitioning to dynamic calibration of the wearer based on an uncertainty associated with the location of the virtual object exceeding a threshold.

17. The method of claim 11 , wherein the content-based depth plane switching is performed without utilizing pre-existing eye-tracking calibration information for the wearer.

18. The method of claim 11 , wherein the content-based depth plane switching is performed without performing eye-tracking calibration for the wearer.

19. 12. The method of claim 11, wherein the content-based depth plane switching is performed without utilizing existing eye tracking calibration information for the wearer and without performing eye tracking calibration for the wearer.

Citation Information

Patent Citations

  • Head-mounted type display device, method of controlling head-mounted type display device, and computer program

    JP2017091433A

  • Virtual and augmented reality systems and methods

    US20170276948A1

  • Visual aura around field of view

    US20170309079A1