Virtual User Input Control in Mixed Reality Environments

A wearable system uses computer vision to recognize and interact with physical remote devices, creating virtual controls that enhance user experience in mixed reality environments by accurately detecting user inputs and emulating device functions.

JP7720364B2Active Publication Date: 2025-08-07MAGIC LEAP INC
View PDF 8 Cites 0 Cited by

Patent Information

Application Number
JP2023136234
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2016-12-05
Filing Date
2023-08-24
Publication Date
2025-08-07
Estimated Expiration
2037-12-01

AI Technical Summary

Technical Problem

Existing technologies face challenges in providing comfortable and natural-feeling virtual reality, augmented reality, and mixed reality experiences due to the complexity of human visual perception, especially in emulating physical remote devices within these environments.

Method used

A wearable system uses computer vision to recognize physical remote devices, generates a virtual remote device with interactive controls, and detects user interactions through body movements, allowing users to control parent devices without physical remote controls.

Benefits of technology

Enables comfortable and natural interaction with virtual remote devices in mixed reality environments by accurately detecting user inputs and emulating physical remote device functions, enhancing user experience and reducing the need for physical controls.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007720364000019
    Figure 0007720364000019
  • Figure 0007720364000020
    Figure 0007720364000020
  • Figure 0007720364000021
    Figure 0007720364000021
Patent Text Reader

Abstract

To provide favorable virtual user input control in a mixed reality environment.SOLUTION: A wearable display system can automatically recognize a physical remote apparatus or a device that the remote apparatus serves using computer vision techniques. The wearable system can generate a virtual remote apparatus with a virtual control panel viewable and interactable by a user of the wearable system. The virtual remote apparatus can emulate the functionality of the physical remote apparatus. The user can select a virtual remote apparatus for interaction, for example, by looking or pointing at the parent device or its remote-control apparatus, or by selecting from a menu of known devices. The virtual remote apparatus may include a virtual button, which is associated with a volume in the physical space.SELECTED DRAWING: Figure 13
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] (CROSS-REFERENCE TO RELATED APPLICATIONS) This application claims the benefit of priority under 35 U.S.C. § 119(e) to U.S. Provisional Application No. 62 / 430,308, filed December 5, 2016, entitled "UNIVERSAL VISUAL REMOTE," and U.S. Provisional Application No. 62 / 430,279, filed December 5, 2016, entitled "MECHANISM FOR A VIRTUAL BUTTON," the disclosures of which are incorporated herein by reference in their entireties.

[0002] FIELD OF THE DISCLOSURE This disclosure relates to virtual reality and augmented reality imaging and visualization systems, and more particularly to rendering virtual user input controls and detecting interactions with virtual user input controls. [Background technology]

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

[0004] Various embodiments for rendering virtual user input controls and detecting actuation of virtual input controls are described.

[0005] As one example, a wearable display system can automatically recognize a physical remote device or a device it services using computer vision techniques. The wearable system can generate a virtual remote device with a virtual control panel viewable and interactable by a user of the wearable system. The virtual remote device can emulate the functionality of a physical remote device. A user can select a virtual remote device for interaction, for example, by looking at or pointing at a parent device or its remote control, or by selecting from a menu of known devices. The virtual remote device may include a virtual button associated with a volume in physical space. The wearable system can detect that a virtual button is activated by determining whether a part of the user's body (e.g., the user's finger) penetrates the volume associated with the virtual button. The present specification also provides, for example, the following items: (Item 1) 1. A wearable system for providing a virtual remote control device in a mixed reality environment, the wearable system comprising: a mixed reality display for presenting a virtual image to a user; an outward-facing imaging system configured to image the user's environment; a sensor configured to communicate with a parent device; A hardware processor, accessing an image acquired by the outward-facing imaging system; and analyzing the image to identify a remote physical device associated with the parent device; accessing specifications of said physically remote device; generating a virtual remote device based at least in part on the specifications of the physical remote device; causing the display to render the virtual remote device; receiving an activation of the virtual remote device for interaction with the parent device; generating instructions, transmitting the instructions to the parent device, and causing the parent device to perform functions as if the physical remote device were activated; a hardware processor programmed to perform the A wearable system comprising: (Item 2) To identify the physically remote device, the hardware processor: Analyzing the image and recognizing the remote physical device using one or more computer vision algorithms, including at least one of a feature point algorithm, a bag of words search, or a neural network algorithm. Item 1. The wearable system of item 1, programmed to: (Item 3) Item 3. The wearable system of item 2, wherein the hardware processor is further programmed to identify the presence of the parent device based, at least in part, on an image acquired by the outward-facing imaging system or a signal received by the sensor indicating the presence of the parent device. (Item 4) Item 1. The wearable system of item 1, wherein the specifications include at least one of a mapping of control elements of the physical remote device to corresponding functions of the parent device, or a communication protocol between the physical remote device and the parent device. (Item 5) To create the virtual remote device, the hardware processor: determining a layout of virtual elements for the virtual remote device based at least in part on the specification; and associating a virtual element of the virtual remote device with a control element of the physical remote device such that activation of a virtual element on the virtual remote device will cause the parent device to react as if a control element corresponding to the virtual element were activated on the physical remote device; Item 5. The wearable system of item 4, programmed to: (Item 6) The hardware processor further comprises: determining a plurality of candidate virtual remote devices associated with the parent device; selecting a virtual remote device from the plurality of candidate virtual remote devices based, at least in part, on a posture of the user or an indication from a user input device; Item 1. The wearable system of item 1, programmed to: (Item 7) Item 1. The wearable system of item 1, wherein the sensor comprises an infrared light source and the instructions are generated and transmitted to the parent device in accordance with an infrared data association communication standard or a radio frequency communication standard. (Item 8) Item 1, the wearable system of item 1, wherein the virtual remote device comprises a virtual button, the virtual button having an active surface associated with a volume of space and configured to track the user's interaction with the virtual button, and a trigger surface for triggering a user interface action. (Item 9) Item 9. The wearable system of item 8, wherein the active surface is in a parallel relationship with the trigger surface. (Item 10) To receive the activation of the virtual remote device, the hardware processor: identifying a first location of the active surface; calculating a second position and movement of the active surface based at least in part on the movement of the user; activating the virtual button when the movement of the active surface is toward the trigger surface and a second position of the active surface intersects at least a portion of the trigger surface, or releasing the virtual button when the movement of the active surface is away from the trigger surface and a first position of the active surface intersects at least a portion of the trigger surface. Item 9. The wearable system of item 8, configured to: (Item 11) Item 11. The wearable system of item 10, wherein the virtual button further comprises a release surface, and the hardware processor is programmed to release the virtual button when a second position of the active surface intersects at least a portion of the release surface. (Item 12) To calculate the movement of the active surface, the hardware processor: calculating a velocity vector of the user's movement; calculating a velocity of the active surface based on at least one of a value of the velocity vector normal to the active surface, a value of the velocity vector parallel to the active surface, or a value of the velocity vector tangential to the active surface; Item 11. The wearable system of item 10, programmed to: (Item 13) Item 9. The wearable system of item 8, wherein the hardware processor is programmed to provide visualization of the virtual button for presentation to the user by the mixed reality display, the visualization being based, at least in part, on movement of the active surface. (Item 14) 1. A method for providing a virtual remote control device in a mixed reality environment, the method comprising: accessing an image of the user's environment obtained by the wearable device; analyzing the image and identifying target devices within the user's environment; accessing a specification associated with the target device, the specification comprising at least a mapping between control elements of a physical remote device and functions of a parent device; generating a virtual remote device based at least in part on the specification; causing the wearable device to render the virtual remote device in a mixed reality environment; Detecting activation of the virtual remote device for interaction with the parent device; generating instructions, transmitting the instructions to the parent device, and causing the parent device to perform functions as if the physical remote device were activated; A method comprising: (Item 15) Item 15. The method of item 14, wherein the target device comprises the physically remote device or the parent device. (Item 16) Item 15. The method of item 14, wherein identifying the target device includes analyzing the image and recognizing the target device using one or more computer vision algorithms, including at least one of a feature point algorithm, a bag of words search, or a neural network algorithm. (Item 17) generating the virtual remote device comprises: determining a layout of virtual elements for the virtual remote device based at least in part on the specification; and associating a virtual element of the virtual remote device with a control element of the physical remote device such that activation of a virtual element on the virtual remote device will cause the parent device to react as if a control element corresponding to the virtual element were activated on the physical remote device; Item 15. The method according to item 14, comprising: (Item 18) Item 15. The method of item 14, wherein the virtual remote device comprises a virtual button, the virtual button having an active surface associated with a volume of space and configured to track the user's interaction with the virtual button, and a trigger surface for triggering a user interface action. (Item 19) Detecting activation of the virtual remote device includes: identifying a first location of the active surface; calculating a second position and movement of the active surface based at least in part on the movement of the user; activating the virtual button when movement of the active surface is toward the trigger surface and a second position of the active surface intersects at least a portion of the trigger surface, or releasing the virtual button when movement of the active surface is away from the trigger surface and a first position of the active surface intersects at least a portion of the trigger surface. Item 15. The method according to item 14, comprising: (Item 20) 20. The method of claim 19, wherein the virtual button further comprises a release surface, and the method further comprises releasing the virtual button when a second position of the active surface intersects at least a portion of the release surface.

[0006] Details of one or more implementations of the subject matter described herein are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages will become apparent from the description, drawings, and claims. Neither this summary nor the following detailed description purports to define or limit the scope of the inventive subject matter. [Brief explanation of the drawings]

[0007] [Figure 1] FIG. 1 depicts an illustration of a mixed reality scenario with some physical reality objects and some actual reality objects viewed by a person.

[0008] [Figure 2] FIG. 2 illustrates a schematic diagram of an embodiment of a wearable display system.

[0009] [Figure 3] FIG. 3 diagrammatically illustrates aspects of an approach for simulating a three-dimensional image using multiple depth planes.

[0010] [Figure 4] FIG. 4 illustrates diagrammatically an embodiment of a waveguide stack for outputting image information to a user.

[0011] [Figure 5] FIG. 5 shows an exemplary output beam that may be output by a waveguide.

[0012] [Figure 6] FIG. 6 is a schematic diagram showing an optical system including a waveguide device, an optical coupler subsystem for optically coupling light to or from the waveguide device, and a control subsystem used in generating a multifocal stereoscopic display, image, or light field.

[0013] [Figure 7] FIG. 7 is a block diagram of an embodiment of a wearable system.

[0014] [Figure 8] FIG. 8 is a process flow diagram of an embodiment of a method for rendering virtual content in relation to recognized objects.

[0015] [Figure 9] FIG. 9 is a block diagram of another embodiment of a wearable system.

[0016] [Figure 10] FIG. 10 is a process flow diagram of an example method for determining user input to a wearable system.

[0017] [Figure 11] FIG. 11 is a process flow diagram of an embodiment of a method for interacting with a virtual user interface.

[0018] [Figure 12] FIG. 12 illustrates an example of a physical environment as perceived by a user of an augmented reality device.

[0019] [Figure 13] FIG. 13 illustrates an example of using hand gestures to initiate a selection event associated with a virtual remote device.

[0020] [Figure 14] FIG. 14 illustrates an example of activating a virtual remote device during a selection event.

[0021] [Figure 15] FIG. 15 illustrates an example of automatically hiding a virtual remote device or ending a selection event when a threshold condition is met.

[0022] [Figure 16] FIG. 16 illustrates an exemplary process for rendering a virtual remote device.

[0023] [Figure 17] FIG. 17 illustrates an example of detecting the act of pressing a virtual button by a user.

[0024] [Figure 18] FIG. 18 illustrates an example where the user activates a virtual button by sliding it up or down.

[0025] [Figure 19] FIG. 19 illustrates an example in which a user activates a virtual touch surface.

[0026] [Figure 20] FIG. 20 illustrates an example process for initiating an interaction event with a virtual element in a mixed reality user interface. DETAILED DESCRIPTION OF THE INVENTION

[0027] 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. (overview)

[0028] Many devices (also referred to as parent devices), such as televisions, audio systems, home theaters, home security systems, doorbells or door locks, air conditioning and heating systems, thermostats, lighting systems (e.g., smart light bulbs), garage door openers, or other home appliances or smart devices, can be operated by a remote control device. The remote control device may be a physical remote device consisting of a small, handheld device. The physical remote device may include buttons (or a touch surface) that allow a user of the parent device to perform basic functions of the device from a distance. The physical remote device can communicate with the parent device using various wireless channels, such as infrared (IR) signals, or radio frequency (RF) signals, such as Bluetooth® or Wi-Fi. Communication between the physical remote device and the parent device may be governed by one or more industry standards or protocols, such as those created by the Infrared Data Association (IrDA) or the Institute of Electrical and Electronics Engineers (IEEE).

[0029] Over time, the number of home appliances and their corresponding remote devices has grown in consumers' homes. More and more devices are connected to networks and can be controlled from there via remote control devices (e.g., devices connected to the Internet of Things). This situation has led to the introduction of universal remote control devices that can be programmed to emulate signals generated by some or even all of the remote devices stored for different devices. The universal remote control device may be part of a smartphone or tablet. For example, a smartphone can use software to emulate a physical remote device and generate an IR signal in conjunction with a control interface appropriate for the emulated physical remote device.

[0030] However, in an augmented reality (AR) or mixed reality (MR) environment, emulating a physical remote device on a physical device (such as a smartphone or tablet) may be impractical because a head-mounted device (HMD) may have a small field of view and the user may need to hold the universal remote control device in an uncomfortable location to interact with the parent device. In addition, a user in an AR / MR environment can also interact with objects using body postures and gestures, and thus may not need a separate physical device as a universal remote control device.

[0031] The systems and methods described herein address, at least in part, these challenges. For example, a wearable system can automatically recognize a physical remote device or a parent device that the remote device services using computer vision techniques. In addition, the wearable system can generate a virtual remote device with a control panel that is visible and interactable by a user of the wearable system. The user can identify the parent device or physical remote device using body posture or eye gaze (e.g., by looking at or pointing at the parent device or physical remote device). In response to detecting the body posture or eye gaze, the wearable system can bring up an associated virtual remote device. The user can also select a virtual remote device from a menu of known devices.

