Patent Description:
The subject matter disclosed herein generally relates to the technical field of computer systems, and in one specific example, to computer systems and methods for sharing virtual spaces.

<CIT> describes a method of synchronizing digital content between a first mobile device and a second mobile device that are in proximal physical locations. Device position and orientation data is received at a first application executing in an operating system of the first mobile device. Sensor data is used to determine at least two 3D points associated with a physical location of the second mobile device. The at least two 3D points are used to determine an offset for the position, orientation and scale of the first mobile device relative to the second mobile device. The offset and digital content data captured by the first mobile device are shared over a network with a second application executing in an operating system of the second mobile device. The second mobile device uses the offset to display the digital content captured by the first mobile device together with digital content data captured by the second mobile device.

The invention is a system, computer-readable storage medium and method as defined in the appended claims.

It is an aim of certain embodiments of the present disclosure to solve, mitigate or obviate, at least partly, at least one of the problems and/or disadvantages associated with the prior art. Certain embodiments aim to provide at least one of the advantages described below.

Features and advantages of example embodiments of the present disclosure will become apparent from the following detailed description, taken in combination with the appended drawings, in which:.

The term 'content' used throughout the description herein should be understood to include all forms of media content items, including images, videos, audio, text, 3D models (e.g., including textures, materials, meshes, and more), animations, vector graphics, and the like.

The term 'game' used throughout the description herein should be understood to include video games and applications that execute and present video games on a device, and applications that execute and present simulations on a device. The term 'game' should also be understood to include programming code (either source code or executable binary code) which is used to create and execute the game on a device.

The term 'environment' used throughout the description herein should be understood to include 2D digital environments (e.g., 2D video game environments, 2D simulation environments, 2D content creation environments, and the like), 3D digital environments (e.g., 3D game environments, 3D simulation environments, 3D content creation environments, virtual reality environments, and the like), and augmented reality environments that include both a digital (e.g., virtual) component and a real-world component.

The term 'digital object', used throughout the description herein is understood to include any object of digital nature, digital structure, or digital element within an environment. A digital object can represent (e.g., in a corresponding data structure) almost anything within the environment; including 3D models (e.g., characters, weapons, scene elements (e.g., buildings, trees, cars, treasures, and the like)) with 3D model textures, backgrounds (e.g., terrain, sky, and the like), lights, cameras, effects (e.g., sound and visual), animation, and more. The term 'digital object' may also be understood to include linked groups of individual digital objects. A digital object is associated with data that describes properties and behavior for the object.

The terms 'asset', 'game asset', and 'digital asset', used throughout the description herein are understood to include any data that can be used to describe a digital object or can be used to describe an aspect of a digital project (e.g., including: a game, a film, a software application). For example, an asset can include data for an image, a 3D model (textures, rigging, and the like), a group of 3D models (e.g., an entire scene), an audio sound, a video, animation, a 3D mesh and the like. The data describing an asset may be stored within a file, or may be contained within a collection of files, or may be compressed and stored in one file (e.g., a compressed file), or may be stored within a memory. The data describing an asset can be used to instantiate one or more digital objects within a game at runtime (e.g., during execution of the game).

The term 'build' and 'game build' used throughout the description herein should be understood to include a compiled binary code of a game which can be executed on a device, and which, when executed can provide a playable version of the game (e.g., playable by a human or by an artificial intelligence agent).

The terms 'client' and 'application client' used throughout the description herein are understood to include a software client or software application that can access data and services on a server, including accessing over a network.

Throughout the description herein, the term 'mixed reality' (MR) should be understood to include all combined environments in the spectrum between reality and virtual reality (VR) including virtual reality, augmented reality (AR) and augmented virtuality.

A method of merging distant virtual spaces is disclosed. Data describing an environment surrounding a MR merging device is received. A first slice plane is generated, positioned, and displayed within the environment. A second MR merging device is connective with in a second environment. Data describing inbound content from the second MR merging device is received. Content data is sent from the MR merging device to the second MR merging device. The inbound content data is processed and displayed on the first slice plane.

The present invention includes apparatuses which perform one or more operations or one or more combinations of operations described herein, including data processing systems which perform these methods and computer readable media which when executed on data processing systems cause the systems to perform these methods, the operations or combinations of operations including non-routine and unconventional operations.

Turning now to the drawings, systems and methods, including non-routine or unconventional components or operations, or combinations of such components or operations, for mixed reality (MR) merging of distant spaces in accordance with embodiments of the invention are illustrated. In example embodiments, <FIG> is a diagram of an example MR merging system <NUM> and associated devices configured to provide MR merging system functionality to a user <NUM>. In the example embodiment, the MR merging system <NUM> includes a MR merging device <NUM>, operated by the user <NUM> and a MR merging server device <NUM> coupled in networked communication with the MR merging device <NUM> via a network <NUM> (e.g., a cellular network, a Wi-Fi network, the Internet, and so forth). The MR merging device <NUM> is a computing device capable of providing a mixed reality experience to the user <NUM>.

In the example embodiment, the MR merging device <NUM> includes one or more central processing units (CPUs) <NUM> and graphics processing units (GPUs) <NUM>. The processing device <NUM> is any type of processor, processor assembly comprising multiple processing elements (not shown), having access to a memory <NUM> to retrieve instructions stored thereon, and execute such instructions. Upon execution of such instructions, the instructions implement the processing device <NUM> to perform a series of tasks as described herein in reference to <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, and <FIG>. The MR merging device <NUM> also includes one or more networking devices <NUM> (e.g., wired or wireless network adapters) for communicating across the network <NUM>. The MR merging device <NUM> further includes one or more camera devices <NUM> which may be configured to capture digital video of the real world near the MR merging device <NUM> during operation. The MR merging device <NUM> may also include one or more sensors <NUM>, such as a global positioning system (GPS) receiver (e.g., for determining a GPS location of the MR merging device <NUM>), biometric sensors (e.g., for capturing biometric data of the user <NUM>), motion or position sensors (e.g., for capturing position data of the user <NUM> or other objects), and an audio microphone (e.g., for capturing sound data). Some sensors <NUM> may be external to the MR merging device <NUM>, and may be configured to wirelessly communicate with the MR merging device <NUM> (e.g., such as used in the Microsoft Kinect®, Vive Tracker™, MIT's Lidar sensor, or MIT's wireless emotion detector).

The MR merging device <NUM> also includes one or more input devices <NUM> such as, for example, a keyboard or keypad, a mouse, a pointing device, a touchscreen, a hand-held device (e.g., hand motion tracking device), a microphone, a camera, and the like, for inputting information in the form of a data signal readable by the processing device <NUM>. The MR merging device <NUM> further includes one or more display devices <NUM>, such as a touchscreen of a tablet or smartphone, or lenses or visor of a VR or AR head-mounted display (HMD), which may be configured to display virtual objects to the user <NUM> in conjunction with a real world view.

The MR merging device <NUM> also includes a memory <NUM> configured to store a client MR merging module ("client module") <NUM>. The memory <NUM> can be any type of memory device, such as random access memory, read only or rewritable memory, internal processor caches, and the like.

In the example embodiment, the camera device <NUM> and sensors <NUM> capture data from the surrounding environment, such as video, audio, depth information, GPS location, and so forth. The client module <NUM> may be configured to analyze the sensor data directly, or analyze processed sensor data (e.g., a real-time list of detected and identified objects, object shape data, depth maps, and the like).

In accordance with an embodiment, the memory may also store a game engine (e.g., not shown in <FIG>) (e.g., executed by the CPU <NUM> or GPU <NUM>) that communicates with the display device <NUM> and also with other hardware such as the input/output device(s) <NUM> to present a 3D environment (e.g., a virtual reality environment, a mixed reality environment, and the like) to the user <NUM>. The game engine would typically include one or more modules that provide the following: simulation of a virtual environment and digital objects therein (e.g., including animation of digital objects, animation physics for digital objects, collision detection for digital objects, and the like), rendering of the virtual environment and the digital objects therein, networking, sound, and the like in order to provide the user with a complete or partial virtual environment (e.g., including video game environment or simulation environment) via the display device <NUM>. In accordance with an embodiment, the simulation and rendering of the virtual environment may be de-coupled, each being performed independently and concurrently, such that the rendering uses a recent state of the virtual environment and current settings of the virtual environment to generate a visual representation at an interactive frame rate and, independently thereof, the simulation step updates the state of at least some of the digital objects (e.g., at another rate).

