U.S. Pat. No. 10,831,830

NORMATIVE PROCESS OF INTERACTION WITH A REGISTRY OF VIRTUAL SPACES

AssigneeDish Technologies L.L.C.

Issue DateDecember 29, 2017

Illustrative Figure

Abstract

Described are systems, methods, and computer program products for facilitating user access to virtual reality (VR) containers. A VR container registry may identify any type of container and optionally list requirements for accessing the container, constraints relating to when access is permitted, characteristics describing container features, lists of other containers accessible from within the container, container output formats, accepted input formats, etc. The registry may be organized in a hierarchical structure, make use of or be comparable to a domain name system, and include one or more top-level items each having one or more second-level items organized beneath. A service provider may host a VR container to facilitate user access to other VR containers, allow users to transfer between unconnected remote VR containers while staying within a VR session or without having to exit all VR sessions, and provide transformation services to ensure container and VR system compatibility.

Description

DETAILED DESCRIPTION In embodiments, the present invention provides systems, methods, and computer program products for facilitating end user access to virtual reality worlds and, optionally, obtaining supplemental content (e.g., external content) within a virtual reality world. As used herein, the terms virtual world, virtual reality world, virtual container, virtual reality container, virtual experience, virtual reality experience, virtual environment, virtual reality environment, and the like interchangeably refer to a software or computer generated environment including images and/or sounds to simulate a user's presence in a physical environment, which may represent a real place in the universe, such as a place on Earth or the moon, or may represent a fictional world. Typical outputs for a virtual reality world include, but are not limited to, a visual representation of a virtual world and an audio representation of a virtual world. A visual representation may include text or other information, which may, at least in part, overlap with or be representative of an audio representation. Similarly, an audio representation may include audio information that, at least in part, overlaps or is representative of information included in a video representation. Other output, such as tactile or haptic feedback may be generated for sensation by a user. In some virtual worlds, the laws of physics are set to match those of reality, while in other virtual worlds, the laws of physics may be modified or otherwise differ from reality. Input to a virtual container may represent a user's position, orientation, point of view and interactions with the virtual world. A user may also provide user source content as input to a virtual container, which may represent audio and/or video generated by the user, such as audio obtained from an end user virtual reality system or video information obtained by a video capture device associated with ...

DETAILED DESCRIPTION

In embodiments, the present invention provides systems, methods, and computer program products for facilitating end user access to virtual reality worlds and, optionally, obtaining supplemental content (e.g., external content) within a virtual reality world. As used herein, the terms virtual world, virtual reality world, virtual container, virtual reality container, virtual experience, virtual reality experience, virtual environment, virtual reality environment, and the like interchangeably refer to a software or computer generated environment including images and/or sounds to simulate a user's presence in a physical environment, which may represent a real place in the universe, such as a place on Earth or the moon, or may represent a fictional world. Typical outputs for a virtual reality world include, but are not limited to, a visual representation of a virtual world and an audio representation of a virtual world. A visual representation may include text or other information, which may, at least in part, overlap with or be representative of an audio representation. Similarly, an audio representation may include audio information that, at least in part, overlaps or is representative of information included in a video representation. Other output, such as tactile or haptic feedback may be generated for sensation by a user. In some virtual worlds, the laws of physics are set to match those of reality, while in other virtual worlds, the laws of physics may be modified or otherwise differ from reality. Input to a virtual container may represent a user's position, orientation, point of view and interactions with the virtual world. A user may also provide user source content as input to a virtual container, which may represent audio and/or video generated by the user, such as audio obtained from an end user virtual reality system or video information obtained by a video capture device associated with the end user virtual reality system.

It will be appreciated that the software or computer generating the virtual environment may be remote from the end user, and outputs representing the virtual environment may be transmitted to an end user virtual reality system, such as over one or more wired or wireless network links. It will also be appreciated that the software or computer generating the virtual environment may be co-located with an end user and, for example, may be present within, as part of, or in data communication with an end-user virtual reality system, such as a headset. In some embodiments, a virtual environment may be provided by a remote server as an executable or program instructions, which may be referred to as a kernel. The executable or program instructions may be performed or otherwise executed by an end-user system to provide outputs, such as visual, audio, haptic, and/or tactile outputs to a user. In some embodiments, the executable or program instructions may be performed or otherwise executed by an intermediate system between the end-user virtual reality device or system and the remote server, such as a service provider system, to provide outputs for use by an end user system. It will be appreciated that, in some embodiments, the executable or program instructions may be provided on a non-transitory computer readable storage medium, such as a flash drive, a CD, a DVD, etc. Optionally, the executable or program instructions may be included in one or more data transmissions over a network and stored to a non-transitory computer readable storage medium local to an end user virtual reality system.

FIG. 1provides a schematic illustration of a network environment100. Here, an end-user VR system105connects to a network110. In some embodiments, the network110may allow devices to establish a bi-directional communication path for data transfer between the devices. The network110is intended to represent any number of terrestrial and/or non-terrestrial network features or elements. For example, the network110may incorporate or exhibit any number of features or elements of various wireless and/or hardwired packet-based communication networks such as, for example, a WAN (Wide Area Network) network, a HAN (Home Area Network) network, a LAN (Local Area Network) network, a WLAN (Wireless Local Area Network) network, the Internet, a cellular communications network, and/or any other type of communication network(s) configured such that data may be transferred between and among respective elements of the network environment100.