[0032] The virtual remote device may include one or more virtual elements on its control panel. The virtual elements may include virtual buttons, virtual sliders, virtual toggles, or virtual touch surfaces. Unlike a physical remote device or user input device, the virtual remote device does not have user-controlled elements (e.g., buttons or touch surfaces) whose actuation directly triggers an electrical signal to be transmitted from the physical remote device or user input device to an associated computing device. Advantageously, in some embodiments, to detect that a user has actuated a virtual element, the wearable system can detect whether a part of the user's body intersects with the active surface of the virtual element. The wearable system can calculate the movement of the active surface based on the user's movement. For example, the speed and displacement of the movement of the active surface may be a fraction of the movement of the user's finger, which is being used to virtually touch a button. When the active surface reaches a certain threshold position, the wearable system can initiate an interaction event, and the wearable system generates a signal indicating that the user has activated the virtual element. For example, the wearable system may determine that the user has pressed a virtual button when the displacement of the active surface exceeds a threshold condition. When the user withdraws their finger, the wearable system may move the active surface backward toward its original position (before the user interaction). When the active surface moves backward sufficiently (e.g., crosses another threshold position), the wearable system may generate another interaction event associated with releasing the virtual button. (Example of a 3D display for a wearable system)

[0033] 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, videos, combinations thereof, or the like. A wearable system can include wearable devices that, alone or in combination, can present a VR, AR, or MR environment for user interaction. The wearable device can be a head-mounted device (HMD), which is used synonymously with AR device (ARD). Additionally, for purposes of this disclosure, the term "AR" is used synonymously with the term "MR."

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

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

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

[0037] FIG. 2 illustrates an example of a wearable system 200. The wearable system 200 includes a display 220 and various mechanical and electronic modules and systems to support the functionality of the display 220. The display 220 may be coupled to a frame 230, which is wearable by a user, wearer, or viewer 210. The display 220 can be positioned directly in front of the eyes of the user 210. The display 220 can present AR / VR / MR content to the user. The display 220 can comprise a head-mounted display worn on the user's head. In some embodiments, a speaker 240 is coupled to the frame 230 and positioned adjacent to the user's ear canal (in some embodiments, another speaker, not shown, is positioned adjacent to the user's other ear canal to provide stereo / shapeable sound control). The display 220 can include an audio sensor (e.g., a microphone) for detecting audio streams from the environment to perform voice recognition.

[0038] The wearable system 200 may include an outward-facing imaging system 464 (shown in FIG. 4 ), which observes the world in the user's surrounding environment. The wearable system 200 may also include an inward-facing imaging system 462 (shown in FIG. 4 ), which may track the user's eye movements. The inward-facing imaging system may track either single eye movements or both eye movements. The inward-facing imaging system 462 may be mounted to the frame 230 and may be in electrical communication with the processing module 260 or 270, which may process the image information obtained by the inward-facing imaging system and determine, for example, pupil diameter or orientation of the user's 210 eyes, eye movements, or eye posture.

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

[0040] The wearable system 200 may also include a sensor 232 configured to communicate with a physical device (such as a television, air conditioner, or other home appliance). For example, the wearable system 200 may act as a virtual remote for controlling the physical device. The sensor 232 may be an infrared light source controllable by the local processing and data module 270. The sensor 232 may also emit other optical or electromagnetic signals for communicating with the physical device. Communication between the sensor 232 and the physical device may conform to one or more industry standards. For example, if the sensor 232 is configured to emit an infrared signal, communication between the sensor 232 and the physical device may follow a protocol designed by the Infrared Data Association (IrDA). The sensor 232 may be located on the temples of eyeglasses (such as earphones), on the nose pads of the wearable system 200, or elsewhere on or remote from the head-mounted display (e.g., on a beltpack). While the example in FIG. 2 illustrates only one sensor 232, in some embodiments, a display system may be associated with multiple sensors 232.

[0041] The display 220 is operably coupled 250, such as by wired or wireless connectivity, to a local data processing module 260, which may be mounted in a variety of configurations, such as fixedly attached to the frame 230, 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-style configuration, in a belt-coupled configuration), etc.

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

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

[0044] The human visual system is complex and difficult to provide a realistic perception of depth. Without being limited by theory, it is believed that viewers of an object may perceive the object as three-dimensional due to a combination of vergence and accommodation. Vergence of the two eyes relative to one another (i.e., pupil rotation such that the pupils move toward or away from one another, converging the eyes' lines of sight and fixating on an object) is 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 coordinated change in vergence at the same distance, a relationship known as the "accommodation-vergence reflex." Similarly, a change in vergence will induce a coordinated change in accommodation under normal conditions. Display systems that provide better matching between accommodation and convergence-divergence movements may produce more realistic and comfortable simulations of three-dimensional images.

[0045] FIG. 3 illustrates aspects of an approach for simulating a three-dimensional image using multiple depth planes. With reference to FIG. 3 , objects at various distances from the eyes 302 and 304 on the z-axis are accommodated by the eyes 302 and 304 such that the objects are in focus. The eyes 302 and 304 assume particular accommodated states, focusing objects at different distances along the z-axis. As a result, a particular accommodated state may be said to be associated with a particular one of the depth planes 306 having an associated focal length such that an object or portion of an object at a particular depth plane is in focus when the eye is in an accommodated state relative to that depth plane. In some embodiments, a three-dimensional image may be simulated by providing different representations of an image for each of the eyes 302 and 304, and by providing different representations of an image corresponding to each of the depth planes. While shown as separate for clarity of illustration, it should be understood that the fields of view of the eyes 302 and 304 may overlap, for example, as the distance along the z-axis increases. Additionally, while shown as flat for ease of illustration, it should be understood that the contours of the depth planes may be curved in physical space such that all features within the depth plane are in focus with the eye in a particular state of accommodation. Without being limited by theory, it is believed that the human eye is typically capable of interpreting a finite number of depth planes to provide depth perception. As a result, a highly realistic simulation of perceived depth may be achieved by providing the eye with different presentations of images corresponding to each of these limited number of depth planes. (Waveguide stack assembly)

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

[0047] 4, the waveguide assembly 480 may also include multiple features 458, 456, 454, 452 between the waveguides. In some embodiments, the features 458, 456, 454, 452 may be lenses. 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 to form air gaps).

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

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

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

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

[0052] 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 432b may be configured to send collimated light that passes through a first lens 452 (e.g., a negative lens) before reaching the eye 410. The first lens 452 may be configured to create a slight convex wavefront curvature so that the eye / brain interprets light emerging from the next upper waveguide 432b as emerging from a first focal plane closer inward from optical infinity toward the eye 410. Similarly, the third upper waveguide 436b passes its output light through both the first lens 452 and the second lens 454 before reaching the eye 410. The combined refractive power of the first and second lenses 452 and 454 may be configured to produce another, increasing amount of wavefront curvature such that the eye / brain interprets the light emerging from the third upper waveguide 436b as originating from a second focal plane closer inward toward the person from optical infinity, where the light from the next upper waveguide 436b was.

[0053] 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 sending its output through all of the lenses between it and the eye for a collective focal power representing the focal plane closest to the person. To compensate for the stack of lenses 458, 456, 454, 452 when viewing / interpreting light originating from the world 470 on the other side of the stacked waveguide assembly 480, a compensating lens layer 430 may be placed on top of the stack to compensate for the collective power of the lower lens stacks 458, 456, 454, 452. Such a configuration provides as many perceived focal planes as there are available waveguide / lens pairs. Both the light extraction optical elements of the waveguides and the focusing sides of the lenses may be static (e.g., not dynamic or electro-active). In some alternative embodiments, one or both may be dynamic using electro-active features.

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

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

[0056] 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 can 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 can be switched to a refractive index that does not match that of the host medium (in which case the pattern actively diffracts incident light).

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

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

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

[0060] The wearable system 400 may include an outward-facing imaging system 464 (e.g., a digital camera) that images a portion of the world 470. This portion of the world 470 may be referred to as the world camera's field of view (FOV), and the imaging system 464 is sometimes referred to as an FOV camera. The entire area available for viewing or imaging by a 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 as the wearer moves their body, head, or eyes to perceive virtually any direction in space. In other contexts, the wearer's movement may be more constrained, and accordingly, the wearer's FOR may 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.

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

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

[0063] FIG. 5 shows an example of an output beam output by a waveguide. While one waveguide is shown, it will be understood that other waveguides in waveguide assembly 480 may function similarly, and that waveguide assembly 480 may include multiple waveguides. Light 520 is launched into waveguide 432b at input edge 432b of waveguide 432b and propagates within waveguide 432b by TIR. At the point where light 520 impinges on DOE 432a, a portion of the light exits the waveguide as output beam 510. Output beam 510 is shown as approximately parallel, but may also be redirected to propagate to eye 410 at an angle (e.g., forming a diverging output beam) depending on the depth plane associated with waveguide 432b. It will be understood that a nearly collimated exit beam may refer to a waveguide with out-coupling optics that out-couples light to form an image that appears to be set at a depth plane at a long distance (e.g., optical infinity) from the eye 410. Other waveguides or other sets of light-extracting optics may output a more divergent exit beam pattern, which would require the eye 410 to accommodate to a closer distance and focus on the retina, and would be interpreted by the brain as light from a distance closer to the eye 410 than optical infinity.

[0064] FIG. 6 is a schematic diagram illustrating an optical system including a waveguide device, an optical coupler subsystem for optically coupling light to or from the waveguide device, and a control subsystem for use in generating a multifocal volumetric display, image, or light field. The optical system can include a waveguide device, an optical coupler subsystem for optically coupling light to or from the waveguide device, and a control subsystem. The optical system can be used to generate a multifocal volumetric display, image, or light field. The optical system can include one or more primary planar waveguides 632a (only one is shown in FIG. 6) and one or more DOEs 632b associated with each of at least some of the primary waveguides 632a. The planar waveguides 632b can be similar to the waveguides 432b, 434b, 436b, 438b, and 440b discussed with reference to FIG. 4. The optical system may employ a dispersive waveguide device to relay light along a first axis (the vertical or Y-axis in the illustration of FIG. 6 ) and expand the effective exit pupil of the light along the first axis (e.g., the Y-axis). The dispersive waveguide device may include, for example, a dispersive planar waveguide 622 b and at least one DOE 622 a (illustrated by a double-dashed line) associated with the dispersive planar waveguide 622 b. The dispersive planar waveguide 622 b may be similar or identical in at least some respects to the primary planar waveguide 632 a, with a different orientation therefrom. Similarly, the at least one DOE 622 a may be similar or identical in at least some respects to the DOE 632 a. For example, the dispersive planar waveguide 622 b or the DOE 622 a may be made of the same material as the primary planar waveguide 1632 b or the DOE 632 a, respectively. The embodiment of the optical display system 600 shown in FIG. 6 can be integrated into the wearable system 200 shown in FIG.

[0065] The relayed, exit-pupil-expanded light may be optically coupled from the dispersive waveguide device into one or more primary planar waveguides 632b. The primary planar waveguides 632b can relay the light along a second axis, preferably orthogonal to the first axis (e.g., the horizontal or X-axis in the diagram of FIG. 6). Notably, the second axis can be non-orthogonal to the first axis. The primary planar waveguides 632b slightly expand the effective exit path of the light along that second axis (e.g., the X-axis). For example, the dispersive planar waveguide 622b can relay and expand the light along the vertical or Y-axis, and pass the light into a primary planar waveguide 632b, which relays and expands the light along the horizontal or X-axis.

[0066] The optical system may include one or more colored light sources (e.g., red, green, and blue laser light) 610, which may be optically coupled into the proximal end of a single-mode optical fiber 640. The distal end of the optical fiber 640 may be threaded or received through a hollow tube 642 of piezoelectric material. The distal end protrudes from the tube 642 as a free-standing, flexible cantilever 644. The piezoelectric tube 642 may be associated with four quadrant electrodes (not shown). The electrodes may be plated, for example, on the outside, outer surface or outer periphery, or diameter of the tube 642. A core electrode (not shown) may also be located in the core, center, inner periphery, or inner diameter of the tube 642.

[0067] For example, drive electronics 650, electrically coupled via wires 660, drive opposing pairs of electrodes to bend piezoelectric tube 642 independently in two axes. The protruding distal tip of optical fiber 644 has a mechanical resonant mode. The frequency of the resonance may depend on the diameter, length, and material properties of optical fiber 644. By oscillating piezoelectric tube 642 near the first mechanical resonant mode of fiber cantilever 644, fiber cantilever 644 may be caused to oscillate and sweep through a large deflection.

[0068] By stimulating resonant vibrations in two axes, the tip of fiber cantilever 644 is scanned biaxially within an area filling a two-dimensional (2-D) scan. By modulating the intensity of light source 610 synchronously with the scanning of fiber cantilever 644, light emitted from fiber cantilever 644 can form an image. A description of such a setup is provided in U.S. Patent Publication No. 2014 / 0003762, which is incorporated herein by reference in its entirety.

[0069] Components of the optical coupler subsystem can collimate light emitted from the scanning fiber cantilever 644. The collimated light is reflected by a mirrored surface 648 into a narrow dispersive planar waveguide 622b, which contains at least one diffractive optical element (DOE) 622a. The collimated light propagates perpendicularly (with respect to the view of FIG. 6) along the dispersive planar waveguide 622b by total internal reflection, and in so doing, can repeatedly intersect with the DOE 622a. The DOE 622a preferably has a low diffraction efficiency. This diffracts a portion of the light (e.g., 10%) toward the edge of the larger primary planar waveguide 632b at each point of intersection with the DOE 622a, allowing a portion of the light to continue on its original trajectory down the length of the dispersive planar waveguide 622b via TIR.

[0070] At each point of intersection with the DOE 622a, additional light can be diffracted toward the entrance of the primary waveguide 632b. By splitting the incident light into multiple outcoupled sets, the exit pupil of the light can be vertically expanded by the DOE 622a within the dispersive planar waveguide 622b. This vertically expanded light outcoupled from the dispersive planar waveguide 622b can enter the edge of the primary planar waveguide 632b.

[0071] Light entering the primary waveguide 632b can propagate horizontally (with respect to the illustration of FIG. 6) along the primary waveguide 632b via TIR. The light propagates horizontally along at least a portion of the length of the primary waveguide 632b via TIR as it intersects the DOE 632a at multiple points. The DOE 632a advantageously has a phase profile that is the sum of a linear diffraction pattern and a radially symmetric diffraction pattern, and may be designed or configured to produce both deflection and focusing of the light. The DOE 632a advantageously may have a low diffraction efficiency (e.g., 10%) so that only a portion of the light in the beam is deflected toward the viewer's eye at each intersection of the DOE 632a, while the remainder of the light continues to propagate through the primary waveguide 632b via TIR.