In accordance with an embodiment, the MR merging server device <NUM> includes one or more central processing units (CPUs) <NUM>. The processing device <NUM> is any type of processor, processor assembly comprising multiple processing elements (not shown), having access to a memory <NUM> to retrieve instructions stored thereon, and execute such instructions. Upon execution of such instructions, the instructions implement the processing device <NUM> to perform a series of tasks as described herein in reference to <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, and <FIG>. The MR merging server device <NUM> also includes one or more networking devices <NUM> (e.g., wired or wireless network adapters) for communicating across the network <NUM>. In accordance with an embodiment, the MR merging server device includes a memory <NUM> storing a server MR merging module ("server module") <NUM>. During operation, the client MR merging module <NUM> and the server MR merging module <NUM> perform the various MR merging system functionalities described herein. More specifically, in some embodiments, some functionality may be implemented within the client module <NUM> and other functionality may be implemented within the server module <NUM> as described in <FIG>.

In accordance with some embodiments, the MR merging device <NUM> is a mobile computing device, such as a smartphone or a tablet computer. In accordance with another embodiment, and as shown in <FIG>, the MR merging device <NUM> is a head-mounted display (HMD) device worn by the user <NUM>, such as an augmented reality (AR) or virtual reality (VR) visor (e.g., Google Glass®, HTC Vive®, Microsoft HoloLens®, the PlayStation VR™, Oculus Rift™, and so forth). In the example embodiment, the user <NUM> (e.g., a human) experiences a VR environment or AR environment while wearing the HMD MR merging device <NUM>. During operation, in the example embodiment, the HMD MR merging device <NUM> is mounted on a head of the wearer <NUM>, and over both eyes of the wearer <NUM>, as shown in <FIG>. The wearer <NUM> may be presented with a virtual environment which may be viewed and interacted with via the HMD <NUM> and handhelds as described herein (handhelds described below). The HMD MR merging device <NUM> includes a transparent or semitransparent visor (or "lens" or "lenses") <NUM> through which the wearer <NUM> views their surroundings (also herein referred to as "the real world"). In other embodiments, the HMD MR merging device <NUM> may include an opaque visor <NUM> which may obscure the wearer <NUM>'s view of the real world and on which a complete virtual environment is displayed (e.g., including displaying video from the camera device <NUM>).

In accordance with an embodiment, the HMD MR merging device <NUM> shown in <FIG> includes components similar to the MR merging device <NUM> discussed in relation to <FIG>. For example, the HMD MR merging device <NUM> shown in <FIG> includes a display device <NUM>, a networking device <NUM>, a camera device <NUM>, a CPU <NUM>, a GPU <NUM>, a memory <NUM>, sensors <NUM>, and one or more input devices <NUM> (not explicitly shown in <FIG>). In the example embodiment, the display device <NUM> may render graphics (e.g., virtual objects) onto the visor <NUM>. As such, the visor <NUM> acts as a "screen" or surface on which the output of the display device <NUM> appears, and through which the wearer <NUM> experiences virtual content. The display device <NUM> may be driven or controlled by one or more graphical processing units (GPUs) <NUM>. In accordance with some embodiments, the display device <NUM> may include the visor <NUM>.

In accordance with some embodiments, the digital camera device (or just "camera") <NUM> on the MR merging device <NUM> is a forward-facing video input device that is oriented so as to capture at least a portion of a field of view (FOV) of the wearer <NUM>. In other words, the camera <NUM> captures or "sees" an angle of view of the real world based on the orientation of the HMD device <NUM> (e.g., similar to what the wearer <NUM> sees in the wearer <NUM>'s FOV when looking through the visor <NUM>). The camera device <NUM> may be configured to capture real-world digital video around the wearer <NUM> (e.g., a field of view, a peripheral view, or a <NUM>° view around the wearer <NUM>). In some embodiments, output from the digital camera device <NUM> may be projected onto the visor <NUM> (e.g., in opaque visor embodiments), and may also include additional virtual content (e.g., added to the camera output). In some embodiments, the camera device <NUM> may be a depth camera capable of recording depth information within the surrounding environment. In other embodiments, there may be a depth camera in addition to a non-depth camera on the HMD <NUM>.

In accordance with some embodiments, the HMD MR merging device <NUM> may include one or more sensors <NUM>, or may be coupled in wired or wireless communication with the sensors <NUM>. For example, the HMD MR merging device <NUM> may include motion or position sensors configured to determine a position or orientation of the HMD <NUM>. In some embodiments, the HMD MR merging device <NUM> may include a microphone (not shown) for capturing audio input (e.g., spoken vocals of the user <NUM>).

In accordance with some embodiments, the user <NUM> may hold one or more input devices <NUM> including hand tracking devices ("handhelds") (not separately shown in <FIG>) (e.g., one in each hand). The handhelds may provide information about an absolute or relative position and orientation of a user's hands and, as such, are capable of capturing hand gesture information. The handhelds may be configured to operate directly with the HMD MR merging device <NUM> (e.g., via wired or wireless communication). In some embodiments, the handhelds may be Oculus Touch™ hand controllers, HTC Vive™ hand trackers, PlayStation VR™ hand controllers, or the like. The handhelds may also include one or more buttons or joysticks built into the handhelds. In other embodiments, the user <NUM> may wear one or more wearable hand tracking devices (e.g., motion tracking gloves, not shown), such as those made commercially available by Manus VR™ (Netherlands). In still other embodiments, hand motion of the user <NUM> may be tracked without, or in addition to, the handhelds or wearable hand tracking devices via a hand position sensor (not shown, e.g., using optical methods to track the position and orientation of the user's hands) such as, for example, those made commercially available by Leap Motion™, Inc. (a California corporation). Such hand tracking devices (e.g., handhelds) track the position of one or more of the hands of the user during operation.

In some embodiments, the MR merging system <NUM> and the various associated hardware and software components described herein may provide AR content instead of, or in addition to, VR content (e.g., in a mixed reality (MR) environment). It should be understood that the systems and methods described herein (e.g., specifically with respect to <FIG>) may be performed with AR content and, as such, the scope of this disclosure covers both AR and VR applications.

In accordance with an embodiment, and as shown in <FIG>, a plurality of MR merging devices (104A, 104B, 104C and 104D) may be coupled in networked communication with the MR merging server device <NUM> via the network <NUM>. The configuration shown in <FIG> may be used to connect a plurality of MR merging devices <NUM> as described in operations with the method <NUM> shown in <FIG>, and additionally in examples shown in <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, and <FIG>.

In accordance with an embodiment, and shown in <FIG> is a flowchart of a method <NUM> for MR merging of distant spaces. The method <NUM> may be used in conjunction with the MR merging system <NUM> as described with respect to <FIG> and <FIG>. In operation, the method <NUM> may be used in a mixed reality space (e.g., with AR and/or VR devices) in order to connect two or more real world environments together. The connection of the two or more real world environments provided by the method <NUM> could be either a one way connection (e.g., connecting a living room to a concert hall where information flows from the concert hall to the living room), or a two way connection (e.g., connecting two or more living rooms together whereby data describing environment views for both living rooms are sent in both directions). The method <NUM> provides a method for people to connect two or more real-world spaces without the limitation of being within a camera frustum or a VR sensor bubble, and provides a more natural interaction than just projecting a TV screen on a wall.

In accordance with an embodiment, at operation <NUM> of the method <NUM>, the client MR merging module <NUM> receives data from a video camera capturing an environment surrounding a MR merging device <NUM> and displays the captured data on a display device <NUM> (e.g., for a user <NUM>). For example, the MR merging device <NUM> may operate in a 'pass-through' mode whereby the captured video is captured and displayed in such a way that the surroundings appear in the display as if the MR merging device <NUM> was not there. For example, based on the MR merging device <NUM> being an HMD (e.g., as depicted in <FIG>) with an opaque visor <NUM>, the 'pass-through' mode would allow a wearer of the HMD to see the surroundings as if they were not wearing the HMD. In accordance with an embodiment, operation <NUM> may be performed with an HMD MR merging device <NUM> with a see-through visor wherein the environment is seen through the visor.

In accordance with an embodiment, as part of operation <NUM>, the client MR merging module <NUM> may also receive depth data from the camera device <NUM> or other sensors <NUM> (e.g., a LIDAR device) and generate volumetric data describing the environment.

In accordance with an embodiment, at operation <NUM>, the client MR merging module <NUM> may create a digital version of the environment using the captured data from operation <NUM>. Operation <NUM> may include object segmentation and object detection and may create a full or partial digital version of the environment (e.g., 3D volumetric data describing the environment). In accordance with an embodiment, operation <NUM> may be performed using the video data (e.g., including camera depth information), and optionally with data from the sensors <NUM> such as LIDAR. In accordance with an embodiment, the creation of the digital version of the environment may be performed outside of the MR merging module <NUM> or device <NUM> (e.g., with a secondary device such as a LIDAR device) wherein data describing the environment is received by the client MR merging module <NUM> during operation <NUM> or <NUM>. The digital version of the environment created during operation <NUM> may be used to facilitate operations within the method <NUM>, and specifically operation <NUM>, operation <NUM>, operation <NUM>, and operation <NUM>.

