WO2022154958A1 - Virtual conferencing system with layered conversations - Google Patents

Virtual conferencing system with layered conversations Download PDF

Info

Publication number
WO2022154958A1
WO2022154958A1 PCT/US2021/065218 US2021065218W WO2022154958A1 WO 2022154958 A1 WO2022154958 A1 WO 2022154958A1 US 2021065218 W US2021065218 W US 2021065218W WO 2022154958 A1 WO2022154958 A1 WO 2022154958A1
Authority
WO
WIPO (PCT)
Prior art keywords
user
conversation
users
convo
communication system
Prior art date
Application number
PCT/US2021/065218
Other languages
French (fr)
Inventor
Leo GLISIC
Jesse KATZ
Dustin MALTZ
Original Assignee
Mycelium, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mycelium, Inc. filed Critical Mycelium, Inc.
Priority to EP21920074.8A priority Critical patent/EP4278272A4/en
Priority to CA3204966A priority patent/CA3204966A1/en
Publication of WO2022154958A1 publication Critical patent/WO2022154958A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1083In-session procedures
    • H04L65/1093In-session procedures by adding participants; by removing participants
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences
    • H04L65/4046Arrangements for multi-party communication, e.g. for conferences with distributed floor control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/56Arrangements for connecting several subscribers to a common circuit, i.e. affording conference facilities
    • H04M3/563User guidance or feature selection
    • H04M3/564User guidance or feature selection whereby the feature is a sub-conference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/56Arrangements for connecting several subscribers to a common circuit, i.e. affording conference facilities
    • H04M3/568Arrangements for connecting several subscribers to a common circuit, i.e. affording conference facilities audio processing specific to telephonic conferencing, e.g. spatial distribution, mixing of participants

