SYSTEM AND METHOD FOR OPERATING A HEAD MOUNTED DISPLAY SYSTEM BASED ON USER IDENTIFICATION - Patent application
By integrating the display, camera and processor in the wearable system, combining IRIS scanning technology to determine the user's identity and adjusting the wavefront dispersion of image light, the problem of unnatural and depth-surface switching of virtual images in the prior art is solved, and a more natural and comfortable virtual reality experience is achieved.
Patent Information
- Application Number
- JP2022534697
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-12-09
- Filing Date
- 2020-12-09
- Publication Date
- 2025-05-14
- Estimated Expiration
- 2040-12-09
AI Technical Summary
Existing virtual reality, augmented and mixed reality technologies are difficult to provide natural and comfortable virtual image presentation, especially with challenges in user identity recognition and depth-face switching.
A wearable system is adopted, including a display, a camera and a processor, and the user identity is determined through IRIS scanning or authentication, and the wavefront dispersion of image light output by the display is adjusted according to the identification results to achieve the presentation of different depth surfaces.
Improves the natural and comfortable presentation of virtual images, enhances the user experience, and provides better solutions in terms of depth-surface switching and user identity recognition.
Smart Images

Figure 0007676400000001 
Figure 0007676400000002 
Figure 0007676400000003
Abstract
Description
[Technical field]
[0001] (CROSS REFERENCE TO RELATED APPLICATIONS) This application claims priority under 35 U.S.C. §119(e) to U.S. Provisional Application No. 62 / 945,517, filed December 9, 2019, and entitled “SYSTEMS AND METHODS FOR OPERATING A HEAD-MOUNTED DISPLAY SYSTEM BASED ON USER IDENTITY,” which is incorporated by reference in its entirety herein.
[0002] (Incorporated by reference) This application incorporates by reference the following patent applications and publications: U.S. Patent Application No. 14 / 555,585, filed November 27, 2014, and published on July 23, 2015 as U.S. Patent Publication No. 2015 / 0205126; U.S. Patent Application No. 14 / 690,401, filed April 18, 2015, and published on October 22, 2015 as U.S. Patent Publication No. 2015 / 0302652; U.S. Patent Application No. 14 / 2016, filed March 14, 2014, and published on August 16, 2016 as U.S. Patent Publication No. 2015 / 0205126; No. 12,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 as U.S. Patent Publication No. 2017 / 0109580; U.S. Patent Application No. 15 / 291,929, filed January 17, 2017, published on July 20, 2017 as U.S. Patent Publication No. 2017 / 0206412 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 January 17, 2018; U.S. Provisional Application No. 62 / 618,559, filed January 17, 2019; U.S. Patent Application No. 16 / 250,931, filed May 6, 2015, published as U.S. Patent Publication No. 2016 / 0110920 on April 21, 2016; U.S. Patent Application No. 14 / 705,741, filed October 1, 2017; U.S. Patent Publication No. 2017 / 0293145, filed May 30, 2018, published December 6, 2018 as U.S. Patent Publication No. 2018 / 0348861; U.S. Patent Application No. 15 / 993,371, filed May 14, 2016, published December 8, 2016 as U.S. Patent Publication No. 2016 / 0358181; U.S. Patent Application No. 15 / 155,013, filed March 23, 2018, published September 27, 2018 as U.S. Patent Publication No. 2018 / 0276467; U.S. Patent Application No. 15 / 934,No. 941, U.S. Provisional Application No. 62 / 644,321, filed March 16, 2018, U.S. Provisional Application No. 16 / 251,017, filed January 17, 2019, U.S. Provisional Application No. 62 / 702,866, filed July 24, 2018, International Patent Application No. PCT / US2019 / 043096, filed July 23, 2019, U.S. Provisional Application No. 62 / 714,649, filed August 3, 2018, U.S. Provisional Application No. 62 / 875,474, filed July 17, 2019, and U.S. Provisional Application No. 16 / 530,904, filed August 2, 2019, each of which is incorporated in its entirety.
[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 user identity. [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 may 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" refers to the merging of the real and virtual worlds to generate new environments in which physical and virtual objects coexist and interact in real time.
[0005] The human visual perception system is highly complex, making it difficult to produce VR, AR, or MR technologies that facilitate comfortable, natural-feeling, and rich presentation 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]
[0006] 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.
[0007] The wearable system may include one or more displays, one or more cameras, and one or more processors. The one or more displays may be configured to present virtual image content to one or both eyes of the user via image light, the one or more displays configured for outputting image light to one or both eyes of the user, the image light having different wavefront divergences corresponding to different depth planes at different distances away from the user. The one or more cameras may be configured for capturing images of one or both eyes of the user. The one or more processors may be configured for acquiring one or more images of the user's eye or eyes as captured by the one or more cameras; generating an indication based on the one or more acquired images of the user's eye or eyes, the generated indication indicating whether the user is identified; and controlling one or more displays to output image light to the user's eye or eyes, the image light having different wavefront divergence based, at least in part, on the generated indication indicating whether the user is identified.
[0008] In some system embodiments, generating an indication of whether the user is identified may include performing one or more iris scanning operations or one or more iris authentication operations.
[0009] In some system embodiments, the generated indication indicates that the user is identified as a registered user, and in response to the generated indication indicating that the user is identified as a registered user, the one or more processors may be configured to perform the steps of controlling the one or more displays to output image light to one or both eyes of the user, including the steps of controlling the one or more displays to output image light to one or both eyes of the user, the image light having different wavefront divergence based, at least in part, on settings associated with the registered user.
[0010] In some system embodiments, the generated indication indicates that the user is not identified as a registered user, and in response to the generated indication indicating that the user is not identified as a registered user, the one or more processors may be configured to perform the steps of controlling the one or more displays to output image light to one or both eyes of the user, including the step of controlling the one or more displays to output image light to one or both eyes of the user, wherein the image light has different wavefront divergence based, at least in part, on a set of default settings.
[0011] In some system embodiments, the generated indication indicates that the user is not identified as a registered user, and in response to the generated indication indicating that the user is not identified as a registered user, the one or more processors may be configured for performing one or more sets of operations to enroll the user in iris recognition or generate a calibration profile for the user, and determining a setting for the user based, at least in part, on information obtained through performing the one or more sets of operations. Controlling the one or more displays to output image light to one or both eyes of the user may include controlling the one or more displays to output image light to one or both eyes of the user, the image light having different wavefront divergence based, at least in part, on the setting determined for the user.
[0012] In some system embodiments, the one or more processors may be configured for controlling one or more displays to present the virtual target to the user. Acquiring one or more images of the user's eye or eyes as captured by the one or more cameras may include acquiring one or more images of the user's eye or eyes as captured by the one or more cameras while the virtual target is presented to the user.
[0013] In some system embodiments, the one or more processors may be configured for performing one or more operations to attempt to improve the accuracy or reliability of the user identification in generating an indication of whether the user is identified.
[0014] The method may include presenting virtual image content via image light to one or both eyes of a user by one or more displays, the one or more displays configured to output image light to one or both eyes of the user, the image light having different wavefront divergences corresponding to different depth planes at different distances away from the user. The method may include capturing an image of the user's eye or eyes by one or more cameras, and acquiring one or more images of the user's eye or eyes as captured by the one or more cameras. The method may include generating an indication based on the one or more acquired images of the user's eye or eyes, the generated indication indicating whether the user is identified, and controlling the one or more displays to output image light to one or both eyes of the user, the image light having different wavefront divergences based, at least in part, on the generated indication indicating whether the user is identified.
[0015] In some method embodiments, generating an indication of whether the user is identified may include performing one or more iris scanning operations or one or more iris authentication operations.
[0016] In some method embodiments, the generated indication indicates that the user is identified as a registered user. The method may include, in response to the generated indication indicating that the user is identified as a registered user, performing the steps of controlling the one or more displays to output image light to one or both eyes of the user, the image light having different wavefront divergence based, at least in part, on a setting associated with the registered user.
[0017] In some method embodiments, the generated indication indicates that the user is not identified as a registered user. The method may include, in response to the generated indication indicating that the user is not identified as a registered user, performing the steps of controlling the one or more displays to output image light to one or both eyes of the user, the image light having different wavefront divergence based, at least in part, on a set of default settings.
[0018] In some method embodiments, the generated indication indicates that the user is not identified as a registered user. The method may include performing one or more sets of operations to enroll the user in iris recognition or generate a calibration profile for the user in response to the generated indication indicating that the user is not identified as a registered user, and determining a setting for the user based at least in part on information obtained through performing the one or more sets of operations. Controlling the one or more displays to output image light to one or both eyes of the user may include controlling the one or more displays to output image light to one or both eyes of the user, the image light having different wavefront divergence based at least in part on the setting determined for the user.
[0019] In some method embodiments, the method may include controlling one or more displays to present a virtual target to the user. Acquiring one or more images of the user's eye or eyes as captured by one or more cameras may include acquiring one or more images of the user's eye or eyes as captured by the one or more cameras while the virtual target is presented to the user.
[0020] In some method embodiments, the method may include, upon generating an indication of whether the user is identified, performing one or more actions to attempt to improve the accuracy or reliability of the user identification.
[0021] The non-transitory computer-readable medium may store instructions that, when executed by one or more processors of the wearable system, cause the wearable system to perform a method. The method may include presenting virtual image content to one or both eyes of a user via image light by one or more displays of the wearable system, the one or more displays being configured to output image light to one or both eyes of the user, the image light having different wavefront divergences corresponding to different depth planes at different distances away from the user. The method may include capturing an image of the user's eye or eyes by one or more cameras of the wearable system, and obtaining the one or more images of the user's eye or eyes as captured by the one or more cameras. The method may include generating an indication based on one or more captured images of the user's eye or eyes, the generated indication indicating whether the user is identified, and controlling one or more displays to output image light to the user's eye or eyes, the image light having different wavefront divergence based, at least in part, on the generated indication indicating whether the user is identified.
[0022] In some non-transitory computer-readable medium embodiments, generating an indication of whether the user is identified may include performing one or more iris scanning operations or one or more iris authentication operations.
[0023] In some non-transitory computer-readable medium embodiments, the generated indication indicates that the user is identified as a registered user. The method may include, in response to the generated indication indicating that the user is identified as a registered user, performing the steps of controlling the one or more displays to output image light to one or both eyes of the user, the image light having different wavefront divergence based, at least in part, on a setting associated with the registered user.
[0024] In some non-transitory computer-readable medium embodiments, the generated indication indicates that the user is not identified as a registered user. The method may include, in response to the generated indication indicating that the user is not identified as a registered user, performing the steps of controlling the one or more displays to output image light to one or both eyes of the user, the image light having different wavefront divergence based, at least in part, on a set of default settings.
[0025] In some non-transitory computer-readable medium embodiments, the generated indication indicates that the user is not identified as a registered user. The method may include performing one or more sets of operations to enroll the user in iris recognition or generate a calibration profile for the user in response to the generated indication indicating that the user is not identified as a registered user, and determining a setting for the user based at least in part on information obtained through performing the one or more sets of operations. Controlling the one or more displays to output image light to one or both eyes of the user may include controlling the one or more displays to output image light to one or both eyes of the user, the image light having different wavefront divergence based at least in part on the setting determined for the user.
[0026] In some non-transitory computer readable medium embodiments, the method may include controlling one or more displays to present a virtual target to the user. Acquiring one or more images of the user's eye or eyes as captured by one or more cameras may include acquiring one or more images of the user's eye or eyes as captured by the one or more cameras while the virtual target is presented to the user. The present invention provides, for example, the following: (Item 1) A wearable system, comprising: one or more displays configured to present virtual image content to one or both eyes of a user via image light, the one or more displays configured to output the image light to one or both eyes of the user, the image light having different wavefront divergences corresponding to different depth planes at different distances away from the user; one or more cameras configured to capture images of one or both eyes of the user; One or more processors, obtaining one or more images of one or both eyes of the user as captured by the one or more cameras; generating an indication based on the one or more captured images of the user's eye or eyes, the generated indication indicating whether the user is identified; and controlling the one or more displays to output the image light to one or both eyes of the user, the image light having the different wavefront divergence based, at least in part, on the generated indication of whether the user is identified; one or more processors configured to A wearable system comprising: (Item 2) 2. The wearable system of claim 1, wherein generating the indication of whether the user is identified includes performing one or more iris scanning operations or one or more iris authentication operations. (Item 3) the generated indication indicates that the user is identified as a registered user; In response to the generated indication indicating that the user is identified as a registered user, the one or more processors: controlling the one or more displays to output the image light to one or both eyes of the user, the image light having the different wavefront divergence based, at least in part, on a setting associated with the registered user; Item 2. The wearable system of item 1, configured to control the one or more displays to include and output image light to one or both eyes of the user. (Item 4) the generated indication indicates that the user is not identified as a registered user; In response to the generated indication indicating that the user is not identified as a registered user, the one or more processors: controlling the one or more displays to output the image light to one or both eyes of the user, the image light having the different wavefront divergence based, at least in part, on a set of default settings; and configured to control the one or more displays to output the image light to one or both eyes of the user, Item 1. The wearable system according to item 1. (Item 5) the generated indication indicates that the user is not identified as a registered user; In response to the generated indication indicating that the user is not identified as a registered user, the one or more processors: performing one or more sets of operations to enroll the user in iris recognition or generate a calibration profile for the user; determining a setting for the user based, at least in part, on information obtained through performing one or more sets of actions; configured to: controlling the one or more displays to output image light to one or both eyes of the user includes controlling the one or more displays to output the image light to one or both eyes of the user, the image light having the different wavefront divergence based, at least in part, on a setting determined for the user. Item 1. The wearable system according to item 1. (Item 6) The one or more processors: configured to control the one or more displays to present a virtual target to the user; obtaining one or more images of one or both eyes of the user as captured by the one or more cameras includes obtaining one or more images of one or both eyes of the user as captured by the one or more cameras while the virtual target is presented to the user. Item 1. The wearable system according to item 1. (Item 7) The one or more processors: configured, upon generating the indication of whether the user is identified, to perform one or more actions to attempt to improve the accuracy or reliability of user identification. Item 7. The wearable system according to item 6. (Item 8) 1. A method comprising: presenting virtual image content via image light to one or both eyes of a user by one or more displays, the one or more displays being configured to output the image light to one or both eyes of the user, the image light having different wavefront divergences corresponding to different depth planes at different distances away from the user; capturing an image of one or both eyes of the user with one or more cameras; obtaining one or more images of one or both eyes of the user as captured by the one or more cameras; generating an indication based on the one or more captured images of the user's eye or eyes, the generated indication indicating whether the user is identified; and controlling the one or more displays to output the image light to one or both eyes of the user, the image light having the different wavefront divergence based, at least in part, on the generated indication of whether the user is identified; A method comprising: (Item 9) 9. The method of claim 8, wherein generating the indication of whether the user is identified includes performing one or more iris scanning operations or one or more iris authentication operations. (Item 10) the generated indication indicates that the user is identified as a registered user; The method further comprises, in response to the generated indication indicating that the user is identified as a registered user, controlling the one or more displays to output the image light to one or both eyes of the user, the image light having the different wavefront divergence based, at least in part, on a setting associated with the registered user; and controlling the one or more displays to include outputting image light to one or both eyes of the user. The method according to item 8. (Item 11) the generated indication indicates that the user is not identified as a registered user; The method further comprises, in response to the generated indication indicating that the user is not identified as a registered user, controlling the one or more displays to output the image light to one or both eyes of the user, the image light having the different wavefront divergence based, at least in part, on a set of default settings; and controlling the one or more displays to include outputting the image light to one or both eyes of the user. The method according to item 8. (Item 12) the generated indication indicates that the user is not identified as a registered user; The method further comprises, in response to the generated indication indicating that the user is not identified as a registered user, performing one or more sets of operations to enroll the user in iris recognition or generate a calibration profile for the user; determining a setting for the user based, at least in part, on information obtained through performing one or more sets of actions; Including, controlling the one or more displays to output image light to one or both eyes of the user includes controlling the one or more displays to output the image light to one or both eyes of the user, the image light having the different wavefront divergence based, at least in part, on a setting determined for the user. The method according to item 8. (Item 13) The method comprises: controlling the one or more displays to present a virtual target to the user; obtaining one or more images of one or both eyes of the user as captured by the one or more cameras includes obtaining one or more images of one or both eyes of the user as captured by the one or more cameras while the virtual target is presented to the user. The method according to item 8. (Item 14) The method comprises: performing one or more actions in generating the indication of whether the user is identified to attempt to improve the accuracy or reliability of user identification. Item 14. The method according to item 13. (Item 15) A non-transitory computer readable medium having instructions stored thereon that, when executed by one or more processors of a wearable system, cause the wearable system to perform a method, the method comprising: presenting virtual image content to one or both eyes of a user via image light by one or more displays of the wearable system, the one or more displays being configured to output the image light to one or both eyes of the user, the image light having different wavefront divergences corresponding to different depth planes at different distances away from the user; capturing an image of one or both eyes of the user with one or more cameras of the wearable system; obtaining one or more images of one or both eyes of the user as captured by the one or more cameras; generating an indication based on the one or more captured images of the user's eye or eyes, the generated indication indicating whether the user is identified; and controlling the one or more displays to output the image light to one or both eyes of the user, the image light having the different wavefront divergence based, at least in part, on the generated indication of whether the user is identified; 16. A non-transitory computer readable medium comprising: (Item 16) Item 16. The non-transitory computer-readable medium of item 15, wherein generating the indication of whether the user is identified includes performing one or more iris scanning operations or one or more iris authentication operations. (Item 17) the generated indication indicates that the user is identified as a registered user; The method further comprises, in response to the generated indication indicating that the user is identified as a registered user, controlling the one or more displays to output the image light to one or both eyes of the user, the image light having the different wavefront divergence based, at least in part, on a setting associated with the registered user; and controlling the one or more displays to include outputting image light to one or both eyes of the user. Item 16. The non-transitory computer-readable medium of item 15. (Item 18) the generated indication indicates that the user is not identified as a registered user; The method further comprises, in response to the generated indication indicating that the user is not identified as a registered user, controlling the one or more displays to output the image light to one or both eyes of the user, the image light having the different wavefront divergence based, at least in part, on a set of default settings; and controlling the one or more displays to include outputting the image light to one or both eyes of the user. Item 16. The non-transitory computer-readable medium of item 15. (Item 19) the generated indication indicates that the user is not identified as a registered user; The method further comprises, in response to the generated indication indicating that the user is not identified as a registered user, performing one or more sets of operations to enroll the user in iris recognition or generate a calibration profile for the user; determining a setting for the user based, at least in part, on information obtained through performing one or more sets of actions; Including, controlling the one or more displays to output image light to one or both eyes of the user includes controlling the one or more displays to output the image light to one or both eyes of the user, the image light having the different wavefront divergence based, at least in part, on a setting determined for the user. Item 16. The non-transitory computer-readable medium of item 15. (Item 20) The method comprises: controlling the one or more displays to present a virtual target to the user; obtaining one or more images of one or both eyes of the user as captured by the one or more cameras includes obtaining one or more images of one or both eyes of the user as captured by the one or more cameras while the virtual target is presented to the user. Item 16. The non-transitory computer-readable medium of item 15. [Brief description of the drawings]
[0027] [Figure 1] FIG. 1 depicts an illustration of a mixed reality scenario involving a virtual reality object and a physical object viewed by a person.
[0028] [Diagram 2] FIG. 2 illustrates diagrammatically an embodiment of a wearable system.
[0029] [Diagram 3]FIG. 3 diagrammatically illustrates example components of a wearable system.
[0030] [Figure 4] FIG. 4 diagrammatically illustrates an example of a waveguide stack of a wearable device for outputting image information to a user.
[0031] [Diagram 5] FIG. 5 diagrammatically illustrates an embodiment of an eye and an exemplary coordinate system for determining the eye pose of the eye.
[0032] [Figure 6] FIG. 6 is a schematic diagram of a wearable system including an eye tracking system.
[0033] [Figure 7A] FIG. 7A is a block diagram of a wearable system that may include an eye tracking system.
[0034] [Figure 7B] FIG. 7B is a block diagram of a rendering controller in a wearable system.
[0035] [Figure 7C] FIG. 7C is a block diagram of an alignment observer in a head mounted display system.
[0036] [Figure 8A] FIG. 8A is a schematic diagram of the eye showing the spherical cornea of the eye.
[0037] [Figure 8B] FIG. 8B illustrates an exemplary corneal phosphene detected by an eye tracking camera.
[0038] [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.
[0039] [Figure 9A] 9A-9C illustrate an example normalization of the coordinate system of the eye tracking images. [Figure 9B] 9A-9C illustrate an example normalization of the coordinate system of the eye tracking images. [Figure 9C] 9A-9C illustrate an example normalization of the coordinate system of the eye tracking images.
[0040] [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.
[0041] [Figure 10] FIG. 10 illustrates an example eye, including the optical and visual axes of the eye and the center of rotation of the eye.
[0042] [Figure 11] FIG. 11 is a process flow diagram of an example method for using eye tracking to provide feedback regarding alignment in a wearable device when rendering content.
[0043] [Figure 12A] 12A and 12B illustrate the nominal positions of display elements relative to a 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 display elements relative to a 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.
[0044] [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.
[0045] [Figure 14] FIG. 14 is a process flow diagram of an example method for depth plane selection using existing calibration, dynamic calibration, and / or a content-based switching scheme.
[0046] [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.
[0047] [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 fixation within one of a number of zones that segment the user's field of view along a horizontal axis.
[0048] [Figure 16B] FIG. 16B illustrates an example of a perspective view of the representation of FIG. 16A.
[0049] [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.
[0050] [Figure 17B] FIG. 17B illustrates an example of a perspective view of the representation of FIG. 16A.
[0051] [Figure 18] FIG. 18 illustrates a flowchart of an example process for selecting a depth plane based on content-based switching.
[0052] [Figure 19] FIG. 19 illustrates a flowchart of another example process for adjusting zones based on content-based switching.
[0053] [Figure 20] FIG. 20 illustrates a flowchart of an exemplary process for operating a head mounted display system based on user identification.
[0054] 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 PREFERRED EMBODIMENTS
[0055] Detailed Description 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 further away from or closer to the user. It should be appreciated that switching depth planes may involve changing the wavefront divergence of the light forming the virtual content in discrete steps. In a waveguide-based system, in some embodiments, such depth plane switching may involve switching waveguides that output light and form virtual content.
[0056] In some embodiments, the display system may be configured to monitor the line of sight of the 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 a full calibration, the display device may have a calibration file or calibration information regarding the main user of the device. The main user may also be referred to herein as a 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.
[0057] The display system may also be used by guest users who have not completed a full calibration at times. In addition, 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 gaze point of the guest user, depth plane switching may not be appropriate to provide a realistic and comfortable viewing experience for the user.
[0058] It should be understood that a current user of the display system may thus 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 matching 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 an IPD match. In some embodiments, the IPD match may include determining whether the IPD of the current user matches the IPD of a calibrated user. If there is a match, the current user may be assumed to be a calibrated user in some embodiments. If there is no match, the current user may be assumed to be a non-calibrated user (e.g., a guest user) in some embodiments. 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.
[0059] 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 fixation point of the user's eye 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 with an appropriate amount of wavefront divergence defined for the location of that content (e.g., a virtual object) in 3D space. It should be appreciated 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 to the user within that three-dimensional volume.
[0060] In the case where multiple virtual objects at different depths are to be displayed, content-based depth plane switching may involve making a coarse determination regarding the virtual object being fixated and then using the location of that virtual object to establish the plane to which depth plane switching should be switched. 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 so, 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).
[0061] In some embodiments, if it is determined that the current user is 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 a maximum IPD value. The maximum IPD value may be used, or a selected lesser value within the 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., apex).
[0062] Thus, in some embodiments, the display system may be configured to monitor whether a user is a main or 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 fixation point and thus 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).
[0063] In some embodiments, the display system may transition from implementing content-based depth plane switching to implementing depth plane switching based on a current user's dynamic calibration. For example, such a transition may occur in situations where data obtained in association with a content-based depth plane switching scheme is deemed unreliable (e.g., values relating to a virtual object at which 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).
[0064] Reference is now made to the drawings, in which like reference numbers 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
[0065] 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."
[0066] Figure 1 depicts an illustration of a mixed reality scenario with certain virtual reality objects and certain physical objects 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, buildings in the background, and a concrete platform 120. In addition to these items, the user of the MR technology also perceives that they "see" 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.
[0067] 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 to generate, for each point in the display's 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 the binocular depth cues of convergence and stereopsis, the human eye may experience accommodation conflicts, resulting in unstable imaging, deleterious eye strain, headaches, and, in the absence of accommodative information, a near-complete lack of surface depth.
[0068] VR, AR, and MR experiences can be provided by a display system having a display in which images corresponding to multiple depth planes are provided to a viewer. 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.
[0069] 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 can 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 can be coupled to a frame 230, which is wearable by a user, wearer, or viewer 210. The display 220 can be positioned in front of the eyes of the user 210. The display 220 can present AR / VR / MR content to the user. The display 220 can comprise a head-mounted display (HMD) worn on the user's head.
[0070] 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. 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.
[0071] The wearable system 200 may include an outwardly facing imaging system 464 (shown in FIG. 4 ) that observes the world in the environment around the user. The wearable system 200 may also include an inwardly facing imaging system 462 (shown in FIG. 4 ) that may track the eye movements of the user. The inwardly facing imaging system may track either one eye movement or both eye movements. The inwardly 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 inwardly facing imaging system and determine, for example, pupil diameter or orientation of the user's 210 eyes, eye movement, or eye posture. The inwardly 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.
[0072] As an example, the wearable system 200 can obtain an image of the user's posture using an outwardly facing imaging system 464 or an inwardly facing imaging system 462. The image may be a still image, a frame of a video, or a video.
[0073] 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 leads or a 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-attached configuration).
[0074] 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 inwardly facing or outwardly facing imaging system), audio sensor (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 operatively coupled to a remote processing module 270 or a remote data repository 280, such as via a wired or wireless communication link, over a communication link 262 or 264, 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 operatively coupled to each other.
[0075] In some embodiments, the remote processing module 270 may comprise one or more processors configured to analyze and process the data or image information. In some embodiments, the remote data repository 280 may comprise a digital data storage facility, which may be available through the Internet or other networking configurations 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
[0076] FIG. 3 diagrammatically illustrates example components of a wearable system. FIG. 3 illustrates 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 (e.g., auditory or visual data, etc.) associated with a user of the wearable system 200 or the user's environment. It should be understood that other embodiments may have additional or fewer components depending on the application for which the wearable system is used. However, 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.
[0077] FIG. 3 illustrates an exemplary wearable system 200, which may include a display 220. The display 220 may include a display lens 226, which may be mounted to a housing or frame 230 that corresponds to the user's head, or to a frame 230. The display lens 226 may include one or more transparent mirrors positioned in front of the user's eyes 302, 304 by the housing 230, and may be configured to bounce the projected light 338 into the eyes 302, 304 and facilitate 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 illustrated, two wide-field machine vision cameras 316 (also referred to as world cameras) are coupled to the housing 230 and may image the environment around the user. These cameras 316 may be dual capture visible / non-visible (e.g., infrared) light cameras. The camera 316 may be part of the outward-facing imaging system 464 shown in Figure 4. Images acquired by the world camera 316 may be processed by the pose processor 336. For example, the pose processor 336 may implement one or more object recognizers 708 (e.g., shown in Figure 7) to identify a pose of the user or another person in the user's environment, or to identify a physical object in the user's environment.
[0078] Continuing with reference to FIG. 3, a pair of scanning laser shaped wavefront (e.g., for depth) light projection modules with display mirrors and optics configured to project light 338 into the eyes 302, 304 are shown. 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 an inwardly 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 and 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.
[0079] 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.
[0080] Also shown is a processor 332 configured to perform digital or analog processing and derive attitude from gyroscope, compass, or accelerometer data from the sensor assembly 339. The processor 332 may be part of a local processing and data module 260, shown in FIG. 2. The 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 aid in the attitude and positioning analysis. In addition, the GPS may further provide remote-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.
[0081] 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 may provide more information about the user's environment. As an example, the wearable system may determine the user's location based on the 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 may monitor the environment using a 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 may detect objects in the environment (e.g., by using one or more object recognizers 708 shown in FIG. 7). The wearable system may further use data obtained by the GPS 337 to interpret characters.
[0082] The wearable system 200 may also include a rendering engine 334, which may be configured to provide local rendering information to the user for the user's view of the world and facilitate 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 may be communicatively coupled (e.g., via wired or wireless links) to other components of the wearable system 200. For example, the rendering engine 334 may be coupled to the eye camera 324 via communication link 274 and to the projection subsystem 318 (which may 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 may also communicate with other processing units, such as, for example, the sensor pose processor 332 and the image pose processor 336, via links 276 and 294, respectively.
[0083] 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 at which they are focused (which may be estimated using eye convergence and divergence). A GPS 337, gyroscope, compass, and accelerometer 339 may be utilized to provide a rough or fast pose estimate. One or more of the cameras 316 may obtain images and poses, which, together with data from associated cloud computing resources, may be utilized to map the local environment and share the user view with others.
[0084] The exemplary 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 components, handheld components, or helmet 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 communication, such as ultra-wideband, Wi-Fi, Bluetooth, or via wired communication. 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.
[0085] With regard 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 is geometrically converged, which generally coincides with the location of the eye's focus 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 length may take on a finite number of depths or may vary infinitely. Light projected from the vergence distance appears focused on the subject's eyes 302, 304, while light in front of or behind the vergence 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.
[0086] The human visual system is complex and it is 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 and accommodation. Vergence movements of the two eyes relative to one another (e.g., rotational movements of the pupils toward or away from one another to converge the gaze of the eyes and fixate 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 corresponding change in vergence to the same distance, a relationship known as the "accommodation-vergence reflex." Similarly, a change in vergence will induce a corresponding change in accommodation under normal conditions. A display system that provides a better match between accommodation and vergence may produce a more realistic and comfortable simulation of a three-dimensional image.
[0087] Furthermore, spatially coherent light with a beam diameter of less than about 0.7 millimeters can be correctly resolved by the human eye regardless of where the eye is focused. Thus, to create the illusion of proper depth of focus, eye vergence-divergence 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 monocular locus in focus and all other objects variable degrees out of focus (e.g., using intentionally created blur). Preferably, the system 220 renders to the user at a frame rate of about 60 frames per second or greater. As explained above, preferably the camera 324 may be utilized for eye tracking, and software may be configured to take up not only vergence-divergence geometry, but also focus location cues to serve as user input. Preferably, such a display system is configured with a suitable brightness and contrast for daytime or nighttime use.
[0088] 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 is believed to be approximately the limit of the human eye, without being limited by theory. 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 aid 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 facilitate the glasses knowing their location relative to the real world).
[0089] 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 to allow for more comfortable viewing of the one or more images presented to the user. For example, if the user's eye has a current focus of 1m, the image may be projected to match the user's focus. If the user shifts the focus to 3m, the image is 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.
[0090] 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 accomplish this, various embodiments of the wearable system 200 are configured to project virtual images at variable focal distances through one or more variable focus elements (VFEs). In one or more embodiments, 3D perception may be achieved through a multi-plane 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.
[0091] In both the multi-plane focus system and the variable plane focus system, the wearable system 200 may employ eye tracking to determine the vergence-divergence movement 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 display's ability to project images at variable focal distances not only facilitates accommodation for the user to view objects in 3D, but may also be used to compensate for the user's ocular anomalies, as further described in U.S. Patent Publication No. 2016 / 0270656, which is incorporated herein by reference in its entirety. In some other embodiments, the spatial light modulator may project the 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
[0092] FIG. 4 illustrates an example of a waveguide stack for outputting image information to a user. The wearable system 400 includes a stack of waveguides or a stacked waveguide assembly 480 that can be utilized to provide a three-dimensional perception to the eye / brain using multiple waveguides 432b, 434b, 436b, 438b, 4400b. In some embodiments, the wearable system 400 can correspond to the wearable system 200 of FIG. 2, of which FIG. 4A diagrammatically illustrates some portions of the wearable system 200 in more detail. For example, in some embodiments, the waveguide assembly 480 can be integrated into the display 220 of FIG. 2.
[0093] Continuing with reference to FIG. 4, the waveguide assembly 480 may also include a number of features 458, 456, 454, 452 between the waveguides. In some embodiments, the features 458, 456, 454, 452 may be lenses. In some embodiments, the lenses may be variable focus elements (VFEs). For example, in some embodiments, the 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, the features 458, 456, 454, 452 may not be lenses. Rather, they may simply be spacers (e.g., cladding layers or structures for forming air gaps).
[0094] The waveguides 432b, 434b, 436b, 438b, 440b or multiple lenses 458, 456, 454, 452 may be configured to transmit image information to the eye with various levels of wavefront curvature or light beam 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 the 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 output surfaces of image launch devices 420, 422, 424, 426, 428 and is launched into 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 launched into each waveguide to output an entire field of cloned collimated beams that are directed towards the eye 410 at a particular angle (and divergence) that corresponds to the depth plane associated with the particular waveguide.
[0095] In some embodiments, the 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, the image input devices 420, 422, 424, 426, 428 are the output of a single multiplexed display that may send image information to each of the image input devices 420, 422, 424, 426, 428, for example, via one or more optical conduits (such as fiber optic cables).
[0096] A controller 460 controls the operation of the stacked waveguide assembly 480 and the image input devices 420, 422, 424, 426, 428. The controller 460 includes programming (e.g., instructions in a non-transitory computer-readable medium) that coordinates the timing and provision of image information to the waveguides 440b, 438b, 436b, 434b, 432b. In some embodiments, the controller 460 may be a single integrated device or a distributed system connected by a wired or wireless communication channel. The controller 460 may be part of the processing module 260 or 270 (illustrated in FIG. 2) in some embodiments.
[0097] The waveguides 440b, 438b, 436b, 434b, 432b may be configured to propagate light within each individual waveguide by total internal reflection (TIR). The 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 the major top and bottom surfaces. In the illustrated configuration, the waveguides 440b, 438b, 436b, 434b, 432b may each include a light extraction optical element 440a, 438a, 436a, 434a, 432a configured to extract light from the waveguide by redirecting light propagating within each individual waveguide out of the waveguide and outputting image information 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 in 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. Although shown disposed on the bottom major surface 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 surface, or may be disposed 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 that is attached to a transparent substrate and forms the waveguides 440b, 438b, 436b, 434b, 432b. In some other embodiments, the waveguides 440b, 438b, 436b, 434b, 432b may be a monolithic piece of material and the light extraction optical elements 440a, 438a, 436a, 434a, 432a may be formed on and / or within that piece of material.
[0098] 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 it can reach the eye 410. The first lens 452 may be configured to generate a slight convex wavefront curvature so that the eye / brain interprets the light originating from the next upper waveguide 434b as originating 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 a first lens 452 and a second lens 454 before reaching the eye 410. The combined refractive powers of the first and second lenses 452 and 454 may be configured to produce another incremental 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.
[0099] The 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 being used to send its output through all of the lenses between it and the eye for an aggregate 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 aggregate power of the lens stacks 458, 456, 454, 452 below. (The compensation lens layer 430 and stacked waveguide assembly 480 may be configured collectively such that light originating from the world 470 is transmitted to the eye 410 with substantially the same level of divergence (or collimation) that 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 waveguide 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.
[0100] Continuing with reference to FIG. 4, the light extraction optical elements 440a, 438a, 436a, 434a, 432a may be configured to redirect light out of their respective waveguides and output the light with an appropriate amount of divergence or collimation for a particular depth plane associated with the waveguide. As a result, waveguides with different associated depth planes may have different configurations of light extraction optical elements that output light with different amounts of divergence depending on the associated depth plane. In some embodiments, as discussed herein, the light extraction optical elements 440a, 438a, 436a, 434a, 432a may be solid or surface features that may be configured to output light at a specific angle. For example, the light extraction optical elements 440a, 438a, 436a, 434a, 432a may be solid 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 by reference in its entirety.
[0101] In some embodiments, the 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 exit beams that exit the waveguide at multiple locations, which can result in a very uniform pattern of exit emission toward the eye 304 for this particular collimated beam bouncing within the waveguide.
[0102] 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).
[0103] In some embodiments, the number and distribution of depth planes or depths of field may be dynamically varied based on the pupil size or orientation of the viewer's eye. The depth of field may vary inversely with the pupil size of the viewer. As a result, as the size of the pupil of the viewer's eye decreases, the depth of field increases so that one plane that is indistinguishable because its location exceeds the focal depth of the eye may become distinguishable and appear more in focus with a reduction in pupil size and a corresponding 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 reduced pupil size. For example, the viewer may not be able to clearly perceive the details of both the first and second depth planes at one pupil size without adjusting the accommodation of the eye from one depth plane to the other. However, these two depth planes may be simultaneously well-focused for the user at another pupil size without changing accommodation.
[0104] In some embodiments, the display system may vary the number of waveguides that receive image information based on a determination of a pupil size or orientation, or in response to receiving an electrical signal indicative of a particular pupil size or orientation. For example, if the user's eye is unable to distinguish between two depth planes associated with two waveguides, the controller 460 (which may be an embodiment of the local processing and data module 260) may be configured or programmed to stop providing image information to one of these waveguides. Advantageously, this may reduce the processing burden on the system, thereby increasing the responsiveness of the system. In embodiments in which the DOE for a waveguide is switchable between an on and off state, the DOE may be switched to the off state when the waveguide receives image information.
[0105] In some embodiments, it may be desirable to have the exit beam meet 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 exit 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 exit beam may also decrease. In some embodiments, the exit beam size may be varied using a variable aperture.
[0106] The wearable system 400 may include an outwardly 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 field of view (FOV) of the world camera, and the imaging system 464 is sometimes also referred to as the FOV camera. The world camera FOV may or may not be the same as the viewer 210 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 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 ocular 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 movements 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.
[0107] The wearable system 400 can include an audio sensor 232, e.g., a microphone, to capture ambient sound. 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 the speech source. The audio sensor 232 can comprise, as another example, a directional microphone, which can also provide such useful directional information regarding where the audio source is located. The wearable system 400 can use information from both the outwardly facing imaging system 464 and the audio sensor 230 in locating the 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 identity of the speaker. As another example, the wearable system 400 can determine the location of the speaker in the environment based on sounds 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).
[0108] The wearable system 400 may also include an inwardly facing imaging system 466 (e.g., a digital camera) that observes user movements, such as eye and face movements. The inwardly facing imaging system 466 may be used to capture images of the eye 410 and determine the size and / or orientation of the pupil of the eye 304. The inwardly 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.
[0109] 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, a touch screen, a joystick, a multi-degree-of-freedom (DOF) controller, a capacitive sensing device, a game controller, a keyboard, a mouse, a directional pad (D-pad), a wand, a tactile device, a totem (e.g., serving as a virtual user input device), and the like. 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., thumb) to press or swipe on 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 in wired or wireless communication. Other Components of a Wearable System
[0110] 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 haptic sensation to the user. For example, the tactile device or component may provide a haptic sensation of pressure or texture upon touching the virtual content (e.g., a virtual object, virtual tool, other virtual structure). The haptic sensation may replicate the haptic sensation of a physical object that the virtual object represents, or may replicate the sensation of an imaginary object or character (e.g., a dragon) that the virtual content represents. In some implementations, the tactile device or component may be worn by the user (e.g., a user wearable glove). In some implementations, the tactile device or component may be held by the user.
[0111] A wearable system may include one or more physical objects that can be manipulated by a user, for example, 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, e.g., pieces of metal or plastic, walls, the surface of a table. In some implementations, a totem may not actually have any physical input structures (e.g., keys, triggers, joysticks, trackballs, rocker switches). Instead, a totem may simply provide a physical surface, and the wearable system may render a user interface to appear to the user as being 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 the 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.
[0112] 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 by reference in its entirety. Example of eye image
[0113] FIG. 5 illustrates an image of an eye 500 with eyelids 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 peripheral boundary between the iris 512 and sclera 508. Eyelids 504 include 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 far-distance object directly in front of the user). The natural resting position of eye 500 may be represented by a natural resting direction 520, which is a direction perpendicular to the surface of eye 500 when in a natural resting position (e.g., immediately out of plane for eye 500 shown in FIG. 5) and centered within pupil 516 in this example.
[0114] As the eye 500 moves to look towards different objects, the eye pose will change with respect 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 perpendicular to the surface of the eye (and centered within the pupil 516), but oriented towards the object to 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 θ (azimuth deflection, determined from the origin azimuth angle) and φ (zenith deflection, sometimes also referred to as polar deflection). In some implementations, the angular roll of the eye about the eye pose direction 524 can be included in the determination of the 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.
[0115] The eye image 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 image 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 technique described herein. Example of an eye tracking system
[0116] FIG. 6 illustrates a schematic diagram of a wearable system 600 including an eye tracking system. The wearable system 600 may, at least in some embodiments, 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 implemented 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. Further, 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.
[0117] As shown in FIG. 6, the wearable system 600 can include an eye tracking system including a camera 324 that captures an image of the user's eye 610. If desired, the eye tracking system can also include light sources 326a and 326b (such as light emitting diodes "LEDs"). The light sources 326a and 326b can 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 326a and 326b relative to the camera 324 can be known, so that the position of the flash of light in the image captured by the camera 324 can be used in tracking the user's eye (as will be discussed in more detail below in connection with FIGS. 7-11). In at least one embodiment, there can be one light source 326 and one camera 324 associated with one of the user's eyes 610. In another embodiment, there can be one light source 326 and one camera 324 associated with each of the user's eyes 610. In yet 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.
[0118] The eye tracking module 614 may receive images from the eye tracking camera 324 and may analyze the images to extract various information. As examples, 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 the 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 Figures 7-11. As shown in Figure 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, calibration, and use of the eye tracking module components are provided in U.S. patent application Ser. No. 15 / 993,371, entitled "EYE TRACKING CALIBRATION TECHNIQUES," which is incorporated herein by reference in its entirety.
[0119] 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.
[0120] The rendering controller 618 may use information from the eye tracking module 614 to adjust the image 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 image 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 image displayed to the user based on the simulated rendering camera.
[0121] 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, a rendering camera may represent a viewpoint in a 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 viewpoint. For example, a virtual image may be rendered as if it had been 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 / warping parameters, etc.) and a specific set of extrinsic parameters (e.g., translation and rotation components relative to the virtual world). The virtual image is taken from the viewpoint of such a camera having a rendering camera 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 specific set of extrinsic rendering camera parameters such that the virtual image may be rendered as if it had been 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 viewpoint. 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 that has an aperture (e.g., a pinhole) at a specific location relative to the user's or wearer's eye (such as the center of view or center of rotation or other location).
[0122] In some embodiments, the system may create or dynamically reposition and / or reorient one rendering camera for the user's left eye and another for the user's right eye as the user's eyes are physically separated from one another and therefore consistently positioned in different locations. It follows that 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.
[0123] In some examples, 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 in a rendering space based on the user's head and eye position and orientation (e.g., as determined based on head pose and eye tracking data, respectively). For example, system 600 may in effect map the user's head and eye position and orientation to a particular location and corner position in the 3D virtual environment, place and orient the rendering camera to a particular location and corner position in the 3D virtual environment, and render the 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 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, the rendering controller 618 may adjust the depth at which an image is displayed by selecting the depth plane (or depth planes) that is 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.
[0124] 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, the alignment observer 620 may be able to determine whether the head mounted unit 602 has slipped off the bridge of the user's nose, thus moving the display 220 away from the user's eyes and downward therefrom (which may be undesirable), whether the head mounted unit 602 has moved above the bridge of the user's nose, thus moving the display 220 closer to the user's eyes and upward therefrom, whether the head mounted unit 602 has been shifted left or right relative to the bridge of the user's nose, whether the head mounted unit 602 has been lifted above the bridge of the user's nose, or whether the head mounted unit 602 has been moved away from a desired position or range of positions in these or other ways. In general, the alignment observer 620 may be able to determine whether the head mounted unit 602, in general, and the display 220 in particular, are properly positioned 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 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 positions and / or orientations relative to the user's eyes.
[0125] In at least some embodiments, the 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 the head mounted unit 602, along with optional feedback on how to correct the misalignment (such as suggestions to adjust the head mounted unit 602 in a particular manner).
[0126] Exemplary alignment observation and feedback techniques that may be utilized by the 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 by reference in its entirety herein. Example of an eye tracking module
[0127] 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 the head mounted unit 602, assumed eye dimensions 704 such as a typical distance of about 4.7 mm between the center of the user's corneal curvature 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 by reference in its entirety into this specification.
[0128] The image pre-processing module 710 may receive images from an eye camera, such as eye camera 324, and may perform one or more pre-processing (i.e., adjustment) operations on the received images. As examples, the image pre-processing module 710 may apply Gaussian blur to the images, down-sample the images to a lower resolution, apply an unsharp mask, apply an edge sharpening algorithm, or apply other suitable filters that aid in the later detection, location, and labeling of phosphenes, pupils, or other features in images from eye camera 324. The image pre-processing module 710 may apply a low-pass filter or a morphological filter, such as an open filter, that may remove high frequency noise from the pupil boundary 516a (see FIG. 5), etc., thereby removing noise that may interfere with pupil and phosphene determination. The image pre-processing module 710 may output the pre-processed images to the pupil identification module 712 and the phosphene detection and labeling module 714.
[0129] The pupil identification module 712 may receive the 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 in 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 a contour (i.e., the contour of the pupil-iris boundary) in the eye tracking images, identify contour moments (i.e., the center of mass), apply a starburst pupil detection and / or Canny edge detection algorithm, filter out outliers based on intensity values, identify sub-pixel boundary points, correct for eye camera distortion (e.g., distortion in the images captured by the eye camera 324), apply a random sample consensus (RANSAC) iterative algorithm, fit an ellipse to the boundaries in the eye tracking images, apply a tracking filter to the images, and identify the sub-pixel image coordinates of the user's pupil centroid. The pupil identification module 712 may output pupil identification data, which may indicate areas of the preprocessed image module 712 that have been identified as indicative of the user's pupil, to the flash detection and labeling module 714. The pupil identification module 712 may provide the 2D coordinates of the user's pupil in each eye tracking image (i.e., the 2D coordinates of the centroid of the user's pupil) to the flash detection module 714. In at least some embodiments, the pupil identification module 712 may also provide the same type of pupil identification data to the coordinate system normalization module 718.
[0130] 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 into this specification).
[0131] 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 indicate 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 vicinity of the user's pupil in the eye tracking image. In at least some embodiments, the flash detection module 714 may rescale (e.g., expand) the pupil ellipse to include the additional flashes. The flash detection module 714 may filter the flashes by size and / or intensity. The flash detection module 714 may also determine the 2D location of each of the flashes in the eye tracking image. In at least some embodiments, flash detection module 714 may determine the 2D location of the flash relative to the user's pupil, which may also be referred to as the pupil-flashing vector. Flash detection and labeling module 714 may label the flashes and output preprocessed images with the labeled flashes to the 3D corneal center estimation module 716. Flash detection and labeling module 714 may also pass on data such as the preprocessed images from module 710 and the pupil identification data from module 712.
[0132] Pupil and flash detection as implemented by modules such as modules 712 and 714 may use any suitable technique. As an example, edge detection may be applied to the eye image to identify flashes and pupils. Edge detection may be applied by various edge detectors, edge detection algorithms, or filters. For example, a Canny edge detector may be applied to the image to detect edges, such as lines, of the image. Edges may include points located along the lines that correspond to local maximum derivatives. For example, pupil boundary 516a (see FIG. 5) may be located using a Canny edge detector. Once the location of the pupil is determined, various image processing techniques may be used to detect the "pose" of the 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 towards an object, and the pupil pose may be classified as a left-looking pose. Other methods may also be used to detect the location of the pupil or flash. 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, the Daugman integro-differential operator, Hough transform, or other iris segmentation techniques can be used to return a curve that estimates the boundary of the pupil or iris.
[0133] The 3D corneal center estimation module 716 may receive the pre-processed images, including the detected phosphene data and pupil identification data, from modules 710, 712, 714. 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 corneal curvature of the eye 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 indicative of 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 Ser. No. 15 / 497,726, filed April 26, 2017 (Attorney Docket No. MLEAP.023A7), which is incorporated by reference in its entirety into this specification.
[0134] 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., vergence-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) to a predetermined distance away from the corneal center, such as 30 mm (i.e., the module 718 may stretch or shrink 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 being positioned 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), the pupil identification data, and the 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.
[0135] The 3D pupil center locator module 720 may receive data including the 3D coordinates of the center of the user's cornea (and / or corneal sphere) in a normalized or non-normalized coordinate system, pupil location data, and pre-processed eye tracking images. The 3D pupil center locator module 720 may analyze such data to determine the 3D coordinates of the user's pupil center 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 the 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 the 3D pupil center locator module 720 and other modules in the wearable system of the present disclosure are discussed in U.S. patent application Ser. No. 15 / 497,726, filed Apr. 26, 2017 (Attorney Docket No. MLEAP.023A7), which is incorporated herein by reference in its entirety.
[0136] The optical axis determination module 722 may receive data from modules 716 and 720 indicating the 3D coordinates of the center of the user's cornea and the user's pupil. Based on such data, the 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 user's pupil center, which may define the optical axis of the user's eye. The 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.
[0137] 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 direction 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 pupil center (as identified by module 720) or the corneal center of curvature (as identified by module 716) a specific distance along the optical axis (as 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 corneal center of curvature and the CoR may be about 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.
[0138] 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, something further away, or to the left, right, up, or down at one time), 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 a 3D point of intersection of those optical axes. The CoR estimation module 724 may then determine a center of rotation at the 3D point of intersection. Such techniques may provide estimates of the center of rotation with accuracy that improves 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, may calculate a moving average of the estimated CoR position over time, and / or may 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 behind the center of the corneal curvature of the eye) such that the determined CoR may slowly shift over time from the assumed CoR position (i.e., 4.7 mm behind the center of the corneal curvature of the eye) to a slightly different location within the user's eye as eye tracking data is acquired for the user, thereby allowing per-user refinement of the CoR position.
[0139] The interpupillary distance (IPD) estimation module 726 may receive data from the CoR estimation module 724 indicating the 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. In general, 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 user's pupil centers 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, such as those discussed in connection with the CoR estimation module 724, to increase the accuracy of the estimated IPD. 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.
[0140] 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 position of the user's pupil and / or cornea. The IPD estimation module 726 may then estimate the user's IPD by looking at the distance between the pupil and the 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 pupil 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 a distance closer than optical infinity).
[0141] The vergence-divergence movement depth estimation module 728 may receive data from various modules and sub-modules (as illustrated in relation to 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 a pupil center (e.g., as provided by module 720 described above), one or more determined parameters of an optical axis (e.g., as provided by module 722 described above), an estimated 3D position of a center of rotation (e.g., as provided by module 724 described above), an estimated IPD (e.g., a Euclidean distance between estimated 3D positions of centers of rotation) (e.g., as provided by module 726 described above), and / or one or more determined parameters of an optical axis and / or visual axis (e.g., as provided by modules 722 and / or 730 described below). The vergence depth estimation module 728 may detect or otherwise obtain a measurement of the user's vergence 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 vergence 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 user's pupil centers may be approximately equal to the distance between the rotation centers of the user's left and right eyes), the user's left and right eyes have a vergence depth of infinity. In some implementations, the vergence depth estimation module 728 may utilize data indicative of the 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 vergence-divergence depth estimation module 728 may obtain a measurement of vergence-divergence depth by comparing such determined 3D distance between the 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 vergence movement depth estimation module 728 may utilize known, assumed, estimated, and / or determined geometric shapes to calculate the vergence 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 vergence movement depth. In fact, an evaluation of such determined 3D distance between pupil centers relative to the estimated IPD may serve to indicate a measurement of the user's current vergence movement depth relative to optical infinity. In some examples, the vergence movement depth estimation module 728 may simply receive or have access to data indicative of an estimated 3D distance between the estimated centers of the user's pupils for purposes of obtaining such a measurement of the vergence movement depth. In some embodiments, the vergence motion depth estimation module 728 may estimate the vergence motion depth by comparing the left and right optical axes of the user. In particular, the vergence motion depth estimation module 728 may estimate the vergence motion depth by locating the distance from the user where the user's left and right optical axes intersect (or where the 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 motion depth estimation module 728 may determine the vergence motion depth by triangulating eye tracking data with known or derived spatial relationships.
[0142] In some embodiments, the convergence-divergence depth estimation module 728 may estimate the user's convergence-divergence depth based on the intersection of the user's visual axis (instead of its optical axis), which may provide a more accurate indication of the distance at which the user is focused. In at least some embodiments, the eye tracking module 614 may include an optical axis / visual axis mapping module 730. As discussed in more detail in connection with FIG. 10, the user's optical axis and visual axis are generally not aligned. The visual axis is the axis along which a person is looking, while the optical axis is defined by the person's lens and pupil center 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 embodiments, the module 730 may use the assumed eye dimensions 704, including a typical offset between the optical axis and the visual axis of about 5.2° inward (nasally, toward the user's nose). In other words, the module 730 may shift the user's left optical axis 5.2° nasally (toward the nose) to the right and the user's right optical axis 5.2° nasally (toward the nose) to estimate the direction of the user's left and right optical axes. In other embodiments, the module 730 may utilize per-user calibration data 706 in mapping the optical axis (e.g., as shown by module 722 described above) to the visual axis. As additional examples, module 730 may shift the user's optical axis nasally by 4.0°-6.5°, 4.5°-6.0°, 5.0°-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 a 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 optical axis-visual axis offset for the particular user). In at least some embodiments, module 730 may also shift the origin 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.
[0143] 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 a wearable system 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 center of the user's corneal curvature, 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 the 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 its pupil center. 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 to 1.0 mm, 0.5 mm to 1.0 mm, or 0.25 mm to 0.5 mm.
[0144] The viewpoint centers described herein (as potentially desirable locations of the rendering camera pinhole and anatomical locations within the user's eye) may be locations that serve to reduce and / or eliminate undesirable parallax shifts. In particular, the optical system of the user's eye roughly parallels 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 strictly rotated around the pinhole opening (e.g., rotated along a radius of curvature equal to their respective distances from the pinhole opening). Thus, one would expect the CoP to be located at the eye's pupil center (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 an area of the user's eye that is 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 an area 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.
[0145] 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-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
[0146] A detailed block diagram of an example 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 an image to be displayed for viewing by a user of the wearable system. As an example, the rendering controller 618 may receive vergence-divergence depth, left and right eye rotation centers (and / or gaze centers), and other eye data such as eye blink data, saccade data, etc.
[0147] The depth plane selection module 750 may receive vergence depth information and other ocular data and may cause the rendering engine 622 to convey content to the user with a particular depth plane (i.e., a particular accommodation or focal length) based on such data. 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 vergence 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.
[0148] In general, it may be desirable for the 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 eye blink or eye saccade.
[0149] The hysteresis band crossing detection module 752 may help to avoid excessive switching between depth planes, especially when the user's vergence-divergence motion depth fluctuates at a midpoint or transition point between two depth planes. In particular, the module 752 may cause the depth plane selection module 750 to exhibit hysteresis in its selection of depth planes. As an example, the 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 vergence-divergence motion depth passes a first threshold. Similarly, the module 752 may cause the depth plane selection module 750 (and thus may indicate to a display, such as the display 220) to switch to a first, more distant depth plane only after the user's vergence-divergence motion depth passes a second threshold that is further 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 whichever depth plane is currently selected as the selected depth plane, thus avoiding excessive switching between depth planes.
[0150] 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 in 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 (such as 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.
[0151] If desired, the depth plane selection module 750 may delay a planned depth plane switch only for a limited period of time before executing a depth plane switch, even in the absence of an ocular 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 ocular 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 conjunction with FIG. 13.
[0152] The rendering camera controller 758 may provide information to the rendering engine 622 indicating the location of the user's left and right eyes. The rendering engine 622 may then generate content by simulating cameras at the user's left and right eye positions and generating content based on the viewpoints 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 the virtual image based on a database of virtual objects to be presented to the eyes. The virtual image may be rendered as if it were taken from the viewpoint of the user or wearer. For example, the virtual image may be rendered as if it 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 image is taken from the viewpoint of such a camera, which has the position of the "rendering camera." For example, the virtual image may be rendered as if it had been captured from a camera viewpoint having 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 had been 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).
[0153] 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 perspective (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, align the rendering camera to the CoR location all the time, align the rendering camera to the CoP location all the time, 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 previously described 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.
[0154] In at least some embodiments, the rendering camera may be simulated as a pinhole camera with the pinhole located 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 location of both the rendering camera and its pinhole shifts 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. Example of an alignment observer
[0155] A block diagram of an example 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., three-dimensional locations of the rotation centers of the user's left and right eyes that may be on a common coordinate system or have a common reference frame with the head mounted display system 600). As another example, the alignment observer 620 may receive display extrinsic properties, fitting tolerances, and eye tracking enable indicators. The display extrinsic properties may include information about a display (e.g., the display 200 of FIG. 2), such as the field of view of the display, 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 a user's left and right eyes may move from a nominal position before display performance is affected. In addition, the fit tolerances may indicate the amount of display performance impact expected as a function of the user's eye position.
[0156] As shown in FIG. 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, as examples, a left eye rotation center 3D position (e.g., CoR left), a right eye rotation center 3D position (e.g., CoR right), display extrinsic properties, and adaptation tolerances. The 3D position adaptation module 770 may determine the distance of the user's left and right eyes from the respective left and right eye nominal positions (e.g., may calculate a 3D left error and a 3D right error) and provide the error distance (e.g., a 3D left error and a 3D right error) to the device 3D adaptation module 772.
[0157] The 3D position adaptation module 770 may also compare the error distance to display attendant properties and fit tolerances to determine whether the user's eye is 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 eye). 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 that indicates whether the current fit of the HMD on the user is good, acceptable, or unsuccessful. A good match may correspond to a match that allows the user to see at least a certain percentage of the image (such as 90%), an acceptable match may allow the user to see at least a lower percentage of the image (such as 80%), while a failed match may be a match in which only an even lower percentage of the image is visible to the user.
[0158] As another example, the 3D position adaptation module 770 and / or the 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 display by the display 220 that is visible to the user. The modules 770 and 772 may calculate the visible area metric by evaluating the position of the user's left and right eyes (which may be based on the center of rotation of the user's eyes, for example) relative to the display 220 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. In addition, the modules 770 and 772 may determine the region or portion of the image display by the display 220 that is expected to be visible to the user as a function of the user's eye position.
[0159] The alignment observer 620 may also include a device 3D fit module 772. The module 772 may receive data from the 3D position fit module 770 and may also receive an eye tracking validity indicator that 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 fit module 772 may modify the fit quality data received from the 3D position fit module 770 depending on the status of the eye tracking validity data, as desired. For example, if data from the eye tracking system is indicated as unavailable or having errors, the device 3D fit module 772 may provide a notification that errors exist and / or not provide an output to the user regarding the fit quality or fit error.
[0160] In at least some embodiments, the alignment observer 620 may provide feedback to the user regarding the quality of the fit and details of the nature and magnitude of the error. As examples, the head mounted display system may provide feedback to the user during a calibration or donning process (e.g., as part of a set-up procedure) and may also provide feedback during operation (e.g., if the fit degrades due to slippage, the alignment observer 620 may prompt the user to readjust the head mounted display system). In some embodiments, the 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
[0161] 8A is a schematic diagram of an eye showing the corneal sphere 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 corneal sphere 814. The corneal sphere 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.
[0162] 8B-8E illustrate examples of locating a user's corneal center 816 using the 3D corneal center estimation module 716 and the eye tracking module 614.
[0163] 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 the 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 the light 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.
[0164] In Figure 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 would properly reflect light from the light source 326 to the glint position 854. As shown in Figure 8C, the first position does not match because the light ray 860a does not intersect with the light source 326.
[0165] Similar to Figure 8D, the 3D corneal center estimation module 716 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 to the glint position 854 from the light source 326. As shown in Figure 8D, the second position also does not match.
[0166] As shown in FIG. 8E, the 3D corneal center estimation module 716 can finally determine that the correct location of the corneal sphere is the corneal sphere 814c and the corneal center of curvature 816c. The 3D corneal center estimation module 716 verifies that the illustrated location is correct by checking that light from the source 326 will properly reflect off the corneal sphere and be imaged by the camera 324 to the correct location of the flash of light 854 on the image 852. Using this arrangement and the known 3D positions of the light source 326, the camera 324, and the optical properties of the camera (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.
[0167] The process described herein with respect to at least FIGS. 8C-8E may be effectively an iterative, iterative, or optimization process for identifying the 3D location of the user's corneal center. Thus, any of a number of techniques (e.g., iterative, optimization techniques, etc.) may be used to efficiently and quickly cull 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 all of which may be located at different locations and result in multiple flashes, such as flash 854, located at different locations on the image 852, and multiple light rays, such as light ray 856, having different origins and directions. Such an embodiment may improve the accuracy of the 3D corneal center estimation module 716, since the module 716 may seek to identify a corneal location that results in some or all of the flashes and light rays being properly reflected between its respective light source and its respective location on the image 852. In other words, in these embodiments, the position of some or all of the light sources may rely 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
[0168] 9A-9C illustrate an example normalization of the coordinate system of eye tracking images by a component in a wearable system, such as coordinate system normalization module 718 of FIG. 7A. Normalization of the coordinate system of 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.
[0169] 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, which is based on the location of eye tracking camera 324, as an example.
[0170] In a first normalization step, the coordinate system normalization module 718 may rotate the coordinate system 850 into the rotated coordinate system 902 such that the z-axis (i.e., the vergence-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 coordinate 900 of the user's corneal curvature center is orthogonal to the plane of the rotated image 904.
[0171] As a second normalization step, the coordinate system normalization module 718 may translate the rotated coordinate system 902 into the normalized coordinate system 910 such 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 Center Using an Eye Tracking System
[0172] 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).
[0173] 9D , the 3D pupil center locator module 720 may receive a normalized eye tracking image 912, including the pupil centroid 913 (i.e., the user's pupil center as identified by the pupil identification module 712). The 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.
[0174] In Figure 9E, the 3D pupil center locator module 720 may simulate a corneal sphere, such as corneal sphere 901 having a center of curvature 900, based on data from the 3D corneal center estimation module 716 (and as discussed in more detail in connection with Figures 8B-8E). As an example, the corneal sphere 901 may be located within a normalized coordinate system 910 based on the location of the center of curvature 816c identified in connection with Figure 8E and based on the normalization process of Figures 9A-9C. In addition, the 3D pupil center locator module 720 may identify a first intersection point 916 between a ray 914 (i.e., a ray between the origin of the normalized coordinate system 910 and the normalized location of the user's pupil) and the simulated cornea, as shown in Figure 9E.
[0175] 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 may 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.
[0176] 9G, the 3D pupil center locator module 720 may locate the 3D coordinates of the user's pupil center based on various inputs. As an example, the 3D pupil center locator module 720 may determine the 3D coordinates of the user's pupil center using the 3D coordinates and radius of the pupil sphere 918, the 3D coordinates of the intersection 916 between the simulated corneal sphere 901 and a ray 914 associated with the pupil centroid 913 in the 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 the eye tracking extrinsic and intrinsic properties database 702). In particular, the 3D pupil center locator module 720 may bend the ray 916 into a refracted ray 922 based on the refractive difference between air (at a first refractive index of about 1.00) and the corneal material (at a second refractive index of about 1.38) in the simulation. After accounting for refraction caused by the cornea, the 3D pupil center locator module 720 may determine the 3D coordinates 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 may 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 via the convergence and divergence movement depth estimation module 728. Example of the difference between the optical axis and the visual axis
[0177] 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 due to the user's visual axis being defined by its fovea, which is generally not at the center of the person's retina. Thus, when a person wishes to focus on a particular object, the person aligns its visual axis with the object to ensure that light from the object falls on its fovea, while its optical axis (defined by its pupil center and the center of curvature of its cornea) is actually offset slightly from the object. FIG. 10 is an example of an eye 1000 illustrating the optical axis 1002 of the eye, the visual axis 1004 of the eye, and the offset between these axes. Additionally, FIG. 10 illustrates the pupil center 1006 of the eye, the center of corneal curvature 1008 of the eye, and the mean center of rotation (CoR) 1010 of the eye. 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 viewpoint 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 3.0 mm to 7.0 mm, 4.0 to 6.0 mm, 4.5 to 5.0 mm, or 4.6 to 4.8 mm, or any range between any value within any of these ranges and any value. The eye's center of perspective (CoP) 1014 may be a useful location for wearable systems because, in at least some embodiments, aligning the rendering camera to the CoP may help reduce or eliminate parallax artifacts.
[0178] 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 as it represents a line extending from the fovea of the human eye 1000 to the center of the pupil or iris 1006. Example Process for Rendering Content and Checking Alignment Based on Eye Tracking
[0179] 11 is a process flow diagram of an example method 1100 for using eye tracking to provide feedback regarding alignment in 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., fit of the wearable device with the user) based on data from the eye tracking system.
[0180] 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. If desired, the wearable system may also include one or more light sources 326 configured to shine IR light on the user's eye and produce a corresponding flash of light in the eye image captured by the eye camera 324. As discussed herein, the flash of light may be used by the eye tracking module 614 to derive various information about the user's eye, including where the eye is looking.
[0181] In block 1120, the wearable system may detect flashes 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 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.
[0182] 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 positions 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 positions of the centers of curvature as described herein in connection with at least Figures 7A and 8A-8E.
[0183] 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.
[0184] 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 going backwards along the optical axis from the center of curvature of the cornea towards the retina.
[0185] 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.
[0186] 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 suitable location for a rendering camera, as discussed in connection with the light field rendering controller 618 (FIG. 7B) and the 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 the alignment observer 620, and may provide optional feedback to the user indicating whether the fit of the device needs to be adjusted. 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 improper or misaligned alignment. Example of an alignment coordinate system
[0187] 12A-12B illustrate an example eye position coordinate system that may be used to define the three-dimensional position of a user's left and right eyes relative to a 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., in a direction normal to the plane in front of the user's face). Axis x of the coordinate system may correspond to a left-right direction, such as the distance between the user's left and right eyes. Axis y of the coordinate system may correspond to an up-down direction, which may be the vertical direction when the user is standing upright.
[0188] 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-coupled light elements and active or pixelated display elements, and 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.
[0189] As shown in FIG. 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., its 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.
[0190] 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, since it allows a single display alignment volume that is generally symmetrically located on various axes within the eye 1200 and aligned with the optical axis to be utilized for the analysis.
[0191] 12A also illustrates that the 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, the display surface 1202 may be positioned somewhat below the user's horizon such that when the eye 1200 is at position 1206, the user would need to look down at approximately angle 1216 to see the center of the display surface 1202. This may promote a more natural and comfortable interaction with the display surface 1202, especially when viewing content rendered at a shorter depth (or distance from the user), as the user may more comfortably view content below the horizon than above it. Additionally, the display surface 1202 may be tilted (with respect to the y-axis), such as at an angle 1218, such that when the user is looking at the center of the display surface 1202 (e.g., looking slightly below the user's horizon), the display surface 1202 is generally perpendicular to the user's line of sight. In at least some embodiments, the 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., the display surfaces 1202 may be shifted towards each other) such 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
[0192] FIG. 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 movements. 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, with the two ranges desirably overlapping 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-divergence depth, saccade movements, and eye blinks, 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 reduce the visibility of depth plane switching (i.e., by shifting the depth planes during eye blinks and saccades).
[0193] Graph 1200a illustrates an example of a user's convergence-divergence depth over time, and graph 1200b illustrates an example of a user's saccade signal or velocity of eye movement over time.
[0194] 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, the eye tracking data may be sampled within the eye tracking module 614 at a rate of about 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 t 1In the example, the user's convergence-divergence movement depth may cross the hysteresis threshold 1210a, but the eye tracking module 614 detects that the convergence-divergence movement depth crosses the hysteresis threshold 1210a at time t 2 Until then, the event cannot be recognized.
[0195] Graph 1200c also illustrates various thresholds 1210a, 1210b, 1210c within a hysteresis band, which may be associated with a transition 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 motion depth exceeds threshold 1210b, and to display content using depth plane #0 whenever the user's convergence-divergence motion 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 motion depth exceeds the outer threshold 1210c. Similarly, the wearable system will not switch from depth plane #0 to depth plane #1 until the user's convergence-divergence movement depth exceeds the outer threshold 1210a.
[0196] Graph 1200d illustrates an internal flag that may be generated by depth plane selection module 750 or hysteresis band intersection detection module 752 indicating whether the user's convergence-divergence movement depth is within a volume generally associated with depth plane #1 or a volume generally associated with depth plane #2 (i.e., whether the user's convergence-divergence movement depth is above or below threshold 1210b).
[0197] 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 that indicates whether the user's vergence-divergence depth crosses an outer threshold, such as thresholds 1210a or 1210c. In particular, graph 1200e illustrates a flag that indicates whether the user's vergence-divergence depth crosses the hysteresis band completely 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).
[0198] Graph 1200f illustrates an internal AVM flag that may be generated by depth plane selection module 750 or hysteresis band intersection 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 thus identify when the user may have been experiencing undesirable accommodation-vergence-divergence mismatch for a near 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 is beyond thresholds 1210a and 1210c by an additional threshold from threshold 1210b.
[0199] 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 blinking, reducing the likelihood that the user will perceive a switch in depth planes.
[0200] Graph 1200h illustrates an example output from depth plane selection module 750. In particular, graph 1200h shows that depth plane selection module 750 can output instructions to a rendering engine, such as rendering engine 622 (see FIG. 6), to utilize a selected depth plane, which can change over time.
[0201] 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.
[0202] Here, various times (t 0 -t 10 ) in the graphs 1200a-1200j.
[0203] Time t 0 At some point around time t , the user's convergence-divergence depth exceeds 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 ... at approximately time t 1 A flag may be raised that a hysteresis band has been exceeded at
[0204] The depth of the user’s convergence and divergence movement is 0 From approximately time t 4 It may continue to decrease until and then increase.
[0205] Time t 1In graph 1200d, the user's convergence-divergence depth may exceed a 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 into a volume generally associated with depth plane #0.
[0206] Time t 3 In graph 1200a, the eye tracking module 614 may determine that the user's convergence-divergence motion depth has moved entirely through the hysteresis band and exceeded the outer threshold 1210c. As a result, the eye tracking module 614 may generate a signal indicating that the user's convergence-divergence motion 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 motion depth is outside the hysteresis band between those two depth planes.
[0207] In at least some embodiments, the eye tracking module 614 is configured to 3In particular, the eye tracking module 614 may be configured to switch depth planes based on a determination that the vergence-divergence depth moves from the volume of the currently selected depth plane (depth plane #1, as shown by graph 1200h) into the volume of another depth plane (depth plane #0) and generally exceeds a hysteresis band. In other words, the eye tracking module 614 may implement a depth plane switch whenever a hysteresis band is exceeded (graph 1200e is high) and an accommodation-vergence-divergence mismatch based on the time or magnitude of the mismatch is detected (graph 1200f is high). In such an embodiment, 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 FIG. 13, the eye tracking module 614 may be configured to delay the depth plane switch 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.
[0208] Time t 4In 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 a volume associated with depth plane #0 for a time period greater than a predetermined threshold time (and, optionally, for that period, in a hysteresis band). Examples of the predetermined threshold time include 5 seconds, 10 seconds, 20 seconds, 30 seconds, 1 minute, and 90 seconds, and 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 movement depth is detected more than a threshold distance from the currently selected depth volume.
[0209] Time t 5 Now, 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 through the display 220 to the user, the display 220 may begin rendering content to the newly selected depth plane #0 at time t 6 By then, the image may be completely switched to the newly selected depth plane #0.
[0210] Thus, graphs 1200a-j show 0 and 6 Graphs 1200a-j illustrate how a system may respond to a 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. 7 and 10 In between, it can be illustrated how the system can respond to the user's changing convergence-divergence movements, which may precede a predetermined period of time, and can switch depth planes in response to detection of the user's eye blinking.
[0211] Time t 7 In graph 1200e, 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 the outer threshold 1210c), and in response, the eye tracking module 614 may modify the hysteresis flag, as shown in graph 1200e.
[0212] Time t 8 In graph 1200d, 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 into 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.
[0213] Time t 9 In graph 1200e, the eye tracking module 614 may detect that the user's convergence-divergence depth has exceeded threshold 1210a and moved out of the hysteresis volume into 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.
[0214] Time t 10 Around time t, the user may blink and the eye tracking module 614 may detect the 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 of the time t 10 In, one may command the depth plane to be switched. Exemplary Process for Calibrating Depth Plane Selection
[0215] As discussed herein, a head mounted display, such as display 220 of Figure 2, may include multiple depth planes, each of which provides a different amount of wavefront divergence to provide different accommodation cues to the user's eyes. 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 eyes with a desired level of wavefront divergence, as an example.
[0216] In at least some embodiments, a wearable system, including the display 220, may be configured to display image content with accommodation cues based on a current fixation point or vergence depth of the user's gaze (e.g., to reduce or minimize accommodation-vergence mismatch). In other words, the wearable system may be configured to identify a vergence depth of the user's 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.
[0217] As described 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 current interpupillary distance (IPD) of the user. 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 lines of sight) and determining where those axes intersect in space and thus where the user's fixation point or convergence depth is. 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 therefore be appreciated that the user's IPD is useful in determining the convergence depth.
[0218] In various embodiments, the wearable system may be calibrated for a particular primary user. Calibration may include 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 on optical infinity). Calibration may also include determining the user's pupil distance when the user focuses on objects closer than optical infinity, such as objects in a close distance (e.g., less than 2.0 meters) and objects in a medium distance (e.g., between about 2.0 and 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 pupil distance. In other words, when the user's pupil 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-divergence distance is at or near optical infinity. In contrast, when the user's pupillary distance is near its minimum value, the wearable system may be able to infer that the user's convergence-divergence distance is close to that of the user at a distance determined by calibration.
[0219] 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 appreciated that the virtual content may include information about the location in the 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 the fixation point of the user's eye 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 the virtual space in which the virtual content should be placed.
[0220] In some embodiments, the wearable system may still make a determination as to whether the user is looking at the 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 the depth information associated with the virtual content to determine whether to switch depth planes. As another example, the wearable system may identify a real or virtual object that 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 will be 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 by real or virtual content in the user's field of view, and make the assumption that the user is looking at 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).
[0221] Another example of an alternative depth plane selection process is dynamic calibration. Dynamic calibration may 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 its eye gaze direction, as discussed in connection with module 728 of FIG. 7A) to estimate the user's convergence-divergence movement depth. IPD estimation may be performed by IPD estimation module 726 of FIG. 7A, with additional details and example embodiments discussed herein in connection with module 726. Dynamic calibration may occur as a background process and require no specific action from the user. In addition, 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 taken as the user's IPD. The IPD value calculated in this manner may be referred to herein as IPD_95.
[0222] It should be appreciated 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., IPD95) 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.
[0223] 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 the depth plane selection based solely on the IPD.
[0224] 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 correspond to a switch point between depth planes in some embodiments disclosed herein (e.g., the system may prefer to utilize a first depth plane when the user is focused below 78 mm and utilize 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 to 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 an embodiment).
[0225] In some instances, the wearable system may refine its calculation of the 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 extent to which such relationship changes 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 that is 0.6 mm less than its maximum IPD may converge to a distance of 78 mm). However, the actual IPD difference (between the maximum and the 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 vergence-divergence distance of 78 mm when his / her current IPD is 0.73 mm less than his / her maximum IPD (e.g., his / her IPD when looking at a distance of at least 10 meters), a person with an IPD of 64 mm may have a vergence-divergence distance of 78 mm when his / her current IPD is 0.83 mm less than his / her maximum IPD, and a person with an IPD of 72 mm may have a vergence-divergence distance of 78 mm when his / her current IPD is 0.93 mm less than his / her 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 does not distinguish between users with different IPDs, the 0.6 mm number may refer to an IPD_95 value (e.g., may refer to 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, a predetermined number of deviations from the 0.6 mm number may be available and may be associated with different ranges of maximum IPD values.
[0226] Using such a relationship, the wearable system may be able to determine the user's current convergence depth by comparing its maximum IPD to 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 regarding the user's IPD over time and identifying the maximum IPD in 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.
[0227] 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. An embodiment of method 1400 can be used by the wearable system to render content onto a depth plane that generally reduces or minimizes any vergence-divergence-accommodation mismatch that would otherwise lead to user discomfort and fatigue.
[0228] 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, such as 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 an eye tracking image 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 an eye tracking image for at least a given period of time (e.g., a predetermined period of time, a dynamically determined period of time, etc.).
[0229] 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 based, at least in part, on data from one or more other sensors from the wearable system, such as IMUs, accelerometers, gyroscopes, proximity sensors, touch sensors, 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, may detect the physical presence of the user, 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.
[0230] In block 1406, the wearable system may attempt to identify the current user by performing an identification process. As an 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 its 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).
[0231] If there is a match between the current user's IPD and the calibrated user's IPD, the wearable system may assume that the current user is the calibrated user and load the 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 in fact 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.
[0232] In some embodiments, the wearable system may use measurements other than (or in addition to) the user's IPD to identify the current user. 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 there is a match, where a match is interpreted to mean that 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 and a match is interpreted to mean that 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 implemented 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.
[0233] 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.
[0234] In some embodiments, multiple identification schemes may be utilized to increase the accuracy of user identification. For example, it should be understood that the IPD is a relatively rough identification criterion. In some embodiments, the 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 refined or accurate identification scheme may be utilized (e.g., iris scanning). Such a multi-step identification scheme may advantageously conserve processing resources, since a more accurate identification scheme 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.
[0235] 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-divergence 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-divergence distance.
[0236] 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 line of sight, 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 in 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 of block 1412 may be performed regardless of whether blocks 1408 and / or 1410 (and blocks associated with these blocks) are performed or are available to the display system. For example, in some embodiments, the display system may only perform block 1412 to determine depth plane switching.
[0237] 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 in 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 in which each virtual object should be presented.
[0238] As will be described in more detail below with respect to FIGS. 16A-18, the wearable system may assign a separate volume of space (also referred to herein as a "zone" or marker) to surround each object. These volumes of space may preferably 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 an 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.
[0239] In block 1414, the wearable system may perform a depth plane switch. The depth plane switch in block 1414 may be performed with the 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 a depth plane switch according to the configuration parameters generated during calibration with that user. If the current user is identified as not being a calibrated user and dynamic calibration was performed in block 1410, block 1412 may involve a depth plane switch 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 switch 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.
[0240] With continued reference to FIG. 14, it should be understood that the display system may be configured to continually verify the identity of the user. 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 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 calibration profile of the calibrated user 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 persistently perform block 1406 and may not continue to detect the calibrated user. In response to determining that the calibrated user is not 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.
[0241] 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 may 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 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 period (5 seconds, 10 seconds, 20 seconds, etc.).
[0243] 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 a 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 eye in an eye tracking image. In some instances, the wearable system may be able to distinguish between 1) failing to detect the user's eye because the user has closed their eye, and 2) failing to detect the user's eye because the user has removed the wearable system. Thus, when the wearable system detects the user's closed eye, the wearable system may determine that the device is being worn. In some embodiments, some or all of the decisions associated with blocks 1502 and / or 1504 may be similar or substantially identical to those associated with blocks 1402 and / or 1404, respectively, as described above with reference to FIG. 14.
[0244] In block 1506, the wearable system may check whether it has been previously calibrated for any user. Block 1506 may, in various embodiments, 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.
[0245] At block 1508, the wearable system may estimate the current user's IPD, and at block 1510, the wearable system may accumulate eye tracking data related to the current user's IPD. The IPD data accumulated at block 1510 may be measurements of the user's interpupillary distance over time, measurements of the user's left and right rotation centers 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 at 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).
[0246] 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 accumulation of IPD data 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 taken 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 in the presence of 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 the 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 the maximum 5% 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 a maximum of 2% of values are excluded (which may be preferred in systems with eye tracking systems that produce relatively few outlying IPD measurements). As an additional example, 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 the measured values are excluded.
[0247] In block 1512, the wearable system may determine whether the estimated IPD of the current user is within a threshold of the IPD of the calibrated user (or one of the IPDs of one of the calibrated users, if there are multiple such users). The threshold may be 0.5 mm, 1.0 mm, 1.5 mm, 2.0 mm, or 2.5 mm, as examples. 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 erroneously 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 positive 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.
[0248] 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.
[0249] 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 (or content-based switching (at block 1516)) in block 1518. 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.
[0250] In block 1516, the wearable system may implement content-based switching under circumstances as discussed herein, such as when previous calibration data is not available. In this block, depth plane selection may be made according to a depth associated with the virtual content being displayed, as opposed to tracking the user's convergence-divergence motion depth, as discussed herein. Content-based depth plane switching is further discussed with respect to FIGS. 16-17B.
[0251] In block 1520, the wearable system may perform depth plane switching. The depth plane switching in block 1520 may be performed with the 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 the configuration parameters generated during calibration with that user. If the current user is identified as not being a calibrated user and dynamic calibration was performed in block 1518, block 1520 may involve depth plane switching according to the 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
[0252] As described herein, the wearable system may present virtual content through a particular depth plane. As the virtual content is updated, e.g., as a virtual object moves and / or is replaced with a different virtual object, the wearable system may select a different depth plane in 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 in which to present the virtual content.
[0253] Exemplary schemes for selecting depth planes, referred to herein as content-based switching, are 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 that 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 each virtual object to be presented as virtual content to the user with a zone. A zone may be, for example, a volume of space that surrounds 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, the zones are preferably non-overlapping, and thus the space encompassed by each zone may be associated with only a single virtual object.
[0254] In some embodiments, the wearable system may monitor the user's line of sight, e.g., identify where the user is looking (e.g., within the user's field of view). For the example line of sight, the wearable system may identify a zone that includes where the user is looking. With an identified zone, in this example having 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 the virtual content at the selected depth plane, which is the depth plane associated with the virtual object.
[0255] Advantageously, the wearable system may utilize higher latency eye tracking, or otherwise less precise eye tracking schemes, than may be required if depth plane switching relied on accurately determining the depth of the fixation point. In some embodiments, for scenarios where multiple virtual objects are displayed at separate depths, statistical probability or spatial correlation may be utilized to distinguish the content to which the user is likely to observe or attend. Thus, the wearable system may determine a fixation area or volume (e.g., rather than a precise fixation point) and select a depth plane based on the fixation area or volume. In some embodiments, weighting factors such as the last application utilized or the degree to which the user's gaze has changed may 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, how quickly the user's gaze changes, etc.), the size of the zone may be increased, and if less uncertainty exists, the size of the zone may be decreased.
[0256] As will be illustrated in Figure 16A, in some embodiments, the zones may encompass discrete angular distances (e.g., extending from the user's eye to infinity from the user). In this example, the wearable system may therefore require accuracy that is sufficient only to locate the user's line of sight within a particular portion of the X and Y plane.
[0257] 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, tolerance of the eye tracking system, tracking details of the most recently used application, how quickly the user's gaze changes, etc. 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, a particular 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.
[0258] 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 the uncertainty associated with the depth of the virtual content exceeds a threshold. For example, the display system may determine that the depth or location information regarding the 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 is static even as the user's position changes or the user moves beyond a predetermined level of position change or movement, respectively), and thus transition to dynamic calibration-based depth plane switching. Such a transition may promote a more comfortable and / or realistic viewing experience.
[0259] Although described primarily in the context of depth plane switching, it should be understood that one or more of the techniques described herein with reference to Figures 14 and / or 15 may be utilized in any of a variety of different display systems capable of outputting light to a user's eye with different amounts of wavefront divergence. For example, in some embodiments, one or more of the techniques described herein with reference to Figures 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 (Figure 4) may be a VFE 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 (focal length of light) through which light is output to a 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 herein by reference in its entirety. Other configurations are also possible.
[0260] 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 thus encompass a certain 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, for example, 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.
[0261] 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 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 a book virtual object 1612. Thus, the wearable system is presenting virtual content comprising the tree virtual object 1610 and the book virtual object 1612.
[0262] The user's eye 1606 may move around the field of view 1602 and, 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 the selection of a depth plane.
[0263] With respect 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 example fixation point 1614. The wearable system may determine that the user is viewing the fixation point 1614 based on the user's eye 1606. 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 the 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 may 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.
[0264] As a result, if the user adjusts fixation to fixation point 1616 or 1618, the wearable system may maintain the presentation at depth plane C 1604B. However, if the user adjusts fixation within zone 1608B, the wearable system may select depth plane C 1604C to present the virtual content. It should be understood that although the example of FIG. 16A includes four zones, a fewer or greater number of 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 it is possible to extend from the front to the back of the display frustum without more than one object occupying the same zone, e.g., with two or more objects not 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 lines 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 be increased, decreased, or zoned in number as the accuracy of gaze detection increases or decreases.
[0265] FIG. 16B illustrates an example, shown in perspective view, of the volume of space encompassed by each zone of FIG. 16A. As illustrated, 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 and segment or divide 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 be effectively 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 to the furthest plane on which the display system may display content).
[0266] FIG. 17A illustrates another representation of a user's field of view 1602 for content-based switching. In the embodiment 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 FIG. 16A-B. For example, the zone 1702, within which the book virtual object 1612 is located, is illustrated to encompass an enclosed shape such as a spherical volume of space, a cylindrical volume of space, a cube, a polyhedron, etc. 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 be of similar line of sight to the user.
[0267] 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 in 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 the book virtual object 1612 in FIG. 17A is moved in front of the tree virtual object 1610 (e.g., in 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.
[0268] 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 a 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 the 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 .
[0269] As described herein, in content-based depth plane switching, the depth plane associated with the virtual object is prioritized over the fixation point. An example of this is illustrated for the fixation point 1704. As illustrated, an example zone 1702 of a book virtual object 1612 may encompass a volume of space that includes a portion defined by depth plane B 1604B and depth plane 1604C. In one case, the wearable system determines that the user is fixating on a point 1704 in depth plane C and also identifies the book fixation point 1704 as being included within the zone 1702. Because the depth plane associated with the book virtual object 1612 prioritizes depth plane switching, the wearable system switches to depth plane B of the book virtual object 1612 instead of depth plane C of the fixation point 1704. FIG. 17B illustrates an example of a perspective view of the representation of FIG. 17A.
[0270] 18 illustrates a flowchart of an example process for selecting a depth plane based on content-based switching. For convenience, the process 1800 will be described as being performed by a wearable system of one or more processors (e.g., a wearable system such as the wearable system 200 described above).
[0271] 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.
[0272] In block 1804, the wearable system determines a fixation point. The wearable system may utilize sensors such as cameras to estimate a three-dimensional location where the user is fixating. These cameras may update at a particular rate, such as 30 Hz, 60 Hz, etc. The wearable system may determine vectors extending from the user's eyes (e.g., from the center of the eye or the pupil) and estimate a three-dimensional location where the vectors intersect. In some embodiments, the fixation point may be estimated based on the IPD, where a certain change in IPD from a 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 the IPD to further locate an 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 in which the fixation point for the virtual content is likely to be.
[0273] In block 1806, the wearable system identifies a zone that includes the fixation point. As discussed with respect to FIGS. 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.
[0274] At block 1808, the wearable system selects a depth plane associated with the 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 at 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.
[0275] 19 illustrates a flow chart of an example process for adjusting zones based on content-based switching. For convenience, the process 1800 will be described as being implemented by a wearable system of one or more processors (e.g., a wearable system such as the wearable system 200 described above).
[0276] 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 FIGS. 16A-17B.
[0277] 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, e.g., in block 1902, five virtual objects may be presented. In block 1904, eight virtual objects may be presented. 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 thus progress around the user's field of view.
[0278] In block 1906, the wearable system updates the zones associated with one or more virtual objects. For the example of additional virtual objects 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 adjustment of the zones. For example, FIG. 16A illustrates two virtual objects. If additional virtual objects are included, they may be included within a zone in which either of the two virtual objects are also included. Thus, the wearable system may adjust the zones, e.g., adjust the volume of space allocated to each zone (e.g., reduce the volume of space). In this way, each zone may include a single virtual object. For the example of virtual objects moving, the moving virtual object may move closer to another virtual object. Thus, the moving virtual object may extend into a zone associated with the other virtual object. Similar to above, the wearable system may adjust the zones to ensure that each virtual object is included within its own zone.
[0279] As an example of an update, 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.
[0280] As another example of an update, the zone may be similar to the zone in FIG. 17A. With respect to FIG. 17A, if the book virtual object 1612 moves closer to the tree virtual object 1610, the zone 1708 surrounding the tree virtual object 1610 may include the book virtual object 1612. Thus, 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 a minimum zone around the tree virtual object 1610.
[0281] FIG. 20 illustrates a flow chart of an exemplary process for operating a head mounted display system based on a user identification. For convenience, the method 2000 will be described as being performed by a wearable system of one or more processors (e.g., a wearable system such as the wearable system 200 described above). In various implementations of the method 2000, the blocks described below can be performed in any suitable order or sequence, and the blocks can be combined or rearranged, or other blocks can be added. In some implementations, the method 2000 may be performed by a head mounted system including one or more cameras configured to capture images of one or both eyes of a user, and one or more processors coupled to the one or more cameras. In at least some of such implementations, some or all of the operations of the method 2000 may be performed, at least in part, by one or more processors of the system.
[0282] In blocks 2002-2006 (i.e., blocks 2002, 2004, and 2006), the method 2000 may begin with the wearable system determining whether 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. In some embodiments, some or all of the operations associated with block 2004 may be similar or substantially identical to those associated with one or more of blocks 1402, 1404, 1502, and / or 1504 as described above with reference to FIGS. 14 and 15. In some examples, the method 2000 may remain in a wait state until the wearable system determines that it is being worn by a user in block 2004. In response to determining that the wearable system is being worn by a user in block 2004, the method 2000 may proceed to block 2008.
[0283] At block 2008, method 2000 may include the wearable system performing one or more iris authentication operations. In some embodiments, some or all of the operations associated with block 2008 may be similar or substantially identical to those associated with one or more of blocks 1406 and / or 1506 as described above with reference to Figures 14 and 15, respectively, for implementations in which iris scanning or authentication is employed. In some examples, one or more of the operations associated with block 2008 may include the wearable system presenting a virtual target to the user (e.g., using one or more displays), capturing one or more images of the user's eye or eyes while the virtual target is presented to the user (e.g., using one or more eye tracking cameras), generating one or more iris codes or tokens based on the one or more images, evaluating the one or more generated iris codes or tokens against a set of one or more predefined iris codes or tokens associated with registered users, and generating an authentication result based on the evaluation. In at least some of these examples, the iris of each of the user's eye or eyes may be shown in some or all of the one or more images. In some implementations, the virtual target may be presented with an intent to attract the user's attention or otherwise guide the user's eye gaze in a certain direction and / or toward a certain location in three-dimensional space. Thus, the virtual target may include, for example, multi-colored and / or animated virtual content, and may be presented to the user with accompanying audio, tactile feedback, and / or other stimuli, or combinations thereof. In at least some of these implementations, the virtual target may be presented to the user with one or more prompts instructing or suggesting that the user look at or otherwise fixate on the virtual target.In some embodiments, instead of or in addition to generating and evaluating one or more iris codes or tokens, one or more of the operations associated with block 2008 may include the wearable system evaluating at least one of the one or more images with one or more reference images to determine if a match exists, and generating an authentication result based on the evaluation. Examples of iris imaging, analysis, recognition, and authentication operations are described in U.S. Patent Application No. 15 / 934,941, filed March 23, 2018 and published September 27, 2018 as U.S. Patent Publication No. 2018 / 0276467, U.S. Patent Application No. 15 / 291,929, filed October 12, 2016 and published April 20, 2017 as U.S. Patent Publication No. 2017 / 0109580, and U.S. Patent Application No. 2017 / 0109580, filed January 17, 2017. No. 15 / 408,197, filed on and published as U.S. Patent Publication No. 2017 / 0206412 on July 20, 2017, and U.S. Patent Application No. 15 / 155,013, filed on May 14, 2016, and published as U.S. Patent Publication No. 2016 / 0358181 on December 8, 2016, each of which is incorporated herein by reference in its entirety. In some embodiments, at block 2008, method 2000 may include the wearable system performing one or more of the iris imaging, analysis recognition, and authentication operations described in the aforementioned patent applications. Additionally, in some implementations, one or more of the iris imaging, analysis recognition, and authentication operations described in the aforementioned patent application may be performed in association with one or more other logical blocks of method 2000, such as one or more of blocks 2010, 2012, and 2018, described below. Other configurations are possible.
[0284] At block 2010, the method 2000 may include the wearable system determining whether an authentication result (e.g., as obtained through performing one or more iris authentication operations at block 2008) indicates whether a user currently wearing the wearable system is a registered user. In some examples, the registered user may be similar or substantially identical to a calibrated user (e.g., a user with which an existing calibration profile is associated). In some implementations, at block 2010, the method 2000 may further include the wearable system determining whether a calibration profile exists for the current user of the device. In some embodiments, some or all of the operations associated with block 2004 may be similar or substantially identical to those associated with one or more of blocks 1406 and / or 1506 as described above with reference to FIGS. 14 and 15, respectively.
[0285] In response to the wearable system determining at block 2010 that the user currently wearing the wearable system is in fact a registered user, method 2000 may proceed to block 2020. At block 2020, method 2000 may include the wearable system selecting settings to be associated with the registered user. In some embodiments, some or all of the operations associated with block 2020 may be similar or substantially identical to those associated with one or more of blocks 1408 and / or 1514 as described above with reference to FIGS. 14 and 15, respectively.
[0286] On the other hand, method 2000 may proceed from block 2010 to block 2012 in response to the wearable system (i) determining at block 2010 that the user currently wearing the wearable system is not a registered user, or (ii) failing to determine at block 2010 that the user currently wearing the wearable system is a registered user. At block 2012, method 2000 may include the wearable system determining whether a confidence value associated with the authentication result exceeds a predetermined threshold. In some embodiments, at block 2012, method 2000 may include the wearable system generating or otherwise obtaining a confidence value associated with the authentication result and comparing the confidence value against a predetermined threshold. In some implementations, the confidence value obtained at block 2012 may indicate a level of confidence that the user currently wearing the wearable system is not a registered user. In some examples, the confidence value may be determined based, at least in part, on whether any iris codes or tokens were successfully generated or otherwise extracted in block 2008. A variety of different factors and environmental conditions may affect the ability of the wearable system to successfully generate or otherwise extract one or more iris codes or tokens in block 2008. Examples of such factors and conditions may include the fit or alignment of the wearable system to the current user, the position and / or orientation of the iris of each of the user's eyes or eyes relative to the position and / or orientation of the one or more cameras at the time the one or more images were captured, lighting conditions, or a combination thereof. It follows that such factors and conditions may also affect the degree of confidence with which the wearable system may be able to determine that the current user is not the registered user.
[0287] In response to the wearable system determining at block 2012 that the confidence value associated with the authentication result does in fact exceed a predetermined threshold, method 2000 may proceed to block 2014. In some examples, such a determination at block 2012 may indicate that the wearable system has determined with a relatively high degree of confidence that the user currently wearing the wearable system is not a registered user. At block 2014, method 2000 may include the wearable system presenting a prompt to the user (e.g., with one or more displays) suggesting that the user enroll in iris recognition and / or participate in one or more eye calibration procedures to generate a calibration profile for the user. In some embodiments, such a prompt may require the user to indicate whether they agree to proceed with the proposed registration procedure. At block 2016, method 2000 may include the wearable system receiving user input in response to the prompt and determining whether the received user input indicates that the user agrees to proceed with the proposed registration procedure. In some examples, at block 2016, method 2000 may monitor received user input and / or pause until the wearable system receives user input in response to a prompt indicating whether the user agrees to proceed with the proposed registration procedure.
[0288] In response to the wearable system determining at block 2016 that user input has been received in response to the prompt indicating that the user has indeed agreed to proceed with some or all of the proposed enrollment procedures, method 2000 may proceed to block 2018. At block 2018, method 2000 may include the wearable system performing some or all of the proposed enrollment procedures according to the user input received in response to the prompt. In some embodiments, performing such enrollment procedures may include the wearable system performing one or more operations associated with iris recognition enrollment and / or eye calibration. As described in further detail below, in some embodiments, such enrollment procedures associated with block 2018 may include one or more procedures for generating an eye tracking calibration profile for the current user, one or more operations for enrolling the current user in iris recognition, or a combination thereof. In response to successful completion of the enrollment procedures associated with block 2018, method 2000 may proceed to block 2020.
[0289] On the other hand, method 2000 may proceed from block 2016 to block 2022 in response to the wearable system (i) determining that a user input has been received in response to the prompt at block 2016 indicating that the user does not agree to proceed with some or all of the proposed registration procedures, or (ii) failing to determine that a user input has been received in response to the prompt at block 2016 indicating that the user agrees to proceed with some or all of the proposed registration procedures. At block 2022, method 2000 may include the wearable system selecting a default setting. In some embodiments, some or all of the operations associated with block 2022 may be similar or substantially identical to those associated with one or more of blocks 1410, 1412, 1508-1512, 1516, and / or 1518 as described above with reference to FIGS. 14 and 15.
[0290] In response to the wearable system determining at block 2012 that a confidence value associated with the authentication result does not exceed a predetermined threshold, method 2000 may proceed from block 2012 to block 2028. In some examples, such a determination at block 2012 may indicate that the wearable system has relatively low confidence in its determination that the user currently wearing the wearable system is not a registered user. At block 2028, method 2000 may include the wearable system determining whether it has attempted to authenticate the current user (e.g., by performing one or more iris authentication operations at block 2008) for more than a predetermined threshold amount of time. In response to the wearable system determining at block 2028 that it has indeed attempted to authenticate the current user for more than a predetermined threshold amount of time, method 2000 may proceed to block 2022.
[0291] In response to the wearable system determining in block 2028 that it has not yet attempted to authenticate the current user for more than a predetermined threshold amount of time, method 2000 may proceed to blocks 2030-2032. In block 2032, method 2000 may include the wearable system performing one or more operations to attempt to improve the accuracy and / or reliability of one or more iris authentication operations performed in connection with block 2008 to enable a decision regarding the user's identity to be made with an increased degree of confidence. As noted above, a variety of different factors and environmental conditions may affect the wearable system's ability to successfully generate or otherwise extract one or more iris codes or tokens. Through performing one or more operations associated with block 2032, the wearable system may attempt to counter or otherwise compensate for one or more such factors and conditions. Thus, at block 2032, method 2000 may include performing one or more operations to increase the likelihood that the wearable system will successfully generate or otherwise extract an iris code or token from an image of one or both of the user's eyes. In some implementations, at block 2032, method 2000 may include performing one or more matching or alignment related operations, one or more operations to vary the position of the virtual target subsequently presented at block 2008, one or more operations to determine whether the user's eyes are visible, or a combination thereof.
[0292] In some embodiments, such one or more fit-or-alignment related actions may correspond to one or more of those described above with reference to alignment observer 620 and / or block 1170 of FIG. 11. That is, in these embodiments, the wearable system may perform one or more actions to evaluate and / or attempt to improve the fit or alignment of the wearable system to the user. To that end, the wearable system may provide the user with feedback and / or suggestions for adjusting the fit, positioning, and / or configuration (e.g., nose pads, head pads, etc.) of the wearable system. Additional examples of matching and alignment related operations are disclosed in U.S. Provisional Application No. 62 / 644,321, filed March 16, 2018, U.S. Provisional Application No. 16 / 251,017, filed January 17, 2019, U.S. Provisional Application No. 62 / 702,866, filed July 24, 2018, and International Patent Application No. PCT / US2019 / 043096, filed July 23, 2019 (each of which is incorporated herein by reference in its entirety). In some embodiments, at block 2032, method 2000 may include the wearable system performing one or more of the iris matching and alignment related operations described in the aforementioned patent applications. Other configurations are also possible.
[0293] As noted above, in some implementations, the method 2000 may include a step in which the wearable system performs one or more operations to change the location of the virtual target, which is subsequently presented in block 2008. In these examples, the method 2000 may proceed from block 2032 to block 2008 and, upon performing one or more iris authentication operations in connection with block 2008, present the virtual target for the user in one or more locations that differ from the location where the virtual target was presented to the user in a previous iteration of the method 2000. In some examples, the virtual target may be presented to the user in a manner that increases the chance of capturing a head-on image of the iris of each of the user's eyes or both eyes. That is, in such examples, the virtual target may be presented to the user in one or more locations in three-dimensional space that may require the user to reorient one or both of their eyes toward one or more cameras in order to look at and / or maintain fixation. In some embodiments, one or more other characteristics of the virtual target (e.g., size, shape, color, etc.) may be altered. Also, as noted above, in some implementations, method 2000 may include, at block 2032, the wearable system performing one or more operations to determine whether the user's eyes are visible. In some such implementations, method 2000 may proceed to block 2022 in response to the wearable system (i) determining that the user's eyes are not visible at block 2032, or (ii) failing to determine that the user's eyes are visible at block 2032.
[0294] In response to reaching block 2020 or block 2022 and performing an operation associated therewith, method 2000 may proceed to block 2024. In block 2024, method 2000 may include the wearable system operating in accordance with the settings selected in block 2020 or block 2022. In some embodiments, some or all of the operations associated with block 2024 may be similar or substantially identical to those associated with one or more of blocks 1414 and / or 1520 as described above with reference to FIGS. 14 and 15, respectively. In some implementations, upon transitioning from block 2020 or block 2022 to block 2024, method 2000 may include the wearable system entering an “unlocked” state or otherwise granting access to certain features to the current user. In block 2026, method 2000 may include the wearable system determining whether it is not being worn by a user. In some embodiments, some or all of the operations associated with block 2004 may be similar or substantially identical to those associated with one or more of blocks 1402, 1404, 1502, 1504, and / or 2004 as described above with reference to Figures 14, 15, and 20.
[0295] In response to determining that the wearable system is worn by the user at block 2026, method 2000 may proceed to block 2024. That is, in response to reaching blocks 2024-2026, the wearable system may continue to operate according to the settings selected at block 2020 or block 2022 until the wearable system determines, in block 2026, that it is no longer worn by the user. In response to determining, in block 2026, that the wearable system is no longer worn by the user, method 2000 may transition back to block 2004. In some implementations, upon transitioning from block 2026 to block 2004, method 2000 may include the wearable system entering a “locked” state or otherwise restricting access to certain features. In some embodiments, when transitioning from block 2026 to block 2004, method 2000 may include a step in which the wearable system pauses or ceases performance of one or more of the operations described above with reference to 2024.
[0296] As mentioned above, in some embodiments, at block 2018, method 2000 may include the wearable system performing an enrollment procedure, which may include performing one or more operations to generate an eye tracking calibration profile for the current user, one or more operations to enroll the current user in iris recognition, or a combination thereof. In some implementations, at block 2018, method 2000 may include the wearable system performing a calibration for the current user, or otherwise performing one or more operations to generate an eye tracking calibration profile for the current user. The calibration may include various processes and may include determining the extent to which the user's eyes have moved as the user focuses on objects at different locations and depths. In some embodiments, the wearable system may be configured to monitor the line of sight of the 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 appreciated that these variables may be understood to form a triangle with a fixation point at one corner of the triangle and the eyes at the other corner. It should also be appreciated 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. The calibration may also include identifying the user's IPD (e.g., the distance between the user's pupils when the user is focused on optical infinity). The calibration may also include determining the user's pupillary distance when the user is focused on objects closer than optical infinity, such as objects at close distances (e.g., less than 2.0 meters) and objects at mid-distances (e.g., about 2.0-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 pupillary distance.In other words, when the user's pupillary distance is at its maximum (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 distance is close to the user at a distance determined by calibration. Thus, after undergoing a full calibration, the wearable system may store a calibration file and / or calibration information for the current user. Further details regarding calibration and eye tracking may be found in U.S. Patent Application No. 15 / 993,371, filed May 30, 2018 and published as U.S. Patent Publication No. 2018 / 0348861 on December 6, 2018, U.S. Provisional Application No. 62 / 714,649, filed August 3, 2018, U.S. Provisional Application No. 62 / 875474, filed July 17, 2019, and U.S. Patent Application No. 16 / 530,904, filed August 2, 2019 (each of which is incorporated herein by reference in its entirety). In some embodiments, at block 2018, method 2000 may include the wearable system performing one or more of the calibration and eye tracking operations described in the aforementioned patent applications. Other configurations are also possible.
[0297] In some implementations, at block 2018, method 2000 may include the wearable system performing one or more operations to enroll the current user in iris authentication. In some examples, such operations may include the wearable system presenting a virtual target to the user (e.g., with one or more displays), capturing one or more images of the user's eye or eyes while the virtual target is presented to the user (e.g., with one or more eye tracking cameras), generating a representation of the iris of each of the user's eyes (e.g., one or more iris codes or tokens) based on the one or more images, and storing the generated representation. In some implementations, instead of or in addition to generating and storing a representation of the iris of each of the user's eyes (e.g., one or more iris codes or tokens), such operations may include storing at least one of the one or more images as a reference or template image. In some implementations, the wearable system may perform one or more of the operations associated with block 2032 when performing one or more operations for enrolling the current user in iris authentication, such as one or more of those associated with block 2018, to increase the likelihood of successfully generating or otherwise extracting an iris code or token from an image of one or both eyes of the user. In some embodiments, the wearable system may perform one or more such operations for enrolling the current user in iris authentication in parallel with the aforementioned calibration procedure for the current user. In other embodiments, the wearable system may perform one or more such operations for enrolling the current user in iris authentication and the aforementioned calibration procedure for the current user at a separate time.
[0298] In some examples, at block 2018, method 2000 may include a step in which the wearable system stores the calibration file or calibration information and the generated representation (e.g., one or more iris codes or tokens) associated with each other. In some embodiments, instead of or in addition to storing the calibration file or calibration information and the generated representation, at block 2018, method 2000 may include a step in which the wearable system stores at least one of the calibration file or calibration information and the one or more images associated with each other. In some embodiments, some or all of the operations associated with block 2018 may be performed independently of method 2000. For example, the wearable system may perform one or more operations to enroll the user in iris authentication and / or one or more associated operations to perform a calibration for the user upon request from the user or when the wearable system is initially turned on or configured.
[0299] In some embodiments, in response to the wearable system determining in block 2012 that the confidence value associated with the authentication result does not exceed the predetermined threshold, method 2000 may proceed from block 2012 to one or more logical blocks other than block 2028. For example, in these embodiments, in response to the wearable system determining in block 2012 that the confidence value associated with the authentication result does not exceed the predetermined threshold, the wearable system may present the current user with one or more alternative authentication options. For example, the wearable system may offer the current user the option to verify their identity by providing a pin, password, and / or other credentials as input to the wearable system. In some of these embodiments, method 2000 may proceed to block 2020 in response to successfully identifying the current user as a registered user using one or more of the aforementioned alternative authentication options. Similarly, in some of these embodiments, method 2000 may proceed to block 2016 in response to failing to successfully identify the current user as a registered user using one or more of the alternative authentication options discussed above. At such a turning point, method 2000 may either proceed to block 2022 or to one or more logical blocks similar to block 2018 in which the wearable system performs one or more operations to register the current user.
[0300] In some examples, such one or more operations to enroll the current user may include one or more procedures for generating an eye tracking calibration profile for the current user, one or more operations to enroll the current user in iris recognition, one or more operations to enroll the current user in one or more of the aforementioned alternative authentication options, or a combination thereof. In some embodiments, at block 2018, method 2000 may further include the wearable system performing one or more operations to enroll the current user in one or more of the aforementioned alternative authentication options. In these embodiments, information generated or otherwise obtained by the wearable system in association with performing one or more operations to enroll the current user in one or more of the aforementioned alternative authentication options may be.
[0301] In these embodiments, at block 2018, the method 2000 may include storing information generated or otherwise obtained by the wearable system in association with performing one or more operations to enroll the current user in one or more of the aforementioned alternative authentication options associated with a calibration file or information regarding the current user, the generated one or more iris representations (e.g., iris codes or tokens) for the current user, one or more images of one or both eyes of the user, or a combination thereof. Additional information as manually provided by the user at block 2018 (e.g., name, email address, interests, user preferences, etc.) may also be stored in association with one or more of the aforementioned information. Other configurations are possible. Computer vision for detecting objects in the environment
[0302] 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 a variety of techniques, including various environmental sensors (e.g., cameras, audio sensors, temperature sensors, etc.), as discussed herein.
[0303] 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, and 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 the 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.), and the like.
[0304] 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.
[0305] 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
[0306] 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 Machine, 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 data sets. For example, the wearable device may generate or store the 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 may be configured to utilize multiple techniques to generate models for analysis of the aggregated data. Other techniques may include using predefined thresholds or data values.
[0307] The criteria for detecting the object may include one or more threshold conditions. If an 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 the 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 the reflection and / or object is present in the environment. The display system may compare the score calculated from the data of the environmental sensors 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 the 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.
[0308] In some embodiments, the 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.
[0309] 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 executed by one or more physical computing systems, hardware computer processors, application-specific circuits, and / or electronic hardware configured to execute specific and particular computer instructions, and thus 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 circuits, etc. The code modules may be compiled and linked into an executable program, installed in a dynamic link library, or written in an interpreted programming language. In some implementations, certain operations and methods may be performed by circuitry specific to a given function.
[0310] 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 implement 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.
[0311] The 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. 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), the remote data repository (160). The methods and modules (or data) may also be transmitted as a data signal generated (e.g., as part of a carrier wave or other analog or digital propagating signal) over a variety of computer readable transmission media, including wireless-based and wired / cable-based media, and may take a variety of 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.
[0312] 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 that includes 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 altered 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 may be performed in other sequences as appropriate, 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 program components, methods, and systems described may generally be integrated together in a single computer product or packaged in multiple computer products. Many implementation variations are possible. Other considerations
[0313] 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 and particular computer instructions, and may be fully or partially automated thereby. For example, the computing system may include a general-purpose computer (e.g., a server) or a special-purpose computer programmed with specific computer instructions, special-purpose circuits, etc. The code modules may be compiled and linked into an executable program, installed in a dynamic link library, or written in an interpreted programming language. In some implementations, certain operations and methods may be performed by circuitry specific to a given function.
[0314] 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 implement 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.
[0315] The 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 a variety of computer readable transmission media, including wireless-based and wired / cable-based media, and may take a variety of 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.
[0316] 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 that includes 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 to, removed from, modified, or otherwise altered 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 sequences as appropriate, for example, 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 program components, methods, and systems described may generally be integrated together in a single computer product or packaged in multiple computer products. Many implementation variations are possible.
[0317] The process, method, and system may 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 may be a wired or wireless network or any other type of communication network.
[0318] 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 may be 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 may 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. Thus, the claims are not intended to be limited to the implementations shown herein, but should be accorded the widest scope consistent with the present disclosure, the principles, and novel features disclosed herein.
[0319] 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, although features may be described above as acting 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 variation of the subcombination. No single feature or group of features is necessary or essential to every embodiment.
[0320] In particular, conditional statements used herein, such as "can," "could," "might," "may," "eg," and the like, are generally intended to 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 generally not 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), thus, for example, when used to connect a list of elements, the term "or" means one, some, or all of the elements in the list. In addition, the articles "a," "an," and "the," as used in this application and the appended claims, unless otherwise specified, should be interpreted to mean "one or more" or "at least one."
[0321] As used herein, a phrase referring to a list of items "at least one of" 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. Transitive 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 transitive phrases are generally 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.
[0322] Similarly, although operations may be depicted in the figures in a particular order, it should be appreciated that such operations need not be performed in the particular order depicted, or in sequential order, or that all of the depicted operations need not be performed to achieve desirable results. Additionally, the figures may diagrammatically depict one or more exemplary processes in the form of a flow chart. However, other operations not depicted may also be incorporated within the diagrammatically depicted exemplary methods and processes. For example, one or more additional operations may be performed before, after, simultaneously with, or during any of the depicted operations. Additionally, operations may be rearranged or reordered in other implementations. In some circumstances, multitasking and parallel processing may be advantageous. Additionally, 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 can be performed in a different order and still achieve desirable results.
Claims
1. A wearable system, comprising: a display configured to present virtual image content to an eye of a user, wherein presenting the virtual image content comprises presenting image light to the eye of the user, the image light having a wavefront divergence corresponding to a depth plane at a distance from the user; and a camera configured to capture an image of the eye of the user; One or more processors Equipped with The one or more processors: receiving, via the camera, the image of the eye of the user; determining an identity of the user based on the image, where determining the identity of the user includes determining whether the user is a registered user; and presenting the image light to the eye of the user via the display, wherein the amount of wavefront divergence is determined based at least in part on the identification of the user, and pursuant to a determination that the user is the registered user, the amount of wavefront divergence is further determined based at least in part on settings associated with the registered user, and pursuant to a determination that the user is not the registered user, the amount of wavefront divergence is determined at least in part on default settings; The device is configured to: the one or more processors are further configured to determine a position of the camera and a position of the display; The identity of the user is determined further based on a position of the camera and a position of the display; Determining the identity of the user further includes normalizing coordinates associated with the image based on a position of the camera and a position of the display; The wearable system, wherein determining whether the user is the registered user is based on the normalized coordinates.
2. The wearable system of claim 1 , wherein determining the identity of the user includes performing at least one of an iris scanning operation and an iris recognition operation.
3. The wearable system further comprises one or more sensors; The wearable system of claim 1 , wherein the one or more processors are further configured to determine a position of the camera and a position of the display via the one or more sensors.
4. determining the identity of the user includes determining that the user is not a registered user; The one or more processors: enrolling the user via iris recognition and / or generating a calibration profile for the user; determining settings for the user based at least in part on information obtained via the at least one of enrolling and generating the calibration profile; and determining the wavefront divergence based at least in part on the settings determined for the user; and The wearable system of claim 1 , further configured to:
5. The one or more processors: presenting a virtual target to the user via the display; receiving, via the camera, the image of the eye simultaneously with presenting the virtual target to the user; The wearable system of claim 1 , further configured to:
6. 2. The wearable system of claim 1, wherein the one or more processors are further configured to receive a second image of the eye of the user via the camera, and the identification of the user is determined further based on the second image.
7. 1. A method comprising: presenting virtual image content to an eye of a user via a display of a wearable system, wherein presenting the virtual image content includes presenting image light to the eye of the user, the image light having a wavefront divergence corresponding to a depth plane at a distance from the user; receiving an image of the eye of the user via a camera of the wearable system; determining an identity of the user based on the image, where determining the identity of the user includes determining whether the user is a registered user; and presenting the image light to the eye of the user via the display, wherein the amount of wavefront divergence is determined based at least in part on the identification of the user, and pursuant to a determination that the user is the registered user, the amount of wavefront divergence is further determined based at least in part on settings associated with the registered user, and pursuant to a determination that the user is not the registered user, the amount of wavefront divergence is determined at least in part on default settings; Including, The identity of the user is determined further based on a position of the camera and a position of the display; Determining the identity of the user further includes normalizing coordinates associated with the image based on a position of the camera and a position of the display; The method of claim 1, wherein determining whether the user is the registered user is based on the normalized coordinates.
8. The method of claim 7 , wherein determining the identity of the user includes performing at least one of an iris scanning operation and an iris recognition operation.
9. The method of claim 7 , further comprising determining a position of the camera and a position of the display via one or more sensors of the wearable system.
10. determining the identity of the user includes determining that the user is not a registered user; The method comprises: enrolling the user via iris recognition and / or generating a calibration profile for the user; determining settings for the user based at least in part on information obtained via the at least one of enrolling and generating the calibration profile; determining the wavefront divergence based at least in part on the settings determined for the user; and The method of claim 7 further comprising:
11. The method comprises: presenting a virtual target to the user via the display; receiving, via the camera, the image of the eye simultaneously with presenting the virtual target to the user; The method of claim 7 further comprising:
12. 8. The method of claim 7, further comprising receiving, via the camera, a second image of the eye of the user, and wherein the identity of the user is determined further based on the second image.
13. A non-transitory computer-readable medium storing instructions that, when executed by one or more processors of a wearable system, cause the one or more processors to perform a method; The method comprises: presenting virtual image content to an eye of a user via a display of the wearable system, wherein presenting the virtual image content includes presenting image light to the eye of the user, the image light having a wavefront divergence corresponding to a depth plane at a distance from the user; and receiving an image of the eye of the user via a camera of the wearable system; determining an identity of the user based on the image, where determining the identity of the user includes determining whether the user is a registered user; and presenting the image light to the eye of the user via the display, wherein the amount of wavefront divergence is determined based at least in part on the identification of the user, and pursuant to a determination that the user is the registered user, the amount of wavefront divergence is further determined based at least in part on settings associated with the registered user, and pursuant to a determination that the user is not the registered user, the amount of wavefront divergence is determined at least in part on default settings; Including, The identity of the user is determined further based on a position of the camera and a position of the display; Determining the identity of the user further includes normalizing coordinates associated with the image based on a position of the camera and a position of the display; Determining whether the user is the registered user is based on the normalized coordinates.
14. The non-transitory computer-readable medium of claim 13 , wherein determining the identity of the user includes performing at least one of an iris scanning operation and an iris recognition operation.
15. 14. The non-transitory computer-readable medium of claim 13, the method further comprising determining a position of the camera and a position of the display via one or more sensors of the wearable system.
16. The method comprises: presenting a virtual target to the user via the display; receiving, via the camera, the image of the eye simultaneously with presenting the virtual target to the user; 14. The non-transitory computer readable medium of claim 13, further comprising:
17. 14. The non-transitory computer-readable medium of claim 13, wherein the method further includes receiving, via the camera, a second image of the eye of the user, and wherein the identification of the user is determined further based on the second image.
Citation Information
Patent Citations
Head-mounted display with iris scanning and profiling capabilities
JP2014534655A
Display device, control method of display device, display system and program
JP2017009777A
Method and system for adjusting focusing length to enhance vision
JP2018158107A
Multi-depth plane display system with reduced switching between depth planes - Patents.com
JP2019507902A
Simulating depth of field
US20180115700A1