In accordance with an embodiment, at operation <NUM> of the method <NUM>, the client MR merging module <NUM> creates, positions and displays a virtual plane in conjunction with the displayed environment (e.g., displayed as an overlay on a virtual environment such as in VR mode or pass-through mode, or displayed as an overlay on a real environment view such as in AR mode). The virtual plane is referred to herein as a slice plane, and is used by the client MR merging module <NUM> to segment the displayed environment in order to add digital content to the displayed environment (e.g., as described below in operation <NUM>). In accordance with an embodiment, as part of operation <NUM>, the client MR merging module <NUM> may create, position and display a merge area within the environment (e.g., a displayed outline of an area on a floor within the environment) in addition to, and which is associated with the slice plane. The merge area may be in contact with the slice plane (e.g., as shown below in <FIG> and <FIG>). While referred to herein as a merge area, the displayed merge area includes a display volume within the environment (e.g., a volume in a real-world room) which may be used as a shared space with a second merge area/volume determined by a second MR merging device in a second environment (e.g., a second real-world environment). In accordance with an embodiment, the merge area may be an area on a floor (or ground) in the environment, and the merge volume may be a volume above the merge area. In accordance with an embodiment, the merge volume may be determined manually (e.g., using handheld devices) and/or automatically (e.g., via an AI agent, or via rules, or the like).

In accordance with an embodiment, the positioning of the slice plane and/or merge area in operation <NUM> may be based on a position of the MR merging device <NUM> relative to the surrounding environment, and may be based on detected objects (e.g., from operation <NUM> and <NUM>) within the environment. For example, a merge area (e.g., and associated merge volume) may be created and positioned in a real-world room within a volume which is devoid of real-world objects (e.g., so that the merge area and merge volume are associated with an open area and volume in the real-world room). In accordance with an embodiment, the positioning of the slice plane and/or merge area by the client MR merging module <NUM> may be performed based on rules (e.g., created by a user) that incorporate a relative position of the MR merging device <NUM> (e.g., within the environment) and the detected objects. In accordance with an embodiment, the rules may specify a position for the slice plane and/or merge area based at least on the relative position of the MR merging device <NUM> and an analysis of the detected objects. In accordance with an embodiment, the rules may be grouped (e.g., into predefined templates) for positioning a slice plane and/or merge area within commonly occurring environments such as living rooms/entertainment rooms, dining rooms, kitchens, offices and more. For example, based on a detection of a sofa object and a television within an environment (e.g., detected within operation <NUM> or <NUM>), the client MR merging module <NUM> may determine that the MR merging device is positioned within a living room, and position a slice plane and merge area based on rules associated with a living room (e.g., having a normal vector for the slice plane pointing at the user, positioning the slice plane between the television and the MR merging device, centering a central pivot point of the slice plane with a center of the television, and placing the merge area in front of the television). Similarly, a detection of a desk and a computer within the detected objects may signify (e.g., based on the rules) that the MR merger device <NUM> is within an office and initiate a template for positioning a slice plane and merge area within an office (e.g., having a normal vector for the displayed slice plane pointing towards a position of the MR merging device (e.g., at the user), positioning the slice plane normal to the surface of the desk and such that it visually slices the desk (e.g., in two as seen in <FIG>. , centering a central pivot point of the slice plane with a center of the desk or a center of a displayed view, and positioning a merge area that covers the top of the desk).

In accordance with an embodiment, as part of operation <NUM>, the client MR merging module <NUM> may create a slice plane with an alignment line, wherein the alignment line may be used to align two or more different slice planes (e.g., when aligning slice planes in operation <NUM>). In accordance with an embodiment, the alignment line for a slice plane is a vertical line within the slice plane (e.g., as shown in <FIG>).

In accordance with some embodiments, a slice plane may be a flat plane (e.g., as shown below in examples in <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, <FIG>, and <FIG>). In accordance with some embodiments, a slice plane may be an irregularly shaped surface in order to combine multiple spaces (e.g., as shown in the example in <FIG>), and to accommodate a merge area (e.g., as shown in <FIG>, <FIG>, <FIG>, <FIG>, and <FIG>).

In accordance with an embodiment, the positioning (e.g., including orientation) of the slice plane (and possibly a merge area and merge volume) by the client MR merging module <NUM> within operation <NUM> may be performed by a trained artificial intelligence (AI) agent that analyzes the captured environment data (e.g., including any captured data by the sensors <NUM> and detected objects). The AI agent may be trained prior to the method <NUM> by exposing the AI agent to captured video data and sensor data from a plurality of environments along with slice plane and merge area placements associated with each environment (e.g., wherein the associated slice plane and merge area placements may be done manually or performed by additional AI agents and given to the AI agent as training data). In accordance with an embodiment, the plurality of environments may include commonly occurring environments such as living rooms/entertainment rooms, dining rooms, kitchens, offices and more. For example, based on receiving data captured within a living room (e.g., within operation <NUM>), a trained AI agent may determine how to place a slice plane (and possibly a merge area and merge volume) based on its training.

In accordance with an embodiment, as part of operation <NUM>, settings for document sharing and object sharing (e.g., as described with respect to <FIG>, <FIG>, and <FIG> as well as the interaction described with respect to operation <NUM>) associated with the slice plane may be set.

In accordance with an embodiment, at operation <NUM> of the method, the client MR merging module <NUM> may provide tools (e.g., virtual tools within a display) by which a user of the MR merger device <NUM> may position a slice plane manually within the display. For example, the provided tools may allow a slice plane to be manually manipulated and placed within the environment (e.g., e.g., via a drag and drop method). In addition, the provided tools may define the merge area and merge volume described above in operation <NUM>. For example, the provided tools may allow for the merge area to be outlined via a tracked handheld device (e.g., via pointing of the device) or possibly via an eye tracking technique.

In accordance with an embodiment, at operation <NUM> of the method <NUM>, the client MR merging module <NUM> connects with the MR merging server device <NUM> to access a list of available inbound digital content. The list may include a selection of connections to additional MR merging devices (e.g., 104B, 104C, and 104D as shown in <FIG>) which may be in additional environments. In accordance with an embodiment, the list may include thumbnail data for a display, and may include content preview data for a display). In accordance with an embodiment, as part of operation <NUM>, the MR merging server device <NUM> may display a user interface (e.g., referred to as a content user interface or content UI) that includes a display of the list of available inbound digital content (e.g., including any thumbnails and preview content); wherein the content UI is displayed on the display device <NUM>. For example, the content UI may provide a selection menu that includes the available inbound digital content from the list and which can accept user selections (e.g., via a touch screen input, a hand gesture input, a voice command, or the like). The content UI may include a drop down menu, a scrolling menu and the like to display the list of available inbound digital content for selection (e.g., by a user <NUM>). In accordance with an embodiment, and shown in <FIG>, the content UI may be displayed in context within a MR environment (e.g., displayed according to detected objects within the environment), wherein <FIG> depicts a view of a digital room <NUM> as seen via an HMD MR merging device <NUM> (e.g., as shown in <FIG>) in a virtual reality mode. In the example shown in <FIG>, the content UI is shown displayed on a desk <NUM> as a collection of buttons (e.g., 302A, 302B, 302C, 302D, and 302E) which can be interacted with by a digital version a hand (e.g., 306A and 306B) of a user wearing the HMD. Although <FIG> depicts a virtual reality mode of the HMD <NUM> wherein the room <NUM>, desk <NUM>, buttons (302A, 302B, 302C, 302D, and 302E) and hands (306A and 306B) are all displayed digitally, the disclosure described herein is not limited in that regard, rather the disclosure may include an augmented reality mode wherein the room <NUM>, desk <NUM> and hands 306A and 306B are displayed as they appear in real life (e.g., via a see through AR mode or a pass-through AR mode with video).

In accordance with an embodiment, the MR merging server device <NUM> may connect to a plurality of MR merging devices <NUM> in different locations to generate the list of available inbound digital content.

