This disclosure generally relates to controls and interfaces for user interactions and experiences in a virtual reality environment.
Virtual reality is a computer-generated simulation of an environment (e.g., a 3D environment) that users can interact with in a seemingly real or physical way. A virtual reality system, which may be a single device or a group of devices, may generate this simulation for display to a user, for example, on a virtual reality headset or some other display device. The simulation may include images, sounds, haptic feedback, and/or other sensations to imitate a real or imaginary environment. As virtual reality becomes more and more prominent, its range of useful applications is rapidly broadening. The most common applications of virtual reality involve games or other interactive content, but other applications such as the viewing of visual media items (e.g., photos, videos) for entertainment or training purposes are close behind. The feasibility of using virtual reality to simulate real-life conversations and other user interactions is also being explored.
Augmented reality provides a view of the real or physical world with added computer-generated sensory inputs (e.g., visual, audible). In other words, computer-generated virtual effects may augment or supplement the real-world view. For example, a camera on a virtual reality headset may capture a real-world scene (as an image or video) and display a composite of the captured scene with computer-generated virtual objects. The virtual objects may be, for example, two-dimensional and/or three-dimensional objects, and may be stationary or animated.
Disclosed herein are a variety of different ways of rendering and interactive with a virtual (or augmented) reality environment. A virtual reality system may render a virtual environment, which may include a virtual space that is rendered for display to one or more users. The users may view and interact within this virtual space and the broader virtual environment through any suitable means. One goal of the disclosed methods is to provide an intuitive experience for users—one that gives the users a sense of “presence,” or the feeling that they are actually in the virtual environment. In particular embodiments, the virtual reality system may provide for a method of interacting with a virtual space by way of a “gaze input,” i.e., an input that is associated with the gaze of a user in the virtual space. As an example and not by way of limitation, a gaze input may be used to control video or slide-show playback. For example, a user may use a gaze input to control a scrubber element. As another example and not by way of limitation, gaze input may be used to activate “hit targets,” or regions associated with a virtual object or an interactive element (e.g., to pick up a virtual object, to browse or navigate through content). In particular embodiments, the virtual reality system may render a reticle that dynamically changes types in response to a predicted user intent (e.g., based on a context of the current virtual space, based on information associated with the user, based on the trajectory of the reticle). The different types of reticles may have different functions within the virtual space (e.g., approaching a hit target of a photo may change the reticle into a grab or a zoom reticle, while approaching a hit target at the edge of a page may change the reticle into a next-page-type reticle). Although the disclosure focuses on virtual reality, it contemplates applying the disclosed concepts to augmented reality.
In particular embodiments, the virtual reality system may render one or more virtual tools that can be used to interact with the virtual space. These tools may appear in suitable locations at suitable points, and their appearance may be contingent on a number of factors (e.g., a current context, whether a user has access, information associated with a user, information associated with a current virtual space. As an example and not by way of limitation, the tools may include means for commenting/reacting to content (e.g., likes, voice comments, video comments, or text comments with spatial and/or temporal elements), taking a selfie, customizing user avatars, creating virtual objects, painting or drawing in the virtual space, etc. In particular embodiments, the virtual reality system may render a “virtual room,” and the virtual room may have an interactive surface. The interactive surface may be a surface in the virtual room that facilitates interactions or the sharing of content among uses in the virtual room. The interactive surface may be dynamically altered based on factors such as information associated with the user or the other people in room (e.g., affinities of the user or the other people, age or other demographic information), the number of people in the room, an virtual tool that the user has picked up (e.g., a ping pong paddle), a current context (e.g., the time of day, a date, a current event), etc.
In particular embodiments, the virtual reality system may provide for a method of using controllers (e.g., handheld controllers) to interact with the virtual space. A number of different ways of interactions with controllers are disclosed. As an example and not by way of limitation, a first controller (e.g., held by the right hand) may be used to perform a trigger gesture (e.g., rotating the forearm to display the underside of the wrist), upon which a panel of items (e.g., with the items varying based on a current context) may be displayed in the virtual space. In this example, a second controller (e.g., held by the left hand) may be used to select one or more of the items.
In particular embodiments, the virtual reality system may provide various methods of initiating and receiving communications within a virtual space. As an example and not by way of limitation, a user may receive an incoming video communication on a virtual watch. In this example, the receiving user may accept the video communication, which may initially project outward from the watch, but may only be visible to the receiving user. In this example, the receiving user may then make the video communication visible to others in a virtual room by “picking up” the video and putting it on an interactive surface. Other communications methods (e.g., involving the rendering of avatars, involving text/audio communications) are disclosed herein. In particular embodiments, a user in a virtual environment may “wear” a virtual wristband or watch that, aside from providing notifications of incoming messages and calls, may provide notifications of new user experiences.
In particular embodiments, part of a virtual space may display items outside of the current virtual environment (e.g., slides, photos, video streams of other users). As an example and not by way of limitation, this partial display may be presented when a content item that makes up the virtual space is not a fully spherical content item (e.g., a video from a 180-degree camera). Alternatively, it may even be presented otherwise (e.g., as a transparent overlay over a portion of the virtual space).
In particular embodiments, a content item may have reactions or comments associated with it that have a spatial and/or temporal element. As an example and not by way of limitation, a video may have a like associated with a particular region of a the video at a particular time-point in the video. Users viewing the content item may be able to see these reactions or comments and may also be able to submit their own reactions or comments. In particular embodiments, as a user is viewing a content item, the field of view may include “hints” or indications of already submitted reactions in the periphery (e.g., in the direction of the location of the submitted reactions)—this may act to direct the user to interesting areas in the content (e.g., locations liked by other users).
In particular embodiments, the virtual reality system may render, in a virtual space (e.g., a virtual room), a virtual sign (e.g., in the form of a “jumbotron” or a ticker that may be rotating or scrolling) for presenting relevant notifications (e.g., identifying a user who just joined the meeting or started viewing the same video, comments/reactions as they appear in the video). In particular embodiments, a user may be able to manipulate or otherwise interact with comments, posts, reactions, or other elements by grabbing them with a suitable input (e.g., by way of a gaze input, hand controllers) and placing it somewhere in the virtual space or throwing it away. The elements may come out of a virtual sign or may come out of a page that a user is browsing (either privately, or collaboratively with others in the virtual space).
In particular embodiments, the virtual reality system may allow users to get an aerial view of a virtual space. The aerial view may, for example, show a virtual room and the positions of all users in the virtual room. In this example, a user may be able to “move” from one position to another (e.g., from one seat to another in a virtual meeting room) by selecting an available location.
In particular embodiments, the virtual reality system may allow users to enter, at any time or place in a virtual space, “pause mode,” which may effectively pause the experience for the user. This may be in response to the user performing a “safety gesture” or selecting some interactive element (e.g., a pause button on a virtual wristband). In particular embodiments, other avatars and/or content may disappear, get blurry, become faded, etc., which may thereby make the user feel unplugged from the experience while in pause mode. In particular embodiments, the user may be transported to a personal space (e.g., one with a virtual mirror in which the user can see himself/herself). The user may be able to exit pause mode by performing a gesture (e.g., a handshake gesture, a thumbs-up gesture) or selecting some interactive element (e.g., an “unpause” button on a virtual wristband).
In particular embodiments, the virtual reality system may allow users to customize their avatars using special virtual tools (e.g., a virtual hair dryer), or simply by selecting and altering/switching out features. Users may view and alter their avatars with the help of a virtual mirror that simulates a real mirror within a virtual space. Users may accessorize (e.g., adding hats, glasses, etc.) or add filter effects. In particular embodiments, to further facilitate avatar customization the virtual reality system may provide users with “virtual magazines” with style templates that can be implemented directly to avatars.
In particular embodiments, the virtual reality system may enable users to alter and share content items (e.g., photos/videos) in a virtual space. For example, a user may select a photo and write the word “hello” across the photo. The user may then share the altered photo. In particular embodiments, the altering may be done live, with others in the virtual space watching or collaborating in the process.
The embodiments disclosed herein are only examples, and the scope of this disclosure is not limited to them. Particular embodiments may include all, some, or none of the components, elements, features, functions, operations, or steps of the embodiments disclosed above. Embodiments according to the invention are in particular disclosed in the attached claims directed to a method, a storage medium, a system and a computer program product, wherein any feature mentioned in one claim category, e.g. method, can be claimed in another claim category, e.g. system, as well. The dependencies or references back in the attached claims are chosen for formal reasons only. However any subject matter resulting from a deliberate reference back to any previous claims (in particular multiple dependencies) can be claimed as well, so that any combination of claims and the features thereof are disclosed and can be claimed regardless of the dependencies chosen in the attached claims. The subject-matter which can be claimed comprises not only the combinations of features as set out in the attached claims but also any other combination of features in the claims, wherein each feature mentioned in the claims can be combined with any other feature or combination of other features in the claims. Furthermore, any of the embodiments and features described or depicted herein can be claimed in a separate claim and/or in any combination with any embodiment or feature described or depicted herein or with any of the features of the attached claims
This disclosure contemplates any suitable network 110. As an example and not by way of limitation, one or more portions of network 110 may include an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a cellular telephone network, or a combination of two or more of these. Network 110 may include one or more networks 110.
Links 150 may connect client system 130, social-networking system 160, and third-party system 170 to communication network 110 or to each other. This disclosure contemplates any suitable links 150. In particular embodiments, one or more links 150 include one or more wireline (such as for example Digital Subscriber Line (DSL) or Data Over Cable Service Interface Specification (DOC SIS)), wireless (such as for example Wi-Fi or Worldwide Interoperability for Microwave Access (WiMAX)), or optical (such as for example Synchronous Optical Network (SONET) or Synchronous Digital Hierarchy (SDH)) links. In particular embodiments, one or more links 150 each include an ad hoc network, an intranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a WWAN, a MAN, a portion of the Internet, a portion of the PSTN, a cellular technology-based network, a satellite communications technology-based network, another link 150, or a combination of two or more such links 150. Links 150 need not necessarily be the same throughout network environment 100. One or more first links 150 may differ in one or more respects from one or more second links 150.
In particular embodiments, client system 130 may be an electronic device including hardware, software, or embedded logic components or a combination of two or more such components and capable of carrying out the appropriate functionalities implemented or supported by client system 130. As an example and not by way of limitation, a client system 130 may include a computer system such as a desktop computer, notebook or laptop computer, netbook, a tablet computer, e-book reader, GPS device, camera, personal digital assistant (PDA), handheld electronic device, cellular telephone, smartphone, augmented/virtual reality device, other suitable electronic device, or any suitable combination thereof. This disclosure contemplates any suitable client systems 130. A client system 130 may enable a network user at client system 130 to access network 110. A client system 130 may enable its user to communicate with other users at other client systems 130.
In particular embodiments, client system 130 may include a web browser 132, such as MICROSOFT INTERNET EXPLORER, GOOGLE CHROME or MOZILLA FIREFOX, and may have one or more add-ons, plug-ins, or other extensions, such as TOOLBAR or YAHOO TOOLBAR. A user at client system 130 may enter a Uniform Resource Locator (URL) or other address directing the web browser 132 to a particular server (such as server 162, or a server associated with a third-party system 170), and the web browser 132 may generate a Hyper Text Transfer Protocol (HTTP) request and communicate the HTTP request to server. The server may accept the HTTP request and communicate to client system 130 one or more Hyper Text Markup Language (HTML) files responsive to the HTTP request. Client system 130 may render a webpage based on the HTML files from the server for presentation to the user. This disclosure contemplates any suitable webpage files. As an example and not by way of limitation, webpages may render from HTML files, Extensible Hyper Text Markup Language (XHTML) files, or Extensible Markup Language (XML) files, according to particular needs. Such pages may also execute scripts such as, for example and without limitation, those written in JAVASCRIPT, JAVA, MICROSOFT SILVERLIGHT, combinations of markup language and scripts such as AJAX (Asynchronous JAVASCRIPT and XML), and the like. Herein, reference to a webpage encompasses one or more corresponding webpage files (which a browser may use to render the webpage) and vice versa, where appropriate.
In particular embodiments, social-networking system 160 may be a network-addressable computing system that can host an online social network. Social-networking system 160 may generate, store, receive, and send social-networking data, such as, for example, user-profile data, concept-profile data, social-graph information, or other suitable data related to the online social network. Social-networking system 160 may be accessed by the other components of network environment 100 either directly or via network 110. As an example and not by way of limitation, client system 130 may access social-networking system 160 using a web browser 132, or a native application associated with social-networking system 160 (e.g., a mobile social-networking application, a messaging application, another suitable application, or any combination thereof) either directly or via network 110. In particular embodiments, social-networking system 160 may include one or more servers 162. Each server 162 may be a unitary server or a distributed server spanning multiple computers or multiple datacenters. Servers 162 may be of various types, such as, for example and without limitation, web server, news server, mail server, message server, advertising server, file server, application server, exchange server, database server, proxy server, another server suitable for performing functions or processes described herein, or any combination thereof. In particular embodiments, each server 162 may include hardware, software, or embedded logic components or a combination of two or more such components for carrying out the appropriate functionalities implemented or supported by server 162. In particular embodiments, social-networking system 160 may include one or more data stores 164. Data stores 164 may be used to store various types of information. In particular embodiments, the information stored in data stores 164 may be organized according to specific data structures. In particular embodiments, each data store 164 may be a relational, columnar, correlation, or other suitable database. Although this disclosure describes or illustrates particular types of databases, this disclosure contemplates any suitable types of databases. Particular embodiments may provide interfaces that enable a client system 130, a social-networking system 160, or a third-party system 170 to manage, retrieve, modify, add, or delete, the information stored in data store 164.
In particular embodiments, social-networking system 160 may store one or more social graphs in one or more data stores 164. In particular embodiments, a social graph may include multiple nodes—which may include multiple user nodes (each corresponding to a particular user) or multiple concept nodes (each corresponding to a particular concept)—and multiple edges connecting the nodes. Social-networking system 160 may provide users of the online social network the ability to communicate and interact with other users. In particular embodiments, users may join the online social network via social-networking system 160 and then add connections (e.g., relationships) to a number of other users of social-networking system 160 to whom they want to be connected. Herein, the term “friend” may refer to any other user of social-networking system 160 with whom a user has formed a connection, association, or relationship via social-networking system 160.
In particular embodiments, social-networking system 160 may provide users with the ability to take actions on various types of items or objects, supported by social-networking system 160. As an example and not by way of limitation, the items and objects may include groups or social networks to which users of social-networking system 160 may belong, events or calendar entries in which a user might be interested, computer-based applications that a user may use, transactions that allow users to buy or sell items via the service, interactions with advertisements that a user may perform, or other suitable items or objects. A user may interact with anything that is capable of being represented in social-networking system 160 or by an external system of third-party system 170, which is separate from social-networking system 160 and coupled to social-networking system 160 via a network 110.
In particular embodiments, social-networking system 160 may be capable of linking a variety of entities. As an example and not by way of limitation, social-networking system 160 may enable users to interact with each other as well as receive content from third-party systems 170 or other entities, or to allow users to interact with these entities through an application programming interfaces (API) or other communication channels.
In particular embodiments, a third-party system 170 may include one or more types of servers, one or more data stores, one or more interfaces, including but not limited to APIs, one or more web services, one or more content sources, one or more networks, or any other suitable components, e.g., that servers may communicate with. A third-party system 170 may be operated by a different entity from an entity operating social-networking system 160. In particular embodiments, however, social-networking system 160 and third-party systems 170 may operate in conjunction with each other to provide social-networking services to users of social-networking system 160 or third-party systems 170. In this sense, social-networking system 160 may provide a platform, or backbone, which other systems, such as third-party systems 170, may use to provide social-networking services and functionality to users across the Internet.
In particular embodiments, a third-party system 170 may include a third-party content object provider. A third-party content object provider may include one or more sources of content objects, which may be communicated to a client system 130. As an example and not by way of limitation, content objects may include information regarding things or activities of interest to the user, such as, for example, movie show times, movie reviews, restaurant reviews, restaurant menus, product information and reviews, or other suitable information. As another example and not by way of limitation, content objects may include incentive content objects, such as coupons, discount tickets, gift certificates, or other suitable incentive objects.
In particular embodiments, social-networking system 160 also includes user-generated content objects, which may enhance a user's interactions with social-networking system 160. User-generated content may include anything a user can add, upload, send, or “post” to social-networking system 160. As an example and not by way of limitation, a user communicates posts to social-networking system 160 from a client system 130. Posts may include data such as status updates or other textual data, location information, photos, videos, links, music or other similar data or media. Content may also be added to social-networking system 160 by a third-party through a “communication channel,” such as a newsfeed or stream.
In particular embodiments, social-networking system 160 may include a variety of servers, sub-systems, programs, modules, logs, and data stores. In particular embodiments, social-networking system 160 may include one or more of the following: a web server, action logger, API-request server, relevance-and-ranking engine, content-object classifier, notification controller, action log, third-party-content-object-exposure log, inference module, authorization/privacy server, search module, advertisement-targeting module, user-interface module, user-profile store, connection store, third-party content store, or location store. Social-networking system 160 may also include suitable components such as network interfaces, security mechanisms, load balancers, failover servers, management-and-network-operations consoles, other suitable components, or any suitable combination thereof. In particular embodiments, social-networking system 160 may include one or more user-profile stores for storing user profiles. A user profile may include, for example, biographic information, demographic information, behavioral information, social information, or other types of descriptive information, such as work experience, educational history, hobbies or preferences, interests, affinities, or location. Interest information may include interests related to one or more categories. Categories may be general or specific. As an example and not by way of limitation, if a user “likes” an article about a brand of shoes the category may be the brand, or the general category of “shoes” or “clothing.” A connection store may be used for storing connection information about users. The connection information may indicate users who have similar or common work experience, group memberships, hobbies, educational history, or are in any way related or share common attributes. The connection information may also include user-defined connections between different users and content (both internal and external). A web server may be used for linking social-networking system 160 to one or more client systems 130 or one or more third-party system 170 via network 110. The web server may include a mail server or other messaging functionality for receiving and routing messages between social-networking system 160 and one or more client systems 130. An API-request server may allow a third-party system 170 to access information from social-networking system 160 by calling one or more APIs. An action logger may be used to receive communications from a web server about a user's actions on or off social-networking system 160. In conjunction with the action log, a third-party-content-object log may be maintained of user exposures to third-party-content objects. A notification controller may provide information regarding content objects to a client system 130. Information may be pushed to a client system 130 as notifications, or information may be pulled from client system 130 responsive to a request received from client system 130. Authorization servers may be used to enforce one or more privacy settings of the users of social-networking system 160. A privacy setting of a user determines how particular information associated with a user can be shared. The authorization server may allow users to opt in to or opt out of having their actions logged by social-networking system 160 or shared with other systems (e.g., third-party system 170), such as, for example, by setting appropriate privacy settings. Third-party-content-object stores may be used to store content objects received from third parties, such as a third-party system 170. Location stores may be used for storing location information received from client systems 130 associated with users. Advertisement-pricing modules may combine social information, the current time, location information, or other suitable information to provide relevant advertisements, in the form of notifications, to a user.
In particular embodiments, a user node 202 may correspond to a user of social-networking system 160. As an example and not by way of limitation, a user may be an individual (human user), an entity (e.g., an enterprise, business, or third-party application), or a group (e.g., of individuals or entities) that interacts or communicates with or over social-networking system 160. In particular embodiments, when a user registers for an account with social-networking system 160, social-networking system 160 may create a user node 202 corresponding to the user, and store the user node 202 in one or more data stores. Users and user nodes 202 described herein may, where appropriate, refer to registered users and user nodes 202 associated with registered users. In addition or as an alternative, users and user nodes 202 described herein may, where appropriate, refer to users that have not registered with social-networking system 160. In particular embodiments, a user node 202 may be associated with information provided by a user or information gathered by various systems, including social-networking system 160. As an example and not by way of limitation, a user may provide his or her name, profile picture, contact information, birth date, sex, marital status, family status, employment, education background, preferences, interests, or other demographic information. In particular embodiments, a user node 202 may be associated with one or more data objects corresponding to information associated with a user. In particular embodiments, a user node 202 may correspond to one or more webpages.
In particular embodiments, a concept node 204 may correspond to a concept. As an example and not by way of limitation, a concept may correspond to a place (such as, for example, a movie theater, restaurant, landmark, or city); a website (such as, for example, a website associated with social-network system 160 or a third-party website associated with a web-application server); an entity (such as, for example, a person, business, group, sports team, or celebrity); a resource (such as, for example, an audio file, video file, digital photo, text file, structured document, or application) which may be located within social-networking system 160 or on an external server, such as a web-application server; real or intellectual property (such as, for example, a sculpture, painting, movie, game, song, idea, photograph, or written work); a game; an activity; an idea or theory; an object in a augmented/virtual reality environment; another suitable concept; or two or more such concepts. A concept node 204 may be associated with information of a concept provided by a user or information gathered by various systems, including social-networking system 160. As an example and not by way of limitation, information of a concept may include a name or a title; one or more images (e.g., an image of the cover page of a book); a location (e.g., an address or a geographical location); a website (which may be associated with a URL); contact information (e.g., a phone number or an email address); other suitable concept information; or any suitable combination of such information. In particular embodiments, a concept node 204 may be associated with one or more data objects corresponding to information associated with concept node 204. In particular embodiments, a concept node 204 may correspond to one or more webpages.
In particular embodiments, a node in social graph 200 may represent or be represented by a webpage (which may be referred to as a “profile page”). Profile pages may be hosted by or accessible to social-networking system 160. Profile pages may also be hosted on third-party websites associated with a third-party system 170. As an example and not by way of limitation, a profile page corresponding to a particular external webpage may be the particular external webpage and the profile page may correspond to a particular concept node 204. Profile pages may be viewable by all or a selected subset of other users. As an example and not by way of limitation, a user node 202 may have a corresponding user-profile page in which the corresponding user may add content, make declarations, or otherwise express himself or herself. As another example and not by way of limitation, a concept node 204 may have a corresponding concept-profile page in which one or more users may add content, make declarations, or express themselves, particularly in relation to the concept corresponding to concept node 204.
In particular embodiments, a concept node 204 may represent a third-party webpage or resource hosted by a third-party system 170. The third-party webpage or resource may include, among other elements, content, a selectable or other icon, or other inter-actable object (which may be implemented, for example, in JavaScript, AJAX, or PHP codes) representing an action or activity. As an example and not by way of limitation, a third-party webpage may include a selectable icon such as “like,” “check-in,” “eat,” “recommend,” or another suitable action or activity. A user viewing the third-party webpage may perform an action by selecting one of the icons (e.g., “check-in”), causing a client system 130 to send to social-networking system 160 a message indicating the user's action. In response to the message, social-networking system 160 may create an edge (e.g., a check-in-type edge) between a user node 202 corresponding to the user and a concept node 204 corresponding to the third-party webpage or resource and store edge 206 in one or more data stores.
In particular embodiments, a pair of nodes in social graph 200 may be connected to each other by one or more edges 206. An edge 206 connecting a pair of nodes may represent a relationship between the pair of nodes. In particular embodiments, an edge 206 may include or represent one or more data objects or attributes corresponding to the relationship between a pair of nodes. As an example and not by way of limitation, a first user may indicate that a second user is a “friend” of the first user. In response to this indication, social-networking system 160 may send a “friend request” to the second user. If the second user confirms the “friend request,” social-networking system 160 may create an edge 206 connecting the first user's user node 202 to the second user's user node 202 in social graph 200 and store edge 206 as social-graph information in one or more of data stores 164. In the example of
In particular embodiments, an edge 206 between a user node 202 and a concept node 204 may represent a particular action or activity performed by a user associated with user node 202 toward a concept associated with a concept node 204. As an example and not by way of limitation, as illustrated in
In particular embodiments, social-networking system 160 may create an edge 206 between a user node 202 and a concept node 204 in social graph 200. As an example and not by way of limitation, a user viewing a concept-profile page (such as, for example, by using a web browser or a special-purpose application hosted by the user's client system 130) may indicate that he or she likes the concept represented by the concept node 204 by clicking or selecting a “Like” icon, which may cause the user's client system 130 to send to social-networking system 160 a message indicating the user's liking of the concept associated with the concept-profile page. In response to the message, social-networking system 160 may create an edge 206 between user node 202 associated with the user and concept node 204, as illustrated by “like” edge 206 between the user and concept node 204. In particular embodiments, social-networking system 160 may store an edge 206 in one or more data stores. In particular embodiments, an edge 206 may be automatically formed by social-networking system 160 in response to a particular user action. As an example and not by way of limitation, if a first user uploads a picture, watches a movie, or listens to a song, an edge 206 may be formed between user node 202 corresponding to the first user and concept nodes 204 corresponding to those concepts. Although this disclosure describes forming particular edges 206 in particular manners, this disclosure contemplates forming any suitable edges 206 in any suitable manner.
In particular embodiments, social-networking system 160 may determine the social-graph affinity (which may be referred to herein as “affinity”) of various social-graph entities for each other. Affinity may represent the strength of a relationship or level of interest between particular objects associated with the online social network, such as users, concepts, content, actions, advertisements, other objects associated with the online social network, or any suitable combination thereof. Affinity may also be determined with respect to objects associated with third-party systems 170 or other suitable systems. An overall affinity for a social-graph entity for each user, subject matter, or type of content may be established. The overall affinity may change based on continued monitoring of the actions or relationships associated with the social-graph entity. Although this disclosure describes determining particular affinities in a particular manner, this disclosure contemplates determining any suitable affinities in any suitable manner.
In particular embodiments, social-networking system 160 may measure or quantify social-graph affinity using an affinity coefficient (which may be referred to herein as “coefficient”). The coefficient may represent or quantify the strength of a relationship between particular objects associated with the online social network. The coefficient may also represent a probability or function that measures a predicted probability that a user will perform a particular action based on the user's interest in the action. In this way, a user's future actions may be predicted based on the user's prior actions, where the coefficient may be calculated at least in part on the history of the user's actions. Coefficients may be used to predict any number of actions, which may be within or outside of the online social network. As an example and not by way of limitation, these actions may include various types of communications, such as sending messages, posting content, or commenting on content; various types of a observation actions, such as accessing or viewing profile pages, media, or other suitable content; various types of coincidence information about two or more social-graph entities, such as being in the same group, tagged in the same photograph, checked-in at the same location, or attending the same event; or other suitable actions. Although this disclosure describes measuring affinity in a particular manner, this disclosure contemplates measuring affinity in any suitable manner.
In particular embodiments, social-networking system 160 may use a variety of factors to calculate a coefficient. These factors may include, for example, user actions, types of relationships between objects, location information, other suitable factors, or any combination thereof. In particular embodiments, different factors may be weighted differently when calculating the coefficient. The weights for each factor may be static or the weights may change according to, for example, the user, the type of relationship, the type of action, the user's location, and so forth. Ratings for the factors may be combined according to their weights to determine an overall coefficient for the user. As an example and not by way of limitation, particular user actions may be assigned both a rating and a weight while a relationship associated with the particular user action is assigned a rating and a correlating weight (e.g., so the weights total 100%). To calculate the coefficient of a user towards a particular object, the rating assigned to the user's actions may comprise, for example, 60% of the overall coefficient, while the relationship between the user and the object may comprise 40% of the overall coefficient. In particular embodiments, the social-networking system 160 may consider a variety of variables when determining weights for various factors used to calculate a coefficient, such as, for example, the time since information was accessed, decay factors, frequency of access, relationship to information or relationship to the object about which information was accessed, relationship to social-graph entities connected to the object, short- or long-term averages of user actions, user feedback, other suitable variables, or any combination thereof. As an example and not by way of limitation, a coefficient may include a decay factor that causes the strength of the signal provided by particular actions to decay with time, such that more recent actions are more relevant when calculating the coefficient. The ratings and weights may be continuously updated based on continued tracking of the actions upon which the coefficient is based. Any type of process or algorithm may be employed for assigning, combining, averaging, and so forth the ratings for each factor and the weights assigned to the factors. In particular embodiments, social-networking system 160 may determine coefficients using machine-learning algorithms trained on historical actions and past user responses, or data farmed from users by exposing them to various options and measuring responses. Although this disclosure describes calculating coefficients in a particular manner, this disclosure contemplates calculating coefficients in any suitable manner.
In particular embodiments, social-networking system 160 may calculate a coefficient based on a user's actions. Social-networking system 160 may monitor such actions on the online social network, on a third-party system 170, on other suitable systems, or any combination thereof. Any suitable type of user actions may be tracked or monitored. Typical user actions include viewing profile pages, creating or posting content, interacting with content, tagging or being tagged in images, joining groups, listing and confirming attendance at events, checking-in at locations, liking particular pages, creating pages, and performing other tasks that facilitate social action. In particular embodiments, social-networking system 160 may calculate a coefficient based on the user's actions with particular types of content. The content may be associated with the online social network, a third-party system 170, or another suitable system. The content may include users, profile pages, posts, news stories, headlines, instant messages, chat room conversations, emails, advertisements, pictures, video, music, other suitable objects, or any combination thereof. Social-networking system 160 may analyze a user's actions to determine whether one or more of the actions indicate an affinity for subject matter, content, other users, and so forth. As an example and not by way of limitation, if a user frequently posts content related to “coffee” or variants thereof, social-networking system 160 may determine the user has a high coefficient with respect to the concept “coffee”. Particular actions or types of actions may be assigned a higher weight and/or rating than other actions, which may affect the overall calculated coefficient. As an example and not by way of limitation, if a first user emails a second user, the weight or the rating for the action may be higher than if the first user simply views the user-profile page for the second user.
In particular embodiments, social-networking system 160 may calculate a coefficient based on the type of relationship between particular objects. Referencing the social graph 200, social-networking system 160 may analyze the number and/or type of edges 206 connecting particular user nodes 202 and concept nodes 204 when calculating a coefficient. As an example and not by way of limitation, user nodes 202 that are connected by a spouse-type edge (representing that the two users are married) may be assigned a higher coefficient than a user nodes 202 that are connected by a friend-type edge. In other words, depending upon the weights assigned to the actions and relationships for the particular user, the overall affinity may be determined to be higher for content about the user's spouse than for content about the user's friend. In particular embodiments, the relationships a user has with another object may affect the weights and/or the ratings of the user's actions with respect to calculating the coefficient for that object. As an example and not by way of limitation, if a user is tagged in a first photo, but merely likes a second photo, social-networking system 160 may determine that the user has a higher coefficient with respect to the first photo than the second photo because having a tagged-in-type relationship with content may be assigned a higher weight and/or rating than having a like-type relationship with content. In particular embodiments, social-networking system 160 may calculate a coefficient for a first user based on the relationship one or more second users have with a particular object. In other words, the connections and coefficients other users have with an object may affect the first user's coefficient for the object. As an example and not by way of limitation, if a first user is connected to or has a high coefficient for one or more second users, and those second users are connected to or have a high coefficient for a particular object, social-networking system 160 may determine that the first user should also have a relatively high coefficient for the particular object. In particular embodiments, the coefficient may be based on the degree of separation between particular objects. The lower coefficient may represent the decreasing likelihood that the first user will share an interest in content objects of the user that is indirectly connected to the first user in the social graph 200. As an example and not by way of limitation, social-graph entities that are closer in the social graph 200 (i.e., fewer degrees of separation) may have a higher coefficient than entities that are further apart in the social graph 200.
In particular embodiments, social-networking system 160 may calculate a coefficient based on location information. Objects that are geographically closer to each other may be considered to be more related or of more interest to each other than more distant objects. In particular embodiments, the coefficient of a user towards a particular object may be based on the proximity of the object's location to a current location associated with the user (or the location of a client system 130 of the user). A first user may be more interested in other users or concepts that are closer to the first user. As an example and not by way of limitation, if a user is one mile from an airport and two miles from a gas station, social-networking system 160 may determine that the user has a higher coefficient for the airport than the gas station based on the proximity of the airport to the user.
In particular embodiments, social-networking system 160 may perform particular actions with respect to a user based on coefficient information. Coefficients may be used to predict whether a user will perform a particular action based on the user's interest in the action. A coefficient may be used when generating or presenting any type of objects to a user, such as advertisements, search results, news stories, media, messages, notifications, or other suitable objects. The coefficient may also be utilized to rank and order such objects, as appropriate. In this way, social-networking system 160 may provide information that is relevant to user's interests and current circumstances, increasing the likelihood that they will find such information of interest. In particular embodiments, social-networking system 160 may generate content based on coefficient information. Content objects may be provided or selected based on coefficients specific to a user. As an example and not by way of limitation, the coefficient may be used to generate media for the user, where the user may be presented with media for which the user has a high overall coefficient with respect to the media object. As another example and not by way of limitation, the coefficient may be used to generate advertisements for the user, where the user may be presented with advertisements for which the user has a high overall coefficient with respect to the advertised object. In particular embodiments, social-networking system 160 may generate search results based on coefficient information. Search results for a particular user may be scored or ranked based on the coefficient associated with the search results with respect to the querying user. As an example and not by way of limitation, search results corresponding to objects with higher coefficients may be ranked higher on a search-results page than results corresponding to objects having lower coefficients.
In particular embodiments, social-networking system 160 may calculate a coefficient in response to a request for a coefficient from a particular system or process. To predict the likely actions a user may take (or may be the subject of) in a given situation, any process may request a calculated coefficient for a user. The request may also include a set of weights to use for various factors used to calculate the coefficient. This request may come from a process running on the online social network, from a third-party system 170 (e.g., via an API or other communication channel), or from another suitable system. In response to the request, social-networking system 160 may calculate the coefficient (or access the coefficient information if it has previously been calculated and stored). In particular embodiments, social-networking system 160 may measure an affinity with respect to a particular process. Different processes (both internal and external to the online social network) may request a coefficient for a particular object or set of objects. Social-networking system 160 may provide a measure of affinity that is relevant to the particular process that requested the measure of affinity. In this way, each process receives a measure of affinity that is tailored for the different context in which the process will use the measure of affinity.
In connection with social-graph affinity and affinity coefficients, particular embodiments may utilize one or more systems, components, elements, functions, methods, operations, or steps disclosed in U.S. patent application Ser. No. 11/503,093, filed 11 Aug. 2006, U.S. patent application Ser. No. 12/977,027, filed 22 Dec. 2010, U.S. patent application Ser. No. 12/978,265, filed 23 Dec. 2010, and U.S. patent application Ser. No. 13/632,869, filed 1 Oct. 2012, each of which is incorporated by reference.
In particular embodiments, one or more of the content objects of the online social network may be associated with a privacy setting. The privacy settings (or “access settings”) for an object may be stored in any suitable manner, such as, for example, in association with the object, in an index on an authorization server, in another suitable manner, or any combination thereof. A privacy setting of an object may specify how the object (or particular information associated with an object) can be accessed (e.g., viewed or shared) using the online social network. Where the privacy settings for an object allow a particular user to access that object, the object may be described as being “visible” with respect to that user. As an example and not by way of limitation, a user of the online social network may specify privacy settings for a user-profile page that identify a set of users that may access the work experience information on the user-profile page, thus excluding other users from accessing the information. In particular embodiments, the privacy settings may specify a “blocked list” of users that should not be allowed to access certain information associated with the object. In other words, the blocked list may specify one or more users or entities for which an object is not visible. As an example and not by way of limitation, a user may specify a set of users that may not access photos albums associated with the user, thus excluding those users from accessing the photo albums (while also possibly allowing certain users not within the set of users to access the photo albums). In particular embodiments, privacy settings may be associated with particular social-graph elements. Privacy settings of a social-graph element, such as a node or an edge, may specify how the social-graph element, information associated with the social-graph element, or content objects associated with the social-graph element can be accessed using the online social network. As an example and not by way of limitation, a particular concept node 204 corresponding to a particular photo may have a privacy setting specifying that the photo may only be accessed by users tagged in the photo and their friends. In particular embodiments, privacy settings may allow users to opt in or opt out of having their actions logged by social-networking system 160 or shared with other systems (e.g., third-party system 170). In particular embodiments, the privacy settings associated with an object may specify any suitable granularity of permitted access or denial of access. As an example and not by way of limitation, access or denial of access may be specified for particular users (e.g., only me, my roommates, and my boss), users within a particular degrees-of-separation (e.g., friends, or friends-of-friends), user groups (e.g., the gaming club, my family), user networks (e.g., employees of particular employers, students or alumni of particular university), all users (“public”), no users (“private”), users of third-party systems 170, particular applications (e.g., third-party applications, external websites), other suitable users or entities, or any combination thereof. Although this disclosure describes using particular privacy settings in a particular manner, this disclosure contemplates using any suitable privacy settings in any suitable manner.
In particular embodiments, one or more servers 162 may be authorization/privacy servers for enforcing privacy settings. In response to a request from a user (or other entity) for a particular object stored in a data store 164, social-networking system 160 may send a request to the data store 164 for the object. The request may identify the user associated with the request and may only be sent to the user (or a client system 130 of the user) if the authorization server determines that the user is authorized to access the object based on the privacy settings associated with the object. If the requesting user is not authorized to access the object, the authorization server may prevent the requested object from being retrieved from the data store 164, or may prevent the requested object from being sent to the user. In the search query context, an object may only be generated as a search result if the querying user is authorized to access the object. In other words, the object must have a visibility that is visible to the querying user. If the object has a visibility that is not visible to the user, the object may be excluded from the search results. Although this disclosure describes enforcing privacy settings in a particular manner, this disclosure contemplates enforcing privacy settings in any suitable manner.
In particular embodiments, the virtual reality system may receive one or more inputs from an input device (e.g., the headset device) that specify an intent by the user to view a particular region of the virtual space. In particular embodiments, these inputs may include a gaze input that indicates a location of a user-intended focal point within a region of the virtual space. As an example and not by way of limitation, referencing
In particular embodiments, the headset device may not include a display mechanism and may simply have a gaze-tracking mechanism. As an example and not by way of limitation, the virtual space may be displayed on one or more screens (e.g., surrounding all or a portion of the user's viewable radius). In particular embodiments, the headset device may not include a gaze-tracking mechanism and may simply have a display mechanism. As an example and not by way of limitation, the user's gaze may be tracked by one or more devices located remotely (e.g., one or more cameras or other sensors pointed toward the user that track the head and/or pupils of the user). In particular embodiments, the virtual reality system may not require a headset device, in which case the display of the virtual space and the tracking of the user's gaze may occur using other means. As an example and not by way of limitation, the virtual space may be displayed on one or more screens (e.g., surrounding all or a portion of the user's viewable radius), and the user's gaze may be tracked by one or more devices located remotely (e.g., one or more cameras pointed at the user that track the head or pupils of the user).
In particular embodiments, a reticle may be superimposed directly over, around, or near the focal point of the user's field of view in the displayed region of the virtual space. As used herein, the term “reticle” refers to a guide that may visually indicate a location of the focal point. In particular embodiments, the reticle may be a generated image that is overlaid by the virtual reality system on the display. In particular embodiments, the reticle may be a physical element (e.g., fibers embedded on a display screen). The reticle may act as a sighting guide that aids the user in shifting or adjusting the focal point with added precision.
In particular embodiments, gaze inputs may be used as a means of interacting with content in the virtual space. In particular embodiments, the user may be able to interact with virtual objects in the virtual space by aiming the focal point at “hit targets,” which may be regions associated with the virtual object or an interactive element. As an example and not by way of limitation, a hit target associated with a particular virtual object may be a subregion of the currently displayed region having a boundary extending around the particular virtual object. In this example, the user may aim the focal point at the subregion (e.g., by adjusting the position of a reticle to a point within the subregion) to interact with (e.g., select, pick up, push, etc.) the virtual object. In particular embodiments, the interaction may only occur once the user has aimed the focal point at the associated hit target for a threshold period of time. As an example and not by way of limitation, a virtual object may only be selected once the focal point has been aimed at the associated hit target for one second. In particular embodiments, one or more of the hit targets may be “sticky” such that a reticle may gravitate toward the hit targets as the focal point approaches these hit targets. In these embodiments, the virtual reality system may effectively be predicting a user intent to aim at these hit targets. The virtual reality system may predict such user intent based on any of several factors. As an example and not by way of limitation, such an intent may be predicted when the focal point gets within a threshold distance of the boundary of the hit target, when there is a threshold degree of inertia toward the boundary of the hit target based on a location and a trajectory of the focal point. In particular embodiments, the virtual reality system may not render a reticle until the virtual reality system predicts that there is a user intent to interact with virtual objects (or the virtual space generally). As an example and not by way of limitation, a reticle may not be rendered on the display until it is determined that the focal point is approaching a hit target. Although the disclosure focuses on selecting hit targets using a gaze input, the disclosure contemplates selecting hit targets using any suitable input. As an example and not by way of limitation, a user may select a hit target using a controller that corresponds to a rendering of the user's hand. In this example, the user may move the controller and cause the rendering of the user's hand to point at the hit target, tap the hit target, grab the hit target, etc., and may as a result activate the hit target in an intended manner. A point gesture may be performed with a controller by pressing a button, performing some gesture in the virtual world, performing some gesture in the real world (e.g., lifting the finger in the real world off a controller, causing the finger to point in the virtual world—this may be particularly intuitive since users may be acting out the act of pointing in real life), and/or by any other suitable method. In particular embodiments, the point gesture may cause a beam (e.g., a laser-pointer beam) to emanate from the finger to aid with pointing at particular areas or items with accuracy (e.g., especially in cases where the area or item that is being pointed to is far away within the virtual space).
In particular embodiments, the user may be able to use gaze inputs to navigate a menu of images (e.g., photos, renderings), videos, interactive content (e.g., games or other experiences that give users a degree of control over what occurs in the content), etc.—collectively termed herein as “visual media items”—and to view particular visual media items. In particular embodiments, the visual media items may be spherical or otherwise immersive in nature (e.g., 360-degree visual media items, 180-degree visual media items, panorama or wide-angle visual media items, etc.). For purposes of this disclosure, the terms “spherical” and “360-degree” may be used interchangeably. In these embodiments, the user may be able to use gaze inputs to view different regions of the images or videos by adjusting the focal point, as described herein.
In particular embodiments, the user may be able to select individual visual media items that are presented within a feed or subfeed to view their respective content. In particular embodiments, the visual media items may be presented as pages, with a set of visual media items on each page (e.g., as illustrated in
In particular embodiments, the user may be able to use speech input (e.g., using voice commands) to perform some of the same functions described herein in the context of gaze inputs. As an example and not by way of limitation, the user may be able to pause or skip to the next visual media item by speaking appropriate voice commands (e.g., “pause,” “next”). In particular embodiments, speech inputs may be used in addition to alternative to gaze inputs.
In particular embodiments, just as in the case with images, videos may be presented as a slide show (i.e., proceeding from one to the next). Furthermore, in particular embodiments, just as in the case with images, the virtual reality system may also display related videos (or other visual media items) that were not explicitly selected by the user. In particular embodiments, the user may be able to proceed to a next or previous video by aiming the focal point at appropriate hit targets (e.g., a “next” or a “previous” button). In particular embodiments, the user may select both images and videos for display and both types of visual media items may be presented to the user one in succession.
In particular embodiments, the content that appears in the feeds, subfeeds, or next in a slide show of visual media items may be based on a conversation analysis performed by the virtual reality system. The conversation analysis may be based on speech recognition of conversations (which may comprise speech between two or more users, or may simply comprise speech by a user with no other user present/listening), text or image (e.g., emoji) analysis of conversations (e.g., if users are communication in text or images), video analysis (e.g., analyzing communications in sign language and/or body language), etc. The conversation analysis may determine particular topics. As an example and not by way of limitation, the conversation analysis may determine a particular topic when one or more keywords associated with the particular topic are detected. In particular embodiments, the virtual reality system may promote for presentation in a feed, subfeed, or slide show one or more visual media content items that are associated with these determined particular topics (e.g., related photos, videos, posts, ads, etc.). As an example and not by way of limitation, a first user and a second user may have started discussing the results of a recent election debate while viewing a cat video. In this example, the virtual reality system may detect the topic “Election Debate” and may promote videos associated with that topic (e.g., because the users may have changed conversations and as a result their interest in content may have changed). The presentation may be private to the user or may be presented to a group of users in a shared virtual space (e.g., to the subset of users who are engaged in a conversation within a virtual room, to users who have meet the user's and the content's privacy settings for sharing, users who fulfill both criteria, etc.). Similarly, in particular embodiments, the determination of the particular topics may be performed on an individual basis or may be performed for the group of users in the shared virtual space. In particular embodiments, the determination of the particular topics may be based on a current context as described herein, including information related to the user (e.g., social graph information from the social graph 200) for whom the particular topics are being determined. In particular embodiments, the virtual reality system may use one or more suitable machine learning algorithms to optimize its conversation analysis functionality over time. In particular embodiments, a machine learning algorithm may be based on or may be focused on data specifically acquired from user interactions in virtual reality. In particular embodiments, a machine learning algorithm may be based on data acquired from the social-networking system 160 (e.g., conversations on the online social network, topics on the online social network, trending topics on the online social network, etc.). In particular embodiments, users may leverage this functionality as a search tool. As an example and not by way of limitation, the user may be able to identify cat videos by speaking words associated with the topic “Cat” (e.g., “cat,” “meow”).
In particular embodiments, a transition effect may be employed when transitioning from one virtual space to another. In particular embodiments, when transitioning from one content item (which may be rendered as an entire virtual space or as part of a virtual space) to another, the virtual reality system may employ a transition effect. As an example and not by way of limitation, the virtual reality system may employ a transition effect when transitioning from one photo, video, or any other media item, to another photo, video, or any other media item. Significant user testing has revealed that many users find it jarring to cut or switch immediately from one content item to another, such that it may negatively affect user experience generally. Sometimes, it even led to feelings of motion sickness, nausea, or unease (e.g., because of a cognitive disconnect resulting from the sudden change in visual input accompanied by a lack of corresponding movement). By employing a transition effect, the virtual reality system may mitigate some of these negative effects. Any suitable transition effect may be employed. As an example and not by way of limitation, the virtual reality system may employ a “telescoping” or a “camera-shutter” effect, in which a current view of a first content item is contracted toward a central point (e.g., with the surrounding area fading to black) to be replaced with a view of a second content item that expands outward from the central point. As other examples and not by way of limitation, a fade effect, a dissolve effect, a wipe effect, etc., may be employed. In particular embodiments, the user may be able to specify a particular transition effect or customize a transition effect and when they are to be employed (e.g., a certain transition effect when transitioning among photos, a certain transition effect when transitioning between a photo and a video), so that the virtual reality system may use the selected or customized transition effect according to the user's specifications.
Although this disclosure focuses on interacting with particular types of content in a virtual space, it contemplates interacting with any suitable types of content in a virtual space. As an example and not by way of limitation, the user may be able to use gaze inputs to navigate menus of content generally (e.g., a newsfeed interface of an online social network, web pages) in a manner similar to that described with respect to menus of image and/or video content. As another example and not by way of limitation, the user may be able to navigate through pages of a book. As another example and not by way of limitation, the user may be able to navigate through a map. As another example and not by way of limitation, the user may be able to navigate through a virtual world (e.g., in a game).
In particular embodiments, the virtual reality system may include reticles of different types that may be generated and overlaid on the user's field of view. In particular embodiments, the different types may have different functions that may have different effects in the virtual space (e.g., on virtual objects) in association with a gaze input. This may allow the user to submit the same types of gaze input to interact with the virtual spaces in different ways, with the effect of the interaction depending at least in part on the type of the current reticle. As an example and not by way of limitation, the user may aim a grab-type reticle at a hit target associated with a virtual object for a threshold period of time, upon which the virtual object may be grabbed or picked up (e.g., the virtual object may appear to be secured to a location associated with the reticle such that it may follow the path of the reticle). As another example and not by way of limitation, the user may aim a next-page-type reticle (or previous-page-type reticle) at a hit target near the right edge (or left edge) of a page (e.g., the edge of a page of a virtual book), upon which the current page may switch to the next page (or previous page). As another example and not by way of limitation, the user may aim a highlighter-type reticle at text on a page, upon which the appropriate text may be highlighted. As an example and not by way of limitation, the user may aim a selection-type reticle at text or a virtual object, upon which the text or virtual object may be selected (e.g., for further input). As another example and not by way of limitation, the user may aim a paintbrush-type reticle (or pen-type reticle) at a region of the virtual space or at a region or hit target associated a virtual object, upon which the appropriate area may be painted (or drawn/written upon as appropriate). As another example and not by way of limitation, the user may aim a push-type reticle (or pull-type reticle) at a hit target associated with a virtual object, upon which the virtual object may be pushed (or pulled). As another example and not by way of limitation, the user may aim a fire-type reticle, a laser-type or slingshot-type reticle, or another suitable gamified reticle at a region in the virtual space or at a hit target associated with a virtual object, upon which a gamified function may occur (e.g., burning a region of the virtual space or a virtual object, shooting at it with a laser, launching an object, etc.).
In particular embodiments, the different types of reticles may appear visually different (e.g., in shape, color, size, etc.) to the user. This may help the user distinguish among the reticles and determine the effect a gaze input with the reticle would have in the virtual space. As an example and not by way of limitation, a grab reticle may be in the shape of a hand. As another example and not by way of limitation, a next-page-type reticle may be in the shape of an arrow. As another example and not by way of limitation, a laser-type reticle may be in the shape of a crosshair.
In particular embodiments, the user may be able to select a reticle type based on a suitable input. As an example and not by way of limitation, the user may select a desired reticle from a menu of reticles.
In particular embodiments, the reticle type may be based on a determined context based on the location and/or trajectory of the reticle with respect to one or more virtual objects. As an example and not by way of limitation, the reticle may change as it approaches a particular virtual object (e.g., as determined by the location and/or trajectory of the reticle), or when it is within a threshold distance of the boundary of a hit target associated with the particular virtual object. In particular embodiments, each virtual object may have a particular object type, such that a reticle approaching different virtual objects of different object types in the same manner may cause the virtual reality system to determine reticles of different types based on the respective object type. As an example and not by way of limitation, a reticle that approaches a hit target associated with a virtual object that may be grabbed, the reticle may become a grab-type reticle. As another example and not by way of limitation, a reticle that approaches a hit target associated with an edge of a page may become a next-page-type or previous-page-type reticle. As another example and not by way of limitation, a reticle that approaches a play or pause button (e.g., within a video-viewing environment), or any other suitable interactive element, may change to a selection-type reticle.
In particular embodiments, the reticle type may be based on a determined context based on information associated with the current virtual space. Such information may include a virtual-space type of the current virtual space (e.g., whether it is a space associated with a game, a space associated with visual media items, a space associated with an online social network, etc.). As an example and not by way of limitation, a laser-type reticle may appear within a particular game-type virtual space when the reticle approaches a hit target associated with an enemy unit. As another example and not by way of limitation, a highlight-type reticle may appear within a book-browsing virtual space when the reticle in within a threshold distance of text.
In particular embodiments, the reticle type may be based on a determined context based on information associated with the user (e.g., social-graph information from the social graph 200). In particular embodiments, this information may include demographic information. As an example and not by way of limitation, users of a particular age group may be more likely to use a laser-type reticle than users of a different age group. In particular embodiments, this information may be based on previous interactions of the user. As an example and not by way of limitation, a user who frequently highlights and/or reads books in the virtual space may be more likely to intend a highlighter-type reticle, in which case the virtual reality system may be more likely to determine such a reticle for this user. In particular embodiments, the determined context may be based on information associated with social connections of the user (e.g., as determined based on the social graph 200). As an example and not by way of limitation, if a particular reticle type is used frequently among the user's first-degree connections generally, or among a subset of the user's first-degree connections (e.g., first-degree connections for whom the user has at least a threshold affinity level, first-degree connections who are family members), the user may be more likely to favor that particular reticle type (and the virtual reality system may therefore be more likely to determine that particular reticle type than otherwise). In particular embodiments, the determined context may be based on information associated with users generally. As an example and not by way of limitation, the virtual reality system may be more likely to determine a reticle type that is currently popular among users (e.g., one that is frequently being used) that a reticle type that is less popular. In particular embodiments, this information may include account information of the user that determines whether the user has access to particular reticles. As an example and not by way of limitation, some reticle types may be premium content, and the user may be required to pay for access to these reticles. As another example and not by way of limitation, some reticle types may be restricted for users who are members of a particular group (e.g., a particular age group).
In particular embodiments, the reticle type may be based on a determined context based on the environment external to the virtual space. As an example and not by way of limitation, the reticle type may be based on a current time of day or a current date. For example, a laser-type reticle may appear more frequently at a time and date associated with leisure time (e.g., in the evening, during the weekend). As another example and not by way of limitation, the reticle type may be based on a current or future event (e.g., as determined based on the user's calendar, based on trending news or topics, etc.). For example, a highlighter-type reticle may be more likely to appear if the virtual reality system determines based on the user's calendar that the user is about to have final exams in school.
In particular embodiments, the reticle type may be based on a determined context based on one or more suitable inputs from the user. As an example and not by way of limitation, the user may perform a particular gesture with a controller (e.g., a controller positioned on a hand) while approaching a virtual object, and the reticle type that is determined may be based in part on this particular gesture. As another example and not by way of limitation, the user may perform a gesture that may be a pattern or other gesture traced by the reticle by a series of gaze inputs by the user. As another example and not by way of limitation, the user may speak a voice command that causes the reticle type to be changed accordingly. For example, the user may say the word “laser,” which may change the reticle to a laser-type reticle.
In particular embodiments, the tools may be selected and virtually held by the user based on one or more inputs submitted to the virtual reality system. As an example and not by way of limitation, the user may aim a reticle (e.g., one that may automatically have become a grab-type reticle) at a particular tool, which may cause the tool to be “picked up” and held by the reticle such that the particular tool may appear to be secured to a location associated with the reticle (such that it may follow the path of the reticle as the user shifts the focal point). In particular embodiments, while the tool remains held by the user, further user inputs (e.g., gaze inputs, hand-gesture inputs) may have effects in the virtual space based on the nature of the tool being held. As an example and not by way of limitation, when the user holds a camera tool, a gaze input at a particular region of the virtual space for a threshold period of time or a tap input on a headset device may cause a picture to be taken of the particular region or a subregion of the particular region (e.g., which may have been displayed in a viewfinder of the camera tool). As another example and not by way of limitation, the user may select a particular sticker (e.g., a GIF, a mini image, an emoji, or any other suitable sticker) from a menu associated with a sticker tool, and when the user holds the sticker tool with this particular sticker selected, the user may be able to gaze for a threshold period at a subregion of currently displayed content in the virtual space (e.g., a visual media item, a newsfeed of an online social network, a document) and thereby cause the sticker to be overlaid on the subregion. As another example and not by way of limitation, the user may select a pen/marker tool and draw on a region of the virtual space by moving the reticle in intended trajectories (with the pen/marker tool following the reticle and tracing a drawing in its wake).
In particular embodiments, the set of tools may include a build tool such as a space-marker tool or something similar (e.g., a sculpting tool) that allows users to quickly create virtual objects in three dimensions. These objects, once created, may behave like other objects in virtual reality, and may have properties (e.g., weight, color, texture, stiffness, tensile strength, malleability) that may be assigned by default and/or may be specified/altered by users (e.g., the creator). As an example and not by way of limitation, a user may be able to draw a sword using a space-marker tool, causing the sword to be created as an object in the virtual space. The user may then be able to interact with the sword just as though it were any other virtual tool (e.g., picking it up, swinging it, hitting other objects with it, etc.). As another example and not by way of limitation, a user may be able to draw a game board with board game pieces. In this example, the user may be able to then play a board game with the board and the pieces later with the user's friends. As another example and not by way of limitation, the user may be able to make furniture or other items that may be placed in the virtual space. As another example and not by way of limitation, the user may be able to create nametags for people in a room by drawing it in the air, or may simply draw words (e.g., their names) in the air for fun. As another example and not by way of limitation, a user may be able to draw a speech bubble, then add text, images, etc., to the speech bubble, and put it over the head of the user's avatar (or another user's avatar, or any other suitable position in the virtual room). As another example and not by way of limitation, the user may be able to create balloons or cakes for a birthday party to be held in a virtual room. In particular embodiments, objects that are created may be saved and kept indefinitely in storage (e.g., associated with the account of the user who created or currently possesses it). In particular embodiments, objects can be cloned. In particular embodiments, objects can be distributed to other users. In particular embodiments, the build tool may be used to modify games as users see fit. As an example and not by way of limitation, the user may be playing an arcade-style game and may choose to create objects that can be used in the game. In particular embodiments, the games may be created on the fly with other users. As an example and not by way of limitation, two users in a virtual room may play a game of three-dimensional tic-tac-toe on a table or in the air. In particular embodiments, the build tool functionality can be integrated with the real world. As an example and not by way of limitation, users (in the same location in real life or in different locations in real life) may play a game similar to “Pictionary,” where a user pulls a physical card in real life that includes a word or concept and then draws it in the virtual world to let other users guess what the word or concept was. In this example, the virtual reality system may be presenting an augmented reality to the users, so that they are able to see the cards (or a rendering of the cards) that they are pulling in real life. As another example, and not by way of limitation, a virtual object may be printed out into the real world using a 3D printer, or otherwise manufactured in the real world.
In particular embodiments, the set of tools may include an audio-commenting tool. The audio-commenting tool, when selected and held, may function like a recording device that records the users voice and creates an audio-comment file that may be associated with the virtual space or content in the virtual space. The user (or other users with permission) may later access and play back the audio-comment file. As an example and not by way of limitation, the user may record audio commentary for a set of photos in a slide show that may for example, describe each photo. In this example, another user who accesses the set of photos may be able to listen to the audio commentary as the user views the individual photos in the set of photos. In particular embodiments, the virtual reality system may allow for the same type of functionality with image-comment files (e.g., captured and/or posted by an image-commenting tool), video-comment files (e.g., captured and/or posted by a video-commenting tool), text-comment files (e.g., captured and/or posted by an text-commenting tool), or reaction-comment files (e.g., likes, wows, etc., captured and/or posted by an reaction-commenting tool). In particular embodiments, a visual representation of a comment file (e.g., a suitable icon) may be placed somewhere in the virtual space, such that a user who views the same region of the virtual space may be able to see the virtual representation of the comment file. These comment files may remain at the locations where they are placed and may thereby be used to communicate information about the content with which they are associated. As an example and not by way of limitation, within a photo, a user may record audio comments describing different objects depicted in the photo and place them near the object they describe. In particular embodiments, the virtual reality system may allow the user to use a slingshot tool, a gun tool (e.g., a sticker gun tool), or another suitable tool to launch a comment file (or reactions, stickers, etc.) in the virtual space and thereby place it in a desired location on a region of some displayed content or elsewhere within the virtual space. In particular embodiments, a user may select the comment file (e.g., with a gaze input aimed at an associated icon) and view and/or listen to the commentary. In particular embodiments, the comment files may be overlaid on any suitable content such as images, documents, webpages, and interfaces of an online social network. In particular embodiments, the comment files may be overlaid directly over a region of the virtual space (e.g., a virtual desktop of the user). In particular embodiments, the comment files may be overlaid on video content. In these embodiments, the comments may have a time element (i.e., they may have a temporal component), such that they may only appear or may only be accessible during a specific time period. As an example and not by way of limitation, reaction comments (e.g., a laughing face representing a laughing reaction) may appear when a comedian in a stand-up comedy video delivers a punchline. As another example and not by way of limitation, text comments (or icons corresponding to the comments, the contents of which may be displayed following a gaze input) may appear within a video documentary as the text comments become relevant with respect to the content that is being shown. As another example and not by way of limitation, audio comments may play (or icons for the audio comments may appear) within a video or interactive content showing a walkthrough of a historical site at relevant times. In particular embodiments, some reactions or comments may not have a spatial element but may have a temporal element, in which case, these reactions or comments may appear in some suitable location as their respective times occur. As an example and not by way of limitation, reactions corresponding to different time points may scroll across the bottom, top, center, etc., of a video as a stream of reactions or comments as their respective times occur. In the case of a live video, this may be a live stream of reactions or comments. Although the disclosure focuses on placing reactions or comments in content items (or anywhere in the virtual space, e.g., in a virtual room) using a tool, it contemplates placing reactions or comments in any suitable manner (e.g., using an option of a dock element, using a voice command, etc.).
In particular embodiments, the set of tools may include a portal tool that allows the user (and/or one or more other users, e.g., other users in a virtual room with the user) to be transported from the current virtual space to a different virtual space. As an example and not by way of limitation, the user may be able to select the portal tool to exit a particular virtual room (described elsewhere herein) and enter a different virtual room, a user interface for browsing visual media items, a newsfeed of an online social network, a web browser, or any other suitable virtual space.
In particular embodiments, the set of tools may include a virtual mirror tool that may allow the user to view the user's own avatar (e.g., by rendering an image of the avatar within a region of the mirror tool as though it were a reflective item). The virtual mirror may essentially function like a mirror in the virtual space. The virtual mirror concept may also extend to other applications. As an example and not by way of limitation, the virtual mirror concept may be extended to the camera tool such that a user may be able to capture an image (e.g., a “selfie” image) by, for example, picking up the virtual mirror (or a camera tool) and positioning it such that it displays the desired image. As another example and not by way of limitation, the user may be able capture videos with the mirror (or a camera tool) in the same fashion. As another example and not by way of limitation, the user may be able to use the virtual mirror as a means to control what other users see during a communication session with the user, or a one-way broadcast to other users. In this example, the user may be able to position the virtual mirror (or camera tool) such that it captures the desired images and the virtual reality system may stream or broadcast the images as they appear in the virtual mirror. In particular embodiments, two users in a virtual reality space may broadcast communications to a plurality of other users. The users may use the virtual mirror (or camera tool) as a visual aid in framing what the plurality of other users sees. In particular embodiments, the virtual mirror (or camera tool) may auto-position on a region of the user's avatar (e.g., centering on the face or body of the avatar). As an example and not by way of limitation, the virtual mirror (or camera tool) may automatically bias toward an optimal view of the avatar. In particular embodiments, the default position may be set by the user (e.g., center of face, center of body, etc.). In particular embodiments, the virtual mirror (or camera tool) may also smooth out the image by reducing any shakiness that may be present from the user's hands or other input means.
In particular embodiments, the virtual reality system may introduce concepts like reach and distance in the virtual space. The concepts of reach and distance may be useful in making the virtual world more similar to the real world and making interactions in the virtual world more intuitive. In these embodiments, certain interactions with an object may only be available to a user if the object is within the reach of the user's avatar. As an example and not by way of limitation, it may only be picked up by the user if it is within reach of a hand of the user's avatar. The concept of reach may be conveyed by perspective rendering of the virtual space, so that it is obvious (just as in real life) what objects are in reach. In particular embodiments, the virtual reality system may indicate for clarity the objects that are within reach (e.g., by highlighting them or by making them seem more opaque than objects that are out of the user's reach). In particular embodiments, users may be able to bring an object closer to their reach by moving toward it or by using a virtual tool (e.g., a tractor-beam tool or a vacuum tool) to bring the object closer to the user. In particular embodiments, a particular user may ask another user who is close to the object or content to pick it up and pass it to the particular user. The “physical” act of handing items to other users may have the advantage of making for a very real, very human experience for the user, and may help make the virtual world feel more like the real world.
In particular embodiments, the virtual reality system may have a first set of physics for content and a second set of physics for virtual objects. As an example and not by way of limitation, content may float in the virtual world, while objects may have gravity just as though they were real-world objects.
In particular embodiments, a first user may be able to hand a tool (e.g., a premium tool purchased by the user) to a second user in in a virtual space. The second user may then be able to use the tool. In particular embodiments, the second user may only be able to use the tool for a period of time or within particular restrictions, after which the tool may become unavailable to the other user. As an example and not by way of limitation, the first user may hand a premium camera tool (e.g., one that takes high-quality images or one that has a particular filter) to the second user. In this example, the second user may be restricted to using the camera while in the same virtual space as the first user or may only be able to use the camera for duration of ten minutes.
In particular embodiments, the tools that are rendered at a given time in a given virtual space may vary. The particular tools that are rendered may be based on a determined current context, as described herein (e.g., as in the case of the dynamically changing reticle). As an example and not by way of limitation, the user may only be able to view or select tools to which the user has access (e.g., based on whether the user's demographic, based on whether the user has paid for access in the case of a premium tool). As another example and not by way of limitation, certain tools may be more likely to appear in certain virtual spaces. In this example, a pen tool may be more likely to appear in an office-themed virtual space which may be designed for study or work. Similarly, a laser tool may be more likely to occur within a gaming environment. As another example and not by way of limitation, the user may speak an appropriate voice command (e.g., “pen tool”) and a pen tool may appear (e.g., appearing to fall from the sky, appearing out of nowhere, etc.). In particular embodiments, the particular tools that are to be rendered may be determined by scoring or ranking the different possible tools, as described elsewhere herein for analogous contexts (e.g., as in the case of the dynamically changing reticle).
In particular embodiments, usage of a tool may affect the availability of a tool, or the continued selection of the tool by a user. As an example and not by way of limitation, after a user has used a pen tool for a defined period of time, the pen tool may be deselected. As another example and not by way of limitation, after a user has taken a defined number of photographs on a camera tool (e.g., as may be defined by an amount of virtual “film” purchased by the user), the camera tool may become unavailable. As another example and not by way of limitation, if a user is using a particular tool irresponsibly (e.g., if the user's usage of the tool has been reported by other users), the particular tool may be made unavailable (e.g., for a period of time). For example, if a user uses a laser tool to destroy virtual objects created by another user, the laser tool may be made unavailable to the user for a period of twenty-four hours. In particular embodiments, the usage of a tool may affect the score or rank calculated for a tool. As an example and not by way of limitation, after a user has used a paintbrush tool for a defined period of time during the past 5 hours, its respective score may decrease (e.g., because the user may have lost interest in the paintbrush tool), and may consequently cause another tool to be more likely to appear than the paintbrush tool (e.g., because the other tool may have a higher score).
In particular embodiments, virtual objects (e.g., virtual tools) in a virtual space may be customized for a user. In particular embodiments, the customization of a virtual object may be based on information associated with the user that may be stored locally in the virtual reality system, in a database associated with the virtual reality system, in a database associated with an online social network, or in a database associated with any suitable third-party system. As an example and not by way of limitation, a virtual object may be customized based on social-graph information that may be present on a social graph of an online social network. In this example, such information may include affinities and preferences of the user (which may have been explicitly specified by the user, or inferred by the user's actions on the online social network). For example, a virtual boom box of a user may have a personalized playlist of music (e.g., based on a music-streaming profile of the user, based on social-graph information of the user, based on a playlist explicitly specified by the user). As another example and not by way of limitation, a virtual TV of the user may have a personalized set of TV shows/movies (e.g., by connecting to a television subscription account of the user, by connecting to media items stored by the user in the virtual reality system or another system associated with the user such as a digital video recorder in the real world, a personal computer, or a cloud platform).
In particular embodiments, the virtual reality system may render a virtual room, which may be a virtual space that allows multiple users to virtually meet. In particular embodiments, the virtual room may have been “created” by a particular user, i.e., the virtual reality system may have rendered the virtual room in response to an input by the particular user requesting that the virtual room be rendered. In particular embodiments, the virtual room may have, as a backdrop, images from a headset camera of a particular user (e.g., the user who created the virtual room) such that all users in the virtual room may perceive themselves as being in the real world at the location of the particular user. In particular embodiments, each user may see a virtual room with a backdrop formed with images from his or her own headset camera (such that each user sees an augmented reality based on their own individual real world). In particular embodiments, the virtual reality system may render avatars of the users within the virtual room. An avatar in the virtual room may be a customizable generated rendition of the respective user. In particular embodiments, the virtual space may render a video-representation of the user (e.g., captured from a camera directed at the respected user). In particular embodiments, the rendered avatar may include one or more elements of the video-representation. As an example and not by way of limitation, the face of the avatar may be a face composed from the face in the video-representation. In particular embodiments, the virtual room may be bounded by walls, such that it resembles an actual room.
In particular embodiments, an initial avatar of the user may be generated by the virtual reality system based on one or more photos (or other image content, such as videos) of the user. As an example and not by way of limitation, the virtual reality system may automatically selected photos of the user from an online social network (e.g., photos that tag the user, profile pictures of the user) or some other suitable resource (e.g., a local or cloud photo database of the user). The virtual reality system may attempt to select optimal pictures by favoring certain types of pictures (e.g., pictures that were profile pictures of the user, pictures that receive a relatively large number of likes or comments, pictures with optimal angles and details of the user's face, etc.).
In particular embodiments, the virtual reality system, in rendering an avatar, may render not only a face, but also the body, and may accordingly need to determine where and how to position the various parts of the body. As an example and not by way of limitation, the virtual reality system may determine angles of different joints in the body or the position of the limbs and/or torso. In making these determinations, the virtual reality system may receive various inputs from the user. As an example and not by way of limitation, the virtual reality system may include a camera that may track the movement of the user and the user's various body parts. As another example and not by way of limitation, the virtual reality system may include controllers that may be held or secured to one or more limbs of the user (e.g., tied to the user's feet or knees, held in or secured on the user's hands). In particular embodiments, the virtual reality system may make use of inverse kinematics to continuously determine the movements, angles, and locations of the various body parts and joints. As an example and not by way of limitation, inverse kinematics equations may define the relationships between joint angles and positions of the avatar and input data (e.g., data from cameras tracking the user, data from controllers describing the position of the user's hands and feet), and may use these relationships to determine the locations and orientations of the avatar's joints. As another example and not by way of limitation, inverse kinematics equations may define the relationships between joint angles and positions of the avatar and a determined pose for the avatar. In this example, the pose for the avatar may be determined by the user may be data from cameras tracking the user or data from controllers, but may also be determined based on other factors such as contextual information. For example, if context dictates that the user is shrugging (e.g., as may be determined based on a conversation, based on a specific gesture that triggered a shrugging “virtual emoji”), that informs the virtual reality machine that the avatar should be in a shrugging pose. In this case, the inverse kinematics equations may be used to determine the locations and orientations of the avatar's joints for the shrugging pose.
In particular embodiments, the virtual room may include an “interactive surface,” which may be a specific region in the virtual room having special properties. In particular embodiments, the interactive surface may resemble a table, desk, or other such surface that may be visible to all users in the virtual room. In particular embodiments, the interactive surface may afford users within the virtual room a means of sharing in certain interactive experiences. In particular embodiments, the interactive surface may be a means for users to share content with other users in the virtual room. The content that is being shared (e.g., a slide show, a video), may be two-dimensional or three-dimensional, and may be flat or non-flat content (e.g., spherical content, 360-degree content, 180-degree content). In the case of non-flat content, the users who are sharing in the experience may be immersed in the content together (e.g., for spherical content, everyone in the room may find themselves in a room surrounded by the spherical content and may see each other as avatars in the same room).
In particular embodiments, the virtual reality system may alter the interactive surface based on a current context. The interactive surface may be altered in its shape, size, color, physics (e.g., texture, the springiness of the virtual material that may, for example, allow for different levels of bounce for a virtual object that is dropped on the interactive surface), or any other suitable characteristic. As an example and not by way of limitation, a ping pong table interactive surface and a pool-table interactive surface may be of different shapes, sizes, colors, and physics (e.g., high-density fiber board vs. felt). The current context may be determined based on any combination of the factors described within this disclosure (e.g., current time of day, information about one or more of the users in the room). In particular embodiments, the particular interactive surface that is to be rendered may be determined by scoring or ranking the different possible interactive surface, as described elsewhere herein for analogous contexts (e.g., as in the case of the dynamically changing reticle).
In particular embodiments, the interactive surface may be altered by a voice command. As an example and not by way of limitation, the user may speak the word “ping pong table,” which may cause the interactive surface to be transformed into a ping pong table.
In particular embodiments, the virtual room itself may be altered based on a current context. As an example and not by way of limitation, on a user's birthday, the virtual room may have birthday decorations. In particular embodiments, the interactive surface and/or the virtual room may be altered based on explicit inputs from a user requesting specific alterations. As an example and not by way of limitation, a user in the virtual room may request that the users be virtually “transported” to a particular virtual space corresponding to a particular visual media item (e.g., by accessing a portal tool and selecting a particular visual media item). In this example, the users in the virtual room may find themselves in a virtual room displaying the particular visual media item (i.e., in a virtual space that plays the particular visual media item). As another example and not by way of limitation, the user may simply access a suitable menu-option element while in the virtual room that accomplishes the same result. In particular embodiments, the virtual room may be altered by a voice command. As an example and not by way of limitation, the user may speak the word “disco room,” which may cause the virtual room to be transformed into a disco-themed room.
In particular embodiments, there may be multiple interactive surfaces in a single virtual room. In particular embodiments, users in the virtual room can select one or more interactive surfaces from the available interactive surfaces with which they want to interact and may be able to switch among the available interactive surfaces at any point. At any given time, each of the interactive surfaces may have different activities in progress. In particular embodiments, users who are in the virtual room, just as in real life, may look around at the different interactive surfaces to see the different activities in progress. In particular embodiments, users may only be able to hear audio from other users who are at the same interactive surface (e.g., conversations among users who are at one interactive surface may not be audible to users who are at a different interactive surface). In particular embodiments, users in the room may be able to create a new interactive surface at any point to engage in a different activity with a different set of users. Alternatively, one or more of the users may simply exit the virtual room and create a new virtual room.
In particular embodiments, the virtual reality system may place restrictions on the users who may enter the virtual room. In particular embodiments, the virtual room may limit the number of users who may be in the virtual room. As an example and not by way of limitation, the virtual reality system may deny access to the virtual room when it reaches twenty users. In particular embodiments, the virtual room may restrict certain users based on information associated with the users. As an example and not by way of limitation, the virtual room may have privacy settings associated with it (e.g., as specified by a user who may have created the virtual room), such that only certain users may have access to it based on the privacy settings. In this example, the user who created the virtual room may specify that only friends of the user (e.g., first-degree connections on an online social network) may enter the virtual room, that only certain invited users may enter the virtual room, that only users of certain demographics or users with certain interests may enter the virtual room, or that only users who are members of certain groups (e.g., members of the group named “Cat Lovers Club”). As another example and not by way of limitation, the virtual room may have a minimum age requirement of eighteen, such that users below the age of eighteen are not permitted.
In particular embodiments, a user may be able to move around a virtual space such as a virtual room, just as though it were a physical room. As an example and not by way of limitation, the user may be able to use a controller joystick or some other form of input (e.g., gestures, gaze inputs, buttons, walking motions performed by the user) to move from one place to another within the room. In particular embodiments, the user may be able to move to pre-defined locations within the room. As an example and not by way of limitation, the user may be able to switch positions around a virtual surface by selecting a desired position. In particular embodiments, the switching of positions may be done with a transition effect like telescoping (e.g., to prevent the experience from being too jarring). In particular embodiments, to facilitate moving around a virtual space, the user may be provided with the ability to, at any time, summon an aerial view of at least a portion of the virtual space, from which the user may be able to select a location to move to. As an example and not by way of limitation, a user in a virtual room, at any point during a meeting, summon an aerial view of the room, and select a different location. As an example and not by way of limitation, the user may select a location corresponding to any of one or more empty “seats” around an interactive surface. In this example, the user may be prevented from selecting a seat that is occupied. In particular embodiments, a transition effect may be applied in transitioning between the aerial view and the ground view, or vice versa.
In particular embodiments, the virtual reality system may receive inputs from a controller system that may accept additional inputs from the user (i.e., inputs in addition to gaze inputs, tap inputs, or other inputs originating from the headset). The controller system may include one or more controllers. The controller system may provide an additional layer of control to the user for interacting more completely with the virtual space. In particular embodiments, the controller system may include a detection mechanism that determines the motion and/or location of one or more of the controllers. In particular embodiments, the detection mechanism may include a camera or other sensor that detects the location of the one or more controllers. The camera or other sensor may be positioned in a location remote from the controllers and/or may be positioned on the controller. In particular embodiments, the detection mechanism may also track the pitch, yaw, and roll of the controllers (e.g., tracking two or more infrared LED markers on each controller) to determine its orientation in six degrees of freedom. In particular embodiments, the detection mechanism may include a motion-tracking device (e.g., an inertial measuring unit that continuously tracks the controller's position and orientation in six degrees of freedom) within each of the controllers that may detect gestures and other types of motion inputs. Alternatively, the detection mechanism may employ outside-in tracking. In particular embodiments, the controllers may be held by or otherwise affixed to the person of the user (e.g., attached to the hands, the feet, the torso, etc.).
In particular embodiments, the user may be able to interact with the virtual space by physically interacting with the controller system. The controller system may interface with the virtual space to create an intuitive input means for the user to interact with the virtual space. In particular embodiments, the user may be able to see a rendering in the virtual space associated with the controllers. In particular embodiments, the rendering may include a representation of the user's hands, feet, torso, or other body areas, whose locations, orientations, proportions, and/or other properties may be based on inputs from the controllers. As an example and not by way of limitation, the user may be able to see renderings of both hands in the virtual space, with the locations and orientations of the hands corresponding to the locations and orientations of the respective controllers. In particular embodiments, the renderings may function as virtual objects in the virtual space that can cause real-time effects in the virtual space.
In particular embodiments, the user may be able to interact with virtual objects or the virtual space generally using inputs from the controllers. As an example and not by way of limitation, a rendering of the user's hand may be able to push or pull a virtual ball in the virtual space by correspondingly moving an associated controller (e.g., a handheld controller) in the direction of the intended push or pull when the rendering is near the virtual ball. As another example and not by way of limitation, the user may be able to kick a virtual ball by correspondingly moving an associated controller (e.g., a controller strapped to a foot) in an appropriate manner. In particular embodiments, the user may be able to hold tools (e.g., tools such as the ones described herein) and interact with virtual objects and the virtual space generally with those tools. As an example and not by way of limitation, the user may be able to pick up a ping pong paddle tool and play ping pong with another user on an interactive surface in a virtual room. As another example and not by way of limitation, the user may be able to hold a camera tool affixed to a rendering of the user's hand and may take a picture of a region of the virtual space with a suitable input. As another example and not by way of limitation, the user may be able to pull open a drawer of an interactive surface in a virtual room to pick up one or more tools. In particular embodiments, the user may be able to interact with the virtual space using voice commands. As an example and not by way of limitation, the user may be able to speak the words “delete ball,” which may cause the virtual ball to disappear from the virtual space.
In particular embodiments, the second controller (e.g., held by or positioned on the right hand of the user) may be used to select an item among the panel of items. As an example and not by way of limitation, the user may move, in the virtual space, a rendering of a hand associated with the second controller (e.g., referencing
In particular embodiments, the controllers may include buttons or touch-detection sites to provide further inputs to the virtual reality system. Building on the previous examples and not by way of limitation, the user may select an item in a menu of items by pointing at it and then pushing an appropriate button. As another example and not by way of limitation, once the user picks up a camera tool, the user may take a picture by tapping an appropriate touch-detection sites on the controller.
In particular embodiments, the menu of items may be caused to appear at any time in response to a suitable user input (e.g., pressing a virtual button or a physical button on a controller). The menu of items may appear in any suitable location. As an example and not by way of limitation, it may appear floating in front of the user in a particular location of the virtual space. As another example and not by way of limitation, it may appear floating above a forearm or hand of the user and may be associated with that forearm or hand such that it follows the motions of the forearm or hand to remain hovering over it.
In particular embodiments, the users in a communication session may be able to specify the types of communication (termed “communication types” herein) from each user that are to be streamed or rendered in the virtual space during the communication session, and the virtual reality system may accommodate those specifications to the extent possible. In particular embodiments, each user may specify what the virtual reality system may render or stream to the other users in the communication session. As an example and not by way of limitation, a particular user may specify that only the voice of the particular user may be streamed to the other users in the communication session. As another example and not by way of limitation, the particular user may specify that only an avatar of the particular user may be rendered for the other users in the communication session. In this example, the other users may be able to see the avatar representation of the particular user and may be able to view any body language (e.g., a hand wave, a particular stance), facial expressions, or sign language communications, but may not be able to hear audio from the particular user. As another example and not by way of limitation, the particular user may specify that only a video of the particular user (e.g., a video captured in real-time by a camera device directed at the particular user) may be streamed to the other users in the communication session. Just as in the previous example, in this example, the other users may be able to see the avatar representation of the particular user and may be able to view any body language or sign language communications. As another example and not by way of limitation, the particular user may specify that voice and video, or voice and an avatar, or voice and an avatar and a video (e.g., the video appearing separately, or jointly with the avatar such that the face of the avatar may be a video of the user's face) may be streamed and/or rendered to the other users. In particular embodiments, the particular user may be able to specify that a first set of users in the communication session may receive certain types of communications while a second set of users in the communication session may receive different types of communications. As an example and not by way of limitation, the particular user may specify that in a communication session including a friend and several strangers, only the friend may view a video and an avatar of the particular user, while the strangers may be only permitted to view an avatar of the particular user. In particular embodiments, a particular user may also specify the types of communication to be received from another user in the communication session. As an example and not by way of limitation, the particular user may specify that a certain other user in the communication session may not send video to the particular user. In particular embodiments, the types of communication that a particular user may receive from another user in the communication session may be the same as the types of communication the particular user sends to the other user. As an example and not by way of limitation, if the particular user only sends audio to the other user, the particular user may only receive audio from the other user. By contrast, in particular embodiments, the types of communication that a particular user may receive from another user in the communication session may not necessarily be the same as the types of communication the particular user sends to the other user. As an example and not by way of limitation, if the particular user only sends audio to the other user, the particular user may still receive audio and video from the other user. In addition to the examples described herein, any suitable combination of communication types may be sent and received among one or more users in the communication session in any suitable manner (e.g., as individually specified by each of one or more users). In particular embodiments, users may be able to change the types of communications sent and/or received at any point in the communication session.
In particular embodiments, a communication session may be a one-way communication. The one-way communication can be directed at a single other user, a group of users, or to the public generally. In particular embodiments, the user may record a communication and may save it. In these embodiments, the user may subsequently send the recorded communication to a single other user, a group of users, or to the public generally. In particular embodiments, the user may also receive one-way communications and/or recorded communications.
In particular embodiments, these communication sessions may not be limited to a virtual room and may occur at any point. A caller-user may initiate a communication session with one or more callee-users by sending them a communication request. As an example and not by way of limitation, the caller-user may be in a virtual space of a game. In this example, while the game is still ongoing, the caller-user may send a communication request to one or more callee-users (e.g., social connections on an online social network, other users of a gaming network associated with the current game). Similarly, a callee-user may accept or refuse a communication request from a caller-user at any point. As an example and not by way of limitation, a callee-user may be watching a 360 video in a virtual space when the callee-user receives a communication request form a caller-user. The callee-user may choose to either accept or refuse the communication request by submitting the appropriate input. In this example, from the callee-user's perspective, the callee-user may see an avatar or other representation of the caller-user and may also see an indication asking to join a virtual space (e.g., a virtual room, a virtual space of a game) together. If the callee-user accepts, the avatar or other representation of the caller-user may morph into the virtual space of the callee-user. In particular embodiments, a current activity of the caller-user or the callee-users may continue uninterrupted during the communication session. As an example and not by way of limitation, a callee-user may be in the middle of playing a game on the virtual reality system when a communication request is received and accepted. In this example, when the callee-user accepts the communication request, one or more windows may appear within the game environment (e.g., on a corner of the display) displaying the videos or avatars of other users part of the communication session. Alternatively, the videos or avatars may be seamlessly integrated into the video game environment (e.g., inserting avatars of the other users within the game environment). The game may continue without interruption as the callee-user communicates with the other users in the communication session.
In particular embodiments, the subregion may be within a window object that one or more of the other users in the communication session may be able to manipulate and move around within the virtual space (e.g., using a controller input or a gaze input). As an example and not by way of limitation, the window object may appear within a virtual room and may display a video of a user who is not using a virtual reality system. In this example, the other users (who may be using a virtual reality system) may have corresponding avatars and may appear to be around an interactive surface. The other users in this example may move the window object around the virtual room. In particular embodiments, moving the window object may adjust the perspective of the user associated with the window object (e.g., the user who is not using a virtual reality system). As an example and not by way of limitation, the window object may behave as though there were a camera affixed to the window object that streams video to the user associated with the window object, such that the user associated with the window object sees a region of the virtual space that the window object faces. In this example, from the viewpoint of the user associated with the window object, this window may function as a “virtual window” into the virtual space.
In particular embodiments, when a callee-user accepts a communication from a caller-user, the communication may appear in the virtual space as a window (e.g., if the caller-user is not using a virtual reality system) or as an avatar (e.g., if the caller-user is using a virtual reality system) visible and/or audible to only the callee-user and not to any other users in the virtual space (e.g., if the callee-user is in a virtual room or elsewhere with other users in a communication session). Likewise, in particular embodiments, the caller-user may not be able to see or hear anything from the other users. In particular embodiments, the callee-user may be able to make the communication visible and/or audible to the other users in the virtual space by performing a suitable input (e.g., by picking up the window or avatar with a gesture and placing the window or avatar in a particular region of the virtual space, such as on an interactive surface). In particular embodiments, at this point, any other users in the virtual space may also be able to see the window or the avatar, and may be able to communicate with the caller-user, who may likewise be able to see and hear the other users in the virtual space. In particular embodiments, the virtual reality system may also render a window that shows the callee-user (and/or other the other users) what the caller-user is seeing of the virtual space that the callee-user is in. This window may function like the virtual mirror tool described herein.
The user may select a desired element (e.g., on a virtual watch) using any suitable input, such as the ones described herein. As an example and not by way of limitation, the user may aim a reticle at the desired element for a threshold period of time. As another example and not by way of limitation, the user may press an appropriate button on a controller. As another example and not by way of limitation, the user may bring a rendering of the user's other hand (i.e., the hand that is not “wearing” the virtual watch) and select the desired element by pointing at it for a threshold period of time or by pointing at it and pressing a button on a controller associated with the other hand. In particular embodiments, when the user chooses the element for accepting a communication session, other elements may appear that allow the user to specify the types of communication that are to be streamed or rendered to the other users in the communication session and the types of communication that are to be received. As an example and not by way of limitation, the user may wish to reduce bandwidth and may opt to not receive video streams.
In particular embodiments, as mentioned elsewhere herein, the virtual reality system may render facial expressions and body language on a user avatar (e.g., during a conversation with another user, in recording a video/photo message with the avatar). Expressions and body language may enhance communications with other users by providing verbal cues and context and by making the conversation appear more natural (e.g., users may want other users to react with expressions as they would in real life). In particular embodiments, the virtual reality system may also simulate mouth movements (and movements in the rest of face, which may morph with the mouth movements) while the user corresponding to the avatar is speaking to make it appear like the words are coming out of the avatar's mouth. In doing so, the virtual reality system may use any combination of a series of different techniques. As an example and not by way of limitation, the virtual reality system may use a camera that tracks the movement of the user's mouth region and may make corresponding changes on the user's avatar. As another example and not by way of limitation, the virtual reality system may make use of visemes or other similar approximations that correspond to speech (e.g., speech phonemes) to render, in real time, movements on the avatar's face to reflect what the user is saying. In particular embodiments, the virtual reality system may also track the user's eyes (e.g., using one or more cameras in a headset) to determine the direction of the user's gaze and the corresponding location and angle of the user's pupils within the user's eyes. The virtual reality system may accordingly render the eyes of the avatar to reflect the user's gaze. Having the avatar's eyes reflect the user's gaze may make for a more natural and fluid conversation, because much nonverbal communication may occur through the eyes. As an example and not by way of limitation, users may gaze in a direction to indicate a point of interest or to show what it is that they are looking at, roll their eyes to express exasperation or impatience. Having the avatar's eyes reflect the user's gaze may also help make conversation more natural, because perceived eye contact with an avatar may make the user feel more connected to the user corresponding to the avatar. In particular embodiments, additional options may become available to a user based on the determined eye gaze. As an example and not by way of limitation, when two users make eye contact, an option to shake hands, fist-bump, or high-five may appear. As another example and not by way of limitation, when a user's eye is determined to be looking at a particular object, options that are specific to that object may appear (e.g., for interacting with the object).
In particular embodiments, users may be able to further express themselves by causing their avatars to emote using “avatar emojis,” which may be characterized as particular pre-defined poses, gestures, or other displays associated with an avatar that may correspond to particular emotions or concepts. Conveying emotions using avatar emojis may assist in communication among users and/or may make avatars appear more realistic or natural (e.g., in conversation, in a video). In particular embodiments, a user may cause an avatar (e.g., the user's own avatar) to perform an avatar emoji by submitting a trigger input (e.g., by performing a gesture with the user's hands or feet, by pressing a button in the virtual world or on a controller in the real world, by a voice command). In particular embodiments, upon detecting the trigger input, the virtual reality system may determine one or more corresponding avatar emojis, and may select an optimal avatar emoji to display. As an example and not by way of limitation, if the user raises his or her hands (in real life) above the head, that may trigger an avatar emoji for excitement (which may not only cause the avatar to raise its hands excitedly but may also translate to appropriate facial expressions of excitement on the avatar). As another example and not by way of limitation, if the user drops his or hands on the sides and turns them over, that may trigger an avatar emoji for confusion. As another example and not by way of limitation, if the user drops his or her hands and shakes closed fists on either side of the hips, that may trigger an avatar emoji for anger. As another example and not by way of limitation, if the user raises both hands to the cheeks, that may trigger an avatar emoji for surprise. In particular embodiments, the avatar emojis may not necessarily be natural gestures, but may still be somehow associated with an avatar to convey some communicative concept. As an example and not by way of limitation, when a particular user presses a particular virtual button (e.g., a button that hovers over a palette of possible avatar emojis), a light bulb may appear over the user's head, which may communicate to other users that the particular user has an idea.
In particular embodiments, the virtual reality system may determine avatar emojis further based on contextual information that it may collect. As an example and not by way of limitation, for a user's avatar, the contextual information may be based on information about the user (e.g., demographic information; historical usage of avatar emojis or emojis in other contexts such as text messages, posts on an online social network, etc.). As another example and not by way of limitation, the contextual information may include the substance of a conversation (e.g., if the conversation was a serious conversation, the virtual reality system may not favor the determination of avatar emojis that may be perceived as flippant, silly, or may otherwise be perceived as being insensitive. As another example and not by way of limitation, the contextual information may include a tone of a conversation (e.g., as determined by the voices of the users in the conversation). In this example, if users are in a heated conversation with raised voices, avatar emojis reflecting anger may be favored. As another example and not by way of limitation, the contextual information may include other forms of vocal expression such as laughter. In this example, if the virtual reality system detects that a user is laughing, the virtual reality system may determine an avatar emoji corresponding to laughter for the user's avatar (e.g., causing it to appear as though the avatar were laughing. As another example and not by way of limitation, the contextual information may include characteristics of a virtual room and/or of the users in view (e.g., users in a virtual room). As an example and not by way of limitation, if the virtual room was created for purposes of a business meeting, avatar emojis that are “not safe for work” may not be favored. As another example and not by way of limitation, the virtual reality system may determine avatar emojis based on demographic, occupational, educational or other suitable characteristics of the users in view. In this example, certain avatar emojis may be more popular among certain age groups or geographical areas and the virtual reality system may account for those popularities in determining an avatar emoji.
In particular embodiments, the available avatar emojis may be restricted. As an example and not by way of limitation, there may be age restrictions on the virtual emojis (e.g., preventing users who are below a threshold age from using certain emojis). As another example and not by way of limitation, certain avatar emojis may only be available after purchase.
In particular embodiments, avatar emojis may be customizable. As an example and not by way of limitation, a user may be able to tweak the expressions of particular avatar emojis (e.g., adjusting the degree of a smile, adding/removing tear drops on an avatar emoji corresponding to sadness). In particular embodiments, the virtual reality system may automatically customize avatar emojis for the user. As an example and not by way of limitation, the virtual reality system may base its customization on photos or videos of the user to adjust features like smiles or frowns on an avatar emoji based on the features on the photos or videos of the user.
In particular embodiments, the virtual reality system may employ a series of techniques to bring avatars out of the uncanny valley, to make users more comfortable interacting with other users' avatars. As an example and not by way of limitation, special line arts may be adopted for avatar mouths to make them less eerie to users. In particular embodiments, the virtual reality system may add secondary motion or animation to avatars to make them more lifelike. Secondary motion is an animation concept that may be described as movements occurring as a reaction to a primary motion by an actor (e.g., an avatar). It may serve to enhance an avatar's motion via effects that appear to be driven by the motion, and may thereby cause the avatar's movements to appear more natural. As an example and not by way of limitation, as an avatar walks from one location to another, its primary motion of walking with the legs may be enhanced by secondary motions of the head bobbing up and down, arms swinging back and forth, clothes moving with the torso, body jiggling in response, etc. In particular embodiments, the virtual reality system may also add passive motions such as body-sway motion to avatars, even when they avatar is standing still. Body sway refers to the minor movements the body makes in real life (e.g., for postural stability). These movements may be very subtle (e.g., an inch or two in each direction), but their absence may be noticeable. Adding body-sway motions may make for more realistic avatars.
In particular embodiments, the virtual reality system may render avatar eyes in 2D or 3D. In particular embodiments, 3D eyes may have the advantage of being more realistic. However, they may be more resource intensive to render. As such, it may be technically advantageous to render 2D eyes, particularly when dealing with a large number of users communicating using the virtual reality system. Additionally, in particular embodiments, 2D eyes may seem friendlier than 3D eyes, and may be more “charming” or endearing to users.
In particular embodiments, the user may have multiple virtual devices in the virtual space. Each of these virtual devices may offer different functionality. The user may associate each virtual device with different functionality, which may be advantageous in that it may allow for an intuitive experience that may correspond with the real world (e.g., where users similarly interact with different devices for different functionality). As an example and not by way of limitation, the user may wear a watch that may display the time, act as a gateway to incoming and outgoing communications (e.g., voice/video calls, messages), provide context-specific functionality (e.g., based on a tool that is being held by the user, based on a type of virtual space that the user is in), or display information connected to the real world (e.g., news, weather, etc.). In this example, the user may also wear a wristband that may provide notifications about new user experiences or features that the user may not be aware of (e.g., a notification that a particular tool can be used in a particular way to perform a particular function, a notification about a feature associated with a particular virtual room). The new user experience for which a notification may be provided may be identified based on information associated with the user. As an example and not by way of limitation, a user who has never used a particular feature, or a user who is determined to not possess a pre-determined experience level with the feature (as determined based on, for example, the user not having used the particular feature a threshold number of times), may receive a notification regarding that feature as a new user experience, while a user who is more familiar with that feature may not receive such a notification. The new user experience for which a notification may be provided may be identified based on a current context. As an example and not by way of limitation, when a user picks up a camera tool, the user may receive a notification about adding a filter to modify a virtual lens of the camera tool (and thereby modify pictures taken with the camera tool). For example, a user-interface element may be displayed on the wristband, and the activation of this element may trigger a display of information (e.g., in the form of text, a video, a photo, audio) that describes how to add filters. As another example, the information may be displayed in association with the wristband without any further user input (e.g., by way of scrolling text on the wristband, by way of a projection of a video from the wristband). In particular embodiments, the wristband may include a button to enter “pause mode” (which is a state that is described in further detail herein). The functionality described herein is not intended to be limited to particular virtual devices. As an example and not by way of limitation, the wristband may be a gateway to communications (e.g., providing notifications of incoming calls).
In particular embodiments, the virtual devices may be customizable, such that the user may be able to tailor the virtual devices according to personal tastes or needs (e.g., changing appearance, functionality). In particular embodiments, the user may be able to purchase or otherwise acquire different virtual devices or add-ons to virtual devices. As an example and not by way of limitation, the user may be able to purchase different types of watches or wristbands that may appear different (e.g., designer brand wristbands or watches) or may perform specific functions (e.g., a watch that collects and displays stock exchange information, a wristband that displays the user's heart rate or other physiological parameters).
In particular embodiments, when a callee-user accepts a communication from a caller-user via the virtual watch (or another similar virtual device), the communication may appear in the virtual space as a window or as an avatar attached or otherwise associated with the virtual watch. As an example and not by way of limitation, the communication may appear as a projection emanating from the virtual watch. In particular embodiments, at this point, the window or avatar may not by visible and/or audible to any other users in the virtual space (e.g., if the callee-user is in a virtual room or elsewhere with other users in a communication session). Likewise, in particular embodiments, the caller-user may not be able to see or hear anything from the other users. In particular embodiments, the callee-user may be able to detach the window or avatar from the virtual watch and move it into the virtual space (e.g., by picking up the window or avatar with a gesture from the other hand and placing the window or avatar in a region of the virtual space detached from the virtual watch). In particular embodiments, at this point, any other users in the virtual space may also be able to see the window or the avatar, and may be able to communicate with the caller-user, who may likewise be able to see and hear the other users in the virtual space. In particular embodiments, the virtual reality system may also render a window that shows the callee-user (and/or other the other users) what the caller-user is seeing of the virtual space that the callee-user is in. In particular embodiments, the virtual watch may also be used to initiate calls. As an example and not by way of limitation, a user may be in the middle of a game and may, while still in the game, raise a controller associated with the watch and send a communication request without interrupting the gameplay.
In particular embodiments, the virtual watch (or another similar virtual device like a wristband) may include a functionality similar to the portal tool described herein. As an example and not by way of limitation, the user may be able to select a menu-item element on the virtual watch to access a newsfeed, a page of one or more visual media items (e.g., saved visual media items), a game, or any other suitable content. In particular embodiments, the virtual watch (or another similar virtual device like a wristband) may offer a contextual menu similar to a right-click button on a personal computer. As further described herein, the options in the contextual menu may depend on the context (e.g., the objects the user is holding, the virtual room the user is in, the date, etc.). In particular embodiments, the user may be able to transport other users to the selected content. As an example and not by way of limitation, a particular user may be in a virtual room with two other users when the particular user selects a visual media item of an underwater scene. All the users in the virtual room may be transported to a virtual space displaying the underwater scene and may interact with the virtual space just like any other virtual space (e.g., taking pictures of the virtual space with a camera tool). In particular embodiments, a virtual watch, a virtual wristband, a portal tool, or other similar virtual object/tool (or a dock element as described below) may be able to transport a user to a central/default location (e.g., a home screen). As an example and not by way of limitation, the user may press a virtual button appears on a virtual watch or wristband to immediately be transported to a home screen, from which the user can access applications, content, browsers, etc.
In particular embodiments, the dock element may be used to initiate a communication. As an example and not by way of limitation, using the dock element, a user may be able to pull up an interface that includes a friend list or contact list (e.g., by selecting a suitable virtual button on the dock element or by submitting any other suitable input). In this example, the user may be able to scroll through the list and select one or more friends or contacts (e.g., to initiate a video, audio, or text communication such as a message or a text chat). In this example, the friend list or contact list may be friends or contacts on an online social network (e.g., social graph connections).
In particular embodiments, a virtual watch may act as a central hub for user interaction. In particular embodiments, the user may be able to pull up the virtual watch in any virtual space (e.g., by raising a hand associated with the watch into the user's field of view). The virtual watch may allow for customized interaction and functionality in the virtual space, depending on a determined current context (which may be determined using any combination of the factors described herein). In particular embodiments, the customized interactions and functionality provided by the virtual watch may depend on a virtual tool or another virtual object that is currently picked up or otherwise selected by the user. In this way the virtual watch may be customized based on properties of a virtual tool or other virtual object. As an example and not by way of limitation, if the user picks up a laser tool, the watch may be customized to display a current power level of the laser tool and/or allow the user to select different levels of power for the laser tool. As another example and not by way of limitation, if the user picks up a marker tool, the watch may be customized to display a current ink color of the marker and/or allow the user to select different ink color. As another example and not by way of limitation, if the user picks up a virtual ball, the watch may display a weight or other property associated with the virtual ball. In particular embodiments, the virtual watch may be a means for the user to change the virtual environment (e.g., the virtual space itself and/or virtual objects in the virtual space). As an example and not by way of limitation, the user may be able to pick up a virtual ball, select a “delete” button on the virtual watch, and thereby cause the virtual ball to disappear from the virtual space.
In particular embodiments, a particular user may be able to, at any time or place in a virtual space, enter into a “pause mode,” where the virtual experience may essentially be paused or put on hold. User testing has determined that sometimes, users may want to quickly remove themselves temporarily from the virtual experience and feel “unplugged” for a period. As an example and not by way of limitation, users may find themselves in uncomfortable social situations that they may want to at least temporarily escape from. As another example and not by way of limitation, users may find an experience overwhelming or frightening (e.g., when viewing a rollercoaster video, when playing a game that simulates climbing tall mountains).
In particular embodiments, once in pause mode, the user may be presented with one or more experience-control options. As an example and not by way of limitation, the user may be given the option to report issues (e.g., technical issues, abuse by other users), block other users, kick out other users (e.g., from a virtual room). In particular embodiments, these experience-control options may be summoned at any time and a user may not need to first enter pause mode.
In particular embodiments, the virtual reality system may create a “bubble” around user avatars, e.g., to prevent other user avatars from getting too close and violating a user's personal space in the virtual world. Just as in the real world, a user may find it uncomfortable in the virtual world if other user avatars get too close to the user. In particular embodiments, a user may choose to turn on or off the bubble.
In particular embodiments, there may be a large number of relevant notifications, in which case, the virtual reality system may determine a subset of the relevant notifications to display. This subset may be determined by scoring the relevant notifications based on any suitable factors (e.g., the affinity of the users in the virtual space for the information conveyed by a relevant notification, the affinity of the users in the virtual space to an author of a comment associated with a relevant notification, the affinity of the users in the virtual space to a user associated with a relevant notification, the number of reactions there are to a comment associated with a relevant notification), and selecting notifications having a score greater than a threshold score.
This disclosure contemplates any suitable number of computer systems 5600. This disclosure contemplates computer system 5600 taking any suitable physical form. As example and not by way of limitation, computer system 5600 may be an embedded computer system, a system-on-chip (SOC), a single-board computer system (SBC) (such as, for example, a computer-on-module (COM) or system-on-module (SOM)), a desktop computer system, a laptop or notebook computer system, an interactive kiosk, a mainframe, a mesh of computer systems, a mobile telephone, a personal digital assistant (PDA), a server, a tablet computer system, an augmented/virtual reality device, or a combination of two or more of these. Where appropriate, computer system 5600 may include one or more computer systems 5600; be unitary or distributed; span multiple locations; span multiple machines; span multiple data centers; or reside in a cloud, which may include one or more cloud components in one or more networks. Where appropriate, one or more computer systems 5600 may perform without substantial spatial or temporal limitation one or more steps of one or more methods described or illustrated herein. As an example and not by way of limitation, one or more computer systems 5600 may perform in real time or in batch mode one or more steps of one or more methods described or illustrated herein. One or more computer systems 5600 may perform at different times or at different locations one or more steps of one or more methods described or illustrated herein, where appropriate.
In particular embodiments, computer system 5600 includes a processor 5602, memory 5604, storage 5606, an input/output (I/O) interface 5608, a communication interface 5610, and a bus 5612. Although this disclosure describes and illustrates a particular computer system having a particular number of particular components in a particular arrangement, this disclosure contemplates any suitable computer system having any suitable number of any suitable components in any suitable arrangement.
In particular embodiments, processor 5602 includes hardware for executing instructions, such as those making up a computer program. As an example and not by way of limitation, to execute instructions, processor 5602 may retrieve (or fetch) the instructions from an internal register, an internal cache, memory 5604, or storage 5606; decode and execute them; and then write one or more results to an internal register, an internal cache, memory 5604, or storage 5606. In particular embodiments, processor 5602 may include one or more internal caches for data, instructions, or addresses. This disclosure contemplates processor 5602 including any suitable number of any suitable internal caches, where appropriate. As an example and not by way of limitation, processor 5602 may include one or more instruction caches, one or more data caches, and one or more translation lookaside buffers (TLBs). Instructions in the instruction caches may be copies of instructions in memory 5604 or storage 5606, and the instruction caches may speed up retrieval of those instructions by processor 5602. Data in the data caches may be copies of data in memory 5604 or storage 5606 for instructions executing at processor 5602 to operate on; the results of previous instructions executed at processor 5602 for access by subsequent instructions executing at processor 5602 or for writing to memory 5604 or storage 5606; or other suitable data. The data caches may speed up read or write operations by processor 5602. The TLBs may speed up virtual-address translation for processor 5602. In particular embodiments, processor 5602 may include one or more internal registers for data, instructions, or addresses. This disclosure contemplates processor 5602 including any suitable number of any suitable internal registers, where appropriate. Where appropriate, processor 5602 may include one or more arithmetic logic units (ALUs); be a multi-core processor; or include one or more processors 5602. Although this disclosure describes and illustrates a particular processor, this disclosure contemplates any suitable processor.
In particular embodiments, memory 5604 includes main memory for storing instructions for processor 5602 to execute or data for processor 5602 to operate on. As an example and not by way of limitation, computer system 5600 may load instructions from storage 5606 or another source (such as, for example, another computer system 5600) to memory 5604. Processor 5602 may then load the instructions from memory 5604 to an internal register or internal cache. To execute the instructions, processor 5602 may retrieve the instructions from the internal register or internal cache and decode them. During or after execution of the instructions, processor 5602 may write one or more results (which may be intermediate or final results) to the internal register or internal cache. Processor 5602 may then write one or more of those results to memory 5604. In particular embodiments, processor 5602 executes only instructions in one or more internal registers or internal caches or in memory 5604 (as opposed to storage 5606 or elsewhere) and operates only on data in one or more internal registers or internal caches or in memory 5604 (as opposed to storage 5606 or elsewhere). One or more memory buses (which may each include an address bus and a data bus) may couple processor 5602 to memory 5604. Bus 5612 may include one or more memory buses, as described below. In particular embodiments, one or more memory management units (MMUs) reside between processor 5602 and memory 5604 and facilitate accesses to memory 5604 requested by processor 5602. In particular embodiments, memory 5604 includes random access memory (RAM). This RAM may be volatile memory, where appropriate Where appropriate, this RAM may be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, where appropriate, this RAM may be single-ported or multi-ported RAM. This disclosure contemplates any suitable RAM. Memory 5604 may include one or more memories 5604, where appropriate. Although this disclosure describes and illustrates particular memory, this disclosure contemplates any suitable memory.
In particular embodiments, storage 5606 includes mass storage for data or instructions. As an example and not by way of limitation, storage 5606 may include a hard disk drive (HDD), a floppy disk drive, flash memory, an optical disc, a magneto-optical disc, magnetic tape, or a Universal Serial Bus (USB) drive or a combination of two or more of these. Storage 5606 may include removable or non-removable (or fixed) media, where appropriate. Storage 5606 may be internal or external to computer system 5600, where appropriate. In particular embodiments, storage 5606 is non-volatile, solid-state memory. In particular embodiments, storage 5606 includes read-only memory (ROM). Where appropriate, this ROM may be mask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM), or flash memory or a combination of two or more of these. This disclosure contemplates mass storage 5606 taking any suitable physical form. Storage 5606 may include one or more storage control units facilitating communication between processor 5602 and storage 5606, where appropriate. Where appropriate, storage 5606 may include one or more storages 5606. Although this disclosure describes and illustrates particular storage, this disclosure contemplates any suitable storage.
In particular embodiments, I/O interface 5608 includes hardware, software, or both, providing one or more interfaces for communication between computer system 5600 and one or more I/O devices. Computer system 5600 may include one or more of these I/O devices, where appropriate. One or more of these I/O devices may enable communication between a person and computer system 5600. As an example and not by way of limitation, an I/O device may include a keyboard, keypad, microphone, monitor, mouse, printer, scanner, speaker, still camera, stylus, tablet, touch screen, trackball, video camera, another suitable I/O device or a combination of two or more of these. An I/O device may include one or more sensors. This disclosure contemplates any suitable I/O devices and any suitable I/O interfaces 5608 for them. Where appropriate, I/O interface 5608 may include one or more device or software drivers enabling processor 5602 to drive one or more of these I/O devices. I/O interface 5608 may include one or more I/O interfaces 5608, where appropriate. Although this disclosure describes and illustrates a particular I/O interface, this disclosure contemplates any suitable I/O interface.
In particular embodiments, communication interface 5610 includes hardware, software, or both providing one or more interfaces for communication (such as, for example, packet-based communication) between computer system 5600 and one or more other computer systems 5600 or one or more networks. As an example and not by way of limitation, communication interface 5610 may include a network interface controller (NIC) or network adapter for communicating with an Ethernet or other wire-based network or a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network, such as a WI-FI network. This disclosure contemplates any suitable network and any suitable communication interface 5610 for it. As an example and not by way of limitation, computer system 5600 may communicate with an ad hoc network, a personal area network (PAN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), or one or more portions of the Internet or a combination of two or more of these. One or more portions of one or more of these networks may be wired or wireless. As an example, computer system 5600 may communicate with a wireless PAN (WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAX network, a cellular telephone network (such as, for example, a Global System for Mobile Communications (GSM) network), or other suitable wireless network or a combination of two or more of these. Computer system 5600 may include any suitable communication interface 5610 for any of these networks, where appropriate. Communication interface 5610 may include one or more communication interfaces 5610, where appropriate. Although this disclosure describes and illustrates a particular communication interface, this disclosure contemplates any suitable communication interface.
In particular embodiments, bus 5612 includes hardware, software, or both coupling components of computer system 5600 to each other. As an example and not by way of limitation, bus 5612 may include an Accelerated Graphics Port (AGP) or other graphics bus, an Enhanced Industry Standard Architecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT) interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBAND interconnect, a low-pin-count (LPC) bus, a memory bus, a Micro Channel Architecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, a PCI-Express (PCIe) bus, a serial advanced technology attachment (SATA) bus, a Video Electronics Standards Association local (VLB) bus, or another suitable bus or a combination of two or more of these. Bus 5612 may include one or more buses 5612, where appropriate. Although this disclosure describes and illustrates a particular bus, this disclosure contemplates any suitable bus or interconnect.
Herein, a computer-readable non-transitory storage medium or media may include one or more semiconductor-based or other integrated circuits (ICs) (such, as for example, field-programmable gate arrays (FPGAs) or application-specific ICs (ASICs)), hard disk drives (HDDs), hybrid hard drives (HHDs), optical discs, optical disc drives (ODDs), magneto-optical discs, magneto-optical drives, floppy diskettes, floppy disk drives (FDDs), magnetic tapes, solid-state drives (SSDs), RAM-drives, SECURE DIGITAL cards or drives, any other suitable computer-readable non-transitory storage media, or any suitable combination of two or more of these, where appropriate. A computer-readable non-transitory storage medium may be volatile, non-volatile, or a combination of volatile and non-volatile, where appropriate.
Herein, “or” is inclusive and not exclusive, unless expressly indicated otherwise or indicated otherwise by context. Therefore, herein, “A or B” means “A, B, or both,” unless expressly indicated otherwise or indicated otherwise by context. Moreover, “and” is both joint and several, unless expressly indicated otherwise or indicated otherwise by context. Therefore, herein, “A and B” means “A and B, jointly or severally,” unless expressly indicated otherwise or indicated otherwise by context.
The scope of this disclosure encompasses all changes, substitutions, variations, alterations, and modifications to the example embodiments described or illustrated herein that a person having ordinary skill in the art would comprehend. The scope of this disclosure is not limited to the example embodiments described or illustrated herein. Moreover, although this disclosure describes and illustrates respective embodiments herein as including particular components, elements, feature, functions, operations, or steps, any of these embodiments may include any combination or permutation of any of the components, elements, features, functions, operations, or steps described or illustrated anywhere herein that a person having ordinary skill in the art would comprehend. Furthermore, reference in the appended claims to an apparatus or system or a component of an apparatus or system being adapted to, arranged to, capable of, configured to, enabled to, operable to, or operative to perform a particular function encompasses that apparatus, system, component, whether or not it or that particular function is activated, turned on, or unlocked, as long as that apparatus, system, or component is so adapted, arranged, capable, configured, enabled, operable, or operative. Additionally, although this disclosure describes or illustrates particular embodiments as providing particular advantages, particular embodiments may provide none, some, or all of these advantages.
This application claims the benefit, under 35 U.S.C. § 119(e), of U.S. Provisional Patent Application No. 62/404,152, filed 4 Oct. 2016, and U.S. Provisional Patent Application No. 62/485,886, filed 14 Apr. 2017, which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62404152 | Oct 2016 | US | |
62485886 | Apr 2017 | US |