Definitions

  • the invention relates to virtual communications applications, and more particularly to a communications platform which enables multiple layers of conversations.
  • a big limitation in today's virtual communication applications is the inability to have dynamic, fluid conversations.
  • Users' video tiles are generally laid out in a grid pattern and they are all engaged in one single conversation, regardless of how many users are in the videoconferencing session. If two users speak at a time, the other users in the session will hearthem both at the same time and it will sound as if they are talking over each other, making it difficult to understand what either user is saying. As a result, users have to be careful to take turns speaking, one at a time. This is equally frustrating for speakers and listeners, and disrupts the natural flow of conversations that are inhibited by these limitations.
  • Example 1 A virtual communication system including logic for supporting layered conversations, the system comprising:
  • each computer represents a User
  • each computer including a display, audio input, audio output, video input (such as a camera), memory, data storage, and a processor
  • a knowledge base stored in memory, the knowledgebase containing an identifier identifying each conversation associated with a given user, the knowledgebase storing information identifying each participant in each of the conversations, the knowledgebase storing information identifying the type of each conversation associated with the given one of the at least two computers, where each User may participate in multiple simultaneous conversations;
  • layered conversation logic executed by the processor, the layered conversation logic controlling a volume of each participant in each conversation in which the User participates in accordance with the conversation type.
  • Example 2 The virtual communication system of Example 1, wherein a given User may communicate with one or more other Users in a conversation type selected from the group (Layer 1, Layer 2, and Layer 3), wherein LCX1,X2,...XN refers to a Layer C communication between Users X, X2, ...XN, wherein if User XI is in a Layer 1 conversation with User X2 then they are not in Layer 2 or Layer 3 conversation, wherein if User XI is in Layer 2 conversation with User X2 then User XI and User X2 are in both Layer 1 and Layer 2 conversations but not in a Layer 3 conversation, and if User XI is in a Layer 3 conversation with User X2 then User XI and User X2 are in Layer 1, Layer 2 and Layer 3 conversations together, wherein the layered conversation logic scales the volume of User X2 experienced by User XI in conversation L1X1,X2 to Sl,l% volume where SI is a scaling factor.
  • LCX1,X2,...XN refers to a
  • Example 3 The virtual communication system of Example 2, wherein if the User XI is in L2X1,X3 then the layered conversation logic adjusts the volume of the User X3 heard by the User XI to S2,2% volume and scales the volume of User X2 experienced by User XI in conversation L1X1,X2 to S2,l% volume, where S2,l and S2,2 are scaling factors and S2,2>S2,1.
  • Example 4 The virtual communication system of Example 3, wherein if the user XI is in L3X1,X4 then the layered conversation logic adjusts the volume of the User X4 heard by the User XI to S3, 3% volume, scales the volume of User X3 experienced by User XI in conversation L2X1,X3 to S3, 2% volume, and scales the volume of User X2 experienced by User XI in conversation L1X1,X2 to S3,l% volume, where S3, 3, S3, 2 and S3,l are scaling factors and S3,3>S3,2>S3,1.
  • Example 5 The virtual communication system of Examples 1-4, wherein any User in conversation L1X1, X2, X3, ...XN may invite one or more Users of conversation L1X1, X2, X3, ...XN to participate in conversation L2X1, X2, X3, ...XN-1 contemporaneously with conversation L1X1, X2, X3, ...XN.
  • Example 6 The virtual communication system of Examples 1-5, wherein any User in conversation L2X1, X2, X3, ...XN may invite one or more Users of conversation L2X1, X2, X3, ...XN to participate in conversation L3X1, X2, X3, ...XN-1 contemporaneously with conversation L2X1, X2, X3, ...XN and conversation L1X1, X2, X3, ...XN.
  • Example 7 The virtual communication system of Examples 1-6, wherein any User in conversation L1X1, X2, X3, ...XN may join conversation L2X1, X2, X3, ...XN-1 contemporaneously with conversation L1X1, X2, X3, ...XN.
  • Example 8 The virtual communication system of Examples 1-7, wherein any User in conversation L2X1, X2, X3, ...XN may join conversation L3X1, X2, X3, ...XN-1 contemporaneously with conversation L1X1, X2, X3, ...XN.
  • Example 9 The virtual communication system of Examples 1-8, wherein the volume may be further scaled by a scaling factor DX,Y in proportion to a virtual separation between user X and User Y within the virtual communication system.
  • Example 10 The virtual communication system of Examples 1-9, wherein the volume may be further scaled by a scaling factor EX,Y in proportion to the facing orientation of user X relative to user Y within the virtual communication system.
  • Example 11 The virtual communication system of Examples 1-10, wherein the volume may be further scaled by a scaling factor FX,Y in proportion to the facing orientation of user Y relative to user X within the virtual communication system.
  • Example 12 The virtual communication system of Examples 1-11, wherein the volume may be further scaled by a scaling factor GX,Y in proportion to the volume scaling preferences of user X.
  • Example 13 The virtual communication system of Example 1, wherein the layered conversation logic controls the volume and a visual layout of each participant in each conversation in which the User participates in accordance with the conversation type.
  • Example 14 The virtual communication system of Example 2, wherein users belonging to a given Layer 2 conversation are objectively positioned in a virtual space at a predefined distance, orientation and layout in relation to each other.
  • Example 15 The virtual communication system of Example 14 further including visual indicators indicating users belonging to the given Layer 2 conversation.
  • Example 16 The virtual communication system of Example 2, wherein for every user in a Layer 2 conversation, the other users in the same Layer 2 conversations are subjectively positioned in a virtual space according to a predefined distance, orientation and layout in relation to each other and in relation to that user.
  • Example 17 The virtual communication system according to Example 16, wherein visual indicators indicate users belonging to the same Layer 2 conversation.
  • Example 18 The virtual communication system of Example 2, wherein users belonging to a given Layer 3 conversation are objectively positioned in a virtual space at a specified distance, orientation and layout in relation to each other.
  • Example 19 The virtual communication system of Example 18, wherein visual indicators indicate users belonging to the given Layer 3 conversation.
  • Example 20 The virtual communication system of Example 2, wherein every user in a Layer 3 conversation is subjectively positioned in a virtual space according to a predefined distance, orientation and layout in relation to other users in the Layer 3 conversation.
  • Example 21 The virtual communication system according to Example 20, wherein visual indicators indicate users belonging to the given Layer 3 conversation.
  • FIG. 1 is a diagram depicting users A-D
  • FIG. 2 is a diagram depicting Users A-D with an arrow denoting a direction each user is facing;
  • FIG. 3 is a diagram depicting users A, B, C, D, and E in a Convo with each other, while users G and F are not in a Convo;
  • FIG. 4 is a diagram depicting users A, B, C, D, E in Convo 1, users H, I, J in Convo 2 and users F and K not in any Convo;
  • FIG. 5 is a diagram depicting users A, B, C, D, E in Convo 1, users F, G, H, I, J, K in Convo 2;
  • FIG. 6 is a diagram showing user A, B, C, D, E in Convo 1, users F, G, H, I, J, K in Convo 2, users L, M, N in Convo 3 and user P & Q. not in any conversation;
  • FIG. 7 is a diagram depicting users A, B, C, D & E in a 5-person Convo, facing the center as shown by the arrows;
  • FIG. 8 is a diagram depicting users A, B, C, D & E in a 5-person Convo, facing the center as shown by the arrows;
  • FIG. 8 is a diagram depicting user C's field of view
  • FIG. 9 is a diagram illustrating User C's field of view from a first-person perspective, represented by the cone shape filled with the diagonal-line pattern and dashed lines on the outside of it;
  • FIG. 10 is a diagram illustrating what a wider field of view for User C might look like from a top-down view;
  • FIG. 11 is a diagram illustrating what it might look like in a three-dimensional space from User C's first-person point of view
  • FIG. 12 is a diagram of a subjective view in which, from User C's first-person point of view, they are able to see all the other users in their field of view, and their videos are tilted facing toward User C (either perfectly facing or only slightly tilted);
  • FIG. 13 depicts an example of User A's subjective view, allowing User A to see Users D, E,
  • FIG. 14 illustrates the example of FIG. 13 after User E leaves
  • FIG. 15 illustrates the example of FIG. 13 after User F joins
  • FIG. 16 is a block diagram of a client-server implementation
  • FIG. 17 is a block diagram of a peer-to-peer implementation
  • FIG. 18 is a block diagram of starting a convo in a peer-to-peer implementation
  • FIG. 19 is a block diagram of starting a convo in a client-server implementation
  • FIGs. 20A-20B are diagrams of a conversation before and after user A joins;
  • FIG. 21 is a block diagram depicting the new positions and orientations within a Convo in a peer-to-peer implementation.
  • FIG. 22 is a block diagram depicting the new positions and orientations within a Convo in a client-server implementation.
  • a virtual conferencing system includes layers of conversations:
  • Layer 1 (entire session): the entire session including all of the users / participants at a virtual event or gathering.
  • Layer 2 main conversations: a subset of the users / participants in layer 1 who have gathered into smaller group conversations.
  • Layer 3 within each Layer 2 conversation, a subset of users / participants involved in sidebar conversations.
  • each participant in the conversation described herein accesses the Virtual Conferencing System ("System") using a computer, smartphone, gaming device, augmented or virtual reality device, or like device (hereinafter computer or User) which includes a processor or CPU or like hardware capable of executing software commands, a display, a data entry device such but not limited to a keyboard, memory, communications hardware facilitating telecommunications over a communications medium such as the internet, audio input (e.g., microphone) and audio output (e.g., speaker).
  • the audio input and audio output may be combined into a headset, or any other method of communicating and/or translating audio inputs and outputs, including but not limited to translating audio inputs and outputs to other mediums, as is often done with adaptive tools.
  • the System may be implemented as a Peer-to-Peer communication system in which case each peer is a User.
  • the System may be implemented as a Client-Server communication system in which case Client is a User and the Server is a computer which facilitates and coordinates communication among the Clients (Users).
  • the Server need not include the audio input (e.g., microphone) and audio output, e.g., speaker.
  • the System of the invention includes logic for layering communications which may be implemented as software, hardware or a combination of both.
  • the logic may be implemented in code stored in a read-only-memory (ROM) device, an erasable programmable read-only- memory (EPROM or EEPROM) device or the like.
  • ROM read-only-memory
  • EPROM erasable programmable read-only- memory
  • EEPROM erasable programmable read-only- memory
  • the logic may be implemented in software code or instructions stored in memory residing within the computer, on a removable/portable media such as a memory stick, or on a server accessible over the internet.
  • the description that follows lays out a technical solution to enable layered conversations within a virtual communication, augmented reality, or gaming application which should be understood to be any application within which communications between users is facilitated (hereinafter videoconferencing or virtual conferencing application).
  • the layered conversation is not actually a conversation but rather consists of music or other sounds which may be associated with a location and orientation of a User within the virtual environment.
  • the technical solution may be used to enable layered conversations within a videogame application including three-dimensional gaming applications.
  • the first step in enabling layered conversations is to add a spatial dimension to a videoconferencing application.
  • a spatial dimension can either be two or more dimensions.
  • most of the diagrams in this document will be based on a two-dimensional world with a top-down (birds' eye view) perspective, but they can just as easily be applied to a three-dimensional environment.
  • the users can move within this world by any combination of one or more mechanisms (for example, the arrow keys on their keyboard), joystick, gestures, or the like.
  • the volume of other users' audio may automatically adjust based on relative distance.
  • each user is represented by a gray circle, such that User A is the gray circle with the letter 'A' inside of it.
  • User A can hear User C at a relatively higher volume, User B at a relatively moderate volume, and User D at a relatively low volume.
  • V is the volume
  • d is the distance
  • p is the power exponent
  • each user may also be adjusted based on the orientation of that user to other users or interactive element(s).
  • 'orientation we mean where any user is directing their attention or focus toward or away from anyone or anything, which may be accomplished by any combination of one or more aspects of controls that might indicate orientation such as the direction a user is facing, moving, turning, looking, gesturing, etc.
  • FIG. 2 each user's orientation is represented by the arrow attached to that user.
  • users B, C and D are at equal distance to User A, but they are facing in different directions as denoted by the arrows.
  • User A would hear User B the loudest, User C at a lower volume than B, but higher than D, and User D at the lowest relative volume.
  • the volume calculations for both distance and orientation can be performed and applied independently, or in combination.
  • One possible implementation would be to cross-multiply the distance and orientation values to create a combined volume adjustment. For example, if User A would hear User B at 80% of full volume based on their relative distance, and at 70% based on User B's orientation, then the combined effect would be that User A would hear User B at 80% times 70%, or 56% of full volume.
  • Laver 2 main conversations or 'Convos'
  • Layer 1 allows users to move between conversations, which encourages more active participation, but will be a sub-optimal experience for several reasons:
  • Convo they can hear all other users inside that same Convo at full volume, and users outside of the Convo at a reduced volume.
  • User A could hear users B, C, D, and E at full volume, and users G and F at reduced volume.
  • the volume reduction applied to the volumes of User G and User F may be combined (for example, in a multiplicative manner) with volume reduction factors due to the distance and orientation of those users relative to User A.
  • An optional movement limitation may be imposed, such as not allowing users inside the Convo to move around freely within the world until they exit the Convo.
  • each user may see a subjective view of other users' video tiles which arranges them into a pattern, such as in the shape of a semi-circle, with respect to that user and faces their video tiles more in the direction of that user. See section titled 'Subjective Convo View' for further description.
  • Multiple Convos can exist in a single Layer 1 session.
  • Users A, B, C, D, and E are in one Convo (labeled Convo 1).
  • Users H, I and J are in another Convo (labeled Convo 2).
  • Users F, G and K are not in a Convo.
  • all users in Convo 1 may hear each other at full volume, and may hear all other users (H, I, J, K, F, and G) at reduced volume, based on a Convo volume reduction factor as well as additional volume reduction factors due to distance and orientation.
  • all users in Convo 2 may hear each other at full volume, and may hear all other users at reduced volume due to all three reduction factors (Convo, distance, orientation).
  • users K, F and G may hear all other users at a reduced volume due to distance and orientation, but not due to a Convo reduction factor since they are not in a Convo.
  • other factors can be introduced such that users who are not in a Convo hear users who are in a Convo at enhanced or reduced volume.
  • Layers 1 and 2 combined enable users to move around a virtual world, interact with each other, and freely organize into smaller conversations within one session, so that multiple conversations can take place at the same time.
  • a Sidebar can take place inside of a Convo between users who are part of the same Convo.
  • a Sidebar can consist of two or more users.
  • d) One example that can be included in the System is that if the number of users inside of a Sidebar reaches N-x, where N is the number of users in a Convo and x is either predetermined or prespecified number (majority or supermajority), then the Sidebar has grown to overtake the Convo and may dissipate such that all users are returned to the Convo. In other words, the Sidebar may automatically cease to be a Sidebar if the number of participants exceeds a threshold value. In that case, the "Sidebar" is the main conversation and the Sidebar dissipates in favor of the Convo.
  • Users' volumes may be adjusted such that: [000103] a) Users in a Sidebar hear other users inside the same Sidebar at full volume, and the rest of the users in the same Convo at a reduced volume based on a Sidebar volume reduction factor
  • c) Users G and F will hear each other at full volume and will hear users H, I, J, and K at reduced volume.
  • An indicator of some kind may be employed to let users know who they are in a Sidebar with.
  • a different indicator will be used to let users know if other users are in a Sidebar with each other.
  • visual indicators such as matching borders / frames / rings can be placed around users' video tiles to indicate that they are in the same Sidebar. They can be matching based on any combination of colors, shapes, sizes or patterns to indicate which users are in the same Sidebar and which ones are in a different Sidebar or not in a Sidebar at all.
  • Convo 1 contains 5 users, with 3 users in a Sidebar within that Convo.
  • Convo 2 contains 6 users, with 2 Sidebars within that Convo, each containing 2 users.
  • Convo 3 contains 3 users with no Sidebars.
  • Three (3) additional users (P, Q, and R) are not in a Convo.
  • All volume adjustment rules outlined so far may be combined (for example, in a multiplicative manner), such that for each user, every other user's volume is adjusted based on: (1) Spatial distance to that user, Orientation relative to that user; (2) Whether that user is in a Convo and whether the other users are in a Convo; or (3) Whether that user is in a Sidebar and whether the other users are in a Sidebar.
  • Convos A user can start a new Convo with another user as long as neither of them is currently in a Convo. Some examples by which a Convo can be started are:
  • a user spatially approaches another user and stops moving, which commences a countdown. As long as neither user moves for a set time interval (for example, 3 seconds), they are automatically entered into a Convo. In addition to the time interval, additional criteria may be added, such as how far apart the two users are the angle at which they are facing each other.
  • an interface e.g., a symbol above the other user's video tile
  • a user locates another user in a directory table accessible through a Ul interface and from there selects an option to start a Convo with that user.
  • a user locates another user in a directory table accessible through a Ul interface and from there selects an option to join a Convo with that user.
  • a user locates the Convo in a directory table accessible through a Ul interface and from there selects an option to join that Convo.
  • An algorithm is used to add users to an existing Convo, either based on random placement or some type of selection rule (for example, matching based on shared interests). Users inside an existing Convo may place (bring) a user currently outside of that Convo inside their Convo.
  • a user uses a movement key (for example, the down arrow on the keyboard) to walk out of the Convo.
  • a user uses a movement key (for example, the down arrow on the keyboard) to walk out of the Convo, but needs to hold that movement key down for a set time interval (for example, 1 second).
  • a user clicks on an interface for example, a button labeled 'Exit Conversation'
  • a user is removed or kicked out of a Convo by a user (participant) in that Convo, subject to certain permissions or consensus.
  • a user can start a new Sidebar with another user as long as both of them are in the same Convo and the other user is not currently in a Sidebar.
  • Some examples by which a Sidebar could be started are:
  • a user locates another user in a directory table accessible through a Ul interface and from there selects an option to start a Sidebar with that user.
  • a user can join an existing Sidebar as long as that Sidebar is within the same Convo as that user.
  • Some examples by which a Sidebar could be joined are: [000146] - A user clicks on the video tile of another user who is currently in that Sidebar.
  • a user locates another user in a directory table accessible through a Ul interface and from there selects an option to join a Sidebar with that user.
  • a user locates the Sidebar in a directory table accessible through a Ul interface and from there selects an option to join that Sidebar.
  • a user can exit a Sidebar if they are inside of a Sidebar.
  • Some examples by which a Sidebar could be exited are:
  • a user uses a keyboard key or shortcut to exit a Sidebar.
  • a user is removed or kicked out of a Sidebar by one or more users, subject to certain permissions or consensus.
  • FIG. 7 users A, B, C, D & E are in a 5-person Convo, facing the center as shown by the arrows. This is a top-down (bird's eye view) of the Convo.
  • FIG. 8 illustrates the problem that arises without a subjective view; we take the same diagram shown in FIG. 7 but instead of circles representing each of the users, we use lines to indicate which way their video tiles may be oriented as they are facing in the direction of the arrows.
  • FIG. 9 we represent User C's field of view from a first-person perspective, represented by the cone shape filled with the diagonal-line pattern and dashed lines on the outside of it.
  • FIG. 10 illustrates what a wider field of view for User C might look like from a top-down view.
  • FIG. 11 illustrates what it might look like in a three-dimensional space from User C's first- person point of view.
  • the pattern with squares represents the area where the video tiles would be displayed, and arrows denote the direction that the video tiles would be tilted.
  • Users D and E may be visible (from C's perspective), with their videos somewhat tilted, and users A and B may be mostly outside of the field-of-view and their videos may be significantly tilted.
  • FIG. 13 illustrates an example of User A's subjective view, allowing User A to see Users D, E, B, and C's video tiles all appearing as if they are facing User A.
  • This subjective view may automatically adapt to accommodate more or fewer users. For example, if User E leaves, the view may adjust to a 4-person Convo subjective view. See, FIG. 14.
  • FIGs. 12-15 are purely illustrative, and different variations can be taken in the shape and size of the video tiles, and the layout in which they are arranged. For example, instead of oval-shaped video tiles being arranged in a semi-circle, we might have square-shaped tiles arranged in a triangle layout. Regardless of which shape and layout is chosen, each user may have a subjective view of the other users' video tiles to enable them to see all the users in the same convo, and to have them all tilted in the direction of that user.
  • the subjective view may or may not be applied to a Convo with only a few participants (for example, a 2-person or 3-person Convo), as a few users may simply be able to face each other without the problems outlined earlier.
  • the other Convo rules (such as volume adjustments) may still be applied while allowing the few users to move around and turn freely, as long as certain factors such as their distance and orientation remain within a certain range.
  • a certain level of coordination and communication between users may help to ensure that Convos and Sidebars function as previously described, such that each user knows: [000176] 1) Which, if any, Convo or Sidebar that user belongs to; and
  • This information may be contained in Convo and Sidebar objects, where each object contains a unique ID for that Convo or Sidebar and a list of users which are part of that Convo or Sidebar.
  • the collection of this and other information, in some storage medium e.g., memory, storage or a database
  • the 'knowledge base' e.g., memory, storage or a database
  • Each user (and server, if a server is part of the architecture) may keep and maintain its own knowledge base.
  • Communication between users and / or server can happen via any number of web-based communication protocols (such as TCP, IP, HTTP, or the like), or any communication channels built on those protocols (such as web sockets, BOSH, REST, or the like).
  • web-based communication protocols such as TCP, IP, HTTP, or the like
  • any communication channels built on those protocols such as web sockets, BOSH, REST, or the like.
  • This communication and coordination may happen through a peer-to-peer architecture (each user communicates directly with every other user), through a client-server architecture (where each user is a client and the clients communicate and coordinate through a server, which then communicates and coordinates with the other users / clients), or through combination of the two (for example, some communication or coordination might happen through peer-to-peer implementation while a different communication or coordination might happen through a client-server implementation).
  • FIG. 16 is an illustrative diagram of a client-server architecture in which Users A, B, C, and D communicate and / or coordinate with each other through a Server.
  • the blocks represent the nodes (Server and clients) and the lines represent the connections for communication. For example, if User A wanted to communicate something to User C, that message may be sent from User A to the Server and then from the Server to User C. If any calculations are required, they may be performed by individual users or they may be performed by the Server and then the results may be communicated to the users.
  • FIG. 17 is an illustrative diagram of a peer-to-peer architecture in which users A, B, C, and D communicate and/or coordinate directly with each other.
  • this architecture if User A wanted to communicate something to User C, that message may be sent directly from User A to User C. If any calculations are required, they may either be performed by User A and the results may be communicated directly to user C, or they may be performed by user C after the needed input data is received from user A.
  • a 'Start Convo' mechanism may be triggered by any number of potential events as outlined earlier in this document. Once this trigger occurs, the implementations for peer-to-peer and client-server might be as follows:
  • A) Peer-to-peer implementation User A would send a request to User B to start a new Convo with User A. Upon receiving the request, User B would verify that they are not in another Convo and then create a new Convo object (represented by a unique ID) and would send that ID back to User A confirming the start of a new Convo between A and B. User B would then place themselves in a Convo with User A. Upon receiving the confirmation and the ID from User B, User A would also place themselves in a Convo with User B. Both users are now in a new Convo with the other user and they both have the same Convo ID for that Convo object.
  • the Server also updates its own knowledge base with the new Convo ID and which users it contains. Along with the completion of this process, the Server would also send out a communication to all other users in the same session letting them know that there is a new Convo object, providing the ID for that object, and that it contains Users A and B. All other users would then update their knowledge base with the new information. See, FIG. 19.
  • a 'Join Convo' mechanism may be triggered by any number of potential actions or events as outlined earlier in this document. Once this trigger occurs, the implementations for peer-to-peer and client-server might be as follows:
  • A) Peer-to-peer implementation User A would already have in its knowledge base (updated prior to this) that users B and C are in a Convo and what the Convo ID is. User A would place themselves inside the Convo with users B and C, and send a communication to both users B and C that
  • User A is joining that Convo with the same ID.
  • users B and C Upon receiving the communication, users B and C would update their Convo to include User A.
  • User A would also send out a communication to all other users in the same session letting them know that that Convo object with that Convo ID now also includes User A, and all other users would update their knowledge base with the new information.
  • a race condition arises when the correct operation of a program or algorithm is dependent on the right sequence or timing of certain processes. For example, if User D joined the Convo between users B and C at the same time, or close to the same time, as User A, then potentially we could end up with inconsistent versions of the Convo object where: [000194] Some users receive the message from User A before the message from User D.
  • an extra handshake or verification step may be added such that a user (such as User B or C, or some other user) serves as the arbiter and confirms to either User A or User D that they are allowed to join the Convo before they join, and using that as a forcing function to prevent two or more changes happening concurrently.
  • a clientserver implementation may resolve race conditions by using the Server as the arbiter and single source of truth regarding Convo objects.
  • the Server would first verify that no other users are in the process of joining or exiting the same Convo, or in the process of starting a Convo with User A. Upon verifying, the Server would add User A to the same Convo object and send an update to all users in the session that User A is now a part of that Convo. Upon receiving the update, o User A would place themselves in the Convo with users B and C. o Users B and C would place User A in that Convo. o All other users would update their knowledge base with the new information.
  • an 'Exit Convo' mechanism may be triggered by any number of potential actions or events, such as those previously outlined in this document. Once this trigger occurs, the implementations for peer-to-peer and client-server might be as follows:
  • A) Peer-to-peer implementation User A would send a communication to all other users in the session that User A is exiting the Convo object, along with the Convo ID. User A would then remove themselves from the Convo. Upon receiving the communication from User A:
  • the Convo object may be terminated and neither user would belong to a Convo any longer.
  • the Server would then send the update to all other users in the session with the new information.
  • all users Upon receiving the communication from the Server, all users would update their knowledge base and Convo objects accordingly.
  • FIG. 20A shows how User B, C, D, and E might be placed and arranged prior to User A joining a Convo
  • FIG. 20B shows how they might need to be moved and reoriented after User A joins the Convo.
  • the output of the calculation might then include the users' new positions and orientations.
  • the implementation for peer-to-peer and client-server might be as follows.
  • Peer-to-peer implementation In a peer-to-peer implementation, we would have each user in a Convo perform these calculations independently. Given the same set of inputs and the same 1 arithmetic to be applied, each user would arrive at the same output on their own and then position and turn themselves accordingly. In the example above, upon User A joining, User C would calculate User C's new position and orientation, User D would calculate User D's new position and orientation, and so on. Upon each user completing their own calculation, they would communicate their new position and orientation out to all other users in the session so that they can update their knowledge base. One way this may be implemented is shown in FIG. 21.
  • Client-server implementation In a client-server implementation, the Server would perform the calculation once and communicate out the new positions and orientations to all other users. In the example above, upon User A joining, the Server would calculate new positions and orientations for Users A, B, C, D and E, and would then send those out to all users. Upon receiving the information from the Server:
  • a 'Start Sidebar' mechanism may be triggered by any number of potential events as outlined earlier in this document. Once this trigger occurs, the implementations for peer-to-peer and client-server might be as follows.
  • Peer-to-peer implementation User A would send a request to User B to start a new Sidebar with User A. Upon receiving the request, User B would verify that they are not already in another Sidebar and then create a new Sidebar object (represented by a unique ID) and would send that ID back to User A confirming the start of a new Sidebar between A and B. User B would then place themselves in a Sidebar with User A. Upon receiving the confirmation and the ID from User B, User A would also place themselves in a Sidebar with User B. Both users are now in a new Sidebar with the other user and they both have the same Convo ID for that Convo object.
  • either User A or User B would send out a communication to all other users in the same session letting them know that there is a new Sidebar object, providing the ID for that object, and that it contains users A and B. All other users would update their knowledge base with the new information.
  • Client-server implementation User A would send a request to the Server to start a new Sidebar with User B.
  • the Server would check its knowledge base to verify that User B is not currently in a Sidebar.
  • the Server Upon successfully verifying, the Server would create a new Convo object (represented by a unique ID) containing users A and B and would send that ID out to both users A and B instructing them to place themselves in a Sidebar and who the other user is in that Sidebar.
  • users A and B Upon receiving the instructions from the Server, users A and B would both place themselves in a Sidebar with the other user. Both users are now in a new Sidebar with the other user and they both have the same Sidebar ID for that Sidebar object.
  • the Server also updates its own knowledge base with the new Sidebar object and which users it contains.
  • the Server would also send out a communication to all other users in the same session letting them know that there is a new Sidebar object, providing the ID for that object, and that it contains users A and B. All other users would update their knowledge base with the new information.
  • a 'Join Sidebar' mechanism may be triggered by any number of potential events as outlined earlier in this document.
  • the implementations for peer-to-peer and client-server might be as follows.
  • Peer-to-peer implementation User A would already have in its knowledge base (updated prior to this) that users B and C are in a Sidebar and what the Sidebar ID is. User A would place themselves inside the Sidebar with users B and C, and send a communication to both users B and C that User A is joining that Sidebar with the same ID.
  • users B and C would update their Sidebar to include User A.
  • User A would also send out a communication to all other users in the same session letting them know that that Sidebar object with that Sidebar ID now also includes User A, and all other users would update their knowledge base with the new information.
  • Client-server implementation User A would already have in its knowledge base (updated prior to this) that users B and C are in a Sidebar and what the Sidebar ID is. User A would send a request to the Server to join the Sidebar. To prevent race conditions, the Server would first verify that no other users are in the process of joining or exiting the same Sidebar, or in the process of starting a Sidebar with User A. Upon verifying, the Server would add User A to the same Sidebar object and send an update to all users in the session that User A is now a part of that Sidebar. Upon receiving the update, o User A would place themselves in the Sidebar with users B and C o Users B and C would place User A in that Sidebar o All other users would update their knowledge base with the new information
  • an 'Exit Sidebar' mechanism may be triggered by any number of potential events as outlined earlier in this document. Once this trigger occurs, the implementations for peer-to-peer and client-server might be as follows.
  • Peer-to-peer implementation User A would send a communication to all other users in the session that User A is exiting the Sidebar object, along with the Sidebar ID. User A would then remove themselves from the Sidebar. Upon receiving the communication from User A: [000225] - Other users who were in the same Sidebar as User A would remove User A from their
  • Client-server implementation User A would send a communication to the Server that User A is exiting the Sidebar object, along with the Sidebar ID. User A would then remove themselves from the Sidebar. Upon receiving the communication from User A, the Server would update the Sidebar object in its knowledge base such that it no longer contains User A. If there were only two users in that Sidebar object prior to User A exiting, the Sidebar object may be terminated and neither user would belong to a Sidebar any longer. The Server would then send the update to all other users in the session with the new information, all users would update their knowledge base and Convo objects accordingly.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)

