TECHNICAL FIELD- The present disclosure relates generally to user interfaces and more particularly to user interfaces used in augmented and virtual reality. 
BACKGROUND- A head-worn device may be implemented with a transparent or semi-transparent display through which a user of the head-worn device can view the surrounding environment. Such devices enable a user to see through the transparent or semi-transparent display to view the surrounding environment, and to also see objects (e.g., virtual objects such as a rendering of a 2D or 3D graphic model, images, video, text, and so forth) that are generated for display to appear as a part of, and/or overlaid upon, the surrounding environment. This is typically referred to as “augmented reality” or “AR.” A head-worn device may additionally completely occlude a user's visual field and display a virtual environment through which a user may move or be moved. This is typically referred to as “virtual reality” or “VR.” As used herein, the term AR refers to either or both augmented reality and virtual reality as traditionally understood, unless the context indicates otherwise. 
- A user of the head-worn device may access and use a computer software application to perform various tasks or engage in an entertaining activity. To use the computer software application, the user interacts with a user interface provided by the head-worn device. 
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS- To easily identify the discussion of any particular element or act, the most significant digit or digits in a reference number refer to the figure number in which that element is first introduced. 
- FIG.1 is a perspective view of a head-worn device, in accordance with some examples. 
- FIG.2 is a further view of the head-worn device ofFIG.1, in accordance with some examples. 
- FIG.3 is a diagrammatic representation of a machine, in the form of a computing apparatus within which a set of instructions may be executed for causing the machine to perform any one or more of the methodologies discussed herein in accordance with some examples. 
- FIG.4A is a process flow diagram of a text selection and modification process in accordance with some examples. 
- FIG.4B illustrates a hand gesture in accordance with some examples. 
- FIG.4C,FIG.4D, andFIG.4E are illustrations of an AR augmented scene including a text scene object in accordance with some examples. 
- FIG.5A is a process flow diagram of a text selection and modification process in accordance with some examples. 
- FIG.5B is another illustration of a gesture in accordance with some examples. 
- FIG.5C,FIG.5D, andFIG.5E are illustrations of another AR augmented scene including a text scene object in accordance with some examples. 
- FIG.6A is a process flow diagram of a virtual keyboard process in accordance with some examples. 
- FIG.6B is an illustration of a physical surface selection process in accordance with some examples. 
- FIG.6C is an illustration of a virtual keyboard user interface in accordance with some examples. 
- FIG.7 is a block diagram showing a software architecture within which the present disclosure may be implemented, in accordance with some examples. 
- FIG.8 is a block diagram illustrating details of the head-worn device ofFIG.1, in accordance with some examples. 
- FIG.9 is a diagrammatic representation of a networked environment in which the present disclosure may be deployed, in accordance with some examples. 
DETAILED DESCRIPTION- AR systems are limited when it comes to available user input modalities. As compared other mobile devices, such as mobile phones, it is more complicated for a user of an AR system to indicate user intent and invoke an action or application. When using a mobile phone, a user may go to a home screen and tap on a specific icon to start an application. However, because of a lack of a physical input device such as a touchscreen or keyboard, such interactions are not as easily performed on an AR system. Typically, users can indicate their intent by pressing a limited number of hardware buttons or using a small touchpad. Therefore, it would be desirable to have an input modality that allowed for a greater range of inputs that could be utilized by a user to indicate their intent through a user input. 
- An input modality that may be utilized with AR systems is hand-tracking combined with Direct Manipulation of Virtual Objects (DMVO) where a user is provided with a user interface that is displayed to the user in an AR overlay having a 2D or 3D rendering. The rendering is of a graphic model in 2D or 3D where virtual objects located in the model correspond to interactive elements of the user interface. In this way, the user perceives the virtual objects as objects within an overlay in the user's field of view of the real-world scene while wearing the AR system, or perceives the virtual objects as objects within a virtual world as viewed by the user while wearing the AR system. To allow the user to manipulate the virtual objects, the AR system detects the user's hands and tracks their movement, location, and/or position to determine the user's interactions with the virtual objects. 
- Gestures that do not involve DMVO provide another input modality suitable for use with AR systems. Gestures are made by a user moving and positioning portions of the user's body while those portions of the user's body are detectable by an AR system while the user is wearing the AR system. The detectable portions of the user's body may include portions of the user's upper body, arms, hands, and fingers. Components of a gesture may include the movement of the user's arms and hands, location of the user's arms and hands in the real-world scene environment, and positions in which the user holds their upper body, arms, hands, and fingers. Gestures are useful in providing an AR experience for a user as they offer a way of providing user inputs into the AR system during an AR experience without having the user take their focus off of the AR experience. As an example, in an AR experience that is an operational manual for a piece of machinery, the user may simultaneously view the piece of machinery in the real-world scene through the lenses of the AR system, view an AR overlay on the real-world scene view of the machinery, and provide user inputs into the AR system. 
- Head-tracking information provides another input modality suitable for use with AR systems. AR system continually gathers and uses updated sensor data describing movements of the AR system to determine changes in the relative position and orientation relative to physical objects in the real-world scene environment. The sensor data permits detection of a focus of the user on virtual objects and physical objects by the AR device within the field of view of the user. 
- By combining hand-tracked DMVO, gesture, and head-tracking input modalities, an improved text entry user interface is provided to a user of an AR system. The AR system uses a combination of gesture and DMVO methodologies to provide for the user's selection and modification of text within a text scene object of the AR experience. The user makes a gesture to open or invoke a text selection and modification user interface and makes another gesture to begin selecting text from the text scene object. The AR system provides a virtual stylus to the user. The user uses the virtual stylus to select text to modify. With a free hand, a user makes gestures to set text selection points in a location pointed to by the virtual stylus. 
- In some examples, instead of a virtual stylus, the AR system detects a focus of a user to select portions of text to modify. The user focuses on a portion of the text where the user wants to set an end point, and the user makes gestures to set text selection points defining the selected text. 
- In some examples, the AR system projects a virtual keyboard onto a physical surface and the user interacts with the virtual keyboard and with text displayed in a text scene object. The physical surface provides haptic feedback to the user. 
- Other technical features may be readily apparent to one skilled in the art from the following figures, descriptions, and claims. 
- FIG.1 is a perspective view of an AR system in a form of a head-worn device (e.g.,glasses100 ofFIG.1), in accordance with some examples. Theglasses100 can include aframe102 made from any suitable material such as plastic or metal, including any suitable shape memory alloy. In one or more examples, theframe102 includes a first or left optical element holder104 (e.g., a display or lens holder) and a second or rightoptical element holder106 connected by abridge112. A first or leftoptical element108 and a second or rightoptical element110 can be provided within respective leftoptical element holder104 and rightoptical element holder106. The rightoptical element110 and the leftoptical element108 can be a lens, a display, a display assembly, or a combination of the foregoing. Any suitable display assembly can be provided in theglasses100. 
- Theframe102 additionally includes a left arm ortemple piece122 and a right arm ortemple piece124. In some examples theframe102 can be formed from a single piece of material so as to have a unitary or integral construction. 
- Theglasses100 can include a computing device, such as acomputer120, which can be of any suitable type so as to be carried by theframe102 and, in one or more examples, of a suitable size and shape, so as to be partially disposed in one of thetemple piece122 or thetemple piece124. Thecomputer120 can include one or more processors with memory, wireless communication circuitry, and a power source. As discussed below, thecomputer120 comprises low-power circuitry, high-speed circuitry, and a display processor. Various other examples may include these elements in different configurations or integrated together in different ways. Additional details of aspects ofcomputer120 may be implemented as illustrated by thedata processor802 discussed below. 
- Thecomputer120 additionally includes abattery118 or other suitable portable power supply. In some examples, thebattery118 is disposed inleft temple piece122 and is electrically coupled to thecomputer120 disposed in theright temple piece124. Theglasses100 can include a connector or port (not shown) suitable for charging thebattery118, a wireless receiver, transmitter or transceiver (not shown), or a combination of such devices. 
- Theglasses100 include a first orleft camera114 and a second orright camera116. Although two cameras are depicted, other examples contemplate the use of a single or additional (i.e., more than two) cameras. In one or more examples, theglasses100 include any number of input sensors or other input/output devices in addition to theleft camera114 and theright camera116. Such sensors or input/output devices can additionally include biometric sensors, location sensors, motion sensors, and so forth. 
- In some examples, theleft camera114 and theright camera116 provide video frame data for use by theglasses100 to extract 3D information from a real-world scene. 
- Theglasses100 may also include atouchpad126 mounted to or integrated with one or both of theleft temple piece122 andright temple piece124. Thetouchpad126 is generally vertically arranged, approximately parallel to a user's temple in some examples. As used herein, generally vertically aligned means that the touchpad is more vertical than horizontal, although potentially more vertical than that. Additional user input may be provided by one ormore buttons128, which in the illustrated examples are provided on the outer upper edges of the leftoptical element holder104 and rightoptical element holder106. The one ormore touchpads126 andbuttons128 provide a means whereby theglasses100 can receive input from a user of theglasses100. 
- FIG.2 illustrates theglasses100 from the perspective of a user. For clarity, a number of the elements shown inFIG.1 have been omitted. As described inFIG.1, theglasses100 shown inFIG.2 include leftoptical element108 and rightoptical element110 secured within the leftoptical element holder104 and the rightoptical element holder106 respectively. 
- Theglasses100 include forwardoptical assembly202 comprising aright projector204 and a rightnear eye display206, and a forwardoptical assembly210 including aleft projector212 and a leftnear eye display216. 
- In some examples, the near eye displays are waveguides. The waveguides include reflective or diffractive structures (e.g., gratings and/or optical elements such as mirrors, lenses, or prisms).Light208 emitted by theprojector204 encounters the diffractive structures of the waveguide of thenear eye display206, which directs the light towards the right eye of a user to provide an image on or in the rightoptical element110 that overlays the view of the real-world scene seen by the user. Similarly, light214 emitted by theprojector212 encounters the diffractive structures of the waveguide of thenear eye display216, which directs the light towards the left eye of a user to provide an image on or in the leftoptical element108 that overlays the view of the real-world scene seen by the user. The combination of a GPU, the forwardoptical assembly202, the leftoptical element108, and the rightoptical element110 provide an optical engine of theglasses100. Theglasses100 use the optical engine to generate an overlay of the real-world scene view of the user including display of a user interface to the user of theglasses100. 
- It will be appreciated however that other display technologies or configurations may be utilized within an optical engine to display an image to a user in the user's field of view. For example, instead of aprojector204 and a waveguide, an LCD, LED or other display panel or surface may be provided. 
- In use, a user of theglasses100 will be presented with information, content and various user interfaces on the near eye displays. As described in more detail herein, the user can then interact with theglasses100 using atouchpad126 and/or thebuttons128, voice inputs or touch inputs on an associated device (e.g.,client device826 illustrated inFIG.8), and/or hand movements, locations, and positions detected by theglasses100. 
- FIG.3 is a diagrammatic representation of acomputing apparatus300 within which instructions310 (e.g., software, a program, an application, an applet, an app, or other executable code) for causing thecomputing apparatus300 to perform any one or more of the methodologies discussed herein may be executed. Thecomputing apparatus300 may be utilized as acomputer120 ofglasses100 ofFIG.1. For example, theinstructions310 may cause thecomputing apparatus300 to execute any one or more of the methods described herein. Theinstructions310 transform the general,non-programmed computing apparatus300 into aparticular computing apparatus300 programmed to carry out the described and illustrated functions in the manner described. Thecomputing apparatus300 may operate as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, thecomputing apparatus300 may operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. Thecomputing apparatus300 may comprise, but not be limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a PDA, an entertainment media system, a cellular telephone, a smart phone, a mobile device, a head-worn device (e.g., a smart watch), a smart home device (e.g., a smart appliance), other smart devices, a web appliance, a network router, a network switch, a network bridge, or any machine capable of executing theinstructions310, sequentially or otherwise, that specify actions to be taken by thecomputing apparatus300. Further, while asingle computing apparatus300 is illustrated, the term “machine” may also be taken to include a collection of machines that individually or jointly execute theinstructions310 to perform any one or more of the methodologies discussed herein. 
- Thecomputing apparatus300 may includeprocessors302,memory304, and I/O components306, which may be configured to communicate with one another via a bus344. In some examples, the processors302 (e.g., a Central Processing Unit (CPU), a Reduced Instruction Set Computing (RISC) processor, a Complex Instruction Set Computing (CISC) processor, a Graphics Processing Unit (GPU), a Digital Signal Processor (DSP), an ASIC, a Radio-Frequency Integrated Circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, aprocessor308 and aprocessor312 that execute theinstructions310. The term “processor” is intended to include multi-core processors that may comprise two or more independent processors (sometimes referred to as “cores”) that may execute instructions contemporaneously. AlthoughFIG.3 showsmultiple processors302, thecomputing apparatus300 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors with a single core, multiple processors with multiples cores, or any combination thereof. 
- Thememory304 includes amain memory314, astatic memory316, and astorage unit318, both accessible to theprocessors302 via the bus344. Themain memory304, thestatic memory316, andstorage unit318 store theinstructions310 embodying any one or more of the methodologies or functions described herein. Theinstructions310 may also reside, completely or partially, within themain memory314, within thestatic memory316, within machine-readable medium320 within thestorage unit318, within one or more of the processors302 (e.g., within the processor's cache memory), or any suitable combination thereof, during execution thereof by thecomputing apparatus300. 
- The I/O components306 may include a wide variety of components to receive input, provide output, produce output, transmit information, exchange information, capture measurements, and so on. The specific I/O components306 that are included in a particular machine will depend on the type of machine. For example, portable machines such as mobile phones may include a touch input device or other such input mechanisms, while a headless server machine will likely not include such a touch input device. It will be appreciated that the I/O components306 may include many other components that are not shown inFIG.3. In various examples, the I/O components306 may includeoutput components328 andinput components332. Theoutput components328 may include visual components (e.g., a display such as a plasma display panel (PDP), a light-emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)), acoustic components (e.g., speakers), haptic components (e.g., a vibratory motor, resistance mechanisms), other signal generators, and so forth. Theinput components332 may include alphanumeric input components (e.g., a keyboard, a touch screen configured to receive alphanumeric input, a photo-optical keyboard, or other alphanumeric input components), point-based input components (e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or another pointing instrument), tactile input components (e.g., a physical button, a touch screen that provides location and/or force of touches or touch gestures, or other tactile input components), audio input components (e.g., a microphone), and the like. 
- In some examples, the I/O components306 may includebiometric components334,motion components336,environmental components338, andposition components340, among a wide array of other components. For example, thebiometric components334 include components to detect expressions (e.g., hand expressions, facial expressions, vocal expressions, body gestures, or eye tracking), measure biosignals (e.g., blood pressure, heart rate, body temperature, perspiration, or brain waves), identify a person (e.g., voice identification, retinal identification, facial identification, fingerprint identification, or electroencephalogram-based identification), and the like. Themotion components336 may include inertial measurement units, acceleration sensor components (e.g., accelerometer), gravitation sensor components, rotation sensor components (e.g., gyroscope), and so forth. Theenvironmental components338 include, for example, illumination sensor components (e.g., photometer), temperature sensor components (e.g., one or more thermometers that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., barometer), acoustic sensor components (e.g., one or more microphones that detect background noise), proximity sensor components (e.g., infrared sensors that detect nearby objects), gas sensors (e.g., gas detection sensors to detection concentrations of hazardous gases for safety or to measure pollutants in the atmosphere), or other components that may provide indications, measurements, or signals associated to a surrounding physical environment. Theposition components340 may include location sensor components (e.g., a GPS receiver component), altitude sensor components (e.g., altimeters or barometers that detect air pressure from which altitude may be derived), orientation sensor components (e.g., an Inertial Measurement Unit (IMU)), and the like. 
- Communication may be implemented using a wide variety of technologies. The I/O components306 further includecommunication components342 operable to couple thecomputing apparatus300 to anetwork322 ordevices324 via acoupling330 and acoupling326, respectively. For example, thecommunication components342 may include a network interface component or another suitable device to interface with thenetwork322. In further examples, thecommunication components342 may include wired communication components, wireless communication components, cellular communication components, Near Field Communication (NFC) components, Bluetooth® components (e.g., Bluetooth® Low Energy), WiFi® components, and other communication components to provide communication via other modalities. Thedevices324 may be another machine or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a USB). 
- Moreover, thecommunication components342 may detect identifiers or include components operable to detect identifiers. For example, thecommunication components342 may include Radio Frequency Identification (RFID) tag reader components, NFC smart tag detection components, optical reader components (e.g., an optical sensor to detect one-dimensional bar codes such as Universal Product Code (UPC) bar code, multi-dimensional bar codes such as Quick Response (QR) code, Aztec code, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D bar code, and other optical codes), or acoustic detection components (e.g., microphones to identify tagged audio signals). In addition, a variety of information may be derived via thecommunication components342, such as location via Internet Protocol (IP) geolocation, location via Wi-Fi® signal triangulation, location via detecting an NFC beacon signal that may indicate a particular location, and so forth. 
- The various memories (e.g.,memory304,main memory314,static memory316, and/or memory of the processors302) and/orstorage unit318 may store one or more sets of instructions and data structures (e.g., software) embodying or used by any one or more of the methodologies or functions described herein. These instructions (e.g., the instructions310), when executed byprocessors302, cause various operations to implement the disclosed examples. 
- Theinstructions310 may be transmitted or received over thenetwork322, using a transmission medium, via a network interface device (e.g., a network interface component included in the communication components342) and using any one of a number of well-known transfer protocols (e.g., hypertext transfer protocol (HTTP)). Similarly, theinstructions310 may be transmitted or received using a transmission medium via the coupling326 (e.g., a peer-to-peer coupling) to thedevices324. 
- FIG.4A is a process flow diagram of a text selection andmodification process400 of an AR system, such as, but not limited to,glasses100 in accordance with some examples.FIG.4B is an illustration of a hand gesture in accordance with some examples.FIG.4C,FIG.4D, andFIG.4E are illustrations of anAR overlay442 including atext scene object444 havingtext446 in accordance with some examples. During the text selection andmodification process400, the AR system utilizes gesture recognition methodologies and DMVO methodologies to implement a user interface for text selection and modification during an AR experience provided by the AR system. 
- Inoperation402, the AR system starts the text selection andmodification process400 by invoking an AR text processing user interface application426. The AR text processing user interface application426 connects to ascan services component432. Thescan services component432 includes agesture recognition service430 that continuously recognizes gestures made by a user while using the AR system, and anobject tracking service428 that continuously tracks objects in the field of view of the AR system. 
- Theobject tracking service428 scans for, detects, and tracks objects in a real-world scene including landmarks on portions of the user's upper body, arms, and hands in the real-world scene. In some examples, theobject tracking service428 receives real-world scene video frame data of a real-world scene from one or more cameras of the AR system, such ascameras114 and116 ofFIG.1, and extracts features of objects including the user's upper body, arms, and hands from the real-world scene video frame data. Theobject tracking service428 generatescurrent tracking data436 based on the extracted features. Thecurrent tracking data436 includes current object data of objects in the real-world scene, and currentskeletal model data460 including identification, location, and categorization data of landmarks associated with the user's upper body, arms, and hands. Theobject tracking service428 communicates the currentskeletal model data460 to thegesture recognition service430. In addition, theobject tracking service428 makes thecurrent tracking data436 available to the text selection andmodification component434. 
- Thegesture recognition service430 receives the currentskeletal model data460 from theobject tracking service428 and compares the currentskeletal model data460 to previously generated gesture model data. Thegesture recognition service430 detects a detected gesture on the basis of the comparison of the currentskeletal model data460 with the gesture model data and generates current detectedgesture data462 based on the detected gesture. In additional examples, thegesture recognition service430 determines the detected gesture on the basis of categorizing the currentskeletal model data460 using artificial intelligence methodologies and a gesture model previously generated using machine learning methodologies. 
- Inoperation404, the AR system generates thetext scene object444 and adds thetext scene object444 to theAR overlay442 provided by the AR system. For example, the AR device generates thetext scene object444 including one or more virtual text objects468 based on thetext446. The one or more virtual text objects468 correspond to respective individual characters of thetext446. 
- Inoperation406, the AR system detects a text selection mode gesture, such as, but not limited to, textselection mode gesture440 ofFIG.4B, made by the user based on current detectedgesture data462 received from the text selection andmodification component434. Inoperation408, in response to detecting the textselection mode gesture440, the AR system provides a text selection and modification user interface as part oftext scene object444 and enters into a text selection mode. 
- Inoperation410, the AR system detects a definedtext selection gesture448, such as, but not limited to, a pinching gesture, made by the user using one of their hands as aselection hand464, such as, but not limited to, the user's left hand, based on current detectedgesture data462 received from the text selection andmodification component434. 
- Inoperation412, in response to detecting thetext selection gesture448, the AR system generates aselection line450 based on a landmark of the user's hand. For example, the AR system projects theselection line450 from a landmark of the user's hand making thetext selection gesture448 such that theselection line450 projects orthogonally toward a surface of the virtual text objects468 of thetext scene object444. The selection line functions as a virtual stylus for the user. In an additional example, the AR system determines a landmark for the user's handheld in thetext selection gesture448, such as, but not limited to, a middle point of two of the user's fingers that perform thetext selection gesture448, based on currentskeletal model data438 received from the text selection andmodification component434. The projectedselection line450 is a line collider that the user moves to selecttext446. The AR system detects collisions between theselection line450 and the virtual text objects468 of thetext scene object444 as the user positions theselection line450 within the virtual text objects468. The AR system determines user interactions by the user with the virtual text objects468 based on the detected collisions. 
- In operation414, the AR system tracks the user's selection hand making thetext selection gesture448 as the user moves their selection hand to position theselection line450 to a position at a textselection start point452 in the virtual text objects of thetext scene object444 based on currentskeletal model data438 received from the text selection andmodification component434. 
- Inoperation416, the AR system detects aconfirmation gesture454, such as, but not limited to, a first gesture, made by the user using aconfirmation hand466, such as, but not limited to, the user's right hand, based on current detectedgesture data462 received by the AR system from the text selection andmodification component434. 
- Inoperation418, the AR system sets a textselection start point452 for a text selection from thetext446 at a position of an intersection of theselection line450 with a start virtual text object of the virtual text objects468 of thetext scene object444. The textselection start point452 is a starting point intext446 of text that will be selected fromtext446. 
- Inoperation420, the AR system determines if a textselection end point456 has been set. The AR system repeats operation414,operation416, andoperation418 to set the textselection end point456 on the basis of determining that the textselection end point456 has not been set. 
- In repeated operation414, the AR system tracks the user's selection hand making thetext selection gesture448 as the user moves their selection hand to positionselection line450 at a position of a textselection end point456 in the virtual text objects468 based on currentskeletal model data438 received from the text selection andmodification component434. 
- In some examples, theAR overlay442 includes one or more user selectable virtual direction keys, such as, but not limited to,direction keys470, that the user may use to perform a text selection once the initial cursor placement is set. 
- In repeatedoperation416, the AR system detects asubsequent confirmation gesture454 made by the user using theirconfirmation hand466 based on the current detectedgesture data462 received by the AR system from the text selection andmodification component434. 
- In repeatedoperation418, the AR system sets a textselection end point456 for a text selection from thetext446 to a position of an intersection of theselection line450 with an end virtual text object of the virtual text objects468. The text selection end point is an end point intext446 of text that will be selected fromtext446. 
- In repeatedoperation420, the AR system determines if the textselection end point456 has been set. The AR system selects selectedtext458 between the textselection start point452 and the textselection end point456 fromtext446 on the basis of determining that the textselection end point456 has been set. Inoperation422, the AR system highlights the selectedtext458 and performs a text operation on the selectedtext458. The text operation can be a modification of the selectedtext458, cutting the selectedtext458, copying the selectedtext458, changing the appearance of the selectedtext458, changing the formatting of the selected text, etc. 
- In some examples, the AR system generates a virtual keyboard, such as, but not limited to,virtual keyboard628 ofFIG.6C, that is provided to the user in theAR overlay442. The user may use thevirtual keyboard628 to edit the selectedtext458 as described herein. 
- In some examples, the AR system generates a user selectable list of text modifications that are available for modifying the text, such as, but not limited to, cutting selectedtext458, copying the selectedtext458, changing the appearance of the selectedtext458, changing the formatting of the selected text, etc. 
- Inoperation424, the AR system exits the text selection mode and terminates the AR text processing user interface application426. 
- In some examples, the user makes a text selection mode exit gesture, such as, but not limited to, textselection mode gesture440, to terminate the AR text processing user interface application426. 
- In some examples, theAR overlay442 includes a user selectable exit button (not shown) that when selected by the user terminates the AR text processing user interface application426. 
- In some examples, the AR text processing user interface application426 terminates after an operation is completed on the selectedtext458. 
- FIG.5A is a process flow diagram of a text selection andmodification process500 of an AR system, such as, but not limited to,glasses100;FIG.5B is an illustration of a text selection mode gesture; andFIG.5A,FIG.5C,FIG.5D, andFIG.5E are illustrations of anAR overlay546 including atext scene object542 having text544 in accordance with some examples. During the text selection andmodification process500, the AR system utilizes gesture recognition and head-tracking methodologies to implement a user interface for text selection and modification during an AR experience provided by the AR system. 
- Inoperation502, the AR system starts the text selection andmodification process500 by invoking an AR text processing user interface application524. The AR text processing user interface application524 connects to ascan services component530. Thescan services component530 includes agesture recognition service528 that continuously recognizes gestures made by a user while using the AR system, an object tracking service526 that continuously tracks objects in the field of view of the AR system, and a head-trackinghead tracking service538 that continuously tracks movement of the user's head while wearing the AR system. 
- The object tracking service526 scans for, detects, and tracks objects in a real-world scene including landmarks on portions of the user's upper body, arms, and hands in the real-world scene. In some examples, the object tracking service526 receives real-world scene video frame data from one or more cameras of the AR system, such as, but not limited to,cameras114 and116, and extracts features of objects including the user's upper body, arms, and hands from the real-world scene video frame data. The object tracking service526 generatescurrent tracking data556 based on the extracted features. Thecurrent tracking data556 includes current object data of objects in the real-world scene, and currentskeletal model data554 including identification, location, and categorization data of landmarks associated with the user's upper body, arms, and hands. The object tracking service526 communicates the currentskeletal model data554 to thegesture recognition service528. In addition, the object tracking service526 makes thecurrent tracking data556 available to the text selection andmodification component532. 
- Thegesture recognition service528 receives the currentskeletal model data554 from the object tracking service526 and compares the currentskeletal model data554 to previously generated gesture model data. Thegesture recognition service528 detects a detected gesture on the basis of the comparison of the currentskeletal model data554 with the gesture model data and generates current detectedgesture data534 based on the detected gesture. In additional examples, thegesture recognition service528 determines the detected gesture on the basis of categorizing the currentskeletal model data554 using artificial intelligence methodologies and a gesture model previously generated using machine learning methodologies. 
- The head-trackinghead tracking service538 receives head-tracking data from an IMU of the AR system, such as, but not limited to, an IMU included inposition components340 ofFIG.3, and makes current head-trackingdata536 available to the text selection andmodification component532. 
- During execution of the AR text processing user interface application524, inoperation504, the AR system adds thetext scene object542 to theAR overlay546. Thetext scene object542 includes text544 to be selected and modified by the user using the AR system. For example, the AR system generates thetext scene object542 including one or more virtual text objects560 based on the text544. The one or more virtual text objects560 correspond to respective individual characters of the text544. 
- Inoperation506, the AR system detects a text selection mode gesture, such as, but not limited to, start/stop textselection mode gesture540, based on current detectedgesture data534 received from the text selection andmodification component532. In operation508, in response to detecting the text selection mode gesture, the AR system provides a text selection and modification user interface as part oftext scene object542 and enters into a text selection mode. 
- Inoperation510, the AR system projects atext selection icon548 onto potential text selection points in the text544 of thetext scene object542 based on current head-tracking data generated by thehead tracking service538. For example, the AR system determines a direction the user is looking in the real-world scene based on current head-trackingdata536. The AR system generates a ray originating at an eye location of the user and projects the ray in the direction the user is looking. The AR system determines a user focus point based on a location of an intersection of the ray with the text544 of thetext scene object542. The AR system generates thetext selection icon548 at the location of the user focus point in the text544. 
- Inoperation512, the AR system detects a confirmation gesture, such as aconfirmation gesture550, made by the user using aconfirmation hand558, such as the user's right hand, based on current detectedgesture data534 received by the AR system from the text selection andmodification component532. 
- Inoperation514, in response to detecting theconfirmation gesture550, the AR system sets the text selection start point in the text544 based on a current potential text selection point located where the AR system is currently projecting thetext selection icon548 onto the text544. The text selection start point is a starting point in text544 of text that will be selected from text544. 
- Inoperation516, the AR system determines if a text selection end point has been set. The AR system repeats operation510 (projecting thetext selection icon548 onto potential text selection points), operation512 (detecting a subsequent confirmation gesture made using the confirmation hand), and operation514 (setting a text selection end point) to set the text selection end point on the basis of determining that the text selection end point has not been set. 
- In repeatedoperation510 the AR system projects atext selection icon548 onto potential text selection points in the text544 of thetext scene object542 based on current head-tracking data generated by thehead tracking service538. 
- In repeatedoperation512, the AR system detects asubsequent confirmation gesture550 made by the user using the user'sconfirmation hand558 based on current detectedgesture data534 received by the AR system from the text selection andmodification component532. 
- In repeatedoperation514, in response to detecting theconfirmation gesture550, the AR system sets the text selection end point in the text544 based on a subsequent current potential text selection point located where the AR system is currently projecting thetext selection icon548 onto the text544. The text selection end point is an ending point in text544 of text that will be selected from text544. 
- In repeatedoperation516, the AR system determines if the text selection end point has been selected. Inoperation518, the AR system selects selectedtext552 and highlights selectedtext552 between the text selection start point and the text selection end point on the basis of determining that the text selection end point has been set. Inoperation520, the AR system performs a text operation on the selectedtext552. The text operation can be a modification of the selectedtext552, cutting the selectedtext552, copying the selectedtext552, changing the appearance of the selectedtext458, changing the formatting of the selected text, etc. Inoperation522, the AR system exits the text selection mode and terminates. 
- FIG.6A is a process flow diagram of avirtual keyboard process600 of an AR system, such as, but not limited to,glasses100, in accordance with some embodiments.FIG.6B is a depiction of a user selection of aphysical surface640 in accordance with some embodiments.FIG.6C is an illustration of a virtualkeyboard user interface660 in accordance with some embodiments. During thevirtual keyboard process600, the AR system utilizes gesture recognition methodologies and DMVO methodologies to implement avirtual keyboard628 of a virtualkeyboard user interface660 on thephysical surface640 for text selection and modification during an AR experience. 
- The AR system executes avirtual keyboard application620 to provide the virtualkeyboard user interface660 to the user. Thevirtual keyboard application620 connects to ascan services component626 of the AR system. Thescan services component626 includes agesture recognition service624 that continuously recognizes gestures made by a user while using the AR system, anobject tracking service622 that continuously tracks objects in the field of view of the AR system, and a head-trackingservice646 that continuously tracks movement of the user's head while wearing the AR system. 
- Theobject tracking service622 receives real-world scene video frame data of a real-world scene from a perspective of a user of the AR system from one or more cameras of the AR system, such as, but not limited to,cameras114 and116 ofFIG.1. Included in the real-world scene video frame data are tracking video frame data of objects and portions of the user's body including portions of the user's upper body, arms, hands, and fingers in the real-world scene. The tracking video frame data includes video frame data of movement of portions of the user's upper body, arms, and hands as the user makes a gesture or moves their hands and fingers to interact with objects in an AR overlay of an AR experience; video frame data of locations of the user's arms and hands in space as the user makes the gesture or moves their hands and fingers to interact with the with objects in an AR overlay of an AR experience; video frame data of positions in which the user holds their upper body, arms, hands, and fingers as the user makes the gesture or moves their hands and fingers to interact with the with objects in an AR overlay of an AR experience; and object video frame data of objects in the real-world scene. 
- Theobject tracking service622 scans for, detects, and tracks objects in the real-world scene including landmarks on portions of the user's upper body, arms, and hands in the real-world scene. In some examples, theobject tracking service622 receives the real-world scene video frame data from the one or more cameras and extracts features of objects including the user's upper body, arms, and hands from the tracking video frame data included in the real-world scene video frame. Theobject tracking service622 generates current tracking data based on the extracted features. The current tracking data includescurrent object data656 of objects in the real-world scene, and currentskeletal model data648 including identification, location, and categorization data of landmarks associated with the user's upper body, arms, and hands. Theobject tracking service622 communicates the currentskeletal model data648 to thegesture recognition service624. In addition, theobject tracking service622 makes the current tracking data available to thevirtual keyboard application620. 
- Thegesture recognition service624 receives the currentskeletal model data648 from theobject tracking service622 and compares the currentskeletal model data648 to previously generated gesture model data. Thegesture recognition service624 detects a detected gesture on the basis of the comparison of the currentskeletal model data648 with the gesture model data and generates current detectedgesture data650 based on the detected gesture. In additional examples, thegesture recognition service624 determines the detected gesture on the basis of categorizing the currentskeletal model data648 using artificial intelligence methodologies and a gesture model previously generated using machine learning methodologies. 
- The head-trackingservice646 receives head-tracking data from an IMU of the AR system and makes current head-trackingdata652 available to thevirtual keyboard application620. 
- In some examples, the trackinggesture recognition service624,gesture recognition service624, and head-trackingservice646 operate continuously so that the currentskeletal model data648, current detectedgesture data650, and current head-trackingdata652 are available on demand for an application executing on the AR system. 
- During an AR experience, a user approaches aphysical object654 having a flatphysical surface640 upon which to project avirtual keyboard628. The user focuses on atext scene object636 of anAR overlay658 within the AR experience and physically touches thephysical surface640 with atext entry hand630, such as, but not limited to, their left hand. The user makes an open keyboard gesture, such as, but not limited to, open/close keyboard gesture644, with afree hand642, such as, but not limited to, their right hand. Inoperation602, the AR system detects the open keyboard gesture based on the current detectedgesture data650 generated by thegesture recognition service624. In response to detecting the open keyboard gesture, the AR system invokes thevirtual keyboard application620. 
- In some examples, the AR system determines a user's focus on a physical surface location based on current head-tracking data received from thescan services component626. The physical surface location is determined based on a physical object that the user is focusing on without having the user touch the physical surface. The user uses a free hand to make an open keyboard gesture, such as, but not limited to, open/close keyboard gesture644, when the user is focusing on a surface that the user wants to select. The AR system detects the open/close keyboard gesture644 and determines a physical surface that the user is currently focusing on as the physical surface location upon which a virtual keyboard is to be virtually projected within an AR experience. 
- In some examples, the user makes a tapping gesture with a finger on a physical surface to indicate a physical surface upon which a virtual keyboard is to be virtually projected within an AR experience. The AR system detects the tapping motion and determines the location of the physical surface based on current skeletal model data received from thescan services component626. When the AR system generates a virtual keyboard, the virtual keyboard is centered on the location determined from the user's finger. 
- In some examples, the AR system highlights a physical surface based on the user's focus on the physical surface. In some examples, the AR system highlights a physical surface based on a determination of a physical surface location determined from the user touching the physical surface. 
- In operation604, the AR device detects a focus of the user on thetext scene object636 based on current head-trackingdata652 provided by the head-trackingservice646, and a location of thetext scene object636 in theAR overlay658. In some examples, the AR device receives current head-trackingdata652 from the head-trackingservice646. The AR system determines a direction the user is looking in the real-world scene based on current head-trackingdata536. The AR system generates a ray originating at an eye location of the user and projects the ray in the direction the user is looking. The AR system detects thetext scene object636 based on an intersection of the ray with thetext scene object636. 
- Inoperation606, the AR device determines a location in a user interface model that corresponds to a location of thephysical surface640 of aphysical object654 in the real-world scene based oncurrent object data656 received from theobject tracking service622. For example, the AR device determines a location of a landmark associated with a tip of an index finger of thetext entry hand630 based on currentskeletal model data648 received from theobject tracking service622. As the user is touching thephysical surface640, the location of thephysical surface640 is the location of the landmark associated with the tip of the index finger of the user'stext entry hand630. The AR device generates a geometric mesh of a virtual surface in the user interface model corresponding to thephysical surface640 based on the location of thephysical surface640 andcurrent object data656 received from theobject tracking service622. 
- In operation608, the AR device generates the virtualkeyboard user interface660 including thevirtual keyboard628 in theAR overlay658 and associated with thetext scene object636. Thevirtual keyboard628 includes a plurality of virtual objects that constitute interactivevirtual keys632 of thevirtual keyboard628. Thevirtual keys632 are virtual objects representing geometric solids having respective locations in the user interface model or volume that corresponds to a volume of space in the real-world scene that is occupied by thevirtual keyboard628. The AR device locates thevirtual keyboard628 at a location in the user interface model that corresponds to the location of thephysical surface640 in the real-world scene and orientates thevirtual keyboard628 such that a front surface of thevirtual keyboard628 corresponds to the geometric mesh of the virtual surface determined for thephysical surface640 of the physical object. 
- Inoperation610, the AR device provides the virtualkeyboard user interface660 including thevirtual keyboard628 in a display to the user, and thevirtual keyboard628 appears to the user as if thevirtual keyboard628 is located on thephysical surface640 of thephysical object654. When the user interacts with thevirtual keyboard628, the user touches the physical surface as the user selects one or morevirtual keys632 of thevirtual keyboard628. 
- In operation612, the AR device determines the user's selection of one or more selected virtual keys. For example, the AR device receives currentskeletal model data648 from theobject tracking service622. The AR device detects a landmark associated with the user'stext entry hand630, for example a tip of a forefinger, based on the currentskeletal model data648. The AR device generates a landmark collider634 in the virtualkeyboard user interface660 based on the landmark. To select a virtual key from thevirtual keys632, the user moves theirtext entry hand630 to move the landmark collider634 within the virtualkeyboard user interface660. To move the landmark collider634 over thevirtual keys632 without selecting a virtual key, the user retracts theirtext entry hand630 away from thephysical surface640, and thus thevirtual keys632 in the user interface model thereby clearing thevirtual keys632. To select a virtual key, the user positions theirtext entry hand630 over the virtual key and extends theirtext entry hand630 to “press” or “poke” the virtual key until the landmark collider634 collides with the selected virtual key and the user physically touches thephysical surface640. The AR device determines the user's selection of one or more selected virtual keys on the basis of detecting the collisions between the landmark collider634 and the one or more selected virtual keys. 
- Inoperation614, the AR device provides entered text to the user in thetext scene object636. For example, each of the selected virtual keys of thevirtual keys632 is associated with a character. The AR device generates entered text data based on the selected virtual keys and communicates the entered text data to the text scene object. The text scene object receives the entered text data and uses an optical engine of the AR system to provide the entered text data as entered text to the user using a display of the AR system. 
- Inoperation616, the AR device determines if the user is making a close keyboard gesture, such as, but not limited to, open/close keyboard gesture644. For example, the AR device receives current detectedgesture data650 from thegesture recognition service624 and determines if a gesture being made by the user is the close keyboard gesture based on the current detectedgesture data650. In operation618, the AR system closes the virtualkeyboard user interface660 and terminates thevirtual keyboard application620 on the basis of determining that the user is making the close keyboard gesture. The AR system continues determining the user's selection of the one or more virtual keys in operation612 on the basis of determining that the user is not making the close keyboard gesture. 
- In some examples, the characters of the enteredtext data638 provided to the user in thetext scene object636 are composed of virtual objects that the user interacts with using the landmark collider634. For example, the AR device detects that the user selects a character from thetext scene object636 on the basis of detecting a collision between the landmark collider634 and the selected character. Accordingly, the AR device can determine the user's selection or manipulation of the entered text data by detecting collisions between the landmark collider634 and the virtual objects of the characters. Text selections can include selecting and highlighting a text area by the AR device detecting the user using theirtext entry hand630 to drag the landmark collider634 across thephysical surface640 in a location of the enteredtext data638 containing characters to be selected. In some examples, the AR device provides a menu user interface to the user within the virtualkeyboard user interface660. The menu user interface contains selectable text manipulation options including copy, cut, and paste in the form of virtual objects. The AR device detects the user's selection of the text manipulation items on the basis of detecting collisions between the landmark collider634 and the virtual objects of the selectable text manipulation options. 
- In some examples, the AR device of the AR system performs the functions of thegesture recognition service624 and the head-trackingservice646 by utilizing various APIs and system libraries. 
- FIG.7 is a block diagram700 illustrating asoftware architecture704, which can be installed on any one or more of the devices described herein. Thesoftware architecture704 is supported by hardware such as amachine702 that includesprocessors720,memory726, and I/O components738. In this example, thesoftware architecture704 can be conceptualized as a stack of layers, where individual layers provide a particular functionality. Thesoftware architecture704 includes layers such as anoperating system712,libraries708,frameworks710, andapplications706. Operationally, theapplications706 invoke API calls750 through the software stack and receivemessages752 in response to the API calls750. 
- Theoperating system712 manages hardware resources and provides common services. Theoperating system712 includes, for example, akernel714,services716, anddrivers722. Thekernel714 acts as an abstraction layer between the hardware and the other software layers. For example, thekernel714 provides memory management, processor management (e.g., scheduling), component management, networking, and security settings, among other functionalities. Theservices716 can provide other common services for the other software layers. Thedrivers722 are responsible for controlling or interfacing with the underlying hardware. For instance, thedrivers722 can include display drivers, camera drivers, BLUETOOTH® or BLUETOOTH® Low Energy drivers, flash memory drivers, serial communication drivers (e.g., Universal Serial Bus (USB) drivers), WI-FI® drivers, audio drivers, power management drivers, and so forth. 
- Thelibraries708 provide a low-level common infrastructure used by theapplications706. Thelibraries708 can include system libraries718 (e.g., C standard library) that provide functions such as memory allocation functions, string manipulation functions, mathematic functions, and the like. In addition, thelibraries708 can includeAPI libraries724 such as media libraries (e.g., libraries to support presentation and manipulation of various media formats such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group (JPEG or JPG), or Portable Network Graphics (PNG)), graphics libraries (e.g., an OpenGL framework used to render in two dimensions (2D) and three dimensions (3D) graphic content on a display, GLMotif used to implement user interfaces), image feature extraction libraries (e.g., OpenIMAJ), database libraries (e.g., SQLite to provide various relational database functions), web libraries (e.g., WebKit to provide web browsing functionality), and the like. Thelibraries708 can also include a wide variety ofother libraries728 to provide many other APIs to theapplications706. 
- Theframeworks710 provide a high-level common infrastructure that is used by theapplications706. For example, theframeworks710 provide various graphical user interface (GUI) functions, high-level resource management, and high-level location services. Theframeworks710 can provide a broad spectrum of other APIs that can be used by theapplications706, some of which may be specific to a particular operating system or platform. 
- In some examples, theapplications706 may include ahome Application736, acontacts Application730, abrowser Application732, abook reader Application734, alocation Application742, amedia Application744, amessaging application746, agame Application748, and a broad assortment of other applications such as third-party applications740. Theapplications706 are programs that execute functions defined in the programs. Various programming languages can be employed to create one or more of theapplications706, structured in a variety of manners, such as object-oriented programming languages (e.g., Objective-C, Java, or C++) or procedural programming languages (e.g., C or assembly language). In a specific example, the third-party applications740 (e.g., applications developed using the ANDROID™ or IOS™ software development kit (SDK) by an entity other than the vendor of the particular platform) may be mobile software running on a mobile operating system such as IOS™, ANDROID™, WINDOWS® Phone, or another mobile operating system. In this example, the third-party applications740 can invoke the API calls750 provided by theoperating system712 to facilitate functionality described herein. 
- FIG.8 is a block diagram illustrating anetworked system800 including details of theglasses100, in accordance with some examples. Thenetworked system800 includes theglasses100, aclient device826, and aserver system832. Theclient device826 may be a smartphone, tablet, phablet, laptop computer, access point, or any other such device capable of connecting with theglasses100 using a low-power wireless connection836 and/or a high-speed wireless connection834. Theclient device826 is connected to theserver system832 via thenetwork830. Thenetwork830 may include any combination of wired and wireless connections. Theserver system832 may be one or more computing devices as part of a service or network computing system. Theclient device826 and any elements of theserver system832 andnetwork830 may be implemented using details of thesoftware architecture704 or thecomputing apparatus300 described inFIG.7 andFIG.3 respectively. 
- Theglasses100 include adata processor802,displays810, one ormore cameras808, and additional input/output elements816. The input/output elements816 may include microphones, audio speakers, biometric sensors, additional sensors, or additional display elements integrated with thedata processor802. Examples of the input/output elements816 are discussed further with respect toFIG.7 andFIG.3. For example, the input/output elements816 may include any of I/O components306 includingoutput components328,motion components336, and so forth. Examples of thedisplays810 are discussed inFIG.2. In the particular examples described herein, thedisplays810 include a display for the user's left and right eyes. 
- Thedata processor802 includes an image processor806 (e.g., a video processor), a GPU &display driver838, atracking module840, aninterface812, low-power circuitry804, and high-speed circuitry820. The components of thedata processor802 are interconnected by abus842. 
- Theinterface812 refers to any source of a user command that is provided to thedata processor802. In one or more examples, theinterface812 is a physical button that, when depressed, sends a user input signal from theinterface812 to a low-power processor814. A depression of such button followed by an immediate release may be processed by the low-power processor814 as a request to capture a single image, or vice versa. A depression of such a button for a first period of time may be processed by the low-power processor814 as a request to capture video data while the button is depressed, and to cease video capture when the button is released, with the video captured while the button was depressed stored as a single video file. Alternatively, depression of a button for an extended period of time may capture a still image. In some examples, theinterface812 may be any mechanical switch or physical interface capable of accepting user inputs associated with a request for data from thecameras808. In other examples, theinterface812 may have a software component, or may be associated with a command received wirelessly from another source, such as from theclient device826. 
- Theimage processor806 includes circuitry to receive signals from thecameras808 and process those signals from thecameras808 into a format suitable for storage in thememory824 or for transmission to theclient device826. In one or more examples, the image processor806 (e.g., video processor) comprises a microprocessor integrated circuit (IC) customized for processing sensor data from thecameras808, along with volatile memory used by the microprocessor in operation. 
- The low-power circuitry804 includes the low-power processor814 and the low-power wireless circuitry818. These elements of the low-power circuitry804 may be implemented as separate elements or may be implemented on a single IC as part of a system on a single chip. The low-power processor814 includes logic for managing the other elements of theglasses100. As described above, for example, the low-power processor814 may accept user input signals from theinterface812. The low-power processor814 may also be configured to receive input signals or instruction communications from theclient device826 via the low-power wireless connection836. The low-power wireless circuitry818 includes circuit elements for implementing a low-power wireless communication system. Bluetooth™ Smart, also known as Bluetooth™ low energy, is one standard implementation of a low power wireless communication system that may be used to implement the low-power wireless circuitry818. In other examples, other low power communication systems may be used. 
- The high-speed circuitry820 includes a high-speed processor822, amemory824, and a high-speed wireless circuitry828. The high-speed processor822 may be any processor capable of managing high-speed communications and operation of any general computing system used for thedata processor802. The high-speed processor822 includes processing resources used for managing high-speed data transfers on the high-speed wireless connection834 using the high-speed wireless circuitry828. In some examples, the high-speed processor822 executes an operating system such as a LINUX operating system or other such operating system such as theoperating system712 ofFIG.7. In addition to any other responsibilities, the high-speed processor822 executing a software architecture for thedata processor802 is used to manage data transfers with the high-speed wireless circuitry828. In some examples, the high-speed wireless circuitry828 is configured to implement Institute of Electrical and Electronic Engineers (IEEE) 802.11 communication standards, also referred to herein as Wi-Fi. In other examples, other high-speed communications standards may be implemented by the high-speed wireless circuitry828. 
- Thememory824 includes any storage device capable of storing camera data generated by thecameras808 and theimage processor806. While thememory824 is shown as integrated with the high-speed circuitry820, in other examples, thememory824 may be an independent standalone element of thedata processor802. In some such examples, electrical routing lines may provide a connection through a chip that includes the high-speed processor822 fromimage processor806 or the low-power processor814 to thememory824. In other examples, the high-speed processor822 may manage addressing of thememory824 such that the low-power processor814 will boot the high-speed processor822 any time that a read or write operation involving thememory824 is desired. 
- Thetracking module840 estimates a pose of theglasses100. For example, thetracking module840 uses image data and associated inertial data from thecameras808 and theposition components340, as well as GPS data, to track a location and determine a pose of theglasses100 relative to a frame of reference (e.g., real-world scene environment). Thetracking module840 continually gathers and uses updated sensor data describing movements of theglasses100 to determine updated three-dimensional poses of theglasses100 that indicate changes in the relative position and orientation relative to physical objects in the real-world scene environment. Thetracking module840 permits visual placement of virtual objects relative to physical objects by theglasses100 within the field of view of the user via thedisplays810. 
- The GPU &display driver838 may use the pose of theglasses100 to generate frames of virtual content or other content to be presented on thedisplays810 when theglasses100 are functioning in a traditional augmented reality mode. In this mode, the GPU &display driver838 generates updated frames of virtual content based on updated three-dimensional poses of theglasses100, which reflect changes in the position and orientation of the user in relation to physical objects in the user's real-world scene environment. 
- One or more functions or operations described herein may also be performed in an application resident on theglasses100 or on theclient device826, or on a remote server. For example, one or more functions or operations described herein may be performed by one of theapplications706 such asmessaging application746. 
- FIG.9 is a block diagram showing anexample messaging system900 for exchanging data (e.g., messages and associated content) over a network. Themessaging system900 includes multiple instances of aclient device826 which host a number of applications, including amessaging client902 andother Applications904. Amessaging client902 is communicatively coupled to other instances of the messaging client902 (e.g., hosted on respective other client devices826), amessaging server system906 and third-party servers908 via a network830 (e.g., the Internet). Amessaging client902 can also communicate with locally-hostedApplications904 using Application Program Interfaces (APIs). 
- Amessaging client902 is able to communicate and exchange data withother messaging clients902 and with themessaging server system906 via thenetwork830. The data exchanged betweenmessaging clients902, and between amessaging client902 and themessaging server system906, includes functions (e.g., commands to invoke functions) as well as payload data (e.g., text, audio, video or other multimedia data). 
- Themessaging server system906 provides server-side functionality via thenetwork830 to aparticular messaging client902. While some functions of themessaging system900 are described herein as being performed by either amessaging client902 or by themessaging server system906, the location of some functionality either within themessaging client902 or themessaging server system906 may be a design choice. For example, it may be technically preferable to initially deploy some technology and functionality within themessaging server system906 but to later migrate this technology and functionality to themessaging client902 where aclient device826 has sufficient processing capacity. 
- Themessaging server system906 supports various services and operations that are provided to themessaging client902. Such operations include transmitting data to, receiving data from, and processing data generated by themessaging client902. This data may include message content, client device information, geolocation information, media augmentation and overlays, message content persistence conditions, social network information, and live event information, as examples. Data exchanges within themessaging system900 are invoked and controlled through functions available via user interfaces (UIs) of themessaging client902. 
- Turning now specifically to themessaging server system906, an Application Program Interface (API)server910 is coupled to, and provides a programmatic interface to,application servers914. Theapplication servers914 are communicatively coupled to adatabase server916, which facilitates access to adatabase920 that stores data associated with messages processed by theapplication servers914. Similarly, aweb server924 is coupled to theapplication servers914 and provides web-based interfaces to theapplication servers914. To this end, theweb server924 processes incoming network requests over the Hypertext Transfer Protocol (HTTP) and several other related protocols. 
- The Application Program Interface (API)server910 receives and transmits message data (e.g., commands and message payloads) between theclient device826 and theapplication servers914. Specifically, the Application Program Interface (API)server910 provides a set of interfaces (e.g., routines and protocols) that can be called or queried by themessaging client902 in order to invoke functionality of theapplication servers914. The Application Program Interface (API)server910 exposes various functions supported by theapplication servers914, including account registration, login functionality, the sending of messages, via theapplication servers914, from aparticular messaging client902 to anothermessaging client902, the sending of media files (e.g., images or video) from amessaging client902 to amessaging server912, and for possible access by anothermessaging client902, the settings of a collection of media data (e.g., story), the retrieval of a list of friends of a user of aclient device826, the retrieval of such collections, the retrieval of messages and content, the addition and deletion of entities (e.g., friends) to an entity graph (e.g., a social graph), the location of friends within a social graph, and opening an application event (e.g., relating to the messaging client902). 
- Theapplication servers914 host a number of server applications and subsystems, including for example amessaging server912, animage processing server918, and asocial network server922. Themessaging server912 implements a number of message processing technologies and functions, particularly related to the aggregation and other processing of content (e.g., textual and multimedia content) included in messages received from multiple instances of themessaging client902. As will be described in further detail, the text and media content from multiple sources may be aggregated into collections of content (e.g., called stories or galleries). These collections are then made available to themessaging client902. Other processor and memory intensive processing of data may also be performed server-side by themessaging server912, in view of the hardware requirements for such processing. 
- Theapplication servers914 also include animage processing server918 that is dedicated to performing various image processing operations, typically with respect to images or video within the payload of a message sent from or received at themessaging server912. 
- Thesocial network server922 supports various social networking functions and services and makes these functions and services available to themessaging server912. To this end, thesocial network server922 maintains and accesses an entity graph within thedatabase920. Examples of functions and services supported by thesocial network server922 include the identification of other users of themessaging system900 with which a particular user has relationships or is “following,” and also the identification of other entities and interests of a particular user. 
- Themessaging client902 can notify a user of theclient device826, or other users related to such a user (e.g., “friends”), of activity taking place in shared or shareable sessions. For example, themessaging client902 can provide participants in a conversation (e.g., a chat session) in themessaging client902 with notifications relating to the current or recent use of a game by one or more members of a group of users. One or more users can be invited to join in an active session or to launch a new session. In some examples, shared sessions can provide a shared augmented reality experience in which multiple people can collaborate or participate. 
- A “carrier signal” refers to any intangible medium that is capable of storing, encoding, or carrying instructions for execution by the machine, and includes digital or analog communications signals or other intangible media to facilitate communication of such instructions. Instructions may be transmitted or received over a network using a transmission medium via a network interface device. 
- A “client device” refers to any machine that interfaces to a communications network to obtain resources from one or more server systems or other client devices. A client device may be, but is not limited to, a mobile phone, desktop computer, laptop, portable digital assistants (PDAs), smartphones, tablets, ultrabooks, netbooks, laptops, multi-processor systems, microprocessor-based or programmable consumer electronics, game consoles, set-top boxes, or any other communication device that a user may use to access a network. 
- A “communication network” refers to one or more portions of a network that may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), the Internet, a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, a Wi-Fi® network, another type of network, or a combination of two or more such networks. For example, a network or a portion of a network may include a wireless or cellular network and the coupling may be a Code Division Multiple Access (CDMA) connection, a Global System for Mobile communications (GSM) connection, or other types of cellular or wireless coupling. In this example, the coupling may implement any of a variety of types of data transfer technology, such as Single Carrier Radio Transmission Technology (1xRTT), Evolution-Data Optimized (EVDO) technology, General Packet Radio Service (GPRS) technology, Enhanced Data rates for GSM Evolution (EDGE) technology, third Generation Partnership Project (3GPP) including 3G, fourth generation wireless (4G) networks, Universal Mobile Telecommunications System (UMTS), High Speed Packet Access (HSPA), Worldwide Interoperability for Microwave Access (WiMAX), Long Term Evolution (LTE) standard, others defined by various standard-setting organizations, other long-range protocols, or other data transfer technology. 
- A “component” refers to a device, physical entity, or logic having boundaries defined by function or subroutine calls, branch points, APIs, or other technologies that provide for the partitioning or modularization of particular processing or control functions. Components may be combined via their interfaces with other components to carry out a machine process. A component may be a packaged functional hardware unit designed for use with other components and a part of a program that usually performs a particular function of related functions. Components may constitute either software components (e.g., code embodied on a machine-readable medium) or hardware components. A “hardware component” is a tangible unit capable of performing some operations and may be configured or arranged in a particular physical manner. In various examples, one or more computer systems (e.g., a standalone computer system, a client computer system, or a server computer system) or one or more hardware components of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware component that operates to perform some operations as described herein. A hardware component may also be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware component may include dedicated circuitry or logic that is permanently configured to perform some operations. A hardware component may be a special-purpose processor, such as a field-programmable gate array (FPGA) or an application specific integrated circuit (ASIC). A hardware component may also include programmable logic or circuitry that is temporarily configured by software to perform some operations. For example, a hardware component may include software executed by a general-purpose processor or other programmable processor. Once configured by such software, hardware components become specific machines (or specific components of a machine) tailored to perform the configured functions and are no longer general-purpose processors. It will be appreciated that the decision to implement a hardware component mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software), may be driven by cost and time considerations. Accordingly, the phrase “hardware component”(or “hardware-implemented component”) is to be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a particular manner or to perform some operations described herein. Considering examples in which hardware components are temporarily configured (e.g., programmed), the hardware components may not be configured or instantiated at any one instance in time. For example, where a hardware component comprises a general-purpose processor configured by software to become a special-purpose processor, the general-purpose processor may be configured as respectively different special-purpose processors (e.g., comprising different hardware components) at different times. Software accordingly configures a particular processor or processors, for example, to constitute a particular hardware component at one instance of time and to constitute a different hardware component at a different instance of time. Hardware components can provide information to, and receive information from, other hardware components. Accordingly, the described hardware components may be regarded as being communicatively coupled. Where multiple hardware components exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) between or among two or more of the hardware components. In examples in which multiple hardware components are configured or instantiated at different times, communications between such hardware components may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware components have access. For example, one hardware component may perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware component may then, at a later time, access the memory device to retrieve and process the stored output. Hardware components may also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information). The various operations of example methods described herein may be performed by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented components that operate to perform one or more operations or functions described herein. As used herein, “processor-implemented component” refers to a hardware component implemented using one or more processors. Similarly, the methods described herein may be partially processor-implemented, with a particular processor or processors being an example of hardware. For example, some of the operations of a method may be performed by one or more processors or processor-implemented components. Moreover, the one or more processors may also operate to support performance of the relevant operations in a “cloud computing” environment or as a “software as a service” (SaaS). For example, at some of the operations may be performed by a group of computers (as examples of machines including processors), with these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., an API). The performance of some of the operations may be distributed among the processors, residing within a single machine as well as being deployed across a number of machines. In some examples, the processors or processor-implemented components may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other examples, the processors or processor-implemented components may be distributed across a number of geographic locations. 
- A “computer-readable medium” refers to both machine-storage media and transmission media. Thus, the terms include both storage devices/media and carrier waves/modulated data signals. The terms “machine-readable medium,” “computer-readable medium” and “device-readable medium” mean the same thing and may be used interchangeably in this disclosure. 
- A “machine-storage medium” refers to a single or multiple storage devices and/or media (e.g., a centralized or distributed database, and/or associated caches and servers) that store executable instructions, routines and/or data. The term includes, but not be limited to, solid-state memories, and optical and magnetic media, including memory internal or external to processors. Specific examples of machine-storage media, computer-storage media and/or device-storage media include non-volatile memory, including by way of example semiconductor memory devices, e.g., erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), FPGA, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks The terms “machine-storage medium,” “device-storage medium,” “computer-storage medium” mean the same thing and may be used interchangeably in this disclosure. The terms “machine-storage media,” “computer-storage media,” and “device-storage media” specifically exclude carrier waves, modulated data signals, and other such media, at some of which are covered under the term “signal medium.” 
- A “processor” refers to any circuit or virtual circuit (a physical circuit emulated by logic executing on an actual processor) that manipulates data values according to control signals (e.g., “commands”, “op codes”, “machine code”, and so forth) and which produces associated output signals that are applied to operate a machine. A processor may, for example, be a Central Processing Unit (CPU), a Reduced Instruction Set Computing (RISC) processor, a Complex Instruction Set Computing (CISC) processor, a Graphics Processing Unit (GPU), a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Radio-Frequency Integrated Circuit (RFIC) or any combination thereof. A processor may further be a multi-core processor having two or more independent processors (sometimes referred to as “cores”) that may execute instructions contemporaneously. 
- A “signal medium” refers to any intangible medium that is capable of storing, encoding, or carrying the instructions for execution by a machine and includes digital or analog communications signals or other intangible media to facilitate communication of software or data. The term “signal medium” may be taken to include any form of a modulated data signal, carrier wave, and so forth. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a matter as to encode information in the signal. The terms “transmission medium” and “signal medium” mean the same thing and may be used interchangeably in this disclosure. 
- Changes and modifications may be made to the disclosed examples without departing from the scope of the present disclosure. These and other changes or modifications are intended to be included within the scope of the present disclosure, as expressed in the following claims.