Network environment100also includes a service provider115, which may host or otherwise provide or include a service provider virtual reality container120. Service provider115may act, in some embodiments, as an intermediary between end user system105and one or more other remote VR providers125and130, which may in turn respectively host or otherwise provide or include remote virtual reality containers135and140.

Network environment100also includes a virtual container registry server145. Virtual container registry server145may create, host or otherwise provide or include a registry of virtual containers. It will be appreciated that virtual container registry server145may be a part of or included in service provider115, or another entity, server, or device in communication with network110. Virtual container registry server may allow for creation or modification of entries in a registry of virtual containers. A registry of virtual containers may be replicated, in whole or in part, on other devices or servers in communication with network110. A registry of virtual containers may exist as a distributed system or database on multiple servers in communication with network110, and may parallel, for example, aspects of a domain name system, where updates to a registry may propagate from server to server.

FIG. 2provides a schematic illustration of communications between different devices, which may be included in network environment100. For example,FIG. 2shows communications between an end user VR system200, a service provider204, a virtual container registry server208, and remote VR providers212and216.

End user system200may transmit a connection request220to service provider204, such as a request to establish a VR session. Service provider204may respond with a connection response224. Optionally, service provider204may transmit a registry query228to virtual container registry208to query a registry of virtual containers for one or more remote VR containers that may be available or accessible to end-user system200. Registry query228may include information about end-user system200and/or a user associated with end-user system, such as credentials, tokens, or characteristics of end-user system200or the user. Virtual container registry server208may generate a registry response232, which may be received by service provider204and may include identifiers, portal information, or other useful information about remote VR containers or how to establish a VR session with a remote VR container.

Connection request220and connection response224may represent a handshake between end user system200and service provider204for establishing a service provider VR session228, representing entry of a user into a VR container of service provider204. Service provider VR session228may represent bidirectional communication between end user VR system200and service provider204, also referred to herein as a network connection. The service provider VR session236may allow a virtual world accessible by end-user VR system to include one or more portals representing entry points to remote VR containers.

End user system200may transmit a portal access instruction240to service provider204, representing a request to enter a particular remote VR container, such as a VR container associated with remote VR provider212. In response to the portal access instruction240, service provider204may, for example, transmit a connection request244to remote VR provider212, such as a request to establish a VR session. Remote VR provider212may respond with a connection response248. Connection request244and connection response248may represent a handshake between end user system200, via service provider204, and remote VR provider212for establishing a remote VR session252. Optionally, service provider204may perform a conversion256of aspects of remote VR session252, such as when end user system200is at least partially incompatible with the VR container of remote VR provider212.

In some embodiments, a user may wish to move from the remote VR session252to another remote VR container, and so end user system200may optionally transmit an exit instruction260and transmit another portal access instruction264. It will be appreciated that portal access instruction264may be transmitted while remote VR session252is active or upon termination of remote VR session252. In some embodiments, termination of remote VR session252results in end user VR system200and service provider204re-establishing service provider VR session236or establishing a new service provider VR session.

In some embodiments, end user system200may be compatible with a remote VR container, such as a VR container associated with remote VR provider216. In these and other circumstances, service provider204may transmit remote VR container information268to end user system200in response to a portal access instruction264. Remote VR container information268may include instructions or information on how to contact or establish a VR session with remote VR container216. Optionally, service provider204may transmit a registry query272and receive a registry response276to obtain some or all of the information included in remote VR container information268.

To establish a VR session, end user system200may transmit a connection request280to remote VR provider216. Remote VR provider216may respond with a connection response284. Connection request280and connection response284may represent a handshake between end user system200and remote VR provider216for establishing a remote VR session288.

It will be appreciated thatFIG. 2merely provides one example of how connections may be established for VR sessions and how communications may be exchanged between devices. Other variations on the communications illustrated inFIG. 2will be appreciated in view of the contents of the figure and the above description, such as where connection requests and responses for different remote VR sessions occur in different orders, or where conversions may or may not take place, or where direct connections between end user system200and a remote VR provider may take place.

FIG. 3provides an overview of an example method300, which may be performed, for example, by a service provider or service provider server. At block305, a service provider VR container connection is established. At block310, one or more portals are determined. At block315, the service provider VR session is populated with the one or more portals. At block320, an access instruction for access to a first portal is detected. At block325, a first remote container connection is established or facilitated. At block330, an access instruction for access to a second portal is detected. At block335, a second remote container connection is established or facilitated.

FIG. 4provides a schematic illustration of portion of an example registry400of virtual containers400. Registry400of virtual containers includes multiple entries, each represented as individual rows405-440inFIG. 4. Registry400may correspond to or comprise a database, for example. Columns inFIG. 4represent different components of each entry and example components such as an identifier, a requirement, a constraint, and a characteristic are illustrated.

Registry400of virtual containers may be organized in a hierarchical fashion. For example, row410may represent a top level item of the registry. Rows405and425may be organized such that they exist as second level items beneath the top level item of row410. This organization may not represent the physical organization of data in registry400, but may represent relationships between different entries in the registry. Row415may represent a third level item organized beneath second level item, such as row405. Similarly, row430may represent a third level item organized beneath second level item, such as row425. It will be appreciated that the organization of items in a hierarchical structure may allow related items to be grouped together in the hierarchy. In some embodiments, items in registry400may be below to different hierarchies simultaneously.

It will be appreciated that identifiers shown in registry400are merely example names identifying a particular VR container. Any number of identifiers may be included in an entry. Other identifiers may be useful, such as a domain name, an Internet or IP address, a publisher, etc.