Abstract

A virtual communication system including logic for supporting layered conversations, the system comprising: at least two computers communicating to one another over a communications medium, where each computer represents a User, each computer including a display, audio input, audio output, video input (such as a camera), memory, data storage, and a processor, a knowledge base stored in memory, the knowledgebase containing an identifier identifying each conversation associated with a given user, the knowledgebase storing information identifying each participant in each of the conversations, the knowledgebase storing information identifying the type of each conversation associated with the given one of the at least two computers, where each User may participate in multiple simultaneous conversations; and layered conversation logic executed by the processor, the layered conversation logic controlling a volume and a visual layout of each participant in each conversation in which the User participates in accordance with the conversation type.

Description

VIRTUAL CONFERENCING SYSTEM WITH LAYERED CONVERSATIONS
[0001] Field of the Invention
[0002] The invention relates to virtual communications applications, and more particularly to a communications platform which enables multiple layers of conversations.
[0003] Background
[0004] A big limitation in today's virtual communication applications (such as video conferencing applications, voice-only applications, or gaming environments with voice and/or video capabilities) is the inability to have dynamic, fluid conversations. Users' video tiles are generally laid out in a grid pattern and they are all engaged in one single conversation, regardless of how many users are in the videoconferencing session. If two users speak at a time, the other users in the session will hearthem both at the same time and it will sound as if they are talking over each other, making it difficult to understand what either user is saying. As a result, users have to be careful to take turns speaking, one at a time. This is equally frustrating for speakers and listeners, and disrupts the natural flow of conversations that are inhibited by these limitations.
[0005] In contrast, we observe that at in-person gatherings, people exhibit tendencies to self-organize into smaller groups and conversations that are occurring simultaneously. Additionally, we observe that people frequently make side comments or engage in side conversations within a group conversation. We refer to this dynamic as sidebar conversations. Throughout this disclosure the term "conversation" is intended to refer to a verbal conversation as opposed to written or textual conversations. The present invention addresses the shortcomings of conventional virtual communications platforms as follows. [0006] Summary of the Invention
[0007] Example 1: A virtual communication system including logic for supporting layered conversations, the system comprising:
[0008] at least two computers communicating to one another over a communications medium, where each computer represents a User, each computer including a display, audio input, audio output, video input (such as a camera), memory, data storage, and a processor, a knowledge base stored in memory, the knowledgebase containing an identifier identifying each conversation associated with a given user, the knowledgebase storing information identifying each participant in each of the conversations, the knowledgebase storing information identifying the type of each conversation associated with the given one of the at least two computers, where each User may participate in multiple simultaneous conversations; and
[0009] layered conversation logic executed by the processor, the layered conversation logic controlling a volume of each participant in each conversation in which the User participates in accordance with the conversation type.
[00010] Example 2: The virtual communication system of Example 1, wherein a given User may communicate with one or more other Users in a conversation type selected from the group (Layer 1, Layer 2, and Layer 3), wherein LCX1,X2,...XN refers to a Layer C communication between Users X, X2, ...XN, wherein if User XI is in a Layer 1 conversation with User X2 then they are not in Layer 2 or Layer 3 conversation, wherein if User XI is in Layer 2 conversation with User X2 then User XI and User X2 are in both Layer 1 and Layer 2 conversations but not in a Layer 3 conversation, and if User XI is in a Layer 3 conversation with User X2 then User XI and User X2 are in Layer 1, Layer 2 and Layer 3 conversations together, wherein the layered conversation logic scales the volume of User X2 experienced by User XI in conversation L1X1,X2 to Sl,l% volume where SI is a scaling factor. [00011] Example 3: The virtual communication system of Example 2, wherein if the User XI is in L2X1,X3 then the layered conversation logic adjusts the volume of the User X3 heard by the User XI to S2,2% volume and scales the volume of User X2 experienced by User XI in conversation L1X1,X2 to S2,l% volume, where S2,l and S2,2 are scaling factors and S2,2>S2,1.
[00012] Example 4: The virtual communication system of Example 3, wherein if the user XI is in L3X1,X4 then the layered conversation logic adjusts the volume of the User X4 heard by the User XI to S3, 3% volume, scales the volume of User X3 experienced by User XI in conversation L2X1,X3 to S3, 2% volume, and scales the volume of User X2 experienced by User XI in conversation L1X1,X2 to S3,l% volume, where S3, 3, S3, 2 and S3,l are scaling factors and S3,3>S3,2>S3,1.
[00013] Example 5: The virtual communication system of Examples 1-4, wherein any User in conversation L1X1, X2, X3, ...XN may invite one or more Users of conversation L1X1, X2, X3, ...XN to participate in conversation L2X1, X2, X3, ...XN-1 contemporaneously with conversation L1X1, X2, X3, ...XN. [00014] Example 6: The virtual communication system of Examples 1-5, wherein any User in conversation L2X1, X2, X3, ...XN may invite one or more Users of conversation L2X1, X2, X3, ...XN to participate in conversation L3X1, X2, X3, ...XN-1 contemporaneously with conversation L2X1, X2, X3, ...XN and conversation L1X1, X2, X3, ...XN.
[00015] Example 7: The virtual communication system of Examples 1-6, wherein any User in conversation L1X1, X2, X3, ...XN may join conversation L2X1, X2, X3, ...XN-1 contemporaneously with conversation L1X1, X2, X3, ...XN.
[00016] Example 8: The virtual communication system of Examples 1-7, wherein any User in conversation L2X1, X2, X3, ...XN may join conversation L3X1, X2, X3, ...XN-1 contemporaneously with conversation L1X1, X2, X3, ...XN. [00017] Example 9: The virtual communication system of Examples 1-8, wherein the volume may be further scaled by a scaling factor DX,Y in proportion to a virtual separation between user X and User Y within the virtual communication system.
[00018] Example 10: The virtual communication system of Examples 1-9, wherein the volume may be further scaled by a scaling factor EX,Y in proportion to the facing orientation of user X relative to user Y within the virtual communication system.
[00019] Example 11: The virtual communication system of Examples 1-10, wherein the volume may be further scaled by a scaling factor FX,Y in proportion to the facing orientation of user Y relative to user X within the virtual communication system.
[00020] Example 12: The virtual communication system of Examples 1-11, wherein the volume may be further scaled by a scaling factor GX,Y in proportion to the volume scaling preferences of user X.
[00021] Example 13: The virtual communication system of Example 1, wherein the layered conversation logic controls the volume and a visual layout of each participant in each conversation in which the User participates in accordance with the conversation type.
[00022] Example 14: The virtual communication system of Example 2, wherein users belonging to a given Layer 2 conversation are objectively positioned in a virtual space at a predefined distance, orientation and layout in relation to each other.
[00023] Example 15: The virtual communication system of Example 14 further including visual indicators indicating users belonging to the given Layer 2 conversation.
[00024] Example 16: The virtual communication system of Example 2, wherein for every user in a Layer 2 conversation, the other users in the same Layer 2 conversations are subjectively positioned in a virtual space according to a predefined distance, orientation and layout in relation to each other and in relation to that user. [00025] Example 17: The virtual communication system according to Example 16, wherein visual indicators indicate users belonging to the same Layer 2 conversation.
[00026] Example 18: The virtual communication system of Example 2, wherein users belonging to a given Layer 3 conversation are objectively positioned in a virtual space at a specified distance, orientation and layout in relation to each other.
[00027] Example 19: The virtual communication system of Example 18, wherein visual indicators indicate users belonging to the given Layer 3 conversation.
[00028] Example 20: The virtual communication system of Example 2, wherein every user in a Layer 3 conversation is subjectively positioned in a virtual space according to a predefined distance, orientation and layout in relation to other users in the Layer 3 conversation.
[00029] Example 21: The virtual communication system according to Example 20, wherein visual indicators indicate users belonging to the given Layer 3 conversation.
[00030] Brief Description of the Drawings
[00031] FIG. 1 is a diagram depicting users A-D;
[00032] FIG. 2 is a diagram depicting Users A-D with an arrow denoting a direction each user is facing;
[00033] FIG. 3 is a diagram depicting users A, B, C, D, and E in a Convo with each other, while users G and F are not in a Convo;
[00034] FIG. 4 is a diagram depicting users A, B, C, D, E in Convo 1, users H, I, J in Convo 2 and users F and K not in any Convo;
[00035] FIG. 5 is a diagram depicting users A, B, C, D, E in Convo 1, users F, G, H, I, J, K in Convo 2;
[00036] FIG. 6 is a diagram showing user A, B, C, D, E in Convo 1, users F, G, H, I, J, K in Convo 2, users L, M, N in Convo 3 and user P & Q. not in any conversation; [00037] FIG. 7 is a diagram depicting users A, B, C, D & E in a 5-person Convo, facing the center as shown by the arrows;
[00038] FIG. 8 is a diagram depicting users A, B, C, D & E in a 5-person Convo, facing the center as shown by the arrows;
[00039] FIG. 8 is a diagram depicting user C's field of view;
[00040] FIG. 9 is a diagram illustrating User C's field of view from a first-person perspective, represented by the cone shape filled with the diagonal-line pattern and dashed lines on the outside of it; [00041] FIG. 10 is a diagram illustrating what a wider field of view for User C might look like from a top-down view;
[00042] FIG. 11 is a diagram illustrating what it might look like in a three-dimensional space from User C's first-person point of view;
[00043] FIG. 12 is a diagram of a subjective view in which, from User C's first-person point of view, they are able to see all the other users in their field of view, and their videos are tilted facing toward User C (either perfectly facing or only slightly tilted);
[00044] FIG. 13 depicts an example of User A's subjective view, allowing User A to see Users D, E,
B, and C's video tiles all appearing as if they are facing User A.
[00045] FIG. 14 illustrates the example of FIG. 13 after User E leaves;
[00046] FIG. 15 illustrates the example of FIG. 13 after User F joins;
[00047] FIG. 16 is a block diagram of a client-server implementation;
[00048] FIG. 17 is a block diagram of a peer-to-peer implementation;
[00049] FIG. 18 is a block diagram of starting a convo in a peer-to-peer implementation;
[00050] FIG. 19 is a block diagram of starting a convo in a client-server implementation;
[00051] FIGs. 20A-20B are diagrams of a conversation before and after user A joins; [00052] FIG. 21 is a block diagram depicting the new positions and orientations within a Convo in a peer-to-peer implementation; and
[00053] FIG. 22 is a block diagram depicting the new positions and orientations within a Convo in a client-server implementation.
[00054] Detailed Description:
[00055] A virtual conferencing system according to the present invention includes layers of conversations:
[00056] Layer 1 (entire session): the entire session including all of the users / participants at a virtual event or gathering.
[00057] Layer 2 (main conversations): a subset of the users / participants in layer 1 who have gathered into smaller group conversations.
[00058] Layer 3 (sidebar conversations): within each Layer 2 conversation, a subset of users / participants involved in sidebar conversations.
[00059] It should be understood that each participant in the conversation described herein accesses the Virtual Conferencing System ("System") using a computer, smartphone, gaming device, augmented or virtual reality device, or like device (hereinafter computer or User) which includes a processor or CPU or like hardware capable of executing software commands, a display, a data entry device such but not limited to a keyboard, memory, communications hardware facilitating telecommunications over a communications medium such as the internet, audio input (e.g., microphone) and audio output (e.g., speaker). The audio input and audio output may be combined into a headset, or any other method of communicating and/or translating audio inputs and outputs, including but not limited to translating audio inputs and outputs to other mediums, as is often done with adaptive tools. Each user may be visually represented to other users by a virtual representation of themselves such as avatars, video tiles (e.g., an image or placeholder graphic with the user's name, pseudonym, or initials), or the like. [00060] As will be described below, the System may be implemented as a Peer-to-Peer communication system in which case each peer is a User. As will be described below, the System may be implemented as a Client-Server communication system in which case Client is a User and the Server is a computer which facilitates and coordinates communication among the Clients (Users). The Server need not include the audio input (e.g., microphone) and audio output, e.g., speaker.
[00061] The System of the invention includes logic for layering communications which may be implemented as software, hardware or a combination of both. For example, the logic may be implemented in code stored in a read-only-memory (ROM) device, an erasable programmable read-only- memory (EPROM or EEPROM) device or the like. The logic may be implemented in software code or instructions stored in memory residing within the computer, on a removable/portable media such as a memory stick, or on a server accessible over the internet.
[00062] The description that follows lays out a technical solution to enable layered conversations within a virtual communication, augmented reality, or gaming application which should be understood to be any application within which communications between users is facilitated (hereinafter videoconferencing or virtual conferencing application). In some examples, the layered conversation is not actually a conversation but rather consists of music or other sounds which may be associated with a location and orientation of a User within the virtual environment. However, one of ordinary skill in the art will appreciate that the technical solution may be used to enable layered conversations within a videogame application including three-dimensional gaming applications.
[00063] Layer 1: entire session
[00064] The first step in enabling layered conversations is to add a spatial dimension to a videoconferencing application. Instead of all the users being represented as video tiles in a grid pattern, they will instead have virtual representation of themselves (such as avatars, video tiles, or some other representation) placed into a virtual world where they can move around. [00065] This world can either be two or more dimensions. For illustrative purposes, most of the diagrams in this document will be based on a two-dimensional world with a top-down (birds' eye view) perspective, but they can just as easily be applied to a three-dimensional environment.
[00066] The users can move within this world by any combination of one or more mechanisms (for example, the arrow keys on their keyboard), joystick, gestures, or the like.
[00067] Users can move their avatars or video tile moves within the world, and they can see other users' avatars or video tiles move as well corresponding to those users' movements.
[00068] Users can speak to other users, hear other users when they speak, and see each other through the video tiles, preserving both the voice and video components of a videoconferencing application.
[00069] For each user, the volume of other users' audio may automatically adjust based on relative distance. For example, in FIG. 1 each user is represented by a gray circle, such that User A is the gray circle with the letter 'A' inside of it. User A can hear User C at a relatively higher volume, User B at a relatively moderate volume, and User D at a relatively low volume.
[00070] Converting distance to a volume adjustment could be done using the following equation:
[00071] V =
[00072] Where V is the volume, d is the distance, and p is the power exponent.
[00073] One way to technically implement this function would be to pick a base distance which represents full volume. For example, we could pick a distance of 10 units for full volume. In that case,
Figure imgf000011_0001
the value of d would be calculated as the lesser of 1 and - . In other words, if a user is 10 units io away, d would equal 1. If the user is 25 units away, d would equal 2.5, and so on. If we also choose a value of, say, 2 for p, then the volume of that user (at 25 units away) as a percentage of their maximum
1 1 volume would be V = — - = — = 0.16 or 16%.
2.52 6.25 [00074] For each user, their volume may also be adjusted based on the orientation of that user to other users or interactive element(s). Here by 'orientation' we mean where any user is directing their attention or focus toward or away from anyone or anything, which may be accomplished by any combination of one or more aspects of controls that might indicate orientation such as the direction a user is facing, moving, turning, looking, gesturing, etc. For example, in FIG. 2 each user's orientation is represented by the arrow attached to that user. By manner of example, let's assume that users B, C and D are at equal distance to User A, but they are facing in different directions as denoted by the arrows. As a result, User A would hear User B the loudest, User C at a lower volume than B, but higher than D, and User D at the lowest relative volume.
[00075] The volume calculations for both distance and orientation can be performed and applied independently, or in combination. One possible implementation would be to cross-multiply the distance and orientation values to create a combined volume adjustment. For example, if User A would hear User B at 80% of full volume based on their relative distance, and at 70% based on User B's orientation, then the combined effect would be that User A would hear User B at 80% times 70%, or 56% of full volume.
[00076] Laver 2: main conversations or 'Convos'
[00077] Layer 1 allows users to move between conversations, which encourages more active participation, but will be a sub-optimal experience for several reasons:
[00078] a) Volume controls that rely exclusively on distance and orientation may result in an unpleasant combination of sounds that may distracting or disruptive if sounds are indistinguishable from
the conversations they are engaged in, such as those from other nearby users with whom users are not having a conversation.
[00079] b) Arranging users into a conversational circle requires too much effort and coordination from all the users in a conversation as users enter and exit the conversation.
[00080] c) In a three-dimensional virtual world, limitations resulting from screen size and field-of- view may make it difficult to have everyone face each other and see each other, and even if they do, their avatars or video tiles will be severely tilted with respect to each other.
[00081] To solve these and other issues, we will introduce a technical object called 'Convo' and refer to it as such going forward. Users will be able to create a Convo, join an existing Convo, or exit a Convo if they are inside of one.
[00082] In FIG. 3, users A, B, C, D, and E are in a Convo with each other, while users G and F are not in a Convo.
[00083] When users are in a Convo, the following occurs:
[00084] a) Within the virtual world, all users are arranged in a circle, such that the distance between each user and their nearest two users is equidistant.
[00085] b) Within the virtual world, all users are oriented to face the center of the circle.
[00086] c) According to one example, Users' volumes are adjusted such that for each user in a
Convo, they can hear all other users inside that same Convo at full volume, and users outside of the Convo at a reduced volume. For example, in the diagram above, User A could hear users B, C, D, and E at full volume, and users G and F at reduced volume. The volume reduction applied to the volumes of User G and User F may be combined (for example, in a multiplicative manner) with volume reduction factors due to the distance and orientation of those users relative to User A.
[00087] d) An optional movement limitation may be imposed, such as not allowing users inside the Convo to move around freely within the world until they exit the Convo.
[00088] e) If the virtual world has three spatial dimensions, each user may see a subjective view of other users' video tiles which arranges them into a pattern, such as in the shape of a semi-circle, with respect to that user and faces their video tiles more in the direction of that user. See section titled 'Subjective Convo View' for further description. Multiple Convos can exist in a single Layer 1 session. In FIG. 4, Users A, B, C, D, and E are in one Convo (labeled Convo 1). Users H, I and J are in another Convo (labeled Convo 2). Users F, G and K are not in a Convo.
[00089] In FIG. 4, all users in Convo 1 may hear each other at full volume, and may hear all other users (H, I, J, K, F, and G) at reduced volume, based on a Convo volume reduction factor as well as additional volume reduction factors due to distance and orientation. Similarly, all users in Convo 2 may hear each other at full volume, and may hear all other users at reduced volume due to all three reduction factors (Convo, distance, orientation). Finally, users K, F and G may hear all other users at a reduced volume due to distance and orientation, but not due to a Convo reduction factor since they are not in a Convo. Alternatively or additionally, other factors can be introduced such that users who are not in a Convo hear users who are in a Convo at enhanced or reduced volume.
[00090] The volume rules described above apply as long as:
[00091] a) There are no Layer 3 (sidebar conversations) occurring, in which case additional volume adjustments may be applied as outlined further in this document.
[00092] b) A convo is set to 'public'. If a Convo is set to 'private', no users outside of the Convo may hear any of the users inside the Convo. [00093] Layer 3: sidebar conversations
[00094] Layers 1 and 2 combined enable users to move around a virtual world, interact with each other, and freely organize into smaller conversations within one session, so that multiple conversations can take place at the same time.
[00095] Next, we can enable another layer on top of that, which will allow users to have side conversations within Convos. We will term these side conversations 'Sidebars' and refer to them as such going forward.
[00096] In FIG. 5, matching patterns on the user circles denote that they are in a Sidebar with each other, while users with solid gray shading (no pattern) are in the Convo but not in a Sidebar. In Convo 1, users A, D and E are in a Sidebar. In Convo 2, there are two Sidebars happening: one between users J and H, and another between users I and K.
[00097] Sidebars have the following properties:
[00098] a) A Sidebar can take place inside of a Convo between users who are part of the same Convo.
[00099] b) A Sidebar can consist of two or more users.
[000100] c) Users can initiate Sidebars with each other, join an existing Sidebar, or exit a Sidebar if they are inside of one.
[000101] d) One example that can be included in the System is that if the number of users inside of a Sidebar reaches N-x, where N is the number of users in a Convo and x is either predetermined or prespecified number (majority or supermajority), then the Sidebar has grown to overtake the Convo and may dissipate such that all users are returned to the Convo. In other words, the Sidebar may automatically cease to be a Sidebar if the number of participants exceeds a threshold value. In that case, the "Sidebar" is the main conversation and the Sidebar dissipates in favor of the Convo.
[000102] Users' volumes may be adjusted such that: [000103] a) Users in a Sidebar hear other users inside the same Sidebar at full volume, and the rest of the users in the same Convo at a reduced volume based on a Sidebar volume reduction factor
[000104] b) Users in a Convo containing a Sidebar but who are not part of that Sidebar will hear other users who are also in the same Convo but not in a Sidebar at full volume, and will hear users inside of a Sidebar at reduced volume.
[000105] In the FIG. 5, within Convo 1:
[000106] a) Users A, D and E would hear each other at full volume, and would hear users C and B at reduced volume.
[000107] b) Users C and B will hear other at full volume, and will hear users A, D and E at reduced volume.
[000108] In FIG. 5, within Convo 2:
[000109] a) Users J and H will hear each other at full volume, and will hear users G, F, I, and K at reduced volume.
[000110] b) Users K and I will hear each other at full volume, and will hear users F, G, H, and J at reduced volume.
[000111] c) Users G and F will hear each other at full volume and will hear users H, I, J, and K at reduced volume. An indicator of some kind may be employed to let users know who they are in a Sidebar with. A different indicator will be used to let users know if other users are in a Sidebar with each other. As an example, visual indicators such as matching borders / frames / rings can be placed around users' video tiles to indicate that they are in the same Sidebar. They can be matching based on any combination of colors, shapes, sizes or patterns to indicate which users are in the same Sidebar and which ones are in a different Sidebar or not in a Sidebar at all.
[000112] To summarize, multiple Convos (Layer 2) can exist inside a Layer 1 session, and multiple
Sidebars (Layer 3) can exist within the Convos. In FIG. 6, we illustrate 17 users in a session as follows: Convo 1 contains 5 users, with 3 users in a Sidebar within that Convo. Convo 2 contains 6 users, with 2 Sidebars within that Convo, each containing 2 users. Convo 3 contains 3 users with no Sidebars. Three (3) additional users (P, Q, and R) are not in a Convo.
[000113] All volume adjustment rules outlined so far may be combined (for example, in a multiplicative manner), such that for each user, every other user's volume is adjusted based on: (1) Spatial distance to that user, Orientation relative to that user; (2) Whether that user is in a Convo and whether the other users are in a Convo; or (3) Whether that user is in a Sidebar and whether the other users are in a Sidebar.
[000114] Referring to FIG. 6, user A may hear the other users shown in Table 1:
Table 1
Figure imgf000017_0001
Figure imgf000018_0001
[000115] Starting, Joining and Exiting Laver 2 and Laver 3 conversations
[000116] For Convos: A user can start a new Convo with another user as long as neither of them is currently in a Convo. Some examples by which a Convo can be started are:
[000117] - A user spatially approaches another user and stops moving, which commences a countdown. As long as neither user moves for a set time interval (for example, 3 seconds), they are automatically entered into a Convo. In addition to the time interval, additional criteria may be added, such as how far apart the two users are the angle at which they are facing each other.
[000118] - A user clicks on another user to enter a Convo, or clicks on an interface (e.g., a symbol above the other user's video tile) to start a Convo with them.
[000119] - A user locates another user in a directory table accessible through a Ul interface and from there selects an option to start a Convo with that user.
[000120] - A designated user with the right permissions creates a new Convo consisting of certain users they select.
[000121] - An algorithm is used to create a Convo consisting of certain users, either based on random placement or some type selection rule (for example, matching based on shared interests).
[000122] - An amount of time passes during which no users inside that Convo speak. [000123] Once a Convo has been created, other users can join the same Convo as long as they are not already in a Convo. Some examples by which a user could join a Convo are:
[000124] 1) a user spatially approaches an existing Convo and stops moving, which commences a countdown. As long as the user does not move for a predetermined time interval (for example, 3 seconds), they join the Convo.
[000125] 2) A user spatially approaches an existing Convo and moves far enough into it or through it in order to enter the Convo. While the user is entering the Convo, there may be visual indicators provided to let the user know they are entering a Convo, and certain modifications may be made to the user's movement speed or orientation.
[000126] 3) A user clicks on an existing Convo, or clicks on an interface (for example, a symbol above the Convo or in front of the Convo) to join the Convo.
[000127] 4) A user locates another user in a directory table accessible through a Ul interface and from there selects an option to join a Convo with that user.
[000128] 5) A user locates the Convo in a directory table accessible through a Ul interface and from there selects an option to join that Convo.
[000129] 6) A user with the right permissions selects specific users to add to the Convo
[000130] An algorithm is used to add users to an existing Convo, either based on random placement or some type of selection rule (for example, matching based on shared interests). Users inside an existing Convo may place (bring) a user currently outside of that Convo inside their Convo.
[000131] Once inside a Convo, users can exit a Convo at any time to return to exploring the virtual world. Some examples by which a user could exit a Convo are:
[000132] - A user uses a movement key (for example, the down arrow on the keyboard) to walk out of the Convo. [000133] - A user uses a movement key (for example, the down arrow on the keyboard) to walk out of the Convo, but needs to hold that movement key down for a set time interval (for example, 1 second). [000134] - A user clicks on an interface (for example, a button labeled 'Exit Conversation')
[000135] - A user uses a keyboard key or shortcut to exit the Convo.
[000136] - An algorithm or mechanism is used to 'mix up' users who are currently in a Convo by placing them in a different Convo, either based on random placement or some type of selection algorithm (for example, matching based on shared interests).
[000137] - A user is removed or kicked out of a Convo by a user (participant) in that Convo, subject to certain permissions or consensus.
[000138] - Any action or mechanism which can be used for a user to enter a different Convo could automatically remove the user from their previous Convo.
[000139] If a user exits a Convo which contained only one other user, the other user may automatically exit that Convo and the Convo may be terminated.
[000140] For Sidebars
[000141] A user can start a new Sidebar with another user as long as both of them are in the same Convo and the other user is not currently in a Sidebar. Some examples by which a Sidebar could be started are:
[000142] - A user clicks on another user's video tile.
[000143] - A user clicks on an interface which in some examples is a hyperlink on or proximate another user's video tile.
[000144] - A user locates another user in a directory table accessible through a Ul interface and from there selects an option to start a Sidebar with that user.
[000145] A user can join an existing Sidebar as long as that Sidebar is within the same Convo as that user. Some examples by which a Sidebar could be joined are: [000146] - A user clicks on the video tile of another user who is currently in that Sidebar.
[000147] - A user clicks on an interface which in some examples may be above or on top of the video tile of another user who is currently in that Sidebar.
[000148] - A user locates another user in a directory table accessible through a Ul interface and from there selects an option to join a Sidebar with that user.
[000149] - A user locates the Sidebar in a directory table accessible through a Ul interface and from there selects an option to join that Sidebar.
[000150] A user can exit a Sidebar if they are inside of a Sidebar. Some examples by which a Sidebar could be exited are:
[000151] - Any action that the user takes to exit the Convo (see mechanics on exiting a Convo earlier in this document) may exit that user from any Sidebars they were a part of inside that Convo.
[000152] - A user clicks on an interface (for example, a button labeled 'Exit Sidebar').
[000153] - A user uses a keyboard key or shortcut to exit a Sidebar.
[000154] - A user is removed or kicked out of a Sidebar by one or more users, subject to certain permissions or consensus.
[000155] - An amount of time passes (elapses) during which no users inside that Sidebar speak.
[000156] - Any action or mechanism which can be used for a user to enter a different Sidebar could automatically remove the user from their previous Sidebar.
[000157] If a user exits a Sidebar but does not exit the Convo, the user may remain in the Convo which contained that Sidebar.
[000158] If a user exits a Sidebar which contained only one other user, the other user may automatically also be exited from that Sidebar and the Sidebar may be terminated. [000159] Subjective Convo View
[000160] As outlined earlier, in a virtual world with three spatial dimensions, users in a Convo may have a subjective view of the other users in the same Convo. One potential benefit of this would be to give each user a 'best-seat-in-the-house' experience.
[000161] In FIG. 7, users A, B, C, D & E are in a 5-person Convo, facing the center as shown by the arrows. This is a top-down (bird's eye view) of the Convo.
[000162] FIG. 8 illustrates the problem that arises without a subjective view; we take the same diagram shown in FIG. 7 but instead of circles representing each of the users, we use lines to indicate which way their video tiles may be oriented as they are facing in the direction of the arrows.
[000163] In FIG. 9, we represent User C's field of view from a first-person perspective, represented by the cone shape filled with the diagonal-line pattern and dashed lines on the outside of it.
[000164] In this case, User C may not be able to see user users A or B, only D and E.
[000165] It's worth noting that we can adjust field-of-view values to make it narrow or wider, albeit with certain compromises when we go too wide. However, even if accept those compromises and select a really wide field of view, it will be difficult to include the entirety of User A and B's video tiles, and they may be severely tilted away from User C. FIG. 10 illustrates what a wider field of view for User C might look like from a top-down view.
[000166] FIG. 11 illustrates what it might look like in a three-dimensional space from User C's first- person point of view. The pattern with squares represents the area where the video tiles would be displayed, and arrows denote the direction that the video tiles would be tilted.
[000167] Users D and E may be visible (from C's perspective), with their videos somewhat tilted, and users A and B may be mostly outside of the field-of-view and their videos may be significantly tilted.
[000168] To solve this problem and improve the user experience, we introduce a subjective view in which, from User C's first-person point of view, they are able to see all the other users in their field of view, and their videos are tilted facing toward User C (either perfectly facing or only slightly tilted). See, FIG. 12.
[000169] Similarly, every other user in the Convo may have their own subjective view which allows them to similarly see the other four users. For example, FIG. 13 illustrates an example of User A's subjective view, allowing User A to see Users D, E, B, and C's video tiles all appearing as if they are facing User A.
[000170] This subjective view may automatically adapt to accommodate more or fewer users. For example, if User E leaves, the view may adjust to a 4-person Convo subjective view. See, FIG. 14.
[000171] Similarly, if instead of User E leaving, let's say User F joined the previous 5-person convo to make it a 6-person convo. The subjective view may again adjust. See, FIG. 15.
[000172] The diagrams shown in FIGs. 12-15 are purely illustrative, and different variations can be taken in the shape and size of the video tiles, and the layout in which they are arranged. For example, instead of oval-shaped video tiles being arranged in a semi-circle, we might have square-shaped tiles arranged in a triangle layout. Regardless of which shape and layout is chosen, each user may have a subjective view of the other users' video tiles to enable them to see all the users in the same convo, and to have them all tilted in the direction of that user.
[000173] The subjective view may or may not be applied to a Convo with only a few participants (for example, a 2-person or 3-person Convo), as a few users may simply be able to face each other without the problems outlined earlier. For these smaller Convos, the other Convo rules (such as volume adjustments) may still be applied while allowing the few users to move around and turn freely, as long as certain factors such as their distance and orientation remain within a certain range.
[000174] Technical Implementation for Convos and Sidebars
[000175] A certain level of coordination and communication between users may help to ensure that Convos and Sidebars function as previously described, such that each user knows: [000176] 1) Which, if any, Convo or Sidebar that user belongs to; and
[000177] 2) Which, if any, Convo or Sidebar other users belong to.
[000178] This information may be contained in Convo and Sidebar objects, where each object contains a unique ID for that Convo or Sidebar and a list of users which are part of that Convo or Sidebar. [000179] The collection of this and other information, in some storage medium (e.g., memory, storage or a database) will be referred to as the 'knowledge base'. Each user (and server, if a server is part of the architecture) may keep and maintain its own knowledge base.
[000180] Users must also be able to communicate and coordinate in order to i) Request changes to Convos or Sidebars (such as leaving or exiting); (ii) Confirm / accept changes, as applicable, to Convos or Sidebars (such as confirming that they are in a Sidebar with another user); and (iii) Update for changes (such as other users leaving or exiting Convos or Sidebars).
[000181] Communication between users and / or server can happen via any number of web-based communication protocols (such as TCP, IP, HTTP, or the like), or any communication channels built on those protocols (such as web sockets, BOSH, REST, or the like).
[000182] This communication and coordination may happen through a peer-to-peer architecture (each user communicates directly with every other user), through a client-server architecture (where each user is a client and the clients communicate and coordinate through a server, which then communicates and coordinates with the other users / clients), or through combination of the two (for example, some communication or coordination might happen through peer-to-peer implementation while a different communication or coordination might happen through a client-server implementation).
[000183] FIG. 16 is an illustrative diagram of a client-server architecture in which Users A, B, C, and D communicate and / or coordinate with each other through a Server. The blocks represent the nodes (Server and clients) and the lines represent the connections for communication. For example, if User A wanted to communicate something to User C, that message may be sent from User A to the Server and then from the Server to User C. If any calculations are required, they may be performed by individual users or they may be performed by the Server and then the results may be communicated to the users.
[000184] FIG. 17 is an illustrative diagram of a peer-to-peer architecture in which users A, B, C, and D communicate and/or coordinate directly with each other. In this architecture, if User A wanted to communicate something to User C, that message may be sent directly from User A to User C. If any calculations are required, they may either be performed by User A and the results may be communicated directly to user C, or they may be performed by user C after the needed input data is received from user A.
[000185] Regardless of which architecture, or combination of architectures, is selected, any time any user updates their knowledge base regarding which users are in which Convos or Sidebars, they may also take accompanying actions such as updating their view of those users in the virtual world, updating their Convo view, updating Sidebar visual indicators, adjusting volume accordingly, and so on.
[000186] Technical Implementation:
[000187] For User A to start a new Convo with User B, a 'Start Convo' mechanism may be triggered by any number of potential events as outlined earlier in this document. Once this trigger occurs, the implementations for peer-to-peer and client-server might be as follows:
[000188] A) Peer-to-peer implementation: User A would send a request to User B to start a new Convo with User A. Upon receiving the request, User B would verify that they are not in another Convo and then create a new Convo object (represented by a unique ID) and would send that ID back to User A confirming the start of a new Convo between A and B. User B would then place themselves in a Convo with User A. Upon receiving the confirmation and the ID from User B, User A would also place themselves in a Convo with User B. Both users are now in a new Convo with the other user and they both have the same Convo ID for that Convo object. Along with the completion of this process, either User A or User B would send out a communication to all other users in the same session letting them know that there is a new Convo object, providing the ID for that object, and that it contains users A and B. All other users would update their knowledge base with the new information. One way this may be implemented is shown in FIG. 18.
[000189] B) Client-server implementation: User A would send a request to the Server to start a new Convo with User B. The Server would check its knowledge base to verify that neither User A nor User B are currently in a Convo. Upon successfully verifying, the Server would create a new Convo object (represented by a unique ID) containing Users A and B and would send that ID out to both Users A and B instructing them to place themselves in a Convo and who the other user is in that Convo. Upon receiving the instructions from the Server, Users A and B would both place themselves in a Convo with the other user communicated by the Server. Both users are now in a new Convo with the other user and they both have the same Convo ID for that Convo object. The Server also updates its own knowledge base with the new Convo ID and which users it contains. Along with the completion of this process, the Server would also send out a communication to all other users in the same session letting them know that there is a new Convo object, providing the ID for that object, and that it contains Users A and B. All other users would then update their knowledge base with the new information. See, FIG. 19.
[000190] Technical Implementation: Joining a Convo
[000191] For User A to join an existing Convo containing other users (say, users B and C), a 'Join Convo' mechanism may be triggered by any number of potential actions or events as outlined earlier in this document. Once this trigger occurs, the implementations for peer-to-peer and client-server might be as follows:
[000192] A) Peer-to-peer implementation: User A would already have in its knowledge base (updated prior to this) that users B and C are in a Convo and what the Convo ID is. User A would place themselves inside the Convo with users B and C, and send a communication to both users B and C that
User A is joining that Convo with the same ID. Upon receiving the communication, users B and C would update their Convo to include User A. User A would also send out a communication to all other users in the same session letting them know that that Convo object with that Convo ID now also includes User A, and all other users would update their knowledge base with the new information.
[000193] It's important to note that a pure peer-to-peer implementation such as above might be subject to race conditions if no additional safeguards are taken. A race condition arises when the correct operation of a program or algorithm is dependent on the right sequence or timing of certain processes. For example, if User D joined the Convo between users B and C at the same time, or close to the same time, as User A, then potentially we could end up with inconsistent versions of the Convo object where: [000194] Some users receive the message from User A before the message from User D. As a result, they may accept the request from User A to join the Convo, and may then reject the request from User D to join an existing Convo of users B and C because by the time that message is received, the Convo from those users' perspective now contains users A, B, and C (so it is impossible to add User D to a Convo of users B and C since that Convo no longer exists).
[000195] Other users receive the message from User D before the message from User A. As a result, they may accept the request from User D to join the Convo, and may then reject the request from User A to join an existing Convo of users B and C because by the time that message is received, the Convo from those users' perspective now contains users B, and C, D.
[000196] To resolve these and other types of race conditions, an extra handshake or verification step may be added such that a user (such as User B or C, or some other user) serves as the arbiter and confirms to either User A or User D that they are allowed to join the Convo before they join, and using that as a forcing function to prevent two or more changes happening concurrently. Alternatively, a clientserver implementation may resolve race conditions by using the Server as the arbiter and single source of truth regarding Convo objects. [000197] B) Client-server implementation: User A would already have in its knowledge base (updated prior to this) that users B and C are in a Convo and what the Convo ID is. User A would send a request to the Server to join the Convo. To prevent race conditions, the Server would first verify that no other users are in the process of joining or exiting the same Convo, or in the process of starting a Convo with User A. Upon verifying, the Server would add User A to the same Convo object and send an update to all users in the session that User A is now a part of that Convo. Upon receiving the update, o User A would place themselves in the Convo with users B and C. o Users B and C would place User A in that Convo. o All other users would update their knowledge base with the new information.
[000198] Technical Implementation: Exiting a Convo
[000199] For User A to exit an existing Convo, an 'Exit Convo' mechanism may be triggered by any number of potential actions or events, such as those previously outlined in this document. Once this trigger occurs, the implementations for peer-to-peer and client-server might be as follows:
[000200] A) Peer-to-peer implementation: User A would send a communication to all other users in the session that User A is exiting the Convo object, along with the Convo ID. User A would then remove themselves from the Convo. Upon receiving the communication from User A:
[000201] - Other users who were in the same Convo as User A would remove User A from their
Convo. If there was only one other user in a Convo with User A, then that user may remove themselves from the Convo and terminate the Convo object.
[000202] - Users who were not in the same Convo as User A would update their knowledge base such that the Convo object no longer contains User A. If there were only two users in that Convo object prior to User A exiting, the Convo object may be terminated and neither user would belong to a Convo any longer. [000203] B) Client-server implementation: User A would send a communication to the Server that User A is exiting the Convo object, along with the Convo ID. User A would then remove themselves from the Convo. Upon receiving the communication from User A, the Server would update the Convo object in its knowledge base such that it no longer contains User A. If there were only two users in that Convo object prior to User A exiting, the Convo object may be terminated and neither user would belong to a Convo any longer. The Server would then send the update to all other users in the session with the new information. Upon receiving the communication from the Server, all users would update their knowledge base and Convo objects accordingly.
[000204] Technical Implementation: Maintaining objective positioning for a Convo
[000205] Within the virtual world, all users are arranged in a pattern, such as a circle. As a result, as users start Convos, or the number of users in a Convo increases or decreases, the positioning of all the users in that Convo might need to be updated so that they are again arranged in the desired pattern (e.g., a circle) and facing in a desired direction (e.g., facing the center of a circle).
[000206] In FIGs. 20A-20B, FIG. 20A shows how User B, C, D, and E might be placed and arranged prior to User A joining a Convo, and FIG. 20B shows how they might need to be moved and reoriented after User A joins the Convo.
[000207] In order to do this, a set of calculations might need be performed every time there is a change in the number of users in a Convo, taking into account the following inputs: (i) Number of users in that Convo and their positions prior to the calculation; and (ii) Changes (adding or removing a user, and which user).
[000208] The output of the calculation might then include the users' new positions and orientations. The implementation for peer-to-peer and client-server might be as follows.
[000209] Peer-to-peer implementation: In a peer-to-peer implementation, we would have each user in a Convo perform these calculations independently. Given the same set of inputs and the same 1 arithmetic to be applied, each user would arrive at the same output on their own and then position and turn themselves accordingly. In the example above, upon User A joining, User C would calculate User C's new position and orientation, User D would calculate User D's new position and orientation, and so on. Upon each user completing their own calculation, they would communicate their new position and orientation out to all other users in the session so that they can update their knowledge base. One way this may be implemented is shown in FIG. 21.
[000210] Client-server implementation: In a client-server implementation, the Server would perform the calculation once and communicate out the new positions and orientations to all other users. In the example above, upon User A joining, the Server would calculate new positions and orientations for Users A, B, C, D and E, and would then send those out to all users. Upon receiving the information from the Server:
[000211] - Users A, B, C, D and E would move and turn themselves according to the new information.
[000212] - All other users would update their knowledge base.
[000213] - One way this may be implemented is shown in FIG. 22.
[000214] Technical Implementation: Starting a Sidebar
[000215] For User A to start a new Sidebar with User B (who is in the same Convo as User A), a 'Start Sidebar' mechanism may be triggered by any number of potential events as outlined earlier in this document. Once this trigger occurs, the implementations for peer-to-peer and client-server might be as follows.
[000216] Peer-to-peer implementation: User A would send a request to User B to start a new Sidebar with User A. Upon receiving the request, User B would verify that they are not already in another Sidebar and then create a new Sidebar object (represented by a unique ID) and would send that ID back to User A confirming the start of a new Sidebar between A and B. User B would then place themselves in a Sidebar with User A. Upon receiving the confirmation and the ID from User B, User A would also place themselves in a Sidebar with User B. Both users are now in a new Sidebar with the other user and they both have the same Convo ID for that Convo object. Along with the completion of this process, either User A or User B would send out a communication to all other users in the same session letting them know that there is a new Sidebar object, providing the ID for that object, and that it contains users A and B. All other users would update their knowledge base with the new information.
[000217] Client-server implementation: User A would send a request to the Server to start a new Sidebar with User B. The Server would check its knowledge base to verify that User B is not currently in a Sidebar. Upon successfully verifying, the Server would create a new Convo object (represented by a unique ID) containing users A and B and would send that ID out to both users A and B instructing them to place themselves in a Sidebar and who the other user is in that Sidebar. Upon receiving the instructions from the Server, users A and B would both place themselves in a Sidebar with the other user. Both users are now in a new Sidebar with the other user and they both have the same Sidebar ID for that Sidebar object. The Server also updates its own knowledge base with the new Sidebar object and which users it contains. Along with the completion of this process, the Server would also send out a communication to all other users in the same session letting them know that there is a new Sidebar object, providing the ID for that object, and that it contains users A and B. All other users would update their knowledge base with the new information.
[000218] Technical Implementation: Joining a Sidebar
[000219] For User A to join an existing Sidebar containing other users (say, users B and C), a 'Join Sidebar' mechanism may be triggered by any number of potential events as outlined earlier in this document. Once this trigger occurs, the implementations for peer-to-peer and client-server might be as follows. [000220] Peer-to-peer implementation: User A would already have in its knowledge base (updated prior to this) that users B and C are in a Sidebar and what the Sidebar ID is. User A would place themselves inside the Sidebar with users B and C, and send a communication to both users B and C that User A is joining that Sidebar with the same ID. Upon receiving the communication, users B and C would update their Sidebar to include User A. User A would also send out a communication to all other users in the same session letting them know that that Sidebar object with that Sidebar ID now also includes User A, and all other users would update their knowledge base with the new information.
[000221] Client-server implementation: User A would already have in its knowledge base (updated prior to this) that users B and C are in a Sidebar and what the Sidebar ID is. User A would send a request to the Server to join the Sidebar. To prevent race conditions, the Server would first verify that no other users are in the process of joining or exiting the same Sidebar, or in the process of starting a Sidebar with User A. Upon verifying, the Server would add User A to the same Sidebar object and send an update to all users in the session that User A is now a part of that Sidebar. Upon receiving the update, o User A would place themselves in the Sidebar with users B and C o Users B and C would place User A in that Sidebar o All other users would update their knowledge base with the new information
[000222] Technical Implementation: Exiting a Sidebar
[000223] For User A to exit an existing Sidebar, an 'Exit Sidebar' mechanism may be triggered by any number of potential events as outlined earlier in this document. Once this trigger occurs, the implementations for peer-to-peer and client-server might be as follows.
[000224] Peer-to-peer implementation: User A would send a communication to all other users in the session that User A is exiting the Sidebar object, along with the Sidebar ID. User A would then remove themselves from the Sidebar. Upon receiving the communication from User A: [000225] - Other users who were in the same Sidebar as User A would remove User A from their
Sidebar. If there was only one other user in a Sidebar with User A, then that user may remove themselves from the Sidebar and terminate the Sidebar object.
[000226] - Users who were not in the same Sidebar as User A would update their knowledge base such that the Sidebar object no longer contains User A. If there were only two users in that Sidebar object prior to User A exiting, the Sidebar object may be terminated and neither user would belong to a Sidebar any longer.
[000227] Client-server implementation: User A would send a communication to the Server that User A is exiting the Sidebar object, along with the Sidebar ID. User A would then remove themselves from the Sidebar. Upon receiving the communication from User A, the Server would update the Sidebar object in its knowledge base such that it no longer contains User A. If there were only two users in that Sidebar object prior to User A exiting, the Sidebar object may be terminated and neither user would belong to a Sidebar any longer. The Server would then send the update to all other users in the session with the new information, all users would update their knowledge base and Convo objects accordingly.
[000228] While preferred embodiments of the present disclosure have been shown and described herein, it will be obvious to those skilled in the art that such embodiments are provided by way of example only. Numerous variations, changes, and substitutions will now occur to those skilled in the art without departing from the disclosure. It should be understood that various alternatives to the embodiments of the disclosure described herein may be employed in practicing the disclosure. It is intended that the following claims define the scope of the disclosure and that methods and structures within the scope of these claims and their equivalents be covered thereby.