[0072] At each point of intersection between the propagating light and the DOE 632a, a portion of the light is diffracted toward the adjacent face of the primary waveguide 632b, allowing the light to escape the TIR and emerge from the face of the primary waveguide 632b. In some embodiments, the radially symmetric diffraction pattern of the DOE 632a additionally imparts a focal level to the diffracted light, both shaping (e.g., imparting curvature) the optical wavefronts of the individual beams and steering the beams to angles that match the designed focal level.

[0073] These different paths can then couple light out of the primary planar waveguide 632b by providing different fill patterns at the DOE 632a's multiplicity, focal level, focal depth, or exit pupil at different angles. Different fill patterns at the exit pupil can be advantageously used to generate light field displays with multiple depth planes. Each layer in the waveguide assembly or set of layers (e.g., three layers) in the stack may be employed to generate distinct colors (e.g., red, blue, and green). Thus, for example, a first set of three adjacent layers may be employed to generate red, blue, and green light, respectively, at a first focal depth. A second set of three adjacent layers may be employed to generate red, blue, and green light, respectively, at a second focal depth. Multiple sets may be employed to generate full 3D or 4D color image light fields with various focal depths. (Other components of the wearable system)

[0074] 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 sensation of pressure or texture upon touching virtual content (e.g., a virtual object, virtual tool, other virtual structure). The haptic sensation may replicate the sensation of a physical object represented by the virtual object, or may replicate the sensation of an imaginary object or character (e.g., a dragon) represented by the virtual content. In some implementations, the tactile device or component may be worn by the user (e.g., a user-wearable glove). In some implementations, the tactile device or component may be held by the user.

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

[0076] Examples of tactile devices and totems usable with the wearable systems, HMDs, and display systems of the present disclosure are described in U.S. Patent Publication No. 2015 / 0016777, which is incorporated herein by reference in its entirety. Exemplary Wearable Systems, Environments, and Interfaces

[0077] The wearable system may employ various mapping-related techniques to achieve a high depth of field within the rendered light field. When mapping a virtual world, it is advantageous to capture all features and points in the real world and accurately depict virtual objects in relation to the real world. To achieve this goal, FOV images captured from a user of the wearable system can be added to the world model by including new photos that convey information about various points and features in the real world. For example, the wearable system can collect a set of map points (such as 2D or 3D points), find new map points, and render a more accurate version of the world model. The world model of a first user can be communicated to a second user (e.g., via a network such as a cloud network) so that the second user can experience the world surrounding the first user.