It will be appreciated that requirements shown in registry400are merely examples. Any number of requirements may be included in an entry. When a requirement of “any” is show, this may indicate that the VR container may be compatible with any VR system, such as by the container providing output dynamically depending on a particular VR system. In row420, for example, the History World container is depicted as requiring a particular operating system, such as a version of Android greater than or equal to 5 or a version of iOS greater than or equal to 7. Rows435and440illustrate that only particular systems are supported by those virtual containers, namely the Oculus Rift system and the Sony PlayStation VR system.

It will be appreciated that constraints shown in registry400are merely examples. Any number of constraints may be included in an entry. In row420, History World is shown as having a constraint of the English language, indicating that users not supporting English may not be permitted entry into History World, and that a password may also be required to obtain entry. Rows435and440illustrate age constraints, indicating that between the hours of 3 and 9 pm, an age limit of 13 or greater is required for entry, and an age of 18 or greater is required for entry at all other times.

It will be appreciated that the characteristics shown in registry400are merely examples. Any number of characteristics may be included in an entry, and characteristics may be flexible for indicating any type of other information relating to a particular VR container. For example, characteristics may identify linked VR containers. Characteristics may identify users associated with a VR container. Characteristics may identify ratings associated with a VR container. Characteristics may identify that advertisements are shown in a VR container. Characteristics may identify that a VR container represents a shopping or commerce container. Other characteristics are possible.

FIG. 5provides an overview of an example method500for creating and using a registry of virtual containers. At block505, a registry of virtual containers is instantiated. At block510and addendum query is received. At block515a new entry corresponding to the addendum query is added to the registry of virtual containers. At block520, a change query is received. At block525an entry is modified based on the change query. At block530a query is received, such as an information query. At block535, query results are determined. At block540output including the query results are generated. Other queries are possible, including deletion queries for deleting an entry from the registry of virtual containers.

It will be appreciated that a content provider or content provider system, may use aspects ofFIG. 5to publish changes relating to their VR containers to a registry. For example, a content provider or content provider system may wish to update, add, lock, or delete one or more registry entries. A registry entry, for example, may have an associated authentication token to identify a controlling entity that may make changes or delete the registry entry. In this way, an entity may be able to control changes to the registry entry.

As an example of a VR container that may show various aspects of the features and techniques described herein, an end user may wish to host and/or participate in a virtual event, such as a sporting event viewing party, which may optionally relate to a real world sporting event (such as a Superbowl party) or may relate to a virtual event. Various scenarios of a virtual container for such a virtual event are contemplated, including a user-hosted container, a service-provider hosted container, a broadcaster or sponsor hosted container, etc. Such a virtual container may be listed in a registry of virtual containers, as described above, to facilitate end users locating and accessing the virtual container. Such a virtual container may be publicly accessible or accessible only to users meeting appropriate constraints (e.g., permissions, authentication, etc.). For each of the hosting scenarios, common features may apply, as some end users accessing the virtual container will be remote and accessing the virtual container over a network connection.

FIG. 6illustrates an embodiment of a network environment600. It will be appreciated that network environment600may overlap or share, at least in part, components or aspects with network environment100described above with respect toFIG. 1. InFIG. 6, a first end user VR system605and a second end user VR system610each connect to a network615. In some embodiments, the network615may allow devices to establish a bi-directional communication path for data transfer between the devices. The network615is intended to represent any number of terrestrial and/or non-terrestrial network features or elements. For example, the network615may incorporate or exhibit any number of features or elements of various wireless and/or hardwired packet-based communication networks such as, for example, a WAN (Wide Area Network) network, a HAN (Home Area Network) network, a LAN (Local Area Network) network, a WLAN (Wireless Local Area Network) network, the Internet, a cellular communications network, and/or any other type of communication network(s) configured such that data may be transferred between and among respective elements of the network environment600.

Network environment600also includes VR provider620, which may host or otherwise provide or include a virtual reality container625. As described above, VR provider may be user hosted, hosted by a service provider, hosted by a broadcaster, etc. VR provider615may optionally be associated with or directly connected to or as part of an end user VR system, which may be different from end user VR systems605and610.

With respect to the example virtual event described above, VR container625may correspond to the sporting event viewing party, and may be, for example, a virtual reality world constructed as a living room to allow end users associated with end user VR systems605and610to simultaneously participate in viewing the sporting event. As an example, the sporting event may be provided in the VR container as a window or portal exhibiting a display of a broadcast, stream, or video transmission of the sporting event. Such a scenario will be appreciated as representative of content commonly available as a two or three-dimensional video in the real world as viewed, for example, on a television display, but other embodiments are contemplated, such as where the event or content being commonly shared or viewed by participating end users corresponds to a virtual reality experience of another virtual reality container.

VR provider625may establish network connections650and655with end user VR systems605and610in order to establish VR sessions and provide data streams to end user VR systems605and610in order for VR systems605and610to render output corresponding to VR container625. Such a data stream may be or include, for example, an instruction set for use by end user VR systems605or610, an audio stream, a video stream, a text stream, metadata, tactile data, and the like for directly outputting or converting for output by end user VR systems605and610. In the sporting event viewing party described above, the VR sessions established between VR provider625and end user VR systems605and610may allow end users to view, listen to, interact with, and/or otherwise experience the living room with a window or portal displaying the broadcast of the sporting event. Network connections650and655may be provided by way of network615and may include transmission control protocol (TCP) connections over a packed switched network, for example.