Claims

Claims:
1. A virtual communication system including logic for supporting layered conversations, the system comprising: at least two computers communicating to one another over a communications medium, where each computer represents a User, each computer including a display, audio input, audio output, video input (such as a camera), memory, data storage, and a processor, a knowledge base stored in memory, the knowledgebase containing an identifier identifying each conversation associated with a given user, the knowledgebase storing information identifying each participant in each of the conversations, the knowledgebase storing information identifying the type of each conversation associated with the given one of the at least two computers, where each User may participate in multiple simultaneous conversations; and layered conversation logic executed by the processor, the layered conversation logic controlling a volume of each participant in each conversation in which the User participates in accordance with the conversation type.
2. The virtual communication system of claim 1, wherein a given User may communicate with one or more other Users in a conversation type selected from the group (Layer 1, Layer 2, and Layer 3), wherein LCXI,X2,...XN refers to a Layer C communication between Users X, X2, ...XN, wherein if User XI is in a Layer 1 conversation with User X2 then they are not in Layer 2 or Layer 3 conversation, wherein if User XI is in Layer 2 conversation with User X2 then User XI and User X2 are in both Layer 1 and Layer 2 conversations but not in a Layer 3 conversation, and if User XI is in a Layer 3 conversation with User X2 then User XI and User X2 are in Layer 1, Layer 2 and Layer 3 conversations together, wherein the layered conversation logic scales the volume of User X2 experienced by User XI in conversation Llxi,x2 to Si,i% volume where Si is a scaling factor.
32
3. The virtual communication system of claim 2, wherein if the User XI is in L2XI,X3 then the layered conversation logic adjusts the volume of the User X3 heard by the User XI to 82,2% volume and scales the volume of User X2 experienced by User XI in conversation Llxi,x2 to S2,i% volume, where $2,1 and S2,2 are scaling factors and S2,2>S2,i.
4. The virtual communication system of claim 3, wherein if the user XI is in L3XI,X4 then the layered conversation logic adjusts the volume of the User X4 heard by the User XI to S3,3% volume, scales the volume of User X3 experienced by User XI in conversation L2XI,X3 to S3,2% volume, and scales the volume of User X2 experienced by User XI in conversation Llxi,x2 to S3,i% volume, where S3;3, S3,2 and S3,i are scaling factors and S3,3>S3,2>S3,i.
5. The virtual communication system of claims 1-4, wherein any User in conversation Llxi, X2, X3, ...XN may invite one or more Users of conversation Llxi, X2, X3, ...XN to participate in conversation L2xi, X2, X3, ...XN-I contemporaneously with conversation Llxi, X2, X3, ...XN.
6. The virtual communication system of claims 1-5, wherein any User in conversation L2xi, X2, X3, ...XN may invite one or more Users of conversation L2xi, X2, X3, ...XN to participate in conversation L3xi, X2, X3, ...XN-I contemporaneously with conversation L2Xi, X2, X3, ...XN and conversation Llxi, X2, X3, ...XN-
7. The virtual communication system of claims 1-6, wherein any User in conversation Llxi, X2, X3, ...XN may join conversation L2XI, X2, X3, ...XN-I contemporaneously with conversation Llxi, X2, X3, ...XN.
8. The virtual communication system of claims 1-7, wherein any User in conversation L2xi, X2, X3, ...XN may join conversation L3XI, X2, X3, ...XN-I contemporaneously with conversation Llxi, X2, X3, ...XN.
9. The virtual communication system of claims 1-8, wherein the volume may be further scaled by a scaling factor DX,Y in proportion to a virtual separation between user X and User Y within the virtual communication system.
33
10. The virtual communication system of claims 1-9, wherein the volume may be further scaled by a scaling factor EX,Y in proportion to the facing orientation of user X relative to user Y within the virtual communication system.
11. The virtual communication system of claims 1-10, wherein the volume may be further scaled by a scaling factor FX,Y in proportion to the facing orientation of user Y relative to user X within the virtual communication system.
12. The virtual communication system of claims 1-11, wherein the volume may be further scaled by a scaling factor GX,Y in proportion to the volume scaling preferences of user X.
13. The virtual communication system of claim 1, wherein the layered conversation logic controls the volume and a visual layout of each participant in each conversation in which the User participates in accordance with the conversation type.
14. The virtual communication system of claim 2, wherein users belonging to a given Layer 2 conversation are objectively positioned in a virtual space at a predefined distance, orientation and layout in relation to each other.
15. The virtual communication system of claim 14, further including visual indicators indicating users belonging to the given Layer 2 conversation.
16. The virtual communication system of claim 2, wherein for every user in a Layer 2 conversation, users in the given Layer 2 conversations are subjectively positioned in a virtual space according to a predefined distance, orientation and layout in relation to each other.
17. The virtual communication system according to claim 16, wherein visual indicators indicate users belonging to the same Layer 2 conversation.
18. The virtual communication system of claim 2, wherein users belonging to a given Layer 3 conversation are objectively positioned in a virtual space at a specified distance, orientation and layout in relation to each other.
19. The virtual communication system of claim 18, wherein visual indicators indicate users belonging to the given Layer 3 conversation.
20. The virtual communication system of claim 2, wherein every user in a Layer 3 conversation is subjectively positioned in a virtual space according to a predefined distance, orientation and layout in relation to other users in the Layer 3 conversation.
21. The virtual communication system according to claim 20, wherein visual indicators indicate users belonging to the given Layer 3 conversation.
PCT/US2021/065218 2021-01-15 2021-12-27 Virtual conferencing system with layered conversations WO2022154958A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP21920074.8A EP4278272A4 (en) 2021-01-15 2021-12-27 Virtual conferencing system with layered conversations
CA3204966A CA3204966A1 (en) 2021-01-15 2021-12-27 Virtual conferencing system with layered conversations

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202163138231P 2021-01-15 2021-01-15
US63/138,231 2021-01-15