In accordance with an embodiment, at operation <NUM> of the method <NUM>, the client MR merging module <NUM> receives a selection representing a choice of inbound digital content from the displayed list of available inbound digital content within the content UI (e.g., from a user interacting with the content UI). For example, this may be a selection from a scrolling menu, or a push of a button from within a VR environment (e.g., as shown in <FIG>), or a voice command, or the like. In accordance with an embodiment, and as part of operation <NUM>, the client MR merging module <NUM> connects with a source of the selected available inbound digital content, wherein the source may include a second client merging module <NUM> in a second MR merging device in a separate real-world location (e.g., as shown in <FIG>) and the MR merging server device <NUM>. The connection between two MR merging devices (e.g., between device 104A and device 104B in <FIG>) may be implemented as a direct connection between the two devices over the network <NUM>, or the connection between the two MR merging devices may be implemented via the MR merging server device <NUM>, which acts as a connection server between the two devices (e.g., with the server routing data between the two devices).

In accordance with an embodiment, operation <NUM> may be performed a plurality of times in order to connect the MR merging device <NUM> with two or more additional MR merging devices.

In accordance with an embodiment, at operation <NUM> of the method, the client MR merging module <NUM> communicates with the second MR merging device (e.g., the second MR digital device associated with the selection of inbound digital content determined in operation <NUM>) in order to exchange data. In accordance with an embodiment, the exchanged data includes data collected, modified and generated in operation <NUM> and <NUM>, wherein the data includes video from the camera <NUM> and associated generated 3D volumetric data. In accordance with an embodiment, the communication may be a primarily one way communication wherein video and volumetric 3D data is received from the second MR merging device and only minimal data is sent to the second MR merging device (e.g., minimal data including messages, view controls, etc.). For example, this may occur when the MR merging device <NUM> is used to view live or pre-recorded 3D volumetric data which is downloaded and displayed and requires a minimal amount of uploading (e.g., a displaying of a live or pre-recorded university class as shown in <FIG>, <FIG>, and <FIG>), a displaying of a live broadcast of an event such as a concert (e.g., as shown in <FIG>) or sporting event (e.g., as shown in <FIG>), and the like.

In accordance with an embodiment, as part of operation <NUM>, the communication may be primarily a two-way communication wherein full 3D volumetric data is sent from the MR merging device 104A to the second (e.g., remote) MR merging device 104B and the inbound digital content data (e.g., 3D volumetric data) is sent from the second MR merging device 104B to the MR merging device 104A. For example, the two-way communication may be used to connect two or more separate households for a discussion or gaming (e.g., the family gathering shown in <FIG> or the family game shown in <FIG>), and connecting two or more employees for a work meeting (e.g., as shown in <FIG>), and the like.

In accordance with an embodiment, at operation <NUM> of the method <NUM>, the client MR merging module <NUM> processes the inbound digital content (e.g., 3D volumetric data), and displays the content so that it appears (e.g., to a wearer of the HMD MR merging device <NUM>) as if it were on a far side of the slice plane or within the merge volume. The displaying is such that the slice plane and merge volume acts like a window into a second environment, wherein the second environment surrounds the remote second MR merging device 104B (e.g., and is captured in the second MR merging device 104B during operation <NUM>). In accordance with an embodiment, the displaying may include displaying of a shared digital object as described with respect to <FIG>. In accordance with an embodiment, at operation 212A of the method <NUM> (e.g., which may be a part of operation <NUM>), the processing of the inbound digital content may include one or more of the following: digitally removing or covering elements within the video (e.g., the video from operation <NUM> for the local MR merging device 104A) that correspond to elements within the environment surrounding the local MR merging device 104A that lie on a far side of the slice plane; scaling the inbound content data for display (e.g., to match the displayed inbound content data with a view of the local environment as determined in operation <NUM>); and aligning a displaying of the inbound content data to the environment surrounding the local MR merging device 104A (e.g., aligning one or more alignment lines from different MR merging devices <NUM> as shown in <FIG>, and aligning with digital objects in the environment surrounding the local MR merging device 104A). In accordance with an embodiment, the alignment may include a visual warping of displayed visual content in order to align objects across a slice plane. For example, based on an alignment of two different sized items across a slice plane (e.g., such as a desk in <FIG>, or table in <FIG>), the client MR merging module <NUM> may visually warp an area near the slice plane in order for edges of the two different sized items to join seamlessly across the slice plane.

In accordance with an embodiment, while the displaying is described with respect to a HMD MR merging device <NUM>, it should be understood that the disclosure described herein is not limited to HMD devices that resemble glasses. The MR merging device may use other technology to display data to a user; for example, the MR merging device may use technology that displays images directly in the eye of a user (e.g., via contacts or visual implants), or may use projection technology to project the inbound content data.

In accordance with an embodiment, at operation <NUM> of the method <NUM>, the client MR merging module <NUM> monitors user interaction with the displayed content (e.g., via the sensors <NUM>, the camera device <NUM>, and the input devices <NUM>), and sends data describing the interaction to the second MR merging device 104B (e.g., as part of operation <NUM>). The monitored interaction includes body movement and gestures from the user <NUM> which are directed towards or overlap displayed digital objects in the slice plane or merge volume (e.g., including motions to grab, push, pull, touch, select or otherwise interact with the digital objects). The interaction may be captured by a camera <NUM> (e.g., depth or visual) or may be captured via sensors <NUM> (e.g., including hand tracking technology). The interaction may also include tracking eye gaze wherein the eye gaze overlaps with digital objects within the slice plane or merge volume.

In accordance with an embodiment, there may be a plurality of MR merging devices <NUM> in a real-world location that communicate with each other and collectively perform the method <NUM>. For example, a plurality of MR merging devices <NUM> may sync together (e.g., across the network <NUM> or directly with technology such as Bluetooth) in order to capture and create a digital version of the environment as described in operation <NUM> and <NUM>. Similarly, the plurality of MR merging devices <NUM> may collectively do the following: create and position a common slice plane and merge area as described in operation <NUM>, display a list of available inbound digital content as described in operation <NUM>, connect and communicate with an additional MR merging device (e.g., a MR merging device in a remote location) as described in operation <NUM> and <NUM>, and process, display, and interact with the data from the additional MR merging device as described in operation <NUM>, 212A and <NUM>. This allows for a many to one, one to many, or many to many connection and sharing of data.

In various embodiments, some of the method <NUM> elements shown in <FIG> may be performed concurrently, in a different order than shown, or may be omitted.

In accordance with an embodiment, and shown in <FIG> is an illustration of a view from a HMD MR merging device <NUM>, wherein a positioning and displaying of a slice plane in a room <NUM> is being performed (e.g., as described with respect to operation <NUM>). The view shown in <FIG> includes a display of a room <NUM> which is a representation of a real-life room (e.g., a digital representation of a real-life room as displayed within a HMD in virtual reality mode). The view shown in <FIG> also includes a slice plane <NUM>, an intersection <NUM> of the slice plane <NUM> with the room <NUM>, and a digital hand 306B (e.g., representing a hand of a wearer of the HMD <NUM> which may be tracked by device sensors <NUM>). In accordance with an embodiment, the displayed view in <FIG> may be an entirely virtual display within a VR HMD (e.g., with an opaque visor <NUM> as described in <FIG>) wherein the room <NUM> and all other elements of the view are digitally generated objects. In accordance with another embodiment, the displayed view in <FIG> may be an entirely virtual display within a VR HMD (e.g., with an opaque visor <NUM> as described in <FIG>) wherein the room <NUM> (e.g., and all furniture) is a displayed video captured from a device camera <NUM> (e.g., in pass-through mode), while other elements in the view (e.g., the hand 306B, the slice plane <NUM>, the intersection <NUM>, and a content UI 302E) are digitally generated objects overlaid on the video. In still another embodiment not shown in <FIG>, a displayed view similar to that shown in <FIG> may be a partially virtual display within an AR HMD (e.g., with a transparent visor <NUM> as described in <FIG>) wherein the room <NUM> (e.g., and all furniture) and a real human hand is seen through the visor <NUM>, while other elements in the view (e.g., the slice plane <NUM>, the intersection <NUM>, and the content UI 302E) are digitally generated objects overlaid on the visor to align with the room.

In accordance with an embodiment, and shown in <FIG> is an example illustration of a two-way connection (e.g., using the method <NUM>) between a first room <NUM> and a second room <NUM> as seen within an HMD merging device <NUM>, wherein the first room <NUM> and second room <NUM> are in different real-world locations. In accordance with an embodiment, the two-way connection may be between a first set of MR merging devices (e.g., 104A, 104B, and 104C which may be similar to the HMD <NUM> shown in <FIG>) worn by a first set of people 402A, 402B, 402C (e.g., which are all similar to the user <NUM>) in the first room <NUM> with a second set of MR merging devices (e.g., 104D and 104E which may be similar to the HMD <NUM> shown in <FIG>) worn by a second set of people (e.g., 452A, and 452B which are all similar to the user <NUM>) in the second room <NUM>. In accordance with an embodiment, a slice plane <NUM> merges (e.g., according to the method <NUM>) the first room <NUM> with the second room <NUM> such that the first set of MR merging devices (e.g., 104A, 104B, and 104C) display the second room <NUM> at the slice plane <NUM>, and the second set of MR merging devices (e.g., 104D and 104E) display the first room <NUM> at the slice plane <NUM>. In accordance with an embodiment, based on the first room <NUM> and the second room <NUM> being different sizes, a room may be displayed with parts being cut off (e.g., a table 406A, a counter 406B, and a window <NUM>).