End users system605and610may be able to apply or provide preferences and permissions to enable customization of the VR container, as desired. For example, an end user system may identify preferences for colors of a particular sports team to be included in the décor of the virtual living room. An end user system may also identify accessibility features that are to be activated in output presented at the end user system.

End user systems605and610may each provide a user source content stream to other devices in network environment600. For example, end user systems605and610may provide audio streams corresponding to audio captured by a microphone of end user systems605and610. Such a user source content stream may be provided, for example, between an end user system and VR provider620, such that VR provider620may include a portion (e.g., audio) from the user source content stream as part of VR container625. Optionally, user source content streams may be directly communicated from one end user VR system to another. VR provider620may facilitate such an exchange, such as by providing network address information for one or more end user VR systems605or610and/or other information allowing end user VR systems605or610to exchange data with one another via network615.

Depending on the configurations, permissions, and preferences associated with end user systems605and610and VR container625, transformation of the user source content stream may take place. As examples, audio in a user source content stream may be translated from one language to another, may be converted to text or a video description, may be filtered, or may be amplified or curtailed, etc. Similarly, in the case where user source content stream includes video or graphical information, the video or graphical information may be converted to another format, turned into an audio or text description, converted into alternative color space, filtered, etc. In this way, users with different preferences or permissions may be adapted, such as to allow users speaking different languages to communicate with one another or to accommodate users that require accessibility (e.g., blind, low vision, deaf, or hard of hearing users). User preferences may be applied or not, depending on the context and configuration. The transformation of user source content streams may occur at one or more devices of network environment600, such as an end user system605or610or VR provider620.

Other remote devices, such as supplemental content provider635or645may also provide for transformation of user source content streams. For example, supplemental content provider635may represent a virtual or network transformation service provider. A data stream, such as a user source content stream, may be received at supplemental content provider635, which then transforms the received data stream to a supplemental content stream630, which may then be provided, for example to VR provider620, such as for inclusion as part of VR container625, or directly to an end user VR system605or610.

Turning back to the example event of a sporting event viewing party, as described above, a window or portal may be included in VR container625to allow participating end users to view a video of the sporting event. Such a broadcast may optionally correspond to supplemental content added to the VR container625. Optionally, one or more end users may provide the video as a supplemental content. Optionally, VR provider620may directly provide or obtain the video as a supplemental content, such as in response to a request for supplemental content received from one or more end user VR systems.

In some embodiments, a supplemental content provider635may provide the video as supplemental content stream630. Optionally, VR provider may communicate a request to supplemental content provider635for the supplemental content stream630corresponding to the video to be displayed in the window or portal within VR container625. Optionally, an end user VR system605or610may communicate a request for the video, which may be received at VR provider620and relayed to supplemental content provider635or directly communicated to supplemental content provider635. Optionally, the supplemental content provider635may provide supplemental content630directly to end user VR systems605or610, and such a configuration may be facilitated by VR provider, such as by VR providing one or more network addresses of devices in network environment600to one another. It will be appreciated that the video of the sporting event to be displayed in the window or portal within VR container625is merely one example of a supplemental content added to VR container625. As examples, audio content, video content or graphical content, text content, haptic content, and virtually any other kind of data or information may be useful supplemental content to be added to VR container625. Other examples are possible, including, as described above, a transformation of a user source content stream. In the context of the sporting event viewing party, a user may wish to receive fantasy sports league information and may request such information from a fantasy sports league provider, corresponding to supplemental content provider635. The fantasy sports league information may be provided as supplemental content stream630and may, for example correspond to text, audio, video and/or graphical information that is added to VR container625, or rendered as output by end user VR system605or610, such as overlaid on the output corresponding to VR container625.

Still other examples of supplemental content are possible, including content from a supplemental VR container, such as supplemental VR container640provided by supplemental VR provider645. In this way, virtually any kind of information or content may be added to VR container625, such as by VR provider620or directly by an end user system605or610. As an example with respect to the sporting event viewing party described above, the supplemental VR container640may correspond to a virtual world representing the arena in which the sporting event is taking place. A representation of the arena may be added to or included in the living room associated with VR container625, allowing a user that, for example, enters a door within the living room to explore and/or otherwise experience the arena in a virtual setting. Such a representation may be provided as a portal to supplemental VR container640or by modifying VR container625directly to include the features provided by supplemental VR container.

FIG. 7provides a schematic illustration of communications between different devices, which may be included in network environment600. For example,FIG. 7shows communications between end user VR systems700and704, a VR provider708, and supplemental content providers712and716.

End user VR system700may transmit an access request720to VR provider708, such as a request to establish a VR session. VR provider708may establish a network connection724with end user VR system700, which may correspond, at least in part with a VR session. Similarly, end user VR system704may transmit an access request728to VR provider708, such as a request to establish a VR session. VR provider708may establish a network connection732with end user VR system700, which may correspond, at least in part with a VR session. It will be appreciated that access or communications may optionally be exchanged with a virtual container registry to enable establishment of a VR session. It will also be appreciated that one or more later communications between end user VR system700and VR provider708may be transmitted using network connection724and that that one or more later communications between end user VR system704and VR provider708may be transmitted using network connection732. With respect to the virtual sporting event viewing party described above, these aspects may correspond with end user VR systems700and704establishing VR sessions with the virtual living room so that the end users can participate in the sporting event viewing party.