[0078] 7 is a block diagram of an example MR environment 700. The MR environment 700 may be configured to receive inputs (e.g., visual input 702 from a user's wearable system, stationary input 704 such as a room camera, sensory input 706 from various sensors, gestures, totems, eye tracking, user input, etc. from user input device 466) from one or more user-wearable systems (e.g., wearable system 200 or display system 220) or stationary room systems (e.g., room cameras, etc.). The wearable systems can determine the location and various other attributes of the user's environment using various sensors (e.g., accelerometers, gyroscopes, temperature sensors, movement sensors, depth sensors, GPS sensors, inward-facing imaging systems, outward-facing imaging systems, etc.). This information may be further supplemented with information from stationary cameras in the room, which may provide images from different perspectives or various cues. Image data acquired by cameras (e.g., room cameras or outward-facing imaging system cameras) may be reduced to a set of mapping points.

[0079] One or more object recognizers 708 can crawl through the received data (e.g., a collection of points), recognize or map the points, tag the images, and associate semantic information with the objects using a map database 710. The map database 710 may comprise various points and their corresponding objects collected over time. The various devices and the map database may be interconnected through a network (e.g., a LAN, a WAN, etc.) and accessible to the cloud.

[0080] Based on this information and the set of points in the map database, the object recognizers 708a-708n may recognize objects in the environment. For example, the object recognizers may recognize faces, people, windows, walls, user input devices, televisions, documents (e.g., travel documents, driver's licenses, passports as described in the security embodiments herein), other objects in the user's environment, etc. One or more object recognizers may be specialized for objects with certain characteristics. For example, object recognizer 708a may be used to recognize faces, while another object recognizer may be used to recognize documents.

[0081] Object recognition may be performed using various computer vision techniques. For example, the wearable system may analyze images acquired by the outward-facing imaging system 464 (shown in FIG. 4) and perform scene reconstruction, event detection, video tracking, object recognition (e.g., people or documents), object pose estimation, face recognition (e.g., from images of people in the environment or on documents), learning, indexing, motion estimation, or image analysis (e.g., identifying indicia in documents such as photographs, signatures, identification information, travel information, etc.). One or more computer vision algorithms may be used to perform these tasks. Non-limiting examples of computer vision algorithms include Scale Invariant Feature Transform (SIFT), Speed-Up Robust Features (SURF), Orientation FAST and Rotation BRIEF (ORB), Binary Robust Invariant Scalable Keypoints (BRISK), Fast Retinal Keypoints (FREAK), Viola-Jones algorithm, Eigenfaces approach, Lucas-Kanade algorithm, Horn-Schunk algorithm, Mean-shift algorithm, visual simultaneous localization and mapping (vSLAM) techniques, sequential Bayes estimators (e.g., Kalman filter, extended Kalman filter, etc.), bundle adjustment, adaptive thresholding (and other thresholding techniques), iterative nearest neighbor (ICP), semi-global matching (SGM), semi-global block matching (SGBM), feature point histograms, various machine learning algorithms (e.g., support vector machines, k-nearest neighbor algorithms, naive Bayes, neural networks (including convolutional or deep neural networks), or other supervised / unsupervised models, etc.), etc.

[0082] Object recognition can additionally or alternatively be performed by various machine learning algorithms. Once trained, the machine learning algorithms can be stored by the HMD. Some examples of machine learning algorithms can 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 network, etc.), dimensionality reduction algorithms (e.g., principal component analysis, etc.), ensemble algorithms (e.g., stacked generalization, etc.), and / or other machine learning algorithms. In some embodiments, individual models can be customized for individual datasets. For example, the wearable device can generate or store a base model. The base model may be used as a starting point to generate additional models specific to a data type (e.g., a particular user in a telepresence session), a data set (e.g., a set of additional images acquired of a user in a telepresence session), a conditional situation, or other variations. In some embodiments, the wearable HMD can be configured to generate models for analysis of aggregated data using multiple techniques. Other techniques may include using predefined thresholds or data values.

[0083] Based on this information and the set of points in the map database, the object recognizer 708a-708n may recognize the object, complement the object with semantic information, and bring it to life. For example, if the object recognizer recognizes that a set of points is a door, the system may associate some semantic information (e.g., a door has a hinge and 90-degree movement around the hinge). If the object recognizer recognizes that a set of points is a mirror, the system may associate semantic information that a mirror has a reflective surface that can reflect images of objects in a room. The semantic information may include the affordances of the object, as described herein. For example, the semantic information may include the object's normal. The system can assign a vector whose direction indicates the object's normal. Over time, the map database grows as the system (which may reside locally or be accessible over a wireless network) accumulates more data from the world. Once the object is recognized, the information may be transmitted to one or more wearable systems. For example, MR environment 700 may contain information about a scene being generated in California. Environment 700 may be transmitted to one or more users in New York. Based on data received from the FOV camera and other inputs, object recognizers and other software components can map points collected from various images, recognize objects, etc., so that the scene can be accurately "passed" to a second user who may be in a different part of the world. Environment 700 may also use a topology map for localization purposes.

[0084] 8 is a process flow diagram of an example method 800 for rendering virtual content in relation to recognized objects. Method 800 describes how a virtual scene can be presented to a user of a wearable system. The user may be geographically remote from the scene. For example, a user may be in New York but may want to view a scene currently occurring in California, or may want to go for a walk with a friend who is in California.

[0085] In block 810, the wearable system may receive input from the user and other users regarding the user's environment. This may be accomplished through various input devices and knowledge already held in a map database. The user's FOV camera, sensors, GPS, eye tracking, etc., communicate information to the system in block 810. The system may determine sparse points based on this information in block 820. The sparse points may be used to determine pose data (e.g., head pose, eye pose, body pose, or hand gestures) that can be used in displaying and understanding the orientation and position of various objects in the user's surroundings. The object recognizer 708a, 708n may crawl through these collected points and recognize one or more objects using the map database in block 830. This information may then be communicated to the user's respective wearable system in block 840, and the desired virtual scene may be displayed to the user appropriately in block 850. For example, a desired virtual scene (eg, a user in CA) may be displayed in the proper orientation, position, etc., relative to various objects and other surroundings of the user in New York.

[0086] FIG. 9 is a block diagram of another example of a wearable system. In this example, the wearable system 900 includes a map, which may include map data about the world. The map may reside partially locally on the wearable system and partially in a networked storage location (e.g., in a cloud system) accessible by a wired or wireless network. An attitude process 910 may run on the wearable computing architecture (e.g., processing module 260 or controller 460) and utilize data from the map to determine the position and orientation of the wearable computing hardware or the user. The attitude data may be calculated from data collected on the fly as the user experiences the system and moves within its world. The data may include images of objects in the real or virtual environment, data from sensors (such as inertial measurement units, which generally include accelerometer and gyroscope components), and surface information.

[0087] The sparse point representation may be the output of a simultaneous localization and mapping (e.g., SLAM or vSLAM, which refers to configurations where the input is image / vision only) process. The system can be configured to find not only the location of various components in the world, but also what the world is made of. Poses can be building blocks that accomplish many goals, including capturing in and using data from maps.

[0088] In one embodiment, the sparse point locations may not be entirely adequate by themselves, and additional information may be required to generate a multifocal AR, VR, or MR experience. A dense representation, generally referring to depth map information, may be utilized to fill in this gap, at least in part. Such information may be calculated from a process referred to as stereoscopic vision 940, where depth information is determined using techniques such as triangulation or time-of-flight sensing. Image information and active patterns (such as infrared patterns generated using an active projector) may serve as inputs to the stereoscopic vision process 940. A significant amount of depth map information may be fused together, and some of this may be summarized using a surface representation. For example, mathematically definable surfaces may be an efficient (e.g., for large point clouds) and easy-to-summarize input to other processing devices, such as a game engine. Thus, the outputs of the stereoscopic vision process (e.g., depth maps) 940 may be combined in a fusion process 930. Pose 950 may also be input to this fusion process 930, the output of which is input to map capture process 920. Sub-surfaces may interconnect to form larger surfaces, such as in topographic mapping, and the map becomes a large-scale hybrid of points and surfaces.

[0089] Various inputs may be utilized to resolve various aspects of the mixed reality process 960. For example, in the embodiment depicted in Figure 9, game parameters may be inputs for determining that a user of the system is playing a monster battle game with one or more monsters in various locations, whether a monster is dead or fleeing under various conditions (such as when the user shoots the monster), walls or other objects in various locations, and the like. A world map may contain information about where such objects are located relative to one another, which is another useful input for mixed reality. Attitude relative to the world is likewise an input and plays an important role for nearly any interactive system.

[0090] Controls or inputs from the user are another input to the wearable system 900. As described herein, user inputs can include visual inputs, gestures, totems, audio inputs, sensory inputs, etc. To move around or play a game, for example, the user may need to command the wearable system 900 with respect to a desired object. There are various forms of user control that can be utilized beyond just moving around in space. In one embodiment, a totem (e.g., a user input device) or an object such as a toy gun may be held by the user and tracked by the system. The system would preferably be configured to know that the user is holding an item and understand the type of interaction the user is having with the item (e.g., if the totem or object is a gun, the system may be configured to understand not only the location and orientation, but also whether the user is clicking a trigger or other sensitive button or element, which may be equipped with sensors such as an IMU, which can help determine the situation occurring even when such activity is not within the field of view of any of the cameras).

[0091] Hand gesture tracking or recognition may also provide input information. The wearable system 900 may be configured to track and interpret hand gestures to gesture for button presses, left or right, stop, grasp, hold, etc. For example, in one configuration, a user may wish to flip through email or calendar in a non-gaming environment or perform a “fist bump” with another person or player. The wearable system 900 may be configured to utilize a minimal amount of hand gestures, which may or may not be dynamic. For example, gestures may be simple static gestures, such as extending the hand to indicate stop, thumbs up to indicate OK, thumbs down to indicate not OK, or flipping the hand left and right or up and down to indicate a directional command.

[0092] Eye tracking is another input (e.g., tracking where the user is looking and controlling display technology to render at a specific depth or range). In one embodiment, eye vergence may be determined using triangulation, and then accommodation may be determined using a vergence / accommodation model developed for that particular person. Eye tracking is performed by an eye camera and can determine eye gaze (e.g., direction or orientation of one or both eyes). Other techniques can also be used for eye tracking, such as measuring electrical potentials with electrodes placed near the eyes (e.g., electro-oculography).

[0093] Voice recognition may be another input that may be used alone or in combination with other inputs (e.g., totem tracking, eye tracking, gesture tracking, etc.). System 900 may include an audio sensor (e.g., a microphone) that receives an audio stream from the environment. The received audio stream may be processed (e.g., by processing modules 260, 270 or central server 1650) to recognize the user's voice (from other voices or background audio) and extract commands, parameters, etc. from the audio stream. For example, system 900 may identify from the audio stream that the phrase "Show me your ID" was uttered, identify that this phrase was uttered by the wearer of system 900 (e.g., a security screener, rather than another person in the screener's environment), and derive from the phrase and situational context (e.g., a security checkpoint) an executable command to be performed (e.g., computer vision analysis of things within the wearer's FOV) and the presence of an object ("your ID") on which the command should be performed. The system 900 can incorporate speaker recognition techniques to determine who is speaking (e.g., whether the speech is from the HMD wearer or another person or voice (e.g., recorded speech transmitted by loudspeakers in the environment)) and speech recognition techniques to determine what is being said. Speech recognition techniques can include frequency estimation, hidden Markov models, Gaussian mixture models, pattern matching algorithms, neural networks, matrix representations, vector quantization, speaker diarization, decision trees, and dynamic time warping (DTW) techniques. Speech recognition techniques can also include anti-speaker techniques such as cohort models and world models. Spectral features can be used to represent speaker characteristics.

[0094] With respect to the camera system, the exemplary wearable system 900 shown in FIG. 9 may include three pairs of cameras: a pair of relatively wide-FOV or passive SLAM cameras arranged on either side of the user's face, and a different pair of cameras oriented in front of the user to handle the stereoscopic imaging process 940 and capture hand gestures and totem / object trajectories in front of the user's face. The FOV cameras and pair of cameras for the stereo process 940 may be part of the outward-facing imaging system 464 (shown in FIG. 4). The wearable system 900 may include an eye-tracking camera (which may be part of the inward-facing imaging system 462 shown in FIG. 4) oriented toward the user's eyes to triangulate eye vectors and other information. The wearable system 900 may also include one or more textured light projectors (such as infrared (IR) projectors) to inject texture into the scene.

[0095] 10 is a process flow diagram of an example embodiment of a method 1000 for determining user input to a wearable system. In this example, a user may interact with a totem. A user may have multiple totems. For example, a user may have one totem designated for social media applications, another totem for playing games, etc. In block 1010, the wearable system may detect movement of the totem. Movement of the totem may be recognized through an outward-facing imaging system or may be detected through sensors (e.g., tactile gloves, image sensors, hand tracking devices, eye tracking cameras, head pose sensors, etc.).

[0096] Based at least in part on the detected gestures, eye poses, head poses, or inputs through the totem, the wearable system detects the position, orientation, or movement of the totem (or the user's eyes or head or gestures) relative to a frame of reference in block 1020. The frame of reference may be a set of map points based on which the wearable system translates the totem's (or the user's) movements into actions or commands. In block 1030, the user's interactions with the totem are mapped. Based on the mapping of the user interactions to the frame of reference 1020, the system determines the user input in block 1040.

[0097] For example, a user may move a totem or physical object back and forth, turn a virtual page, move to the next page, or move from one user interface (UI) display screen to another. As another example, a user may move their head or eyes to view different real or virtual objects within the user's FOR. If the user's gaze at a particular real or virtual object is longer than a threshold time, that real or virtual object may be selected as user input. In some implementations, the user's eye vergence-divergence can be tracked, and an accommodation / vergence-divergence model can be used to determine the user's eye accommodation state, which provides information about the depth plane the user is focusing on. In some implementations, the wearable system can use ray-casting techniques to determine real or virtual objects that are aligned with the user's head or eye pose. In various implementations, ray casting techniques can include casting a thin bundle of rays with substantially little lateral width, or casting rays with substantial lateral width (e.g., a cone or truncated cone).

[0098] The user interface may be projected by a display system as described herein (such as display 220 in FIG. 2 ). It may also be displayed using a variety of other techniques, such as one or more projectors. A projector may project an image onto a physical object, such as a canvas or a sphere. Interactions with the user interface may be tracked using one or more cameras outside or part of the system (e.g., using inward-facing imaging system 462 or outward-facing imaging system 464).

[0099] 11 is a process flow diagram of an example method 1100 for interacting with a virtual user interface. Method 1100 may be performed by a wearable system described herein. An embodiment of method 1100 can be used by a wearable system to detect a person or document within the FOV of the wearable system.

[0100] In block 1110, the wearable system may identify a specific UI. The type of UI may be provided by the user. The wearable system may identify that a specific UI needs to be captured based on user input (e.g., gestures, visual data, audio data, sensory data, direct commands, etc.). The UI can be specific to a security scenario, where the wearer of the system observes a user presenting a document to the wearer (e.g., at a passenger checkpoint). In block 1120, the wearable system may generate data for a virtual UI. For example, data associated with the UI's boundaries, general structure, shape, etc. may be generated. Additionally, the wearable system may determine map coordinates of the user's physical location so that the wearable system can display the UI in relation to the user's physical location. For example, if the UI is body-centered, the wearable system may determine coordinates of the user's physical position, head pose, or eye pose so that a ring UI can be displayed around the user or a planar UI can be displayed on a wall or in front of the user. In the security context described herein, the UI may be displayed as if it were surrounding the traveler presenting documents to the wearer of the system, so that the wearer can easily view the UI while viewing the traveler and their documents. If the UI is hand-centered, map coordinates of the user's hand may be determined. These map points may be derived through an FOV camera, data received through sensory input, or any other type of collected data.

[0101] In block 1130, the wearable system may send data from the cloud to the display, or data may be sent from a local database to the display component. In block 1140, a UI is displayed to the user based on the sent data. For example, a light field display can project the virtual UI into one or both of the user's eyes. Once the virtual UI is generated, the wearable system may simply wait for commands from the user and generate more virtual content on the virtual UI in block 1150. For example, the UI may be a body-centered ring around the user's body or the body of a person (e.g., a traveler) in the user's environment. The wearable system may then wait for a command (gesture, head or eye movement, voice command, input from a user input device, etc.) and, if recognized (block 1160), virtual content associated with the command may be displayed to the user (block 1170).

[0102] Additional examples of wearable systems, UIs, and user experiences (UX) are described in U.S. Patent Publication No. 2015 / 0016777, which is incorporated herein by reference in its entirety. (Example of rendering a virtual remote control device)

[0103] In addition to interacting with the user's virtual environment, the user can also control physical objects in the user's environment using a wearable device, whose display 230 can be configured to render a virtual remote device. As further described herein, the wearable system can identify a target device, such as a physical remote device or a parent device controlled by the physical remote device. The wearable system can generate a virtual remote device based on characteristics of the target device or a physical remote device associated with the target device, present the virtual remote device to the user within the AR / MR environment, and allow the user to control the parent device with the virtual remote device. While many of the examples described herein are in the context of using a virtual remote control to control physical devices (e.g., a physical television, a DVD or CD player or audio system, a thermostat, a coffee machine, a refrigerator or other appliance, an electric lamp or light bulb, a door entry system or a home security system, etc.), this is for purposes of illustration and not limitation. Virtual remote control embodiments can additionally or alternatively be used to control virtual devices. For example, a user of a wearable system can use the virtual remote control to control a virtual television rendered by the wearable device and displayed to the user. (Example of initiating a selection event on a virtual remote device)

[0104] FIG. 12 illustrates an example of a physical environment as perceived by a user of a wearable system. The exemplary environment 1200 includes a living room in a user's home. The environment 1200 has physical objects such as a television (TV) 1210, a physical remote control device 1220 (sometimes simply referred to as a remote device), a TV stand 1230, and a window 1240. While the user is wearing the wearable device, the user can perceive and interact with the physical objects. For example, the user may watch the TV 1210 while wearing the wearable device. The user can control the TV using the physical remote device 1220. For example, the user can control the physical remote device 1220 to turn the TV 1210 on / off or change the channel or volume of the TV 1210. The user can also interact with the TV 1210 using a virtual remote device. The virtual remote device may be generated based on the functionality of the physical remote device 1220. For example, a virtual remote device may emulate some or all of the functionality of a physical remote device 1220 (as well as provide additional or alternative functionality).

[0105] A user can initiate a selection event on a virtual remote device associated with a target device. The selection event may cause a user interface action associated with the virtual remote device to be performed. For example, in response to initiating a selection event, the wearable device may render the virtual remote device within the user's FOV. The target device may be a physical remote device, which the wearable system can emulate to create a virtual remote device that emulates the functionality of the physical remote device. The target device may also be a parent device, such as a TV, coffee maker, thermostat, or other home appliance or electronic device, which may be controlled by the physical or virtual remote device. A user can initiate a selection event by actuating a user input device, such as clicking a mouse, tapping a touchpad, swiping on a touchscreen, hovering over or touching a capacitive button, pressing a key on a keyboard or game controller (e.g., a five-way d-pad), pointing a joystick, wand, or totem toward an object, pressing a button on a remote control, or other interaction with the user input device. The user may also use head, eye, or body posture to initiate a selection event, such as by gazing or pointing at a target object for a period of time.

[0106] To initiate a selection event on the virtual remote device, a user can indicate a selection of a target device associated with the virtual remote device. For example, a user can point to a physical remote device and select a virtual remote device associated with the physical remote device. As shown in FIG. 12 , if a user desires to interact with a virtual remote device based on the functionality of the physical remote device 1220, the user may point to the physical remote device 1220 with a hand gesture, such as touching, pointing with a finger, visually encircling an object by, for example, pinching, or using other hand gestures. As an example, a user may point in the direction of the physical remote device 1220 for an extended period of time. As another example, a user may select a virtual remote device associated with the physical remote device 1220 by making a hand gesture to grasp the physical remote device 1220. A user may also indicate the physical remote device 1220 using a user input device (e.g., user input device 466 shown in FIG. 4 ). For example, a user may point to the physical remote device using a stylus.

[0107] A user can also select a virtual remote device by selecting the parent device of the virtual remote control. For such selection, the user can use hand gestures to actuate a user input device. FIG. 13 illustrates an example of using hand gestures to initiate a selection event associated with a virtual remote device. A user can perceive an environment 1300 through a wearable system, as shown in FIG. 13. The environment 1300 can include physical objects such as a TV 1210, a physical remote device 1220, a TV stand 1230, and a window 1240. As shown, the user's left arm 1250a is making a pinch gesture, indicating the TV 1210. The wearable system can recognize this pinch gesture as a command and render and present a virtual remote device 1260 associated with the TV 1210 to the user. As another example, if a user wishes to select a virtual remote device to control the TV 1210, the user may use a body posture (such as grasping or pointing at the TV 1210) to indicate selection of the TV 1210.

[0108] In addition to, or as an alternative to, hand gestures and actuation of user input devices, a user can also select a virtual remote device using eye gaze. The wearable system may perform a cone projection based on the direction of the user's eye gaze (as tracked by the inward-facing imaging system 462). The wearable system can identify objects that intersect with the user's gaze direction and render remote devices associated with such objects. For example, the wearable system can identify a TV 1210 based on the user's gaze direction and therefore present a virtual remote device associated with the TV 1210. The virtual remote device may be generated based on a physical remote device 1220, and the virtual remote device may have similar functionality and control panel as the physical remote device 1220. (Example of Recognizing Target Devices)

[0109] The wearable system can recognize a target device, such as a physical remote device 1220 or a parent device (such as the TV 1210), using various techniques, alone or in combination. As an example, the wearable system may query the target device directly. This is possible if the device can identify itself, for example, by an RF wireless protocol such as Wi-Fi or Bluetooth, and if a protocol already exists to support such queries. For example, the wearable system can pair with the TV 1210 or the physical remote device 1220 using Bluetooth technology.

[0110] The wearable system may also visually identify the target device based on its characteristics. For example, the wearable system may use an outward-facing imaging system to obtain an image of the target device and identify the type of the target device using computer vision algorithms such as feature point methods (e.g., SIFT) combined with a bag-of-words type search, or through the application of artificial neural networks (e.g., "Alex-net") capable of categorizing devices. The wearable system may also identify the target device in a hierarchical manner. For example, the target device may first be identified as a television using a first algorithm, and then as a specific product, e.g., a ManuCo 55" 530U Series Premium 4K UHD Slim Direct-Lit LED TV, using a second algorithm.

[0111] The user can also use other postures or user input devices to define the target device. For example, the user may use a waving gesture to identify a TV, while pointing their finger at a thermostat to identify another type of device (e.g., a thermostat). In some embodiments, the user can use posture to identify the type of target device (such as a TV or a thermostat). The wearable system may implement other techniques to further identify subtypes of the type indicated by the user's posture. For example, the user may use a waving gesture to identify the target device as a TV. The wearable system may invoke a computer vision algorithm to further identify the TV as a ManuCo 55" 530U Series Premium 4K UHD Slim Direct-Lit LED TV.

[0112] The wearable system may identify a target device by visual inspection of an existing target device for one or more characteristics. For example, the target device may include an optically readable label, such as a barcode or QR code. The wearable system may include an optical sensor (e.g., an outward-facing camera) to scan or image the label and extract information from the label. The extracted information may include a device identifier, such as the manufacturer, device type, etc. The label may be affixed or imprinted on the target device. For example, a TV may have a sticker or plate that clearly indicates the TV's manufacturer, model, serial number, etc. As another example, the TV's brand may be imprinted on the surface of the TV panel.

[0113] In some embodiments, when the target device is a physical remote device and the wearable system recognizes the physical remote device, the wearable system may be configured to automatically identify an associated parent device. For example, once the wearable system recognizes the physical remote device 1220 for the TV 1210, the wearable system can retrieve or look up information associated with the parent device, such as the parent device's appearance, the communication protocol associated with the parent device, or the parent device's brand / model. The wearable system can search for and recognize the parent device within the user's environment based on images acquired by an outward-facing imaging system. Recognition may be achieved using computer vision algorithms described herein. The wearable system can also transmit a query signal to the environment and identify the parent device based on a response received to the query signal. These techniques for identifying a parent device based on a physical remote device can also be applied when the target device is a parent device. For example, the wearable system can use similar techniques to identify a physical remote device in the user's environment based on a recognized parent device.

[0114] A parent device may, in some circumstances, be associated with multiple physical remote devices. For example, a game station may be associated with multiple game controllers. The wearable system may prompt the user with a notification indicating that there are more than one virtual remote devices associated with the parent device (each virtual remote device may correspond to a physical remote device). The wearable system may provide the user with the option to select one of the multiple virtual remote devices that the user wishes to use.

[0115] In another example, the wearable system may be uncertain whether the parent device or physical remote device selected by the user is of a certain type. For example, some TVs may have the same appearance but be compatible with different types of physical remote devices. Similarly, some physical remote devices may appear to have the same buttons or shape but service different parent devices. The wearable system may present a list of possible options for the virtual remote device. The user can then select the correct virtual remote device from the list of possible options.

[0116] Additionally or alternatively, the wearable system can be configured to allow a user to select a virtual remote device associated with a target device using the wearable system's virtual user interface. For example, the wearable system may present a list of available virtual remote devices in a menu. The user can select a virtual remote device to interact with from the menu. The wearable system can also present a menu including a list of parent devices or physical remote devices associated with parent devices for which the wearable system can provide virtual remote devices. For example, the parent devices or physical remote devices on the list may have been previously identified by the wearable system using one or more object recognizers 2208a-2208n shown in FIG. 7 . The user can then select a virtual remote device by selecting the parent device or physical remote device from the list.

[0117] The virtual remote device itself may be stored in a data storage device, such as remote data repository 280 shown in FIG. 2. The wearable system can recognize the target device using techniques described herein and fetch specifications for the virtual remote device based on the target device. For example, the wearable system may submit a description of the recognized target device to remote device module 270 and retrieve specifications for the associated virtual remote device. In some embodiments, the processing module may redirect requests for specifications to another computing device (such as a server for maintaining specifications for specific types of devices) based on characteristics of the target device, such as brand, type, year of manufacture, etc.

[0118] The specification may include instructions on how to render the virtual remote device (e.g., specifying the layout, buttons, and other controls, etc.), the communication channel needed to emulate the remote device (e.g., from the IRDA specification), the actual code to be emulated on that channel (e.g., the exact IR pulse sequence associated with selecting "Channel 2," etc.). The specification may also include a mapping of control elements to corresponding functions implemented on the parent device. For example, actuation of the up arrow button (on the physical and virtual remote devices) may be mapped to a volume up function by the parent device. (Example of rendering a virtual remote device)

[0119] A virtual remote device may mirror some or all of the functionality or at least part of the layout of a physical remote device. This may make it easier for a user familiar with the functionality or layout of the physical remote device to operate the virtual remote device. Upon selection of a virtual remote device (e.g., by selecting a parent device or a physical remote device associated with the virtual remote device), the wearable device may render the virtual remote device to appear visually in the user's vicinity. For example, as shown in FIG. 14 , the wearable device may render a virtual control panel 1264 of a virtual remote device 1260 within arm's reach of the user (e.g., 10 cm to 1 meter from the user) so that the user may conveniently interact with the virtual remote device. In some embodiments, as the user moves around in their environment, the virtual remote device may move with the user accordingly. For example, the wearable device may present the virtual remote device at a distance from the user regardless of the user's current location in the environment.

[0120] Additionally or alternatively, the wearable device may render a virtual remote device near the parent device or physical remote device. For example, the wearable device may render a virtual remote device for controlling a TV, with the virtual control panel of the virtual remote device located next to the TV (e.g., as shown in FIGS. 13 and 14). In some embodiments, the rendering location of the virtual remote device may be based on the type of parent device. For example, if the parent device is a TV, the wearable device may render the virtual remote device near the TV because user interaction with the TV is likely to occur when the user is near the TV. As another example, if the parent device is a thermostat, the wearable device may render the virtual remote device near the user (which may be far away from the thermostat). A user may use the virtual remote device to control an upstairs thermostat in their home, even if the user is downstairs.

[0121] A wearable device can render a virtual remote device to be superimposed on the user's physical environment. For example, the wearable device may render virtual remote device 1260 as if it were in front of a wall. The virtual remote device may be rendered as opaque so that the user may perceive the virtual remote device occluding a portion of the user's physical environment, such that the virtual remote device appears as if it were in front of a portion of the environment. For example, as shown in FIG. 14, the user may perceive the virtual remote device as occluding a portion of window 1240. In some implementations, the virtual remote device may be rendered at least partially transparent so that the user may see through the virtual remote device. For example, as shown in FIG. 15, the user may see the window frame and wall even though the user may perceive virtual remote device 1260 as being in front of the window and wall. Some portions of the virtual remote device (e.g., user-actuable elements such as buttons) may be rendered less transparent than other portions (e.g., body or frame) so that the virtual remote device does not occlude the background environment as much.

[0122] The user can also move the rendering location, size, or orientation of the virtual remote device. For example, the user can move the virtual remote device closer (or farther) from the user, up / down, left / right, etc. The user can also fix the rendering location of the virtual remote device at a distance from the user or at a location within the environment.

[0123] In some embodiments, the wearable device may present a focus indicator associated with the TV 1210 or the virtual remote device 1260. The focus indicator may assist the user in seeing or finding the virtual remote device. The focus indicator may comprise a halo, a color, a perceived size or depth change (e.g., causing the target object to appear closer and / or larger when selected), a change in the shape of a cursor graphic (e.g., the cursor may change from a circle to an arrow, the cursor may indicate the position of the user's hand or finger, and the change in the cursor graphic may indicate the user's actuation of a control element or that the user is about to actuate a control element on the virtual remote device), or other audible, tactile, or visual effect that attracts the user's attention. For example, in FIG. 13 , the wearable device may present focus indicators 1262c around the TV 1210 and focus indicators 1262a around the virtual remote device 1260. The wearable device may also present a focus indicator 1262b connecting the virtual remote device 1260 and the TV 1210 to indicate that the virtual remote device 1260 has been associated with the TV 1210. In some embodiments, some or all of the focus indicators may or may not be displayed depending on contextual information, timing, etc. For example, all three focus indicators 1262a, 1262b, and 1262c may be displayed when the virtual remote device 1260 is first selected by the user, which may help the user recognize that the virtual remote device 1260 has been associated with the TV 1210. After a period of time, some or all of the focus indicators may disappear or fade out, as they may no longer be needed to indicate to the user that the remote device 1260 has been associated with the TV 1210. (Example of Interacting with Virtual Remote Devices)

[0124] During a selection event, the user can activate a virtual remote device and interact with the target device. FIG. 14 illustrates an example of activating a virtual remote device during a selection event. In FIG. 14 , the user can use the wearable device to perceive an environment 1400. The environment 1400 can include physical objects such as a TV 1210, a physical remote device 1220 for controlling the TV 1210, a TV stand 1230, and a window 1240. The environment 1400 can also include a virtual remote device 1260. The virtual remote device 1260 can emulate the functionality of the physical remote device 1220 and control the TV 1210. For example, the layout and functionality of the virtual buttons of the virtual remote device 1260 can be substantially identical to the physical keys on the physical remote device 1210.

[0125] The virtual remote device 1260 may include virtual elements such as a virtual keyboard, virtual buttons, virtual switches or toggles or sliders, or a virtual touch surface. These virtual elements may be part of the control panel 1264 of the virtual remote device 1260. To activate the virtual remote device, a user may initiate an interaction event on the virtual element. For example, a user can interact with the virtual element by touching, pressing, releasing, sliding up / down or left / right, moving along a trajectory, or other type of movement in 3D space.

[0126] In response to actuation of virtual remote device 1260, the wearable system may communicate with TV 1210 as if it were physical remote device 1220. As an example, in FIG. 14 , a user may use their right arm 1250b to actuate virtual remote device 1260. The wearable system may image the user's posture using an outward-facing imaging system. Based on the user's posture, the wearable system may calculate the virtual element that the user actuated, as further described with reference to FIGS. 16-18 . In the example depicted in FIG. 14 , the wearable system may determine that the user's right index finger actuated button 1266. In some embodiments, the wearable system may present a focus indicator for button 1266 to indicate that the actuation was by the user.

[0127] Once the wearable system detects that the user has activated a virtual element of the virtual remote device 1260, the wearable system can optionally send a signal via sensor 232 (shown in FIG. 2 ) to the corresponding parent device based on the virtual element activated by the user to instruct the parent device to perform an action. For example, the user can touch virtual button 1266 on the virtual remote device. Because this button is associated with increasing the volume of the TV 1210, the wearable system can optionally generate a signal (such as an IR signal generated by an IR emitter on the wearable device) and communicate the signal to the TV 1210 (which may have an IR detector), thereby causing the TV to increase its volume. The signal generated by the wearable system can be the same signal that would be generated by a corresponding physical remote control device.

[0128] If the signal is a line-of-sight signal (such as an IR signal that must be directed toward a TV's IR detector), the emitter on the wearable system may need to be pointed toward the device (just as a physical remote control must be pointed toward its associated device). Advantageously, the wearable system may be configured to determine whether a requested command (e.g., to turn up the TV's volume or change the channel) has occurred (e.g., by determining an increase in sound intensity using a microphone on the wearable system or by determining whether the TV's display has changed using an outward-facing camera, respectively). If the command's effect is not produced by the parent device, the wearable system may instruct the user to change their posture so that the wearable system's emitter is directed toward the parent device. For example, the wearable system may generate a visual graphic (or an audible instruction) to suggest the user turn their head toward the parent device. In some implementations, for some types of parent devices, communication between the wearable system and the parent device may not be line-of-sight sensitive (e.g., when wireless RF signals or ultrasonic acoustic signals are used), and the aforementioned functionality may be optional.

[0129] 14 illustrates actuating the virtual remote device using hand gestures, the user can also actuate the virtual remote device using other postures, such as head posture, eye posture (including, for example, eye gaze direction), or other body postures. In addition to, or as an alternative to, various postures, the user may interact with the virtual remote device using a user input device. For example, the user may actuate the virtual remote device using a stylus or wand or totem.

[0130] In some embodiments, the wearable system may communicate with a physical remote device to control functions of the parent device. For example, in response to detecting an actuation of the virtual remote device, the wearable system may communicate information associated with the actuation (such as a key pressed) to the physical remote device. The physical remote device can then communicate the information associated with the actuation to the parent device.

[0131] When the user is finished using the virtual remote device, the user uses a hand gesture or actuates the virtual remote device to end the selection event. As an example, while the user is watching a TV program, the user may decide that they no longer need the virtual remote device. As a result, the user may wave their hand to indicate that they are finished using the virtual remote device. The user may also press an end button on the virtual remote device. In response, the wearable system may cease displaying the virtual remote device or display the virtual remote device so that it is substantially visually imperceptible (e.g., with increased transparency), which may assist the user in later selecting the virtual remote device.

[0132] In some implementations, rather than terminating the selection event, the wearable system may temporarily hide the virtual remote device from the user's FOV or move the virtual remote device outside the user's FOV or to the edge of the user's FOV. For example, the user may start watching a movie on the TV 1210 and decide that the virtual remote device may not be needed for a while. The user can use a swipe gesture to indicate that the virtual remote device is not needed at this time. The wearable system can hide the virtual remote device from the user's FOV, move the virtual remote device outside the user's FOV, or minimize the virtual remote device as appropriate.

[0133] The wearable system can also automatically hide the virtual remote device or terminate the selection event if a threshold condition is met. FIG. 15 illustrates an example of such a feature. In FIG. 15, a user can perceive an environment 1500, which includes physical objects such as a TV 1210, a physical remote device 1220, a TV stand 1230, and a window 1240. The user can also perceive a virtual remote device 1260. As described herein, the wearable system can emulate the signals of the physical remote device 1220 and present a virtual user remote device 1260, which includes the functionality of the physical remote device 1220. However, in the example environment 1500, the user is currently watching a program on the TV 1210 through the wearable system. The wearable system can detect that the virtual remote device has been inactive for a threshold time period (10 seconds, 1 minute, 2 minutes, etc.) because the user has not activated the virtual remote device for the threshold time period. The wearable system may gradually fade out a virtual remote device, such as by increasing the transparency of the virtual remote device. For example, the virtual remote device 1260 may change from opaque to transparent as part of the fade-out process. The wearable system may also fade out a virtual remote device by decreasing the visibility of the virtual remote device. For example, the wearable system may gradually reduce the size of the virtual remote device or change the color of the virtual remote device from dark to light (or change the color to a color in the surrounding environment). In some embodiments, the wearable system may remove a focus indicator associated with the virtual remote device when it is hidden. In other embodiments, the wearable system may still display a focus indicator (e.g., a halo around the virtual remote device, etc.) even when the control panel of the virtual remote device is hidden.

[0134] In addition to, or as an alternative to, a period of inactivity, the threshold condition for hiding the virtual remote device or terminating the selection event may be based on contextual information associated with the target device. For example, if the wearable system detects that the user is watching a movie, the wearable system may automatically hide the virtual remote device (or terminate the selection event) after the user selects the movie. As another example, the wearable system may automatically hide the virtual remote device or terminate the selection event based on the type of parent device. For example, the wearable system may be configured to automatically hide the virtual remote device or terminate the selection event after a period of inactivity when the parent device associated with the virtual remote device is a TV or a thermostat. However, when the parent device is a game controller, the wearable system may be configured to leave the virtual remote device in place unless specifically indicated by the user.

[0135] Although the examples described herein refer to one virtual remote device, in some embodiments, the wearable system may render multiple virtual remote devices associated with one or more target devices within the user's FOV. The wearable system may allow the user to interact with and switch among these virtual remote devices using posture or a user input device. (Exemplary Process for Rendering a Virtual Remote Device)

[0136] 16 illustrates an example process for rendering a virtual remote device. Process 1600 may be implemented by the wearable system 200 described herein. In some embodiments, process 1600 may be part of a selection event.

[0137] In block 1610, the wearable system can receive an indication of a target device. The indication may include a change in the user's posture or an actuation of a user input device. For example, the user can make a hand gesture to indicate selection of the target device. The target device may be a physical remote device or a parent device of a physical remote device. For example, the user can point at a TV or a physical remote device of the TV to indicate that the user wants to interact with the TV via the virtual remote device.

[0138] In block 1620, the wearable system can recognize the target device based, at least in part, on characteristics of the target device. The characteristics may include the appearance of the target device, such as the shape, size, color, and layout of the control panel. For example, the wearable system can obtain an image of the target device and apply a computer vision algorithm, which can identify the appearance of the target device. The wearable system can communicate with a data storage device and use the appearance of the target device to identify the brand and model of the target device. The characteristics may also include other visual cues, such as a label. For example, the wearable system can identify a label associated with the target device, which may include information such as the brand, model, manufacturer, manufacturing date, and compatibility of the target device. The wearable system can image and analyze the label as appropriate to recognize the target device. In some implementations, the wearable system may also send a query signal to the target device and recognize a type associated with the target device based on a response to the query signal. For example, the wearable system can wirelessly send a query signal to the target device and request a device identifier from the target device. The target device may respond with its device identifier. The wearable system can thereby associate the device identifier with the target device. The wearable system can use the identifier to access characteristics of the target device, such as the target device's specifications, appearance, etc. The wearable system and the target device can use wireless advertising techniques, where, for example, one of the devices communicates an advertisement and the other devices scan for such advertisement and initiate a wireless connection with the advertising device.

[0139] In block 1630, the wearable system may identify a virtual remote device associated with the target device. For example, based on the recognized target device, the wearable system may access a data storage device that stores virtual remote devices associated with the target device. The wearable system may optionally fetch the virtual remote device (along with specifications for the virtual remote device), as shown in block 1640. In some situations, if the target device is a parent device (e.g., a TV, etc.), the wearable system may identify a physical remote device associated with the parent device after the wearable system recognizes the target device. The wearable system may create a virtual remote device that emulates the functionality of the physical remote device. If the target device is a physical remote device, the wearable system may identify the associated parent device. The wearable system may establish a connection with the parent device and communicate with the parent device as if it were a physical remote device.

[0140] In block 1640, the wearable system can access specifications associated with the virtual remote device. The specifications may include a protocol for communicating with the parent device (e.g., the channel and frequency used for communication, etc.). The specifications may also include the layout of virtual elements on the control panel and the functionality of each virtual element of the virtual remote device. The specifications may be based on the physical remote device used to control the parent device, such that the virtual remote device can have the same specifications as the physical remote device and can replace the physical remote device for communication with the parent device. In some implementations, the wearable system can perform block 1640 immediately after the target device is recognized. For example, the wearable system can perform block 1640 before block 1630. The wearable system can automatically fetch the specifications from a data storage device after the wearable system identifies the model of the physical remote device or the parent device. In some implementations, the wearable system can access the virtual remote device based on the specifications.

[0141] At block 1650, the wearable system can render the virtual remote device within the AR / MR environment based, at least in part, on the specifications. The wearable system can render the virtual remote device and virtual elements of the virtual remote device based on the retrieved layout. In some embodiments, the wearable system can provide one or more focus indicators associated with the virtual remote device, virtual elements of the virtual remote device, or the parent device. For example, the focus indicator can include a visual connection (such as a line) connecting the parent device and the virtual remote device. The focus indicator can indicate that the virtual remote device controls the parent device.

[0142] As further described herein, the user can actuate the virtual remote device (and virtual elements of the virtual remote device) using posture or a user input device. Based on the user's actions, the wearable system can generate signals to cause one or more user interface actions to be performed.

[0143] Although examples herein are described with reference to rendering a virtual remote device based on a physical remote device or parent device, in various embodiments, the virtual remote device can also be rendered based on a user input device 466 (e.g., a physical keyboard, etc.). (Example Interactions with Virtual Elements on a Virtual User Interface)

[0144] The wearable system can be configured to detect activation of a virtual element based on movement of a user's hand or finger or movement of a stylus or wand. The virtual element may be part of a virtual remote device described herein, but in some embodiments, the virtual element may be a standalone user interface element rendered within the AR / VR / MR environment. The virtual element may be a virtual button, toggle, slider, or virtual touch surface, or an element with other types of user interface appearances.

[0145] 17 illustrates an example of detecting a user pressing a virtual button. The virtual button 1700 in FIG. 17 includes a proximal surface 1712 and a distal surface 1714, where the proximal surface 1712 is the side of the virtual button closer to the user, while the distal surface 1714 is the side away from the user.

[0146] The virtual button 1700 may include an active volume 1710. The active volume 1710 may represent a volume of space in the user's environment where the button can be actuated. When the wearable system detects that the user's finger has entered this volume of space, the wearable system may initiate an interaction event on the virtual button 1700 associated with this volume of space. Because the location of the virtual remote device (or virtual button) may change based on the user's position or interactions (such as when the user moves around the room or when the user moves the virtual remote device to a different location), the active volume 1710 associated with the virtual button 1700 may not necessarily be fixed to a location in the user's environment.

[0147] 17 , active volume 1710 associated with virtual button 1700 may be the volume of space between proximal surface 1712 and distal surface 1714 of virtual button 1700. In this example, the volume of space associated with active volume 1710 is the same as the volume of space associated with virtual button 1700, but in some embodiments, the volume of space associated with active volume 1710 may be a portion of the active volume associated with virtual button 1700.

[0148] The active volume 1710 may include a trigger surface 1750 and a release surface 1760. The trigger surface 1750 or the release surface 1760 may cause the wearable system to initiate an interaction event on a virtual element.

[0149] The active volume 1710 may also include an active surface 1730. The active surface 1730 may be in a parallel relationship with the proximal surface 1712 or the distal surface 1714. The position of the active surface 1730 may change based on the movement of the user's finger. For example, the initial position of the active surface 1730 may be on the proximal surface 1712. However, when the user's finger 1720 enters the active volume 1710, the wearable system may calculate a penetration distance 1740 into the active volume 1710 based on the movement of the user's finger 1720. This penetration distance 1740 may be used to calculate the displacement of the active surface 1730. For example, the active surface 1730 may move from the proximal surface 1712 by the amount of the penetration distance 1740. In some embodiments, at least the active surface 1730 is displayed to the user so that the user may visually perceive that the virtual button 1700 has been pressed or released. 17 as activating button 1700, this is for illustrative purposes only, and in other embodiments, the end of a stylus or wand can be used to activate button 1700. Furthermore, the user's finger 1720 can be a thumb, index finger, or other finger.

[0150] The wearable system may also calculate a velocity associated with the active surface 1730. For example, the user's finger 1720 may move at a velocity [ka] may enter the active volume 1710 with [ka] is made up of two components, namely, [ka] may include [ka] is normal to the active surface 1730, and [ka] is parallel to the active surface 1730. [ka] may be applied to the active surface 1730. As a result, the active surface 1730 can move simultaneously with the finger 1720 as the finger 1720 moves toward the back of the active surface. The wearable system utilizes an outward-facing imaging system 464 to image the movement of the user's finger 1720 and use computer vision techniques to determine the position or velocity [ka] In implementations where velocity is measured, the penetration distance 1740 can be determined as: [ka] can be determined via numerical integration (e.g., Simpson's rule, Newton-Cotes algorithm, or Gaussian quadrature).

[0151] As the finger 1720 continues to move toward the distal surface 1714, the active surface 1730 may reach the trigger surface 1750. In some embodiments, the trigger surface 1750 may be located at the distal surface 1714 of the active volume 1710. In other embodiments, the trigger surface 1750 may be between the proximal surface 1712 and the distal surface 1744. In response to determining that the active surface 1730 has reached the location of the trigger surface 1750, the wearable system may initiate an interaction event associated with the trigger surface 1750. For example, the wearable system may generate a signal indicating that the user has pressed the button 1710 as part of the interaction event. In some embodiments, once an interaction event is triggered, the wearable system may at least temporarily prevent another interaction event from being generated. For example, a virtual button may be associated with multiple interaction events, such as a press, release, or slide. Once a press interaction is triggered, the wearable system may prevent a slide or release interaction event from being triggered. The distance between the proximal surface 1712 and the trigger surface 1750 may be set to reflect the sensitivity of the button 1700. For example, a very sensitive button 1700 may have a relatively short distance between the proximal surface 1712 and the trigger surface 1750 (so that the button is easily triggered with a small movement of the fingertip). A less sensitive button 1700 may have a relatively long distance between the proximal surface 1712 and the trigger surface 1750 (so that a larger movement of the fingertip is required to actuate the button). The distance between the proximal surface 1712 and the trigger surface 1750 may be in the range of approximately 1 mm to 5 cm or some other distance in various embodiments.

[0152] In some implementations, the active surface 1730 may be unable to move past the trigger surface 1750. For example, the active surface 1730 may prevent the user's finger 1720 from moving past the trigger surface 1750 even if the user's finger 1720 continues to move toward or past the distal surface 1714.

[0153] The user can terminate the interaction event by, for example, withdrawing their finger. As an example, the user may move their finger back toward the proximal surface 1712. The active surface 1730 may optionally move from the trigger surface 1750 toward the proximal surface 1712. In some embodiments, when the active surface 1730 reaches the release surface 1760, the wearable system may terminate the interaction event associated with pressing the virtual button 1700, thereby allowing another interaction event to be initiated (e.g., by the user pressing the button again toward the distal surface 1714). Additionally or alternatively, when the active surface 1730 reaches the release surface 1760, the wearable system may initiate another interaction event associated with the release button. For example, the virtual button 1700 may be associated with an arrow key such that when the user presses the virtual button 1700, the user's avatar moves in a direction within the virtual environment rendered by the wearable system. When the user releases the virtual button 1700, the wearable system may generate a signal indicating that the user's avatar will stop moving in that direction.

[0154] The active surface 1730 may retract toward the proximal surface 1712 at a predetermined return velocity. The return velocity may be constant or a function of the position of the active surface. For example, the return velocity may gradually increase until the proximal surface 1712 is reached (the return velocity may reach zero because the active surface 1730 may be configured not to pass over the proximal surface 1712 of the virtual button). As another example, the return velocity may change upon reaching a threshold position. For example, the return velocity may be slow while the active surface is between the trigger surface 1750 and the release surface 1760, but may increase as the active surface moves over the release surface 1760 toward the proximal surface 1712. The return velocity may be greater than, less than, or equal to the velocity of the retracting finger.

[0155] In some embodiments, the active surface 1730 may move simultaneously with the finger 1720 when the active surface 1730 is being retracted. For example, the active surface 1730 may move at a velocity [ka] While the finger can be retracted with a velocity [ka] retreat with.

[0156] In addition to, or as an alternative to, pressing a virtual button, a user can also interact with the virtual button by sliding the virtual button. FIG. 18 illustrates an example in which a user activates a virtual button by sliding the virtual button up or down. Virtual button 1800 may include active surface 1830. Active surface 1830 may be an embodiment of active surface 1730 illustrated in FIG. 17. Active surface 1830 may initially be located at position 1832.

[0157] In this example, the active surface 1730 moves in a direction parallel to the distal surface 1714 and the proximal surface 1712, but the movement 1730 of the active surface may move in any direction in 3D space (such as a direction that is not parallel to the distal surface 1714 or the proximal surface 1712).

[0158] 18, the wearable system may determine that finger 1720 is initially at position 1722, which corresponds to position 1832 on active surface 1830. The wearable system may further detect that a portion of finger 1720 intersects with active surface 1830. The wearable system may determine that finger 1720 is moving at a velocity [ka] It is possible to detect a movement from position 1722 to position 1724 with the velocity [ka] is the speed [ka] It consists of [ka] is normal to the active surface 1830, and [ka] is parallel to the active surface 1830. Thus, the wearable system [ka] The active surface 1830 can be moved with

[0159] In this example, the displacement of the active surface 1830 may also be calculated based on the movement of the finger 1720. For example, the wearable system may calculate that the finger 1720 has moved in a direction parallel to the active surface 1830 over a distance 1836. The wearable system may then determine that the active surface may be displaced over the distance 1836. Thus, the wearable system may move the active surface upward from position 1832 to position 1834. In some embodiments, the wearable system may set one or more threshold positions at which an interaction event may be triggered. For example, when the active surface reaches position 1834, the wearable system may generate a signal and move a virtual object in the user's FOV upward. Similarly, as described with reference to FIG. 17 , the wearable system may utilize an outward-facing imaging system 464 to image the movement of the user's finger 1720 and use computer vision techniques to determine the position or velocity of the finger 1720. [ka] In implementations where velocity is measured, the displacement distance 1836 can be determined as: [ka] can be determined via numerical integration (e.g., Simpson's rule, Newton-Cotes algorithm, or Gaussian quadrature).

[0160] When the user's finger 1720 is no longer touching the active surface 1830 or when the user's finger 1720 is sliding downward, the wearable system may retract the active surface to its initial position (such as from position 1834 to position 1832). In some embodiments, the retraction rate may be a predetermined rate, which may not correspond to the movement of the finger. In other embodiments, the active surface may move simultaneously with the finger 1720.

[0161] FIG. 19 illustrates an example in which a user actuates a virtual touch surface. The virtual touch surface 1900 may be part of a virtual remote device described herein or may be a standalone virtual element. The user can actuate the virtual touch surface 1900 using a finger 1720. The finger 1720 may move along a trajectory 1772. The wearable system can therefore initiate an interaction event based on the trajectory 1772. For example, the wearable system can calculate a tangent 1774 to the trajectory 1772. The wearable system can initiate an interaction event if the movement (velocity or displacement) along the tangent 1774 exceeds a threshold condition. During the interaction event, the wearable system can provide instructions to move a virtual object along the trajectory 1772.

[0162] In some embodiments, the wearable system may present a focus indicator associated with the virtual element. For example, the wearable system may present a color or depth change based on movement of the active plane, with the color intensity or perceived depth increasing as the active surface moves toward the distal surface of the virtual button. As another example, the wearable system may provide a sound or glow around the virtual button when the virtual button is pressed. The wearable system may also illuminate the proximal surface of the virtual button to indicate that the virtual button has been pressed. A focus indicator may also be provided when the user releases the button. For example, the illumination on the button may decrease as the button moves closer to the proximal surface. As another example, the size (or font) associated with the virtual button may decrease as it retreats to its initial position.

[0163] The appearances of the virtual elements (e.g., virtual buttons 1700, 1800 and virtual touch surface 1900) illustrated in Figures 16-18 are merely examples and are not intended to be limiting. For example, the active surface and virtual elements may be any 2D or 3D shape, such as a rectangle, a triangle, a circle, an oval, a sphere, a cuboid, a pyramid, an irregular shape, etc.

[0164] Additionally, although examples are described with reference to actuating virtual elements with a user's fingers, in some implementations a user can also actuate virtual elements using other hand postures, body postures, or more than one shape. Additionally or alternatively, a user can actuate virtual elements using a user input device such as a stylus or wand. Example Process for Interacting with Virtual Buttons

[0165] 20 illustrates an example process for initiating an interaction event with a virtual element in a virtual user interface. The process 2000 in FIG. 20 may be implemented by the wearable system 200 described herein.

[0166] In block 2010, the wearable system can identify a virtual element in a virtual user interface. The virtual user interface may be part of an AR / VR / MR environment. The VR or MR environment may be rendered by the wearable system alone or in combination with another computing device. The virtual element may be a virtual button or a virtual touch surface. The virtual element may be part of a virtual remote device described herein or may be a standalone virtual user interface element. The virtual element may include an active surface, the movement of which may be associated with the user's movement. In some embodiments, the active surface may be part of an active volume, which may trigger an interaction event in response to detecting that a part of the user's body (such as a finger) has entered the active volume.

[0167] In block 2020, the wearable system may identify a first position of the active surface. The first position may be an initial position of the active surface before user interaction. For example, the first position may be located on a proximal surface of a virtual button (or an active volume of a virtual button). However, in some implementations, when a user has already pressed the button, the first position may be on a trigger surface or a distal surface of the virtual button (or an active volume of a virtual button).

[0168] In block 2030, the wearable system may receive an indication of a user interaction with the virtual element. The indication may be that a part of the user's body intersects with the virtual element (or active surface). For example, the user may press a virtual button or touch the active surface.

[0169] In block 2040, the wearable system can calculate movement of the active surface based, at least in part, on the indication 2040. For example, when a user presses a virtual button, the wearable system can calculate a velocity vector of the user's finger. Based on the velocity vector, the wearable system can calculate a velocity in a direction normal to the active surface and use this velocity as the velocity for the active surface. As another example, when a user slides the virtual surface, the wearable system can calculate a velocity in a direction parallel to the active surface to determine the velocity of the active surface. The wearable system can also calculate a displacement of the active surface based on the amount of distance the user's finger has moved.

[0170] In block 2050, the wearable system may calculate a second position of the active surface based, at least in part, on the movement 2050. For example, the wearable system may calculate the second position based on the displacement of the active surface. In some embodiments, once the active surface reaches a certain threshold position, the active surface will not continue to move. For example, once the active surface reaches a distal or proximal end of the active volume, the active surface may stop moving such that it will move beyond the distal or proximal end of the active volume.

[0171] In block 2060, the wearable system can initiate an interaction event based, at least in part, on the first and second positions of the active surface. The second position may be associated with triggering a user interface action. For example, when the active surface reaches a trigger surface, the wearable system may determine that the user has pressed a virtual button. As another example, when the user's finger withdraws, the active surface may move back toward a proximal surface of the active volume. Once the active surface reaches a release surface, the wearable system may generate a signal indicating that the user has released the virtual button. (Additional Aspects)

[0172] In a first aspect, a system for providing a visual remote device by an augmented reality device (ARD), comprising: an augmented reality (AR) display for presenting a virtual image to a user of the ARD; an outward-facing imaging system configured to image the user's environment; a sensor configured to communicate with a parent device; and a hardware processor programmed to: identify a physical remote device associated with the parent device in the user's environment based on data from at least one of the outward-facing imaging system or the sensor; access specifications of the physical remote device; emulate the physical remote device based at least in part on the accessed specifications; generate a virtual remote device; receive a selection of the virtual remote device; and, in response to the selection, render the virtual remote device via a display; receive an indication of an interaction with the parent device via the virtual remote device; and transmit instructions including the indication of the interaction with the parent device.

[0173] In a second aspect, the system of aspect 1, wherein the AR display comprises a light field display.

[0174] In a third aspect, the system of any one of aspects 1-2, wherein the sensor comprises an infrared light source.

[0175] In a fourth aspect, the system of any one of aspects 1-3, wherein the parent device includes at least one of a television, a thermostat, an audio system, a home theater system, a home security system, a doorbell, a door lock, an air conditioning unit, a heating unit, a lighting system, or a garage door opener.

[0176] In a fifth aspect, to identify the physically remote device based on data from at least one of the outward-facing imaging system or the sensor, the hardware processor is programmed to receive an image of the environment from the outward-facing imaging system and use a computer vision algorithm to identify at least one of the parent device or the physically remote device in the image.

[0177] In a sixth aspect, the system of aspect 5, wherein the image comprises at least one of a still image, a frame of video, or a video.

[0178] In a seventh aspect, the system of any one of aspects 5-6, wherein to identify at least one of the parent device or the physical remote device, the hardware processor is programmed to recognize the presence of at least one of the parent device or the physical remote device and to identify the type of at least one of the parent device or the physical remote device.

[0179] In an eighth aspect, the system of any one of aspects 5-7, wherein the computer vision algorithm includes at least one of a feature point algorithm, a bag of words search, or a neural network algorithm.

[0180] In a ninth aspect, the system of any one of aspects 1-8, wherein identifying the physical remote device based on data from at least one of the outward-facing imaging system or sensor includes receiving, by the sensor, a signal indicating the presence of the physical remote device or parent device in the user's environment.

[0181] In a tenth aspect, the system of any one of aspects 1-9, wherein the specifications of the physical remote device include at least one of a plurality of buttons, a button layout, a communication channel, or a signal associated with a communication channel.

[0182] In an eleventh aspect, the system described in any one of aspects 1-10, wherein to emulate a physical remote device, the hardware processor is programmed to associate functionality of buttons on the physical remote device with buttons on the virtual remote device.

[0183] In a twelfth aspect, to receive the selection of the virtual remote device, the hardware processor is configured to detect a user posture, the posture indicating the selection of the virtual remote device, or to receive an indication of the selection from a user input device, the system described in any one of aspects 1-11.

[0184] In a thirteenth aspect, the system of any one of aspects 1-12, wherein the virtual remote device is rendered based at least in part on the button layout of the physical remote device.

[0185] In a fourteenth aspect, the system of any one of aspects 1-13, wherein to receive an indication of interaction, the hardware processor detects a user posture, the posture indicating selection of the virtual remote device, or is programmed to receive an indication of selection from a user input device.

[0186] In a fifteenth aspect, the system of aspect 14, wherein the posture includes at least one of a head posture, a hand gesture, a body posture, or a foot posture.

[0187] In a sixteenth aspect, the system of any one of aspects 1-15, wherein the instructions are transmitted in accordance with an infrared data association communications standard or a radio frequency communications standard.

[0188] In a seventeenth aspect, a wearable display device includes: a display for presenting virtual images to a user of the wearable display device; an outward-facing imaging system configured to image the user's environment; a sensor configured to communicate with an electronic device; and a hardware processor in communication with the display, the outward-facing imaging system, and the sensor, the hardware processor accessing a remote control specification of the electronic device and rendering a virtual remote device having a user interface that enables user interaction with the electronic device, the user interface providing functionality based at least in part on the remote control specification; analyzing images acquired by the outward-facing camera and determining gestures by the user; analyzing the gestures and determining the user's interaction with the user interface of the virtual remote device; and transmitting instructions associated with the interaction via the sensor to the electronic device, the instructions being programmed to be based at least in part on the remote control specification of the electronic device.

[0189] In an eighteenth aspect, the wearable display device of aspect 17, wherein the display comprises a light field display.

[0190] In a nineteenth aspect, the wearable display device of aspect 17 or 18, wherein the sensor comprises an infrared emitter or a radio frequency emitter.

[0191] In a twentieth aspect, a wearable display device described in any one of aspects 17-19, wherein the hardware processor is programmed to analyze images acquired by the outward-facing imaging system and determine a specific model of the electronic device.

[0192] In a 21st aspect, a wearable display device described in any one of aspects 17-20, wherein the hardware processor is programmed to render a focus indicator associated with the virtual remote device.

[0193] In a twenty-second aspect, a method for providing a visual remote device by an augmented reality device (ARD), comprising: a hardware processor; a display for presenting a virtual image to a user of the ARD; an outward-facing imaging system configured to image the user's environment; and a sensor configured to communicate with the parent device, the method comprising: under control of the ARD, identifying a physical remote device associated with the parent device in the user's environment based on data from at least one of the outward-facing imaging system or the sensor; accessing specifications of the physical remote device; emulating the physical remote device and generating a virtual remote device based at least in part on the accessed specifications; receiving a selection of the virtual remote device; and in response to the selection, rendering the virtual remote device by a display and receiving an indication of interaction with the parent device via the virtual remote device; and transmitting instructions including the indication of interaction with the parent device.

[0194] In a 23rd aspect, the method of aspect 22, wherein identifying the physically remote device based on data from at least one of the outward-facing imaging system or the sensor includes receiving an image of the environment from the outward-facing imaging system and using a computer vision algorithm to identify at least one of the parent device or the physically remote device in the image.

[0195] In a 24th aspect, the method of aspect 23, wherein the step of identifying at least one of the parent device or the physical remote device includes the steps of recognizing the existence of at least one of the parent device or the physical remote device and identifying the type of at least one of the parent device or the physical remote device.

[0196] In a 25th aspect, the method of aspect 23 or 24, wherein the computer vision algorithm includes at least one of a feature point algorithm, a bag of words search, or a neural network algorithm.

[0197] In a 26th aspect, the method described in any one of aspects 22-25, wherein the step of identifying the physical remote device based on data from at least one of the outward-facing imaging system or sensor includes a step of receiving, by the sensor, a signal indicating the presence of the physical remote device or parent device in the user's environment.

[0198] In a 27th aspect, the method of any one of aspects 22-26, wherein the specifications of the physical remote device include at least one of a plurality of buttons, a button layout, a communication channel, or a signal associated with a communication channel.

[0199] In a 28th aspect, the method of any one of aspects 22-27, wherein the step of emulating a physical remote device includes a step of associating functionality of buttons on the physical remote device with buttons on the virtual remote device.

[0200] In a 29th aspect, the method of any one of aspects 22-28, wherein the step of receiving the selection of the virtual remote device includes at least one of detecting a user posture, the posture indicating the selection of the virtual remote device, or receiving an indication of the selection from a user input device.

[0201] In a 30th aspect, the method of any one of aspects 22-29, wherein the virtual remote device is rendered based at least in part on the button layout of the physical remote device.

[0202] In a 31st aspect, the step of receiving an indication of interaction includes a step of detecting a user's posture, the posture indicating selection of the virtual remote device, or a step of receiving an indication of selection from a user input device, as described in any one of aspects 22-30.

[0203] In a 32nd aspect, the method of any one of aspects 22-31, wherein the instructions are transmitted in accordance with an Infrared Data Association communications standard or a Radio Frequency communications standard.

[0204] In a thirty-third aspect, a system for detecting actuation of a virtual button comprises: a wearable display system configured to display a virtual image to a user; an outward-facing imaging system configured to acquire images of the user's environment; and a hardware processor programmed to: identify a virtual button of a virtual user interface, the virtual button comprising an active surface and a trigger surface; identify a first position of the active surface; determine a user interaction indicative of movement of the virtual button; calculate a movement of the active surface based at least in part on the user interaction; calculate a position of a second active surface based at least in part on the movement; and initiate an interaction event based at least in part on the first and second positions of the active surface; the interaction event is associated with activating the virtual button when the movement of the active surface is toward the trigger surface and the second position of the active surface intersects at least a portion of the trigger surface; and the interaction event is associated with releasing the virtual button when the movement of the active surface is away from the trigger surface and the first position of the active surface intersects at least a portion of the trigger surface.

[0205] In a thirty-fourth aspect, the active surface is in a parallel relationship with the trigger surface, in the system described in aspect 33.

[0206] In a thirty-fifth aspect, the system of aspect 33 or 34, wherein the virtual button further comprises a release surface, and the interaction event is associated with releasing the virtual button when the second position of the active surface intersects at least a portion of the release surface.

[0207] In a 36th aspect, the system described in any one of aspects 33-35, wherein the user interaction indicating movement of the virtual button includes an intersection between the active plane and a physical object in the user's environment, the physical object including at least one of a part of the user or a part of the user input device.

[0208] In a thirty-seventh aspect, the system described in aspect 36 is configured to calculate the movement of the active surface by calculating a velocity vector of a physical object and calculating the velocity of the active surface using at least one of a value of the velocity vector of the physical object normal to the active surface, a value of the velocity vector of the physical object parallel to the active surface, or a value of the velocity vector of the physical object tangential to the active surface.

[0209] In aspect 38, the system described in any one of aspects 36-37, wherein to calculate the second position of the active surface, the hardware processor is configured to determine that the physical object has retracted from the trigger surface at a retraction velocity and move the active surface at a velocity less than or equal to the retraction velocity.

[0210] In a thirty-ninth aspect, the system of any one of aspects 33-38, wherein calculating movement of the active surface includes calculating displacement of the active surface.

[0211] In a fortieth aspect, the system described in any one of aspects 33-39, wherein the hardware processor is further configured to provide visualization of a virtual button based, at least in part, on movement of the active surface.

[0212] In a forty-first aspect, the visualization comprises a focus indicator of the virtual button, the focus indicator being provided when movement of the virtual button reaches a threshold condition, the system being described in aspect 40.

[0213] In a forty-second aspect, the system of aspect 41, wherein the threshold condition includes at least one of a threshold position, a threshold duration, or a threshold speed.

[0214] In a forty-third aspect, the visualization comprises a focus indicator of a virtual button, the focus indicator changing in accordance with movement of the active plane, a system described in any one of aspects 40-42.

[0215] In a 44th aspect, the system described in any one of aspects 33-43, wherein the interaction event includes at least one of triggering a user interface function on the virtual user interface or disabling a user interface function.

[0216] In aspect 45, the system described in any one of aspects 33-44, wherein the hardware processor is configured to analyze images acquired by the outward-facing imaging system to determine a user interaction indicating movement of the virtual button.

[0217] In a 46th aspect, the system described in any one of aspects 33-45, wherein the hardware processor is further configured to generate a sound associated with the initiation of an interaction event.

[0218] In a forty-seventh aspect, a method for detecting actuation of a virtual button includes: identifying a virtual button of a virtual user interface under control of a wearable display system configured to display a virtual image to a user, a hardware processor, and an outward-facing imaging system configured to acquire images of the user's environment, the virtual button comprising an active surface and a trigger surface; identifying a first position of the active surface and determining a user interaction indicative of movement of the virtual button; calculating a movement of the active surface based at least in part on the user interaction; calculating a second active surface position based at least in part on the movement; and initiating an interaction event based at least in part on the first and second positions of the active surface, wherein the interaction event is associated with activating the virtual button when the movement of the active surface is toward the trigger surface and the second position of the active surface intersects at least a portion of the trigger surface; and the interaction event is associated with releasing the virtual button when the movement of the active surface is away from the trigger surface and the first position of the active surface intersects at least a portion of the trigger surface.

[0219] In a forty-eighth aspect, the method described in aspect 47, wherein the active surface is parallel to the trigger surface.

[0220] In a forty-ninth aspect, the virtual button further comprises a release surface, and the interaction event is associated with a step of releasing the virtual button when the second position of the active surface intersects at least a portion of the release surface. The method of any one of aspects 47-48.

[0221] In a 50th aspect, the method of any one of aspects 47-49, wherein the user interaction indicating movement of the virtual button includes an intersection between the active plane and a physical object in the user's environment, the physical object including at least one of a part of the user or a part of a user input device.

[0222] In a 51st aspect, the method described in aspect 50, wherein the step of calculating the movement of the active surface includes the steps of calculating a velocity vector of a physical object, and calculating the velocity of the active surface using at least one of a value of the velocity vector of the physical object normal to the active surface, a value of the velocity vector of the physical object parallel to the active surface, or a value of the velocity vector of the physical object tangent to the active surface.

[0223] In a 52nd aspect, the method of aspect 50 or 51, wherein the step of calculating the second position of the active surface includes the steps of determining that the physical object has retracted from the trigger surface at a retraction velocity, and moving the active surface at a velocity less than or equal to the retraction velocity.

[0224] In a 53rd aspect, the method of any one of aspects 47-52 further comprises providing visualization of a virtual button based, at least in part, on movement of the active surface.

[0225] In a fifty-fourth aspect, the visualization comprises a focus indicator of the virtual button, the focus indicator being provided when movement of the virtual button reaches a threshold condition, the method of aspect 53.

[0226] In a 55th aspect, the method of aspect 54, wherein the threshold condition includes at least one of a threshold position, a threshold duration, or a threshold speed.

[0227] In a 56th aspect, the method of aspect 54 or 55, wherein the visualization comprises a focus indicator of the virtual button, the focus indicator changing according to movement of the active plane.

[0228] In a 57th aspect, a method according to any one of aspects 47-56, wherein the interaction event includes at least one of triggering a user interface function on the virtual user interface or disabling a user interface function.

[0229] In a fifty-eighth aspect, a wearable system for providing a virtual remote control device in a mixed reality environment comprises: a mixed reality display for presenting virtual images to a user; an outward-facing imaging system configured to image the user's environment; a sensor configured to communicate with a parent device; and a hardware processor programmed to: access images obtained by the outward-facing imaging system, analyze the images, identify a physical remote device associated with the parent device, access specifications of the physical remote device, generate a virtual remote device based, at least in part, on the specifications of the physical remote device, cause the display to render the virtual remote device, receive activations of the virtual remote device for interaction with the parent device, generate and transmit instructions to the parent device, and cause the parent device to perform functions as if the physical remote device were activated.

[0230] In a fifty-ninth aspect, the wearable system of aspect 58 is programmed to analyze the image and recognize the physical remote device using one or more computer vision algorithms, including at least one of a feature point algorithm, a bag of words search, or a neural network algorithm, to identify the physical remote device.

[0231] In a 60th aspect, the wearable system described in aspect 59, wherein the hardware processor is further programmed to identify the presence of the parent device based, at least in part, on an image obtained by the outward-facing imaging system or a signal received by the sensor indicating the presence of the parent device.

[0232] In a 61st aspect, a wearable system described in any one of aspects 58-60, wherein the specifications include at least one of a mapping of control elements of the physical remote device to corresponding functions of the parent device, or a communication protocol between the physical remote device and the parent device.

[0233] In a sixty-second aspect, a wearable system as described in aspect sixty-one, wherein to generate the virtual remote device, the hardware processor is programmed to determine, at least in part, a layout of virtual elements for the virtual remote device based on the specifications, and to associate the virtual elements of the virtual remote device with the control elements of the physical remote device such that actuation of the virtual elements on the virtual remote device can cause the parent device to react as if the control elements corresponding to the virtual elements were actuated on the physical remote device.

[0234] In aspect 63, a wearable system described in any one of aspects 58-62, wherein the hardware processor is further programmed to determine a plurality of candidate virtual remote devices associated with the parent device and select a virtual remote device from the plurality of candidate virtual remote devices based, at least in part, on the user's posture or an indication from a user input device.

[0235] In aspect 64, a wearable system described in any one of aspects 58-63, wherein the sensor includes an infrared light source and the instructions are generated and transmitted to the parent device in accordance with an Infrared Data Association communication standard or a radio frequency communication standard.

[0236] In aspect 65, a wearable system described in any one of aspects 58-64, wherein the virtual remote device has an active surface including a virtual button, the virtual button being associated with a volume of space and configured to track user interaction with the virtual button, and a trigger surface for triggering a user interface action.

[0237] In aspect 66, the wearable system of aspect 65, wherein the active surface is in a parallel relationship with the trigger surface.

[0238] In aspect 67, a wearable system described in aspect 65 or 66, wherein, to receive activation of the virtual remote device, the hardware processor is configured to identify a first position of the active surface, calculate a second position and movement of the active surface based, at least in part, on the user's movement, and activate a virtual button when the movement of the active surface is toward the trigger surface and the second position of the active surface intersects at least a portion of the trigger surface, or release the virtual button when the movement of the active surface is away from the trigger surface and the first position of the active surface intersects at least a portion of the trigger surface.

[0239] In aspect 68, the wearable system described in aspect 67, wherein the virtual button further comprises a release surface, and the hardware processor is programmed to release the virtual button when the second position of the active surface intersects at least a portion of the release surface.

[0240] In a 69th aspect, a wearable system as described in aspect 67 or 68, wherein to calculate the movement of the active surface, the hardware processor is programmed to calculate a velocity vector of the user's movement and calculate the velocity of the active surface based on at least one of the value of the velocity vector normal to the active surface, the value of the velocity vector parallel to the active surface, or the value of the velocity vector tangential to the active surface.

[0241] In a seventieth aspect, the hardware processor is programmed to provide visualization of a virtual button for presentation to a user via a mixed reality display, the visualization being based, at least in part, on movement of an active surface, in a wearable system as described in aspect 65.

[0242] In a 71st aspect, a method for providing a virtual remote control device in a mixed reality environment includes the steps of accessing an image of a user's environment obtained by a wearable device, analyzing the image and identifying a target device in the user's environment, accessing a specification associated with the target device, the specification comprising at least a mapping between control elements of a physical remote device and functions of a parent device, generating a virtual remote device based at least in part on the specification, rendering the virtual remote device on the wearable device in the mixed reality environment, detecting activation of the virtual remote device for interaction with the parent device, and generating and transmitting instructions to the parent device to cause the parent device to perform a function as if the physical remote device were activated.

[0243] In a seventy-second aspect, the method of aspect 71, wherein the target device comprises a physically remote device or a parent device.

[0244] In a 73rd aspect, the method described in aspect 71 or 72, wherein the step of identifying the target device includes a step of analyzing the image and recognizing the target device using one or more computer vision algorithms, including at least one of a feature point algorithm, a bag of words search, or a neural network algorithm.

[0245] In aspect 74, the method of any one of aspects 71-73, wherein the step of generating the virtual remote device includes determining, at least in part, a layout of virtual elements for the virtual remote device based on the specifications, and associating virtual elements of the virtual remote device with control elements of the physical remote device such that actuation of the virtual elements on the virtual remote device can cause the parent device to react as if the control elements corresponding to the virtual elements were actuated on the physical remote device.

[0246] In aspect 75, a method according to any one of aspects 71-74, wherein the virtual remote device comprises a virtual button, the virtual button having an active surface associated with a volume of space and configured to track user interaction with the virtual button, and a trigger surface for triggering a user interface action.

[0247] In aspect 76, the step of detecting activation of the virtual remote device includes the steps of identifying a first position of the active surface; calculating a second position and movement of the active surface based, at least in part, on the user's movement; and activating a virtual button when the movement of the active surface is toward the trigger surface and the second position of the active surface intersects at least a portion of the trigger surface, or releasing the virtual button when the movement of the active surface is away from the trigger surface and the first position of the active surface intersects at least a portion of the trigger surface.

[0248] In aspect 77, the virtual button further comprises a release surface, and the method further includes a step of releasing the virtual button when the second position of the active surface intersects at least a portion of the release surface. (Other considerations)

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

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

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

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

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

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

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

[0256] Conditional statements used herein, such as "can," "could," "might," "may," "eg," and the like, among others, are intended to generally convey that certain embodiments include certain features, elements, and / or steps, while other embodiments do not, unless specifically stated otherwise or understood otherwise within the context as used. Thus, such conditional statements are not generally intended to imply 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 "comprise," "include," "have," and the like are synonymous and used inclusively in a non-limiting manner and do not exclude additional elements, features, acts, operations, etc. Also, the term "or" is used in its inclusive sense (and not its exclusive sense), so, for example, when used to connect a list of elements, the term "or" means one, some, or all of the elements in the list. Additionally, the articles "a," "an," and "the," as used in this application and the appended claims, should be interpreted to mean "one or more" or "at least one," unless otherwise specified.

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

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

Claims

1. 1. A wearable system for providing a virtual remote control device in a mixed reality environment, the wearable system comprising: a mixed reality display for presenting a virtual image to a user; an outward-facing imaging system configured to image the user's environment; a hardware processor operatively coupled to the mixed reality display and the outward-facing imaging system; wherein the hardware processor comprises: generating a virtual remote control device associated with a parent device, the virtual remote control device comprising a virtual control element; Rendering the virtual remote control device and the virtual control element on the mixed reality display, the virtual control element comprising a virtual button with an active surface, the virtual button being movable through an active volume in space; and determining when the user of the wearable system interacts with the virtual control element of the virtual remote control; in response to a user interaction with the virtual control element; generating the virtual control element to move on the mixed reality display; generating a focus indicator for the virtual control element when movement of the virtual control element exceeds a threshold condition, the threshold condition including at least one of a threshold position, a threshold duration, or a threshold velocity, the hardware processor being programmed to generate the focus indicator when movement of the virtual button, as taken in a direction normal to the active surface, exceeds the threshold condition; and transmitting an instruction to the parent device to perform a function associated with the virtual control element in conjunction with at least one of moving the virtual control element and generating the focus indicator. To do A wearable system that is programmed to:

2. The wearable system of claim 1 , wherein the hardware processor is further programmed to generate the focus indicator in response to the user pressing the virtual button or the user releasing the virtual button.

3. the virtual button further comprises a distal surface; The wearable system of claim 1 , wherein the hardware processor is further programmed to vary an appearance of the focus indicator in conjunction with movement of the active surface relative to the distal surface.

4. the threshold condition includes a threshold duration; The wearable system of claim 1 , wherein the hardware processor is further programmed to generate the focus indicator in response to pressing the virtual button for a period of time that exceeds the threshold duration.

5. The wearable system of claim 1 , wherein the hardware processor is further programmed to generate graphics that visually connect the virtual remote control device to a real-world view of the parent device as seen by the user through the wearable system.

6. The hardware processor further comprises: Identifying a physical remote device associated with a parent device; generating the virtual remote control device based at least in part on specifications of the physical remote device; The wearable system of claim 1 , configured to:

7. The wearable system of claim 6 , wherein the hardware processor is programmed to generate the virtual control elements to visually represent physical input elements of the physical remote device.

8. The wearable system of claim 6 , wherein the hardware processor is further programmed to generate graphics that visually connect the virtual remote control device to a real-world view of the physical remote device as seen by the user through the wearable system.

9. 1. A method for interacting with a virtual remote control device in a mixed reality environment, the method being performed by a wearable system including a mixed reality display operatively coupled to a hardware processor, the method comprising: generating a virtual remote control device associated with a parent device, the virtual remote control device comprising a virtual control element; Rendering the virtual remote control device and the virtual control element on the mixed reality display, the virtual control element comprising a virtual button having an active surface, the virtual button being movable through an active volume in space; and determining when a user of the wearable system interacts with the virtual control element of the virtual remote control; in response to a user interaction with the virtual control element; generating the virtual control element to move on the mixed reality display; generating a focus indicator for the virtual control element when movement of the virtual control element exceeds a threshold condition, the threshold condition including at least one of a threshold position, a threshold duration, or a threshold velocity, the hardware processor being programmed to generate the focus indicator when movement of the virtual button, as taken in a direction normal to the active surface, exceeds the threshold condition; and transmitting an instruction to the parent device to perform a function associated with the virtual control element in conjunction with at least one of moving the virtual control element and generating the focus indicator. To do A method comprising:

10. 10. The method of claim 9, wherein the hardware processor is further programmed to generate the focus indicator in response to at least one of the user pressing the virtual button and the user releasing the virtual button.

11. the virtual button further comprises a distal surface; The method of claim 9 , wherein the hardware processor is further programmed to vary the appearance of the focus indicator in conjunction with movement of the active surface relative to the distal surface.

12. the threshold condition includes a threshold duration; The method of claim 9 , wherein the hardware processor is further programmed to generate the focus indicator in response to pressing the virtual button for a period of time that exceeds the threshold duration.

13. The method of claim 9 , wherein the hardware processor is further programmed to generate a graphic that visually connects the virtual remote control device to a real-world view of the parent device as seen by the user through the wearable system.

14. The hardware processor further comprises: Identifying a physical remote device associated with a parent device; generating the virtual control elements to visually represent physical input elements of the physical remote device, while generating the virtual remote control device based at least in part on specifications of the physical remote device; The method of claim 9 , configured to:

15. 15. The method of claim 14, wherein the hardware processor is further programmed to generate graphics that visually connect the virtual remote control device to a real-world view of the physical remote device as seen by the user through the wearable system.

16. A non-transitory computer storage medium storing instructions that, when executed by one or more hardware processors of a wearable system, cause the wearable system to: generating a virtual remote control device on a mixed reality display of the wearable system, the virtual remote control device being associated with a parent device, the virtual control element comprising a virtual button with an active surface, the virtual button being movable through an active volume in space; rendering the virtual remote control device and the virtual control element on the mixed reality display; determining when a user of the wearable system interacts with the virtual control element of the virtual remote control; in response to a user interaction with the virtual control element; generating the virtual control element to move on the mixed reality display; generating a focus indicator for the virtual control element when movement of the virtual control element exceeds a threshold condition, the threshold condition including at least one of a threshold position, a threshold duration, or a threshold velocity, and wherein generating the focus indicator occurs when movement of the virtual button, as taken in a direction normal to the active surface, exceeds the threshold condition; and transmitting an instruction to the parent device to perform a function associated with the virtual control element in conjunction with at least one of moving the virtual control element and generating the focus indicator. To do A non-transitory computer storage medium that causes the

Citation Information

Patent Citations

  • Information processing apparatus and method

    JP2010134629A

  • Image recognition apparatus, operation determination method, and program

    JP2011175623A

  • Information processor, information processing method and program

    JP2011209965A

  • Remote control device

    JP2013536534A

  • Display device and control method

    JP2014072576A