System and method for facilitating sharing of virtual three-dimensional space
AssigneeConstructive Labs
InventorMichael Roberts
Life of this patent
Estimating the term…
Abstract
One embodiment provides a system that facilitates shared virtual reality space. During operation, the system receives a first message associated with a first virtual reality object, wherein the first message includes a first address for the first virtual reality object and indicates a first action to be performed on the first virtual reality object. The system performs the first action on the first virtual reality object. The system determines a second address for a second virtual reality object that is remotely maintained and corresponds to the first virtual reality object. The system constructs a second message, which includes the second address and indicates the first action, thereby allowing the first action to be performed on the second virtual reality object.
Claims15
A method for facilitating shared virtual reality space, the method comprising:
- receiving, by a running program which is one of a plurality of running programs maintaining the shared virtual reality space, a first message associated with a first virtual reality object of a plurality of virtual reality objects which comprise edges and nodes,
- wherein an edge is an object with a sender port and a receiver port,
- wherein the first message includes a first address for the first virtual reality object and indicates a first action to be performed on the first virtual reality object,
- wherein the first address for the first virtual reality object includes:
- a first identifier for an engine associated with a simulator in which the first virtual reality object is contained;
- and
- a second identifier for an instance of the first virtual reality object associated with the engine,
- wherein the first virtual reality object is a node with one or more node ports,
- wherein the node is uniquely identified by a combination of the first identifier and the second identifier,
- wherein a respective node port can be dynamically coupled via one or more edges to ports on other nodes, which causes messages generated by the node to be communicated to another node to which the node is coupled via the respective node port and one of the one or more edges, and
- wherein the one or more edges which couple to the respective node port of the node which comprises the first virtual reality object can be connected and disconnected dynamically by the running program;
- performing the first action on the first virtual reality object;
- observing, by a first entity which has previously subscribed to view state changes to be made to the first virtual reality object, a state of the first virtual reality object;
- maintaining, for the first virtual reality object, a list that includes addresses for the first entity and other currently subscribed entities which have previously requested to view state changes to be made to the first virtual reality object;
- determining, based on the list of the addresses of the subscribed entities, a second address for a second virtual reality object that is remotely maintained and corresponds to the first virtual reality object;
- constructing a second message, which includes the second address and indicates the first action, thereby allowing the first action to be performed on the second virtual reality object;
- and
- responsive to adding to the list for the first virtual reality object a new address for a new virtual reality object and generating a representation of the first virtual reality object, constructing a third message, which includes the new address and the representation of the first virtual reality object, which causes a replica of the first virtual reality object to be created remotely based on the new address,
- wherein each message, including the first message, the second message the third message, and any message generated by a node to be communicated to another node to which the node is coupled by an edge, is routed to a message queue at a respective simulator where the message is executed, and
- wherein each message is a byte code program or equivalent which, in an execution context of a respective node by the respective simulator, effects changes to the state of the respective node, including properties and connections made to other nodes.
A computer system for facilitating shared virtual reality space, the system comprising:
- a processor;
- and
- a storage device storing instructions that when executed by the processor cause the processor to perform a method, the method comprising:
- receiving, by a running program which is one of a plurality of running programs maintaining the shared virtual reality space, a first message associated with a first virtual reality object of a plurality of virtual reality objects which comprise edges and nodes,
- wherein an edge is an object with a sender port and a receiver port,
- wherein the first message includes a first address for the first virtual reality object and indicates a first action to be performed on the first virtual reality object,
- wherein the first address for the first virtual reality object includes:
- a first identifier for an engine associated with a simulator in which the first virtual reality object is contained;
- and
- a second identifier for an instance of the first virtual reality object associated with the engine,
- wherein the first virtual reality object is a node with one or more node ports,
- wherein the node is uniquely identified by a combination of the first identifier and the second identifier,
- wherein a respective node port can be dynamically coupled via one or more edges to ports on other nodes, which causes messages generated by the node to be communicated to another node to which the node is coupled via the respective node port and one of the one or more edges, and
- wherein the one or more edges which couple to the respective node port of the node which comprises the first virtual reality object can be connected and disconnected dynamically by the running program;
- performing the first action on the first virtual reality object;
- observing, by a first entity which has previously subscribed to view state changes to be made to the first virtual reality object, a state of the first virtual reality object;
- maintaining, for the first virtual reality object, a list that includes addresses for the first entity and other currently subscribed entities which have previously requested to view state changes to be made to the first virtual reality object;
- determining, based on the list of the addresses of the subscribed entities, a second address for a second virtual reality object that is remotely maintained and corresponds to the first virtual reality object;
- constructing a second message, which includes the second address and indicates the first action, thereby allowing the first action to be performed on the second virtual reality object;
- and
- responsive to adding to the list for the first virtual reality object a new address for a new virtual reality object and generating a representation of the first virtual reality object, constructing a third message, which includes the new address and the representation of the first virtual reality object, which causes a replica of the first virtual reality object to be created remotely based on the new address,
- wherein each message, including the first message, the second message, the third message, and any message generated by a node to be communicated to another node to which the node is coupled by an edge, is routed to a message queue at a respective simulator where the message is executed, and
- wherein each message is a byte code program or equivalent which, in an execution context of a respective node by the respective simulator, effects changes to the state of the respective node, including properties and connections made to other nodes.
A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method, the method comprising:
- receiving, by a running program which is one of a plurality of running programs maintaining a shared virtual reality space, a first message associated with a first virtual reality object of a plurality of virtual reality objects which comprise edges and nodes,
- wherein an edge is an object with a sender port and a receiver port,
- wherein the first message includes a first address for the first virtual reality object and indicates a first action to be performed on the first virtual reality object,
- wherein the first address for the first virtual reality object includes:
- a first identifier for an engine associated with a simulator in which the first virtual reality object is contained;
- and
- a second identifier for an instance of the first virtual reality object associated with the engine,
- wherein the first virtual reality object is a node with one or more node ports,
- wherein the node is uniquely identified by a combination of the first identifier and the second identifier,
- wherein a respective node port can be dynamically coupled via one or more edges to ports on other nodes, which causes messages generated by the node to be communicated to another node to which the node is coupled via the respective node port and one of the one or more edges, and
- wherein the one or more edges which couple to the respective node port of the node which comprises the first virtual reality object can be connected and disconnected dynamically by the running program;
- performing the first action on the first virtual reality object;
- observing, by a first entity which has previously subscribed to view state changes to be made to the first virtual reality object, a state of the first virtual reality object;
- maintaining, for the first virtual reality object, a list that includes addresses for the first entity and other currently subscribed entities which have previously requested to view state changes to be made to the first virtual reality object;
- determining, based on the list of the addresses of the subscribed entities, a second address for a second virtual reality object that is remotely maintained and corresponds to the first virtual reality object;
- constructing a second message, which includes the second address and indicates the first action, thereby allowing the first action to be performed on the second virtual reality object;
- and
- responsive to adding to the list for the first virtual reality object a new address for a new virtual reality object and generating a representation of the first virtual reality object, constructing a third message, which includes the new address and the representation of the first virtual reality object, which causes a replica of the first virtual reality object to be created remotely based on the new address,
- wherein each message, including the first message, the second message the third message, and any message generated by a node to be communicated to another node to which the node is coupled by an edge, is routed to a message queue at a respective simulator where the message is executed;
- and
- wherein each message is a byte code program or equivalent which, in an execution context of a respective node by the respective simulator, effects changes to the state of the respective node, including properties and connections made to other nodes.
Dependencies are inferred from the claim text.