End user VR system700may transmit a supplemental content request736to VR provider708. In response to the supplemental content request736, VR provider708may transmit a supplemental content request740to supplemental content provider712, which may provide supplemental content744to VR provider. VR provider708may then relay or facilitate supplemental content744being provided to end user VR system700and, optionally, to end user VR system704. As illustrated, VR provider708transmits supplemental content744to end user VR system700, while supplemental content provider712transmits supplemental content744directly to end user VR system704. As an example for the virtual sporting event viewing party, such a request may correspond to a user desiring to access a supplemental VR container in the virtual living room, such as that provides background music to be heard by or otherwise available to all users present within the virtual living room. In this way, users may be able to obtain supplemental content for presentation to all users participating in a virtual container.

End user VR system704may transmit another supplemental content request748to VR provider708and receive, for example, a response752, which may facilitate end user system704obtaining the desired supplemental content. For example, response752may provide a network address or other information (e.g., instructions) for obtaining the desired supplemental content. As illustrated, end user VR system704transmits the supplemental content request748directly to another supplemental content provider716that, in turn, transmits the supplemental content756back to end user VR system. As an example for the sporting event viewing party, the request may correspond to statistics information of a player of a team participating in the sporting event that may be provided only to end user VR system704, such as overlaid on a video display of the living room environment associated with the virtual container. In this way, users may be able to obtain supplemental content for only their presentation without impacting the experience of other users. Such a technique, for example, may also be useful for accessibility features, as described above.

FIG. 7also illustrates user source content stream760being transmitted from end user VR system700to VR provider708. To facilitate transmission of this information to end user VR system704, VR provider708may provide network address information764associated with end user VR system704to end user VR system700in order for end user VR system704to directly transmit user content stream760directly to end user VR system704. As noted above, such a configuration is only one way that VR provider708may facilitate communication of data between end user VR systems. As another example, end user VR system704may transmit user source content stream768to VR provider708, which may, in turn, relay user source content stream768to end user VR system700.

It will be appreciated thatFIG. 7provides examples of how network connections may be established and how communications may be exchanged between devices. Other variations on the communications and network connections illustrated inFIG. 7will be appreciated in view of the contents of the above description, such as where supplemental content requests are transmitted to different systems or take place in different orders and where supplemental content is generated in response to a request or transmission of a data stream to generate a transformed data stream as a supplemental content stream.

FIG. 8provides an overview of an example method800for accessing a virtual container and obtaining supplemental content from within the virtual container. At block805, a first request for access to a VR container is received, such as from a first end user VR system. At block810, a first network connection is established, such as with the first end user VR system. At block815, access to data for rendering output corresponding to the VR container is provided via the first network connection, such as by transmitting a VR container output stream or by transmitting an instruction set for directly generating a VR container output stream by the first end user VR system.

At block820, a second request for access to a VR container is received, such as from a second end user VR system. At block825, a second network connection is established, such as with the second end user VR system. At block830, access to data for rendering output corresponding to the VR container is provided via the second network connection, such as by transmitting a VR container output stream or by transmitting an instruction set for directly generating a VR container output stream by the second user VR system. At block835, a third request for access to a supplemental content stream is received, such as from the first end user VR system or the second end user VR system.

At block840, access by the first end user VR system is facilitated to the supplemental content stream via the first network connection. At block845, access by the second end user VR system is facilitated to the supplemental content stream via the second network connection. Facilitating access to the supplemental content stream optionally comprises obtaining the supplemental content stream and transmitting the supplemental content stream or data derived from the supplemental content stream, such as over a network connection. Facilitating access to the supplemental content stream optionally comprises including at least a portion of the supplemental content stream in the data for rendering output corresponding to the VR container. Facilitating access to the supplemental content stream optionally comprises transmitting a network address for a remote server that provides the supplemental content stream. In this way, the first or second end user VR device can obtain the supplemental content stream directly from the remote server.

Transmission of a user source content stream may be facilitated by receiving and transmitting at least a portion of the user source content stream, by transmitting a network address of an end user VR system providing the user source content stream to another end user VR system, or by transmitting a network address of an end user VR system to another end user VR system providing the user source content stream. In this way, the user source content stream may be relayed or allowed to be obtained directly from the source end user VR system generating the user source content stream.

A computing device as illustrated inFIG. 9may be incorporated as part of the previously described devices, such as end user VR systems105and200, service providers115and204, remote VR providers125,130,212and216, virtual container registry servers145and208, etc.FIG. 9provides a schematic illustration of one embodiment of a computing device900that may perform various steps of the methods provided by various embodiments. It should be noted thatFIG. 9is meant only to provide a generalized illustration of various components, any or all of which may be utilized as appropriate.FIG. 9, therefore, broadly illustrates how individual system elements may be implemented in a relatively separated or relatively more integrated manner.

The computing device900is shown comprising hardware elements that may be electrically coupled via a bus905(or may otherwise be in communication). The hardware elements may include one or more processors910, including without limitation one or more general-purpose processors and/or one or more special-purpose processors (such as digital signal processing chips, graphics acceleration processors, video decoders, and/or the like); one or more input devices915, which may include without limitation a mouse, a touchscreen, keyboard, remote control, voice input, and/or the like; and one or more output devices920, which may include without limitation a display device, a printer, speaker, etc.

The computing device900may further include (and/or be in communication with) one or more non-transitory storage devices925, which may comprise, without limitation, local and/or network accessible storage, and/or may include, without limitation, a disk drive, a drive array, an optical storage device, a solid-state storage device, such as a solid state drive (“SSD”), random access memory (“RAM”), and/or a read-only memory (“ROM”), which may be programmable, flash-updateable and/or the like. Such storage devices may be configured to implement any appropriate data stores, including without limitation, various file systems, database structures, and/or the like.