Publications (1)

Publication Number Publication Date
WO2022154958A1 true WO2022154958A1 (en) 2022-07-21

Family

ID=82405674

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2021/065218 WO2022154958A1 (en) 2021-01-15 2021-12-27 Virtual conferencing system with layered conversations

Country Status (4)

Country Link
US (2) US11647123B2 (en)
EP (1) EP4278272A4 (en)
CA (1) CA3204966A1 (en)
WO (1) WO2022154958A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11902766B2 (en) * 2021-07-30 2024-02-13 Verizon Patent And Licensing Inc. Independent control of avatar location and voice origination location within a virtual collaboration space

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050088981A1 (en) * 2003-10-22 2005-04-28 Woodruff Allison G. System and method for providing communication channels that each comprise at least one property dynamically changeable during social interactions
US20140118474A1 (en) * 2012-10-26 2014-05-01 Spreecast, Inc. Method and system for producing and viewing video-based group conversations
US20160088259A1 (en) * 2011-01-17 2016-03-24 Eric C. Anderson System and method for interactive internet video conferencing

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7124372B2 (en) * 2001-06-13 2006-10-17 Glen David Brin Interactive communication between a plurality of users
DE602004004824T2 (en) * 2003-02-28 2007-06-28 Palo Alto Research Center Inc., Palo Alto Automatic treatment of conversation groups
US8504605B2 (en) * 2006-05-30 2013-08-06 Microsoft Corporation Proximity filtering of multiparty VoIP communications
US7840668B1 (en) * 2007-05-24 2010-11-23 Avaya Inc. Method and apparatus for managing communication between participants in a virtual environment
US8612868B2 (en) * 2008-03-26 2013-12-17 International Business Machines Corporation Computer method and apparatus for persisting pieces of a virtual world group conversation
US8243903B1 (en) * 2008-12-27 2012-08-14 Avaya Inc. Method and apparatus for implementing a secure side conversation on a telephone conference call
US20100169796A1 (en) * 2008-12-28 2010-07-01 Nortel Networks Limited Visual Indication of Audio Context in a Computer-Generated Virtual Environment
US8446455B2 (en) * 2010-12-08 2013-05-21 Cisco Technology, Inc. System and method for exchanging information in a video conference environment
WO2014076585A2 (en) * 2012-11-14 2014-05-22 Rounds Entertainment Ltd. Multi-user interactive virtual environment system and method
US9912777B2 (en) * 2015-03-10 2018-03-06 Cisco Technology, Inc. System, method, and logic for generating graphical identifiers
US20160344777A1 (en) * 2015-05-18 2016-11-24 Twilio, Inc. System and method for providing a media communication conversation service
US10249320B2 (en) * 2016-09-26 2019-04-02 International Business Machines Corporation Normalizing the speaking volume of participants in meetings
US10659614B1 (en) * 2018-11-20 2020-05-19 International Business Machines Corporation Haptic feedback during phone calls
US10979671B1 (en) * 2020-05-20 2021-04-13 Leo McElroy Internet communication system that modifies users' perceptions based on their proximity within a virtual space
WO2022056492A2 (en) * 2020-09-14 2022-03-17 NWR Corporation Systems and methods for teleconferencing virtual environments
US11070768B1 (en) * 2020-10-20 2021-07-20 Katmai Tech Holdings LLC Volume areas in a three-dimensional virtual conference space, and applications thereof

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050088981A1 (en) * 2003-10-22 2005-04-28 Woodruff Allison G. System and method for providing communication channels that each comprise at least one property dynamically changeable during social interactions
US20160088259A1 (en) * 2011-01-17 2016-03-24 Eric C. Anderson System and method for interactive internet video conferencing
US20140118474A1 (en) * 2012-10-26 2014-05-01 Spreecast, Inc. Method and system for producing and viewing video-based group conversations

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP4278272A4 *