In accordance with an embodiment, and shown in <FIG> is an example illustration of a one-way connection (e.g., using the method <NUM>) between a first set of MR merging devices (e.g., 104F, <NUM>, <NUM>, and 104I which may be similar to the HMD <NUM> shown in <FIG>) worn by a first set of people 462A, 462B, 462C, and 462D (e.g., which are all similar to the user <NUM>) in a room <NUM> with a second MR merging device <NUM> (not shown in the <FIG>) in a distant location wherein a basketball game is occurring. In accordance with the example shown in <FIG>, the basketball game is being captured (e.g., as described in operation <NUM>) by the second MR merging device <NUM> and sent (e.g., as described in operation <NUM>) to the first set of MR merging devices (e.g., 104F, <NUM>, <NUM>, and 104I) for display (e.g., as described in operation <NUM>) on the slice plane <NUM> such that the first set of people (462A, 462B, 462C, and 462D) experience a view on the slice plane <NUM> which may be equivalent to a courtside seat. In accordance, there may also be a merge area <NUM> as described in operation <NUM> and <NUM> which may allow a user (e.g., 462A and 462B) to overlap with the displayed basketball game. In accordance with an embodiment, the basketball game may be captured with volumetric cameras (not shown) and sent to the first set of MR merging devices (e.g., 104F, <NUM>, <NUM>, and 104I) via a MR merging server device <NUM>.

In accordance with an embodiment, and shown in <FIG> is an example illustration of a bird's eye view of a one-way connection (e.g., using the method <NUM>) as seen within an HMD merging device <NUM> between a first set of MR merging devices worn by a first set of people 482A, 482B, and 482C (e.g., which are all similar to the user <NUM>) in a room <NUM> with a second MR merging device <NUM> (not shown in the <FIG>) in a distant location wherein a band is performing on a stage <NUM> in a concert. In accordance with the example and shown in <FIG>, the concert may be captured (e.g., as described in operation <NUM>) by the second MR merging device <NUM> and sent (e.g., as described in operation <NUM>) to the first set of MR merging devices worn by the first set of people (482A, 482B, and 482C) for display (e.g., as described in operation <NUM>) on the slice plane <NUM> such that the first set of people (482A, 482B, and 482C) experience a view on the slice plane <NUM> which may be equivalent to a front row seat as shown. In accordance with an embodiment, the concert may be captured with volumetric cameras (not shown) and sent to the first set of MR merging devices worn by the first set of people (482A, 482B, and 482C) via a MR merging server device <NUM>.

In accordance with an embodiment, and shown in <FIG> is a bird's eye view illustration of a first room <NUM> and a second room <NUM>. While the two rooms are shown side by side in <FIG> for ease of explanation, during an execution of the method <NUM>, the first room <NUM> and the second room <NUM> may be in two separate real-world locations (e.g., and within a larger structure such as a house or apartment building). Furthermore, the illustration shows a cut view of the first room <NUM> at a first slice plane <NUM>, wherein the first slice plane <NUM> is determined according to operation <NUM> and <NUM> (e.g., by a first MR merging device <NUM> worn by a first user <NUM> in the first room <NUM>). Similarly, the illustration shows a cut view of the second room <NUM> at a second slice plane <NUM>, wherein the second slice plane <NUM> is determined according to operation <NUM> and <NUM> (e.g., by a second MR merging device <NUM> worn by a second user <NUM> in the second room <NUM>). In accordance with an embodiment, as described in operation <NUM> and <NUM> of the method <NUM>, a first merge area <NUM> may be determined in the first room <NUM>, and a second merge area <NUM> may be determined in the second room <NUM> (e.g., as described in operation <NUM> and <NUM>). In accordance with an embodiment, the determination of the first merge area <NUM> and the determination of the second merge area <NUM> may include an exchange of captured environment data between the first MR merging device and the second MR merging device in order to determine a size of merge area which works for both the first room <NUM> and the second room. The first merge area <NUM> and the second merge area <NUM> are merge areas which may be overlapped during operation <NUM> and <NUM>.

In accordance with an embodiment, and shown in <FIG>, the first slice plane <NUM> and first merge area <NUM> may be determined (e.g., within operation <NUM> and <NUM>) such that the first merge area <NUM> extends beyond the first slice plane <NUM>. Similarly, as shown in <FIG>, the second slice plane <NUM> and second merge area <NUM> may be determined (e.g., within operation <NUM> and <NUM>) such that the second merge area <NUM> extends beyond the second slice plane <NUM>. In accordance with an embodiment, and as shown in <FIG>, the first merge area <NUM> and the second merge area <NUM> may be the same size and shape (e.g., in order to simplify an overlapping of the first and second merge areas during operation <NUM> and <NUM>).

In accordance with an embodiment, and shown in <FIG>, is a bird's eye view of the first room <NUM> and the second room <NUM> from <FIG>, wherein the first merge area <NUM> and the second merge area <NUM> overlap (e.g., as seen from within an HMD merging device <NUM>), and wherein the first slice plane <NUM> and the second slice plane <NUM> are also overlapped (e.g., aligned in space so that, for example, they become a common slice plane) to form a common slice plane (e.g., wherein the overlap may be determined during operation <NUM>). The extended merge area beyond the slice plane (e.g., as shown in <FIG>) may facilitate an overlapping of the displaying of the first merge area <NUM> and the second merge area <NUM> during operation <NUM> and <NUM>. <FIG> shows an overlapping of the first merge area <NUM> and the second merge area <NUM> wherein the first slice plane <NUM> and the second slice plane <NUM> are aligned (e.g., as done in operation <NUM>). A first user in the first room <NUM> or on the first merge area <NUM> (first user not explicitly shown in <FIG>), may be seen by a second user in the second room <NUM> or in the second merge area <NUM> (second user not shown in <FIG>), and vice versa. In accordance with an embodiment, the overlapping of the first merge area <NUM> and the second merge area <NUM> may facilitate an interaction of the first user in the first room <NUM> and the second user in the second room <NUM>. While not shown in <FIG> the first user is in a first real-world location, and the second user is in a second real-world location.

In accordance with an embodiment, and shown in <FIG>, is an illustration of the overlap shown in <FIG> with a first set of three users (506A, 506B, and 506C) from the first room <NUM> and a second set of two users (516A and 516B) from the second room <NUM> using the shared overlapping merge areas <NUM> and <NUM>. The illustration shown in <FIG> is seen from within a HMD merge device <NUM> wherein part of the first room <NUM> on a first side of the common slice plane (<NUM> and <NUM>), part of the second room <NUM> on a second side of the common slice plane (<NUM> and <NUM>), and the overlapped merge areas <NUM> and <NUM> are seen by all users (506A, 506B, 506C, 516A, and 516B). The rooms (<NUM> and <NUM>) and users (506A, 506B, 506C, 516A, and 516B) may be similar to the rooms (<NUM> and <NUM>) and the users (402A, 402B, 402C, 452A, and 452B) shown in <FIG> with the addition of the overlapping merge areas <NUM> and <NUM>.

In accordance with an embodiment, <FIG> is similar to <FIG> as seen from a different point of view and with different users. As shown in <FIG>, one or more digital objects (e.g., <NUM> and <NUM>) may be seen by (e.g., displayed as described in operation <NUM>) and shared (e.g., interacted with as described in operation <NUM>) by both the a first set of three users (506A, 506B, and 506C) from the first room <NUM> and the second set of two users (516A and 516B) from the second room <NUM> when placed in the first merge area <NUM> or the second merge area <NUM>.