The computing device900might also include a communications subsystem930, which may include without limitation a modem, a network card (wireless or wired), an infrared or optical communication device, a wireless communication device, and/or a chipset (such as a Bluetooth™ device, BLE, an 802.11 device, an 802.15.4 device, a WiFi device, a WiMax device, cellular communication device, etc.), a G.hn device, and/or the like. The communications subsystem930may permit data to be exchanged with a network (such as the network described below, to name one example), other computer systems, and/or any other devices described herein. In many embodiments, the computing device900will further comprise a working memory935, which may include a RAM or ROM device, as described above.

The computing device900also may comprise software elements, shown as being currently located within the working memory935, including an operating system940, device drivers, executable libraries, and/or other code, such as one or more application programs945, which may comprise computer programs provided by various embodiments, and/or may be designed to implement methods, and/or configure systems, provided by other embodiments, as described herein. Merely by way of example, one or more procedures described with respect to the method(s) discussed above might be implemented as code and/or instructions executable by a computer (and/or a processor within a computer); in an aspect, then, such code and/or instructions may be used to configure and/or adapt a general purpose computer (or other device) to perform one or more operations in accordance with the described methods.

A set of these instructions and/or code might be stored on a non-transitory computer-readable storage medium, such as the non-transitory storage device(s)925described above. In some cases, the storage medium might be incorporated within a computer system, such as computing device900. In other embodiments, the storage medium might be separate from a computer system (e.g., a removable medium, such as a compact disc, or a cloud- or network-based storage system), and/or provided in an installation package, such that the storage medium may be used to program, configure, and/or adapt a general purpose computer with the instructions/code stored thereon. These instructions might take the form of executable code, which is executable by the computing device900and/or might take the form of source and/or installable code, which, upon compilation and/or installation on the computing device900(e.g., using any of a variety of generally available compilers, installation programs, compression/decompression utilities, etc.), then takes the form of executable code.

It will be apparent to those skilled in the art that substantial variations may be made in accordance with specific requirements. For example, customized hardware might also be used, and/or particular elements might be implemented in hardware, software (including portable software, such as applets, etc.), or both. Further, connection to other computing devices such as network input/output devices may be employed.

As mentioned above, in one aspect, some embodiments may employ a computing device (such as the computing device900) to perform methods in accordance with various embodiments of the invention. According to a set of embodiments, some or all of the procedures of such methods are performed by the computing device900in response to processor910executing one or more sequences of one or more instructions (which might be incorporated into the operating system940and/or other code, such as an application program945) contained in the working memory935. Such instructions may be read into the working memory935from another computer-readable medium, such as one or more of the non-transitory storage device(s)925. Merely by way of example, execution of the sequences of instructions contained in the working memory935might cause the processor(s)910to perform one or more procedures of the methods described herein.

The terms “machine-readable medium,” “computer-readable storage medium” and “computer-readable medium,” as used herein, refer to any medium that participates in providing data that causes a machine to operate in a specific fashion. These mediums may be non-transitory. In an embodiment implemented using the computing device900, various computer-readable media might be involved in providing instructions/code to processor(s)910for execution and/or might be used to store and/or carry such instructions/code. In many implementations, a computer-readable medium is a physical and/or tangible storage medium. Such a medium may take the form of a non-volatile media or volatile media. Non-volatile media include, for example, optical and/or magnetic disks, such as the non-transitory storage device(s)925. Volatile media include, without limitation, dynamic memory, such as the working memory935.

Common forms of physical and/or tangible computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, any other physical medium with patterns of marks, a RAM, a PROM, EPROM, a FLASH-EPROM, any other memory chip or cartridge, or any other medium from which a computer may read instructions and/or code. Network-based and cloud-based storage systems may also be useful forms of computer-readable media.

Various forms of computer-readable media may be involved in carrying one or more sequences of one or more instructions to the processor(s)910for execution. Merely by way of example, the instructions may initially be carried on a magnetic disk and/or optical disc of a remote computer. A remote computer might load the instructions into its dynamic memory and send the instructions as signals over a transmission medium to be received and/or executed by the computing device900.

The communications subsystem930(and/or components thereof) generally will receive signals, and the bus905then might carry the signals (and/or the data, instructions, etc. carried by the signals) to the working memory935, from which the processor(s)910retrieves and executes the instructions. The instructions received by the working memory935may optionally be stored on a non-transitory storage device925either before or after execution by the processor(s)910.

It should further be understood that the components of computing device900may be distributed across a network. For example, some processing may be performed in one location using a first processor while other processing may be performed by another processor remote from the first processor. Other components of computing device900may be similarly distributed. As such, computing device900may be interpreted as a distributed computing system that performs processing in multiple locations. In some instances, computing device900may be interpreted as a single computing device, such as a distinct laptop, desktop computer, or the like, depending on the context.

All references throughout this disclosure, for example patent documents including issued or granted patents or equivalents, patent application publications, and non-patent literature documents or other source material, are hereby incorporated by reference herein in their entireties, as though individually incorporated by reference, including the following patents and patent application publications:

U.S. Pat. Nos. 5,950,202, 6,226,669; U.S. Patent Application Publications 2003/0008712, 2003/0177187, 2009/0089364, 2009/0100035, 2009/0262107, 2011/0014985, 2012/0050257, 2012/0054217; and PCT International Application Publication WO 2009/039080.