Also Published As

Publication number Publication date
US11647123B2 (en) 2023-05-09
EP4278272A1 (en) 2023-11-22
EP4278272A4 (en) 2024-05-15
US20230239408A1 (en) 2023-07-27
CA3204966A1 (en) 2022-07-21
US20220232128A1 (en) 2022-07-21
US11973901B2 (en) 2024-04-30

Similar Documents

Publication Publication Date Title
TWI504271B (en) Automatic identification and representation of most relevant people in meetings
US8082297B2 (en) Method and apparatus for managing communication between participants in a virtual environment
US11070768B1 (en) Volume areas in a three-dimensional virtual conference space, and applications thereof
JP7066354B2 (en) Program and game system
US11184362B1 (en) Securing private audio in a virtual conference, and applications thereof
US11743430B2 (en) Providing awareness of who can hear audio in a virtual conference, and applications thereof
TWI743669B (en) Method and device for setting a multi-user virtual reality chat environment
WO2007140459A2 (en) Blended space for aligning video streams
US11973901B2 (en) Virtual conferencing system with layered conversations
US20190294313A1 (en) Remote view manipulation in communication session
AU2021366657B2 (en) A web-based videoconference virtual environment with navigable avatars, and applications thereof
US11487498B2 (en) Volume control for audio and video conferencing applications
WO2024059482A1 (en) Navigating a virtual camera to a video avatar in a three-dimensional virtual environment, and applications thereof
US12028651B1 (en) Integrating two-dimensional video conference platforms into a three-dimensional virtual environment
US20240087213A1 (en) Selecting a point to navigate video avatars in a three-dimensional environment
JP3456419B2 (en) Method and system for displaying shared space in virtual space and storage medium storing program for displaying shared space in virtual space
US20220124063A1 (en) Method and device for providing location based avatar messenger service
US20230293998A1 (en) Tracking objects with fiducial markers in multiple environments to provide shared experiences
US11741652B1 (en) Volumetric avatar rendering
WO2024089887A1 (en) Information presentation device, information presentation method, and information presentation program
WO2022235916A1 (en) Securing private audio in a virtual conference, and applications thereof
TW202318865A (en) Avatar display in spatial configuration and at orientation identified according to focus of attention
WO2024020452A1 (en) Multi-screen presentation in a virtual videoconferencing environment
WO2024059606A1 (en) Avatar background alteration
CN114388056A (en) Protein cross section generation method based on AR

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21920074

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 3204966

Country of ref document: CA

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2021920074

Country of ref document: EP

Effective date: 20230816