多用户体验的同步方法
(映维网Nweon 2023年11月14日)XR支持多名用户参与其中。所以,不同设备之间的体验同步非常重要。在名为“Synchronization in a multiuser experience”的专利申请中, 苹果就介绍了一种多用户体验的同步方法。
图3给出了一种用于在参与多用户通信会话的活动设备之间暂停和恢复表示状态同步的技术。从305开始,XR模块初始化具有同步状态信息的多用户通信会话。多用户通信会话可以包括一个或多个设备,而在设备之间可以以一致的方式共享和体验虚拟环境和/或虚拟内容。
在310,确定是否满足暂停本地设备呈现状态同步的标准。在一个或多个实施例中,可以基于检测到的本地用户和虚拟对象之间的交互的启动来满足标准。
在315,状态追踪模块170暂停来自本地设备的表示状态信息的同步。根据一个或多个实施例,通过暂停同步,本地设备可以暂停与本地表示状态相关的数据的传输。当同步暂停时,本地设备可以继续从远程设备接收表示状态信息。
任选地,本地设备可以或可以不利用所接收的表示状态信息来更新所述多用户通信会话的表示的当前表示。特定信息可能会继续同步,例如与用户加入或离开会话相关的信息或与其他人使用的应用程序相关的信息。
在320,XR模块165进行多用户通信会话,呈现不同步。换句话说,多用户通信会话的表示对本地设备的显示将与对一个或多个远程设备的显示不同。例如,如果三个设备在多用户通信会话中处于活动状态,则两个远程设备可能提供一个虚拟对象以一致方式呈现的视图,而本地设备提供不一致的表示。
在一个实施例中,在一致的事项中提供呈现包括呈现虚拟对象,使得具有一致呈现的设备之间的对象内容和/或各种对象之间的空间关系看起来相同。
在325,确定是否检测到已提交的操作。所述确定可包括检测用户和虚拟对象之间交互的结论。提交操作可以是导致多用户通信会话中本地用户和其他用户之间表示状态重新同步的任何触发条件。
如果未检测到已提交的操作,或者未满足与表示状态的重新同步相关的标准,则流程图返回到320,并且XR模块继续以未同步的表示状态呈现多用户通信会话。
返回到325,如果确定检测到提交动作,或者满足重新同步表示信息的标准,则流程图转到330。在330,电子设备为多用户会话获取更新的表示状态信息。当同步暂停时,电子设备可以继续接收和存储来自其他电子设备的呈现状态信息。
在所述实施例中,当同步暂停时,电子设备可以呈现多用户通信会话,而不使用所接收的呈现状态信息。电子设备可以在暂停同步的同时暂停请求或接收呈现状态信息。因此,获取更新的表示状态信息可以包括从一个或多个附加电子设备识别本地存储的最新表示状态,或者可以包括传输对更新的表示状态信息的请求。
流程图在335结束,XR模块根据更新的呈现状态信息呈现多用户通信会话的呈现。在一个或多个实施例中,根据更新的呈现状态信息呈现使得多用户通信会话的呈现重新同步,从而令由电子设备呈现的表示与附加电子设备呈现XR视图的一致表示。
图4示出了从多用户通信会话的非同步视图到同步视图的过渡表示技术。
流程图从405开始,状态追踪模块从一个或多个远程设备获取更新的呈现状态信息。在非同步呈现状态期间,电子设备可以继续在状态追踪数据存储器中接收和存储呈现状态数据。在一个实施例中,电子设备可以暂停接收来自远程设备的呈现状态信息。因此,获取更新的呈现状态信息可以包括将更新状态信息的请求传输到额外的电子设备。
在415,状态追踪模块基于本地当前呈现状态信息识别当前帧。换句话说,当前帧基于与会话中其他设备的最新同步表示。在420,电子设备基于来自一个或多个远程设备的当前状态信息和更新的状态信息识别最终帧。
在425,XR模块在当前帧和最终帧之间生成一个或多个中间帧,并用于在本地设备显示。在一个或多个实施例中,中间帧可以包括可以或不可以从附加电子设备接收的中间呈现信息。作为示例,中间帧基于可由附加电子设备生成、插入或类似的表示信息。
在430,基于更新状态信息的顺序生成动画。所以当本地用户重新同步多用户通信会话的表示时,XR模块可以提供一个动画,并说明当前表示如何产生。作为示例,可以描绘与第一用户相对应的Avatar将虚拟对象从第一位置移动到第二位置,然后可以显示与第二用户相对应的Avatar将相同的虚拟对象从第二位置移动到第三位置,其中第三位置与设备用于第一和第二用户的虚拟对象的呈现一致。
流程图在435结束,其中XR模块表示当前帧、中间帧和最终帧。因此,电子设备的用户可能会体验到同步暂停时在多用户通信会话中发生的活动的表示。
图5描述了多用户通信会话中多个设备之间的数据传输流程图。其中,表示状态信息暂停,然后在一个设备同步。
流程图包括设备A 500A、设备B 500B和设备C 500C。设备500 A-C在多用户通信会话中处于活动状态。
流程图从505开始,其中设备A 500A满足同步暂停条件。在一个实施例中,设备A 500A在多用户通信会话中启动对象与虚拟对象的交互,从而暂停表示同步。根据一个或多个实施例,对象交互的启动可以满足同步暂停标准,使得交互的启动导致在设备A 500A暂停表示同步。
在530,满足重新同步标准。例如,如果对象交互完成,则满足重新同步标准。
同时,在设备B 500B,对象交互可以在510发生。510的对象交互可以根据对象交互以某种方式增强或修改多用户通信会话的表示。在515,设备B 500B可以传输更新的表示状态。
在一个实施例中,可以将更新的呈现状态传输到设备A 500A和设备C 500C,使得设备A500A和设备C 500C具有更新其自身的多用户通信会话的呈现,以与设备B 500B的呈现一致的能力。
在一个实施例中,即使暂停同步,设备A 500A都可以接收在515传输的已传输的更新状态信息。在一个实施例中,设备A 500A可以存储所接收到的更新的呈现状态以供以后使用。在一个或多个实施例中,设备A 500A在呈现状态重新同步后,从设备B 500B请求更新的呈现状态信息才能接收更新的呈现状态信息。
类似地,在设备C 500C ,对象交互可以在520发生,并且设备C 500C可以在525传输更新的表示状态信息。
返回到设备A 500A,流程图在535继续,其中状态追踪模块传输更新的呈现状态信息。
再次返回到设备B 500B,在540,设备可以从接收到的更新的表示状态信息同步表示状态。类似地,在545,设备C 500C同样可以从设备A 500A和设备B 500B接收到的呈现状态信息同步呈现状态。
这样,设备C 500C可以生成与设备A 500A和设备B 500B的表示一致的多用户通信会话的表示。
再次返回到设备500A,在550,接收或以其他方式获得更新的远程呈现状态信息。更新的远程呈现状态信息可以从本地存储器和先前传输呈现状态信息的情况中获得。
流程图在555继续,其中设备A 500A确定最终帧。最终帧可以引用最终表示,这时表示状态将与附加远程设备的表示状态同步。最终帧可以对应于考虑本地当前表示状态,以及在550获得的更新远程表示状态的表示数据。
流程图在560继续,其中设备A 500A确定中间帧。中间帧可以对应于来自远程电子设备的最后同步呈现状态,与在550接收到的获得的更新远程呈现状态信息之间的中间呈现信息。
在560确定的中间帧可以以任意数量的方式确定。例如,中间帧可以包括在510和520的对象交互完成时的呈现状态和555的最终帧之间的内插帧。
流程图在565结束,其中设备A 500A表示当前帧、中间帧和最终帧。因此,设备A 500A的用户可以体验多用户通信会话的最后同步呈现状态和多用户通信会话的当前呈现状态之间的过渡。
相关专利:Apple Patent | Synchronization in a multiuser experience
https://patent.nweon.com/30622
名为“Synchronization in a multiuser experience”的苹果专利申请最初在2023年3月提交,并在日前由美国专利商标局公布。
.data_color_scheme_dark{--weui-ORANGERED: #ff6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-REDORANGE: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05)}.data_color_scheme_dark{--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}.data_color_scheme_dark{--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}.data_color_scheme_dark{--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}.data_color_scheme_dark{--weui-BG-COLOR-ACTIVE: #373737}.data_color_scheme_dark{--weui-BG-6: rgba(255, 255, 255, .1);--weui-ACTIVE-MASK: rgba(255, 255, 255, .1)}.rich_media_content{color:#000000e5;font-size:17px;font-size:var(--articleFontsize);overflow:hidden;text-align:justify}.rich_media_content{color:#ffffffa6;color:var(--weui-FG-HALF)}.rich_media_content{position:relative;z-index:0}.wxw-img{vertical-align:bottom}:root{--articleFontsize: 17px}:root{--sab: env(safe-area-inset-bottom)}:root{--wxBorderAvatarRatio: 3}:root{--discussPageGap: 16px}:root{--appmsgPageGap: 20px}*{margin:0;padding:0}.rich_media_content *{max-width:100%!important;box-sizing:border-box!important;-webkit-box-sizing:border-box!important;word-wrap:break-word!important}body,.wx-root,page{--weui-BTN-HEIGHT: 48;--weui-BTN-HEIGHT-MEDIUM: 40;--weui-BTN-HEIGHT-SMALL: 32}.wx-root,body{--weui-BTN-ACTIVE-MASK: rgba(0, 0, 0, .1)}.wx-root,body{--weui-BTN-DEFAULT-ACTIVE-BG: #e6e6e6}.wx-root,body{--weui-DIALOG-LINE-COLOR: rgba(0, 0, 0, .1)}.wx-root,body{--weui-BG-COLOR-ACTIVE: #ececec}body,.wx-root{--weui-FG-1: rgba(0, 0, 0, .55);--weui-ORANGERED: #ff6146;--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .5);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-FG-5: rgba(0, 0, 0, .05);--weui-RED: #fa5151;--weui-REDORANGE: #ff6146;--weui-ORANGE: #fa9d3b;--weui-YELLOW: #ffc300;--weui-GREEN: #91d300;--weui-LIGHTGREEN: #95ec69;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1485ee;--weui-PURPLE: #6467f0;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-FG: #000;--weui-BG: #fff;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: #fa9d3b;--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: #10aeff;--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05)}body,.wx-root{--weui-BG-6: rgba(0, 0, 0, .05);--weui-ACTIVE-MASK: rgba(0, 0, 0, .05)}@media(prefers-color-scheme:dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-ORANGERED: #ff6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-REDORANGE: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05)}}@media(prefers-color-scheme:dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}}@media(prefers-color-scheme:dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}}@media(prefers-color-scheme:dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}}@media(prefers-color-scheme:dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-COLOR-ACTIVE: #373737}}@media(prefers-color-scheme:dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-6: rgba(255, 255, 255, .1);--weui-ACTIVE-MASK: rgba(255, 255, 255, .1)}}@media(prefers-color-scheme:dark){body:not([data-weui-theme=light]).appmsg_skin_default.rich_media_empty_extra{background-color:#191919}}@media(prefers-color-scheme:dark){body:not([data-weui-theme=light]).my_comment_empty_data{background-color:#111}}blockquote{padding-left:10px;border-left:3px solid #dbdbdb;color:#00000080;font-size:15px;padding-top:4px;margin:1em 0}blockquote{color:#ffffff8c;color:var(--weui-FG-1)}@media(prefers-color-scheme:dark){body:not([data-weui-theme=light]) .rich_media_meta_text,body:not([data-weui-theme=light]) .icon_appmsg_tag.default,body:not([data-weui-theme=light]) .simple_pagination,body:not([data-weui-theme=light]) .sp_page_current,body:not([data-weui-theme=light]) blockquote,body:not([data-weui-theme=light]) .blockquote_info{color:#ffffff4d}}@media(prefers-color-scheme:dark){body:not([data-weui-theme=light]) blockquote{border-color:#404040}}@media(prefers-color-scheme:dark){body:not([data-weui-theme=light]) blockquote{border-color:#404040}}.data_color_scheme_dark .rich_media_meta_text,.data_color_scheme_dark .icon_appmsg_tag.default,.data_color_scheme_dark .reward_area_win .reward_user_tips .weui-loadmore__tips a,.data_color_scheme_dark .simple_pagination,.data_color_scheme_dark .sp_page_current,.data_color_scheme_dark blockquote,.data_color_scheme_dark .blockquote_info{color:#ffffff4d}.data_color_scheme_dark blockquote{border-color:#404040}.rich_media_content p{clear:both;min-height:1em}td p{margin:0;padding:0}@media(prefers-color-scheme:dark){body:not([data-weui-theme=light]) .rich_media_content img:not(.wx_img_placeholder){filter:brightness(.8)}}