All patents and publications mentioned in this disclosure are indicative of the levels of skill of those skilled in the art to which the invention pertains. References cited herein are incorporated by reference herein in their entirety to indicate the state of the art, in some cases as of their filing date, and it is intended that this information can be employed herein, if needed, to exclude (for example, to disclaim) specific embodiments that are in the prior art.

When a group of substituents is disclosed herein, it is understood that all individual members of those groups and all subgroups and classes that can be formed using the substituents are disclosed separately. When a Markush group or other grouping is used herein, all individual members of the group and all combinations and subcombinations possible of the group are intended to be individually included in the disclosure. As used herein, “and/or” means that one, all, or any combination of items in a list separated by “and/or” are included in the list; for example “1, 2 and/or 3” is equivalent to “‘1’ or ‘2’ or ‘3’ or ‘1 and 2’ or ‘1 and 3’ or ‘2 and 3’ or ‘1, 2 and 3’”.

Every combination of components described or exemplified can be used to practice the invention, unless otherwise stated. Specific names of devices and components are intended to be exemplary, as it is known that one of skill in the art can name the same device or component differently. It will be appreciated that methods, device elements, and systems other than those specifically exemplified can be employed in the practice of the invention without resort to undue experimentation. All art-known functional equivalents, of any such methods, device elements, and systems are intended to be included in this description. Whenever a range is given in the above description, all intermediate ranges and subranges, as well as all individual values included in the ranges given are intended to be included in the disclosure.

As used herein, “comprising” is synonymous with “including,” “containing,” or “characterized by,” and is inclusive or open-ended and does not exclude additional, unrecited elements or method steps. As used herein, “consisting of” excludes any element, step, or ingredient not specified in the claim element. As used herein, “consisting essentially of” does not exclude materials or steps that do not materially affect the basic and novel characteristics of the claim. Any recitation herein of the term “comprising”, particularly in a description of method, components of system, or elements of a device, is understood to encompass those consisting essentially of and consisting of the recited features. The invention illustratively described herein suitably may be practiced in the absence of any element or elements, limitation or limitations which is not specifically disclosed herein.

The methods, systems, and devices discussed above are examples. Various configurations may omit, substitute, or add various method steps or procedures, or system components as appropriate. For instance, in alternative configurations, the methods may be performed in an order different from that described, and/or various stages or steps or modules may be added, omitted, and/or combined. Also, features described with respect to certain configurations may be combined in various other configurations. Different aspects and elements of the configurations may be combined in a similar manner. Also, technology evolves and, thus, many of the elements are examples and do not limit the scope of the disclosure or claims.

Specific details are given in the description to provide a thorough understanding of example configurations (including implementations). However, configurations may be practiced without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques have been shown without unnecessary detail in order to avoid obscuring the configurations. This description provides example configurations only, and does not limit the scope, applicability, or configurations of the claims. Rather, the preceding description of the configurations will provide those of skill with an enabling description for implementing described techniques. Various changes may be made in the function and arrangement of elements without departing from the spirit or scope of the disclosure.

Also, configurations may be described as a process which is depicted as a flow diagram or block diagram. Although each may describe the operations as a sequential process, many of the operations may be performed in parallel or concurrently. In addition, the order of the operations may be rearranged. A process may have additional steps not included in the figure. Furthermore, examples of the methods may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware, or microcode, the program code or code segments to perform the necessary tasks may be stored in a non-transitory computer-readable medium such as a storage medium. Processors may perform the described tasks.

Furthermore, the examples described herein may be implemented as logical operations in a computing device in a networked computing system environment. The logical operations may be implemented as: (i) a sequence of computer implemented instructions, steps, or program modules running on a computing device; and (ii) interconnected logic or hardware modules running within a computing device.

Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.

The terms and expressions which have been employed are used as terms of description and not of limitation, and there is no intention in the use of such terms and expressions of excluding any equivalents of the features shown and described or portions thereof, but it is recognized that various modifications are possible within the scope of the invention claimed. Thus, it should be understood that although the present invention has been specifically disclosed by preferred embodiments and optional features, modification and variation of the concepts herein disclosed may be resorted to by those skilled in the art, and that such modifications and variations are considered to be within the scope of this invention as defined by the appended claims.