In accordance with an embodiment, and shown in <FIG>, the MR merging method <NUM> may include operations for changing (e.g., swapping) displayed content seen through a slice plane from a first inbound content to a second inbound content. In accordance with an embodiment, the illustrations in <FIG> are shown from a perspective of a first user wearing an HMD merging device <NUM> in a first room <NUM>. In accordance with an embodiment, the changing of displayed content as shown in <FIG> may be initiated by a swiping gesture from the first user. In accordance with an embodiment, the changing of the display may be part of the processing and displaying of inbound content data within operation <NUM> of the method <NUM>. The operations for changing the displayed content may include sliding operations wherein a first inbound content displayed through a slice plane is displaced laterally by a second inbound content after a swiping gesture by a user. In accordance with an embodiment, <FIG> includes <NUM> panels labeled 'A' to 'G' which depict a time progression for a view in a MR merging device <NUM> (e.g., a view seen by a user wearing an HMD merging device <NUM>). The view begins in panel 'A' with a view of a room <NUM>, a slice plane <NUM> and an intersection <NUM> which may be similar to the room <NUM>, slice plane <NUM>, and intersection <NUM> described in <FIG>, <FIG>. In accordance with an embodiment, as shown in panel 'B' and 'C' of <FIG>, and as part of the sliding operations, the client MR merging module <NUM> may laterally displace (e.g., slide to the left in <FIG>) a display of part of the room <NUM> which is displayed on the slice plane <NUM> (e.g., displayed during operation <NUM> of the method <NUM>) and which is displayed such that it appears to be sliced at the intersection <NUM>. Panel 'C' and 'D' further show the lateral movement of the display on the slice plane <NUM> and show an emergence of a second room <NUM> with a second displayed user <NUM>, wherein the second room <NUM> and the second displayed user <NUM> are a displaying of inbound digital content received during operation <NUM> and <NUM> of the method <NUM> (e.g., the inbound digital content describing the second room <NUM> may be received from a second MR merging device <NUM> worn by a second user <NUM> at a real-world location which is separate from a real-world location of the first user). In accordance with an embodiment, panels 'E', 'F', and 'G' show a continuation of the lateral movement until the second room <NUM>, and the second displayed user <NUM> are aligned with the view of the MR merging device <NUM> (e.g., the view seen by a user wearing an HMD merging device <NUM> using an alignment line).

In accordance with an embodiment, although <FIG> shows a sliding operation that changes a display on the slice plane <NUM> from a user's current room <NUM> to a second room <NUM>. It should be understood that the sliding operation can change a display on the slice plane <NUM> from any available inbound content to any other available inbound content.

In accordance with an embodiment, the sliding operations may be initiated by pushing a button to select inbound digital content associated with the second room <NUM>, wherein the button is part of a content UI displayed on a desk in the room <NUM> as a collection of buttons (e.g., 620A, 620B, 620C, 620D and 620E). In accordance with an embodiment, the displayed content UI including the collection of buttons (e.g., 620A, 620B, 620C, 620D and 620E), which may be similar to the displayed content UI and collection of buttons (302A, 302B, 302C, 302D, and 302E) shown and described with respect to <FIG>.

In accordance with an embodiment, and shown in <FIG>, the client MR merging module <NUM> may operate within a 'Widget mode' during operation <NUM>. The Widget mode may include a displaying of one or more widgets (e.g., <NUM>, <NUM>, <NUM>) and a displaying of an application window <NUM> in a view of the MR merging device <NUM> display device <NUM> (e.g., as shown on the left side of <FIG>, while the right side of <FIG> shows an associated real world view of a user wearing the MR merging device <NUM>). In accordance with an embodiment, the display within the application window <NUM> may be inbound content data. In accordance with an embodiment, the application window <NUM> may be displayed on the slice plane (or a part thereof) and the widgets (e.g., <NUM>, <NUM>, <NUM>) may be displayed within reach of a digital hand <NUM> of a user. Each one of the displayed widgets may connect to a feature within an application (e.g., a software application) that generates an output for the application window <NUM>. In accordance with an embodiment, in Widget mode, the client MR merging module <NUM> receives, from the application, 3D model data for displaying the one or more widgets. The client MR merging module <NUM> then displays the one or more widgets as 3D objects within the display device <NUM> of the MR merging device <NUM> (and within an environment surrounding the MR merging device <NUM>) as shown in the left side of <FIG>. The one or more displayed widget objects may then be manipulated by a hand 702B of a user via an associated virtual hand 702A. As part of operation <NUM>, the client MR merging module <NUM> monitors an interaction of the virtual hand 702A with a displayed widget object and sends the interaction data to the application for processing. The application processes the interaction data and updates the display of the application window based on an output from the application (e.g., wherein the update includes any effects caused by the interaction). In accordance with an embodiment, each widget may control an aspect of the application and may also control the display within the application window <NUM>. For example, as shown in <FIG>, the virtual hand 702A may move a camera widget <NUM> (e.g., a 3D digital object resembling a small camera which is displayed as floating within an environment surrounding the MR merging device <NUM>) which may control a virtual camera that renders (e.g., rendering performed within the application) a scene within the application window <NUM> such that the camera widget <NUM> controls a view into the scene (e.g., the camera widget <NUM> is a remote camera control). As another example, a displayed light widget <NUM> may also be manipulated by the virtual hand 702A (e.g., rotated, laterally moved, etc.), with the manipulation data sent to the application, whereby the application processes the manipulation data to update the application window <NUM> display and adjust a lighting in the scene associated with the light widget <NUM> (e.g., position and orientation of the light widget <NUM> in the environment surrounding the MR merging device <NUM> controls lighting within the application window <NUM> via a rendering within the application).

In accordance with an embodiment, <FIG> and <FIG> are illustrations showing document sharing across a slice plane wherein a first user (e.g., using a first MR merging device) is on a first side of the slice plane, and a second user (e.g., using a second MR merging device) is on a second side of the slice plane. In accordance with an embodiment, a slice plane may be used to share a document between distant spaces (e.g., two distant real-world spaces) by moving the document across the slice plane based on document sharing settings created in operation <NUM> of the method <NUM> (e.g., the moving of the document across the slice plane being part of an interaction within operation <NUM> of the method <NUM>). In accordance with an embodiment, the document may be represented by a document object (806A in <FIG>) displayed in the environment via the MR merging device. In accordance with an embodiment a position of the document object may be monitored (e.g., via a camera or sensor) in order to detect a crossing of the slice plane. In accordance with an embodiment, the position of the document object may be determined by monitoring a position of a hand manipulating the document object. In accordance with an embodiment, <FIG> shows a side by side view of a real world view (right side) and an associated view through a MR merging device <NUM> display device <NUM> (left side) (e.g., via a HMD MR merging device <NUM>). The real world view includes a room <NUM>, a table 804B and a hand 802B (e.g., a user's hand) seen from a point of view of a user (e.g., a user wearing an HMD MR merging device <NUM>). The MR merging device <NUM> display view includes an example view from operation <NUM> wherein inbound content data describing a room <NUM> (e.g., a classroom) is displayed through a slice plane <NUM> (e.g., wherein the room <NUM> is based on data from an additional MR merging device <NUM> which is in a distant real-world location). In accordance with an embodiment, during operation <NUM> of the method <NUM>, the virtual hand 802A interacts with (e.g., grabs, holds, selects, etc.) a document object 806A through a slice plane <NUM> based on the document object 806A being accessible to the user (e.g., based on the user having access permission). In accordance with an embodiment, the document 806A may be displayed to appear within the room <NUM> and may be interacted with through the slice plane <NUM> (e.g., the virtual hand may appear to pass through the slice plane <NUM> and grab the document 806A). In accordance with an embodiment, after an initial interaction with the document 806A (e.g., the grabbing), at operation <NUM> of the method <NUM>, the client MR merging module <NUM> may access (e.g., download) data describing the document (e.g., data within the document), and as shown in <FIG> displays the contents of the document 806B (e.g., a news article) in the MR merging device <NUM> display device <NUM>.

In accordance with an embodiment, <FIG> is an illustration showing object sharing (e.g., 3D digital object sharing) across a slice plane wherein a first user (e.g., using a first MR merging device) is on a first side of the slice plane, and a second user (e.g., using a second MR merging device) is on a second side of the slice plane. In accordance with an embodiment, a slice plane may be used to share a 3D digital object between distant spaces (e.g., two distant real-world spaces) by moving the 3D digital object across the slice plane (e.g., from the first side of the slice plane to the second side of the slice plane) based on object sharing settings created in operation <NUM> of the method <NUM>. In accordance with an embodiment a position of the object may be monitored (e.g., via a camera or sensor) in order to detect a crossing of the slice plane. In accordance with an embodiment, the position of the object may be determined by monitoring a position of a hand manipulating the object. In accordance with an embodiment, <FIG> shows a side by side view similar to that in <FIG> and <FIG>, but from a different view angle of the room <NUM> (e.g., a different orientation of the HMD MR merging device <NUM>), such that the view includes a teacher <NUM> (e.g., and displayed through a slice plane <NUM> during operation <NUM>). Inbound content data to describe the room <NUM> (e.g., including the teacher <NUM>) may be pre-recorded volumetric data of a class, and may be live volumetric data of a class (e.g., a one-to-many broadcasting of a class by the teacher <NUM> to a plurality of students). Based on the class being broadcast in a live mode, there may be a visual indication <NUM> provided by the client MR merging module <NUM> as to a number of students watching the class.

In accordance with an embodiment, during operation <NUM> of the method <NUM>, and as part of the object sharing, a virtual hand 802A interacts with (e.g., grabs, holds, selects, etc.) a 3D digital object <NUM> through the slice plane <NUM> based on the 3D digital object <NUM> being accessible to the user (e.g., based on the user having access permission). In accordance with an embodiment, after an initial interaction with the 3D digital object (e.g., the grabbing via the slice plane <NUM>), at operation <NUM> of the method <NUM>, the client MR merging module <NUM> may access data describing the 3D digital object, and further interact with the 3D digital object (e.g., open the 3D object to see an internal structure).

In accordance with an embodiment, displaying of incoming content, and sharing of documents and objects via a slice plane may include access and display permissions. For example, a document or object may only be shared across a slice plane when permission to do so exists (e.g., is provided by a user). For example, data describing a room on one side of a slice plane may not have permission to be displayed on a second side of the slice plane (e.g., for privacy reasons) and may be replaced with a display of a generic digital room.

In accordance with an embodiment, object sharing and document sharing may occur in any direction across a slice plane.

In accordance with an embodiment, and as shown in <FIG>, the method <NUM> may be used to create a combined display of inbound content data from a plurality of different sources (e.g., from a plurality of different MR merging devices at different real-world locations). This allows for a plurality of participants to communicate using the MR merging system. For example, during operation <NUM> of the method <NUM>, the client MR merging module <NUM> within a local MR merging device <NUM> may receive a selection of three different inbound content sources (e.g., from a local user of the local MR merging device <NUM> choosing to connect with three family members that each have a MR merging device <NUM> in different real-world locations). Continuing with the example, at operation <NUM> of the method, the client MR merging module <NUM> of the local MR merging device may connect with, access (e.g., download) inbound content data from the three different inbound content sources, and upload content data (e.g., from the local MR merging device <NUM>) to the three different sources. Continuing with the example, and in accordance with an embodiment, during operation <NUM> of the method, the client MR merging module <NUM> of the local MR merging device <NUM> would display all three different inbound content data through a plurality of slice planes. In accordance with an embodiment, as part of operation 212A, and as shown in <FIG>, the client MR merging module <NUM> in the local MR merging device <NUM> may align the displaying of the plurality of slice planes by aligning an alignment line <NUM> (e.g., as created during operation <NUM> of the method <NUM>) for each of the three different inbound content sources with an alignment line <NUM> for the local MR merging device <NUM> (the alignment line <NUM> is shown for clarity of understanding and may not be displayed during operation). In accordance with an embodiment, and as shown in <FIG>, the volume surrounding the aligned alignment line <NUM> may be split evenly between the three inbound content sources and the local MR merging device <NUM> creating four spaces (e.g., <NUM>, <NUM>, <NUM>, and <NUM>) and connecting four users <NUM> (e.g., a local user), <NUM>, <NUM>, and <NUM>. While the above example uses three different sources, the method is not limited to three different sources.

While illustrated in the block diagrams as groups of discrete components communicating with each other via distinct data signal connections, it will be understood by those skilled in the art that the various embodiments may be provided by a combination of hardware and software components, with some components being implemented by a given function or operation of a hardware or software system, and many of the data paths illustrated being implemented by data communication within a computer application or operating system. The structure illustrated is thus provided for efficiency of teaching the present various embodiments.

It should be noted that the present disclosure can be carried out as a method, can be embodied in a system, a computer readable medium or an electrical or electro-magnetic signal. The embodiments described above and illustrated in the accompanying drawings are intended to be exemplary only. It will be evident to those skilled in the art that modifications may be made without departing from this disclosure. Such modifications are considered as possible variants and lie within the scope of the disclosure.

Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute either software modules (e.g., code embodied on a machine-readable medium or in a transmission signal) or hardware modules. A "hardware module" is a tangible unit capable of performing certain operations and may be configured or arranged in a certain physical manner. In various example embodiments, 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 modules 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 module that operates to perform certain operations as described herein.

In some embodiments, a hardware module may be implemented mechanically, electronically, or with any suitable combination thereof. For example, a hardware module may include dedicated circuitry or logic that is permanently configured to perform certain operations. For example, a hardware module may be a special-purpose processor, such as a field-programmable gate array (FPGA) or an Application Specific Integrated Circuit (ASIC). A hardware module may also include programmable logic or circuitry that is temporarily configured by software to perform certain operations. For example, a hardware module may include software encompassed within a general-purpose processor or other programmable processor. Such software may at least temporarily transform the general-purpose processor into a special-purpose processor.

Accordingly, the phrase "hardware module" should 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 certain manner or to perform certain operations described herein. As used herein, "hardware-implemented module" refers to a hardware module. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where a hardware module 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 modules) at different times. Software may accordingly configure a particular processor or processors, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.

Similarly, the methods described herein may be at least partially processor-implemented, with a particular processor or processors being an example of hardware.

The performance of certain of the operations may be distributed among the processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processors or processor-implemented modules may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, the processors or processor-implemented modules may be distributed across a number of geographic locations.

<FIG> is a block diagram <NUM> illustrating an example software architecture <NUM>, which may be used in conjunction with various hardware architectures herein described to provide a gaming engine <NUM> and/or components of the MR Merging system <NUM>. <FIG> is a non-limiting example of a software architecture and it will be appreciated that many other architectures may be implemented to facilitate the functionality described herein. The software architecture <NUM> may execute on hardware such as a machine <NUM> of <FIG> that includes, among other things, processors <NUM>, memory <NUM>, and input/output (I/O) components <NUM>. A representative hardware layer <NUM> is illustrated and can represent, for example, the machine <NUM> of <FIG>. The representative hardware layer <NUM> includes a processing unit <NUM> having associated executable instructions <NUM>. The executable instructions <NUM> represent the executable instructions of the software architecture <NUM>, including implementation of the methods, modules and so forth described herein. The hardware layer <NUM> also includes memory/storage <NUM>, which also includes the executable instructions <NUM>. The hardware layer <NUM> may also comprise other hardware <NUM>.

In the example architecture of <FIG>, the software architecture <NUM> may be conceptualized as a stack of layers where each layer provides particular functionality. For example, the software architecture <NUM> may include layers such as an operating system <NUM>, libraries <NUM>, frameworks or middleware <NUM>, applications <NUM> and a presentation layer <NUM>. Operationally, the applications <NUM> and/or other components within the layers may invoke application programming interface (API) calls <NUM> through the software stack and receive a response as messages <NUM>. The layers illustrated are representative in nature and not all software architectures have all layers. For example, some mobile or special purpose operating systems may not provide the frameworks/middleware <NUM>, while others may provide such a layer. Other software architectures may include additional or different layers.

The operating system <NUM> may manage hardware resources and provide common services. The operating system <NUM> may include, for example, a kernel <NUM>, services <NUM>, and drivers <NUM>. The kernel <NUM> may act as an abstraction layer between the hardware and the other software layers. For example, the kernel <NUM> may be responsible for memory management, processor management (e.g., scheduling), component management, networking, security settings, and so on. The drivers <NUM> may be responsible for controlling or interfacing with the underlying hardware. For instance, the drivers <NUM> may include display drivers, camera drivers, Bluetooth® 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 depending on the hardware configuration.

The libraries <NUM> typically provide functionality that allows other software modules to perform tasks in an easier fashion than to interface directly with the underlying operating system <NUM> functionality (e.g., kernel <NUM>, services <NUM> and/or drivers <NUM>). The libraries <NUM> may include system libraries <NUM> (e.g., C standard library) that may provide functions such as memory allocation functions, string manipulation functions, mathematic functions, and the like. In addition, the libraries <NUM> may include API libraries <NUM> such as media libraries (e.g., libraries to support presentation and manipulation of various media format such as MPEG4, H. <NUM>, MP3, AAC, AMR, JPG, PNG), graphics libraries (e.g., an OpenGL framework that may be used to render 2D and 3D graphic content on a display), database libraries (e.g., SQLite that may provide various relational database functions), web libraries (e.g., WebKit that may provide web browsing functionality), and the like. The libraries <NUM> may also include a wide variety of other libraries <NUM> to provide many other APIs to the applications <NUM> and other software components/modules.

The frameworks <NUM> (also sometimes referred to as middleware) provide a higher-level common infrastructure that may be used by the applications <NUM> and/or other software components/modules. For example, the frameworks/middleware <NUM> may provide various graphic user interface (GUI) functions, high-level resource management, high-level location services, and so forth. The frameworks/middleware <NUM> may provide a broad spectrum of other APIs that may be utilized by the applications <NUM> and/or other software components/modules, some of which may be specific to a particular operating system or platform.

The applications <NUM> include built-in applications <NUM> and/or third-party applications <NUM>. Examples of representative built-in applications <NUM> may include, but are not limited to, a contacts application, a browser application, a book reader application, a location application, a media application, a messaging application, and/or a game application. Third-party applications <NUM> may include any an application developed using the Android™ or iOS™ software development kit (SDK) by an entity other than the vendor of the particular platform, and may be mobile software running on a mobile operating system such as iOS™, Android™, Windows® Phone, or other mobile operating systems. The third-party applications <NUM> may invoke the API calls <NUM> provided by the mobile operating system such as operating system <NUM> to facilitate functionality described herein.

The applications <NUM> may use built-in operating system functions (e.g., kernel <NUM>, services <NUM> and/or drivers <NUM>), libraries <NUM>, or frameworks/middleware <NUM> to create user interfaces to interact with users of the system. Alternatively, or additionally, in some systems, interactions with a user may occur through a presentation layer, such as the presentation layer <NUM>. In these systems, the application/module "logic" can be separated from the aspects of the application/module that interact with a user.

Some software architectures use virtual machines. In the example of <FIG>, this is illustrated by a virtual machine <NUM>. The virtual machine <NUM> creates a software environment where applications/modules can execute as if they were executing on a hardware machine (such as the machine <NUM> of <FIG>, for example). The virtual machine <NUM> is hosted by a host operating system (e.g., operating system <NUM>) and typically, although not always, has a virtual machine monitor <NUM>, which manages the operation of the virtual machine <NUM> as well as the interface with the host operating system (i.e., operating system <NUM>). A software architecture executes within the virtual machine <NUM> such as an operating system (OS) <NUM>, libraries <NUM>, frameworks <NUM>, applications <NUM>, and/or a presentation layer <NUM>. These layers of software architecture executing within the virtual machine <NUM> can be the same as corresponding layers previously described or may be different.

<FIG> is a block diagram illustrating components of a machine <NUM>, according to some example embodiments, configured to read instructions from a machine-readable medium (e.g., a machine-readable storage medium) and perform any one or more of the methodologies discussed herein. In some embodiments, the machine <NUM> is similar to the MR merging device <NUM>. Specifically, <FIG> shows a diagrammatic representation of the machine <NUM> in the example form of a computer system, within which instructions <NUM> (e.g., software, a program, an application, an applet, an app, or other executable code) for causing the machine <NUM> to perform any one or more of the methodologies discussed herein may be executed. As such, the instructions <NUM> may be used to implement modules or components described herein. The instructions transform the general, non-programmed machine into a particular machine programmed to carry out the described and illustrated functions in the manner described. In alternative embodiments, the machine <NUM> operates as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine <NUM> 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. The machine <NUM> 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 personal digital assistant (PDA), an entertainment media system, a cellular telephone, a smart phone, a mobile device, a wearable 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 the instructions <NUM>, sequentially or otherwise, that specify actions to be taken by the machine <NUM>. Further, while only a single machine <NUM> is illustrated, the term "machine" shall also be taken to include a collection of machines that individually or jointly execute the instructions <NUM> to perform any one or more of the methodologies discussed herein.

The machine <NUM> may include processors <NUM>, memory <NUM>, and input/output (I/O) components <NUM>, which may be configured to communicate with each other such as via a bus <NUM>. In an example embodiment, the processors <NUM> (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 Application Specific Integrated Circuit (ASIC), a RadioFrequency Integrated Circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, a processor <NUM> and a processor <NUM> that may execute the instructions <NUM>. The term "processor" is intended to include multi-core processor that may comprise two or more independent processors (sometimes referred to as "cores") that may execute instructions contemporaneously. Although <FIG> shows multiple processors, the machine <NUM> 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.

The memory/storage <NUM> may include a memory, such as a main memory <NUM>, a static memory <NUM>, or other memory, and a storage unit <NUM>, both accessible to the processors <NUM> such as via the bus <NUM>. The storage unit <NUM> and memory <NUM>, <NUM> store the instructions <NUM> embodying any one or more of the methodologies or functions described herein. The instructions <NUM> may also reside, completely or partially, within the memory <NUM>, <NUM>, within the storage unit <NUM>, within at least one of the processors <NUM> (e.g., within the processor's cache memory), or any suitable combination thereof, during execution thereof by the machine <NUM>. Accordingly, the memory <NUM>, <NUM>, the storage unit <NUM>, and the memory of processors <NUM> are examples of machine-readable media <NUM>.

As used herein, "machine-readable medium" means a device able to store instructions and data temporarily or permanently and may include, but is not limited to, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, optical media, magnetic media, cache memory, other types of storage (e.g., Erasable Programmable Read-Only Memory (EEPROM)) and/or any suitable combination thereof. The term "machine-readable medium" should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store the instructions <NUM>. The term "machine-readable medium" shall also be taken to include any medium, or combination of multiple media, that is capable of storing instructions (e.g., instructions <NUM>) for execution by a machine (e.g., machine <NUM>), such that the instructions, when executed by one or more processors of the machine <NUM> (e.g., processors <NUM>), cause the machine <NUM> to perform any one or more of the methodologies or operations, including non-routine or unconventional methodologies or operations, or non-routine or unconventional combinations of methodologies or operations, described herein. Accordingly, a "machine-readable medium" refers to a single storage apparatus or device, as well as "cloud-based" storage systems or storage networks that include multiple storage apparatus or devices. Instructions (e.g., instructions <NUM>) may be conveyed (i.e. carried) electronically via any medium, for example a communication signal carried over a wired or wireless connection and embodiments suitably encompass the same. When used, the term "non-transitory machine-readable medium" excludes signals per se.

The input/output (I/O) components <NUM> 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 input/output (I/O) components <NUM> that are included in a particular machine will depend on the type of machine. For example, portable machines such as mobile phones will likely 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 input/output (I/O) components <NUM> may include many other components that are not shown in <FIG>. The input/output (I/O) components <NUM> are grouped according to functionality merely for simplifying the following discussion and the grouping is in no way limiting. In various example embodiments, the input/output (I/O) components <NUM> may include output components <NUM> and input components <NUM>. The output components <NUM> 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. The input components <NUM> 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 further example embodiments, the input/output (I/O) components <NUM> may include biometric components <NUM>, motion components <NUM>, environmental components <NUM>, or position components <NUM>, among a wide array of other components. For example, the biometric components <NUM> may 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. The motion components <NUM> may include acceleration sensor components (e.g., accelerometer), gravitation sensor components, rotation sensor components (e.g., gyroscope), and so forth. The environmental components <NUM> may 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 corresponding to a surrounding physical environment. The position components <NUM> may include location sensor components (e.g., a Global Position System (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., magnetometers), and the like.

Communication may be implemented using a wide variety of technologies. The input/output (I/O) components <NUM> may include communication components <NUM> operable to couple the machine <NUM> to a network <NUM> or devices <NUM> via a coupling <NUM> and a coupling <NUM> respectively. For example, the communication components <NUM> may include a network interface component or other suitable device to interface with the network <NUM>. In further examples, the communication components <NUM> may include wired communication components, wireless communication components, cellular communication components, Near Field Communication (NFC) components, Bluetooth® components (e.g., Bluetooth® Low Energy), Wi-Fi® components, and other communication components to provide communication via other modalities. The devices <NUM> may be another machine or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a Universal Serial Bus (USB)).

In addition, a variety of information may be derived via the communication components <NUM>, such as, location via Internet Protocol (IP) geo-location, location via Wi-Fi® signal triangulation, location via detecting a NFC beacon signal that may indicate a particular location, and so forth.

Claim 1:
A system comprising:
one or more computer processors (<NUM>);
one or more computer memories (<NUM>); and
a set of instructions incorporated into the one or more computer memories (<NUM>), the set of instructions configuring the one or more computer processors (<NUM>) to perform operations, the operations comprising:
receiving (<NUM>) data describing an environment surrounding a first Mixed Reality "MR" merging device (<NUM>; 104A);
generating, positioning, and displaying (<NUM>) a first slice plane within the environment;
connecting (<NUM>, <NUM>) with a second MR merging device (104B, 104C, 104D) in a second environment, whereby the environment and the second environment correspond to two different real-world locations;
receiving (<NUM>) data describing inbound content from the second MR merging device and sending content data from the first MR merging device to the second MR merging device, the inbound content including data describing the second environment; and
processing and displaying (<NUM>) the inbound content data on the first slice plane.