Claims

  1. A method, comprising: instantiating, by a computing device, a registry of virtual containers, wherein the registry includes a plurality of entries, wherein each entry corresponds to a virtual container, and wherein each entry includes one or more of: an identifier associated with the virtual container, a requirement associated with the virtual container, a constraint associated with the virtual container, and a characteristic associated with the virtual container;receiving, by the computing device, an addendum query for adding a new entry to the registry, wherein the addendum query includes one or more of an addendum identifier for the new entry, an addendum requirement for the new entry, an addendum constraint for the new entry, and an addendum characteristic for the new entry;adding the new entry to the registry, wherein the new entry includes one or more of the addendum identifier, the addendum requirement, the addendum constraint, and the addendum characteristic;and receiving, by the computing device, a change query for modifying an existing entry in the registry, wherein the change query includes one or more of a new or changed identifier for the existing entry, a new or changed requirement for the existing entry, a new or changed constraint for the existing entry, and a new or changed characteristic for the existing entry;modifying the existing entry in the registry in include one or more of the new or changed identifier for the existing entry, the new or changed requirement for the existing entry, the new or changed constraint for the existing entry, and the new or changed characteristic.
  1. The method of claim 1 , wherein a virtual container corresponds to a particular virtual reality world hosted on a network accessible server.
  2. The method of claim 1 , further comprising: receiving, by the computing device, a query for identifying one or more virtual containers from the registry, wherein the query includes at least one of an identifier query, a requirement query, a constraint query, and a characteristic query;determining, by the computing device, one or more query results, wherein query results correspond to entries in the registry having identifiers that match the identifier query, requirements that match the requirement query, constraints that match the constraint query, or characteristics that match the characteristic query;and generating, by the computing device, an output corresponding to the one or more query results.
  3. The method of claim 3 , wherein the query corresponds to an initial filtering request for identifying one or more virtual containers accessible to a user.
  4. The method of claim 1 , wherein the identifier corresponds to one or more of a name associated with the virtual container, an owner associated with the virtual container, a network address associated with the virtual container, a unique identifier associated with the virtual container, a domain associated with the virtual container, a version number associated with the virtual container, and a registrant associated with the virtual container.
  5. The method of claim 1 , wherein the requirement corresponds to access limitations imposed by the virtual container for obtaining access to the virtual container.
  6. The method of claim 1 , wherein the requirement corresponds to hardware requirements associated with the virtual container or software requirements associated with the virtual container.
  7. The method of claim 1 , wherein the requirement corresponds to indications of required user characteristics for obtaining access to the virtual container.
  8. The method of claim 1 , wherein the constraint corresponds to limitations for receiving query results corresponding to the virtual container and for obtaining access to the virtual container.
  9. The method of claim 1 , wherein the constraint corresponds to one or more of an age limit associated with the virtual container, a language associated with the virtual container, and time limits associated with the virtual container.
  10. The method of claim 1 , wherein the characteristic corresponds to one or more of a descriptor associated with the virtual container, an authentication indicator describing whether the virtual container requires authentication, indicators of permitted uses for the virtual container, an indicator of other virtual containers accessible from within the virtual container, and a language associated with the virtual container.
  11. The method of claim 1 , wherein the characteristic corresponds to one or more portal representations for use in representing an entry point to the virtual container.
  12. The method of claim 1 , wherein the plurality of entries are organized in the registry in a hierarchical structure.
  13. The method of claim 13 , wherein the hierarchical structure includes a plurality of top-level items, each associated with a particular virtual container identifier or characteristic.
  14. The method of claim 13 , wherein each top-level item includes a plurality of entries organized beneath the top-level item, wherein the plurality of entries each relate to the particular virtual container identifier or characteristic associated with the top-level item.
  15. The method of claim 13 , wherein each top-level item includes one or more second-level item organized beneath the top-level item, wherein the one or more second-level items each relate to different characteristics, and wherein each second-level item includes a plurality of entries organized beneath the second-level item, wherein the plurality of entries each relate to the characteristic associated with the second-level item.
  16. The method of claim 13 , wherein the registry makes use of a domain name server structure.
  17. A system, comprising: one or more processors;and a non-transitory computer readable storage medium in data communication with the one or more processors, the non-transitory computer readable storage medium including instructions that, when executed by the one or more processors, cause the one or more processors to perform operations including: instantiating, by a computing device, a registry of virtual containers, wherein the registry includes a plurality of entries, wherein each entry corresponds to a virtual container, and wherein each entry includes one or more of: an identifier associated with the virtual container, a requirement associated with the virtual container, a constraint associated with the virtual container, and a characteristic associated with the virtual container;receiving an addendum query for adding a new entry to the registry, wherein the addendum query includes one or more of an addendum identifier for the new entry, an addendum requirement for the new entry, an addendum constraint for the new entry, and an addendum characteristic for the new entry;adding the new entry to the registry, wherein the new entry includes one or more of the addendum identifier, the addendum requirement, the addendum constraint, and the addendum characteristic;receiving a change query for modifying an existing entry in the registry, wherein the change query includes one or more of a new or changed identifier for the existing entry, a new or changed requirement for the existing entry, a new or changed constraint for the existing entry, and a new or changed characteristic for the existing entry;and modifying the existing entry in the registry in include one or more of the new or changed identifier for the existing entry, the new or changed requirement for the existing entry, the new or changed constraint for the existing entry, and the new or changed characteristic.
  18. A non-transitory computer readable storage medium comprising instructions that, when executed by one or more processors, cause the one or more processors to perform operations including: instantiating a registry of virtual containers, wherein the registry includes a plurality of entries, wherein each entry corresponds to a virtual container, and wherein each entry includes one or more of: an identifier associated with the virtual container, a requirement associated with the virtual container, a constraint associated with the virtual container, and a characteristic associated with the virtual container;receiving an addendum query for adding a new entry to the registry, wherein the addendum query includes one or more of an addendum identifier for the new entry, an addendum requirement for the new entry, an addendum constraint for the new entry, and an addendum characteristic for the new entry;adding the new entry to the registry, wherein the new entry includes one or more of the addendum identifier, the addendum requirement, the addendum constraint, and the addendum characteristic;receiving a change query for modifying an existing entry in the registry, wherein the change query includes one or more of a new or changed identifier for the existing entry, a new or changed requirement for the existing entry, a new or changed constraint for the existing entry, and a new or changed characteristic for the existing entry;and modifying the existing entry in the registry in include one or more of the new or changed identifier for the existing entry, the new or changed requirement for the existing entry, the new or changed constraint for the existing entry, and the new or changed characteristic.

Disclaimer: Data collected from the USPTO and may be malformed, incomplete, and/or otherwise inaccurate.