CN115686416A - 一种画面展示方法、装置、计算机设备及存储介质 - Google Patents
一种画面展示方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN115686416A CN115686416A CN202211384802.8A CN202211384802A CN115686416A CN 115686416 A CN115686416 A CN 115686416A CN 202211384802 A CN202211384802 A CN 202211384802A CN 115686416 A CN115686416 A CN 115686416A
- Authority
- CN
- China
- Prior art keywords
- frame
- event
- target
- target room
- rendering
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本公开提供了一种画面展示方法、装置、计算机设备及存储介质,应用于目标用户端,包括:响应针对目标房间的触发操作,获取所述目标房间在所述触发操作对应的目标时刻的渲染数据;在所述目标房间当前包括的第一虚拟形象的个数达到所述目标房间对应的目标个数的情况下,获取所述目标房间对应的至少一帧事件帧,所述事件帧中包括参与用户端在各事件采集时刻,控制所述第一虚拟形象产生的事件数据,所述第一虚拟形象为在所述目标房间包括的虚拟形象的个数未达到所述目标个数的情况下加入所述目标房间的虚拟形象;基于所述渲染数据、所述至少一帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
Description
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种画面展示方法、装置、计算机设备及存储介质。
背景技术
随着计算机技术的发展,虚拟社交技术也越来越成熟。在虚拟社交中,每个用户端可以有对应的虚拟形象,用户端可以控制虚拟形象与其他用户端的虚拟形象进行交互。
在虚拟社交中,通常会建立社交房间进行社交,例如建立房间开音乐会,当用户端对应的虚拟形象进入社交房间之后,会在用户端渲染社交房间对应的场景画面,然而当社交房间内的虚拟形象数量较多时,用户端的渲染压力就会比较大,而若限制社交房间的虚拟形象数量,则会影响用户体验。
发明内容
本公开实施例至少提供一种画面展示方法、装置、计算机设备及存储介质。
第一方面,本公开实施例提供了一种画面展示方法,应用于目标用户端,包括:
响应针对目标房间的触发操作,获取所述目标房间在所述触发操作对应的目标时刻的渲染数据;
在所述目标房间当前包括的第一虚拟形象的个数达到所述目标房间对应的目标个数的情况下,获取所述目标房间对应的至少一帧事件帧,所述事件帧中包括参与用户端在各事件采集时刻,控制所述第一虚拟形象产生的事件数据,所述第一虚拟形象为在所述目标房间包括的虚拟形象的个数未达到所述目标个数的情况下加入所述目标房间的虚拟形象;
基于所述渲染数据、所述至少一帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
一种可能的实施方式中,所述基于所述渲染数据、所述至少一帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染并展示,包括:
基于所述至少一帧事件帧的第一帧号以及所述渲染数据的第二帧号,确定所述至少一帧事件帧中的待渲染事件帧;其中,任一事件采集时刻的渲染数据的帧号与该事件采集时刻的事件帧的帧号相同;
基于所述渲染数据、所述待渲染事件帧以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
一种可能的实施方式中,所述基于所述至少一帧事件帧的第一帧号以及所述渲染数据的第二帧号,确定所述至少一帧事件帧中的待渲染事件帧,包括:
将所述至少一帧事件帧中,帧号大于或等于所述第二帧号的事件帧作为所述待渲染事件帧。
一种可能的实施方式中,所述获取所述目标房间对应的至少一帧事件帧,包括:
获取所述目标房间对应的事件帧获取时刻之前的第一事件帧,其中,所述事件帧获取时刻为所述目标时刻之后,首次获取事件帧的时刻;
所述方法还包括:
在获取所述第一事件帧之后,按照预设周期获取所述事件帧获取时刻之后的第二事件帧;
基于所述第二事件帧对所述目标房间渲染的场景画面进行更新渲染。
一种可能的实施方式中,所述获取所述目标房间对应的至少一帧事件帧,包括:
获取所述目标房间对应的目标时间段内的事件帧,其中,所述目标时间段为初始时刻到事件帧获取时刻之间的时间段,所述初始时刻为所述目标时刻之前的距离所述目标时刻为预设时长的时刻,所述事件帧获取时刻为所述目标时刻之后,首次获取事件帧的时刻。
一种可能的实施方式中,在所述事件帧包括多帧的情况下,基于所述渲染数据、所述多帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染并展示,包括:
按照所述多帧事件帧的帧号顺序,基于所述渲染数据、各帧事件帧中的事件数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
一种可能的实施方式中,在基于所述渲染数据、各帧事件帧中的事件数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示之前,所述方法还包括:
对各帧事件帧进行丢帧检测;
在所述丢帧检测结果为未丢帧的情况下,基于所述渲染数据、各帧事件帧中的时间数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
一种可能的实施方式中,所述对各帧事件帧进行丢帧检测,包括:
针对任一事件帧,在该帧事件帧的帧号与该事件帧的前空帧数之差,大于该事件帧的前一事件帧的帧号加1的情况下,确定该帧事件帧出现丢帧,其中,所述前空帧数为该事件帧的前一事件帧与该事件帧之间的空帧数。
一种可能的实施方式中,所述方法还包括:
在所述丢帧检测结果为丢帧的情况下,获取最新的事件采集时刻的渲染数据,以及,重新获取所述目标房间对应的至少一帧事件帧;
基于所述最新的事件采集时刻的渲染数据以及重新获取的至少一帧事件帧,对所述目标房间的场景画面进行渲染。
一种可能的实施方式中,对所述目标房间的场景画面进行渲染并展示之后,所述方法还包括:
响应针对所述第二虚拟形象的控制操作,确定所述控制操作对应的目标事件帧;
将所述目标事件帧进行缓存,并基于所述目标事件帧,对所述目标房间的场景画面进行更新渲染。
一种可能的实施方式中,在所述目标房间当前包含的第一虚拟形象的个数不小于所述目标房间对应的目标个数的情况下,渲染的所述目标房间的场景画面中所述第二虚拟形象的展示状态与所述第一虚拟形象的展示状态不同;
在对所述目标房间的场景画面进行渲染之后,所述方法还包括:
在检测到所述目标房间当前包含的第一虚拟形象的个数小于所述目标房间对应的目标个数的情况下,在接收到身份变更指令后,将所述目标用户端对应的虚拟形象的身份类型由第二虚拟形象变更为第一虚拟形象,并对所述目标用户端对应的虚拟形象的展示状态进行更新。
第二方面,本公开实施例还提供一种画面展示装置,应用于目标用户端,包括:
第一获取模块,用于响应针对目标房间的触发操作,获取所述目标房间在所述触发操作对应的目标时刻的渲染数据;
第二获取模块,用于在所述目标房间当前包括的第一虚拟形象的个数达到所述目标房间对应的目标个数的情况下,获取所述目标房间对应的至少一帧事件帧,所述事件帧中包括参与用户端在各事件采集时刻,控制所述第一虚拟形象产生的事件数据,所述第一虚拟形象为在所述目标房间包括的虚拟形象的个数未达到所述目标个数的情况下加入所述目标房间的虚拟形象;
渲染模块,用于基于所述渲染数据、所述至少一帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染。
一种可能的实施方式中,所述渲染模块,在基于所述渲染数据、所述至少一帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染并展示时,用于:
基于所述至少一帧事件帧的第一帧号以及所述渲染数据的第二帧号,确定所述至少一帧事件帧中的待渲染事件帧;其中,任一事件采集时刻的渲染数据的帧号与该事件采集时刻的事件帧的帧号相同;
基于所述渲染数据、所述待渲染事件帧以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
一种可能的实施方式中,所述渲染模块,在基于所述至少一帧事件帧的第一帧号以及所述渲染数据的第二帧号,确定所述至少一帧事件帧中的待渲染事件帧时,用于:
将所述至少一帧事件帧中,帧号大于或等于所述第二帧号的事件帧作为所述待渲染事件帧。
一种可能的实施方式中,所述第二获取模块,在获取所述目标房间对应的至少一帧事件帧时,用于:
获取所述目标房间对应的事件帧获取时刻之前的第一事件帧,其中,所述事件帧获取时刻为所述目标时刻之后,首次获取事件帧的时刻;
所述第二获取模块,还用于:
在获取所述第一事件帧之后,按照预设周期获取所述事件帧获取时刻之后的第二事件帧;
所述渲染模块,还用于:基于所述第二事件帧对所述目标房间渲染的场景画面进行更新渲染。
一种可能的实施方式中,所述第二获取模块,在获取所述目标房间对应的至少一帧事件帧时,用于:
获取所述目标房间对应的目标时间段内的事件帧,其中,所述目标时间段为初始时刻到事件帧获取时刻之间的时间段,所述初始时刻为所述目标时刻之前的距离所述目标时刻为预设时长的时刻,所述事件帧获取时刻为所述目标时刻之后,首次获取事件帧的时刻。
一种可能的实施方式中,在所述事件帧包括多帧的情况下,所述渲染模块,在基于所述渲染数据、所述多帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染并展示时,用于:
按照所述多帧事件帧的帧号顺序,基于所述渲染数据、各帧事件帧中的事件数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
一种可能的实施方式中,在基于所述渲染数据、各帧事件帧中的事件数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示之前,所述渲染模块还用于:
对各帧事件帧进行丢帧检测;
在所述丢帧检测结果为未丢帧的情况下,基于所述渲染数据、各帧事件帧中的时间数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
一种可能的实施方式中,所述渲染模块,在对各帧事件帧进行丢帧检测时,用于:
针对任一事件帧,在该帧事件帧的帧号与该事件帧的前空帧数之差,大于该事件帧的前一事件帧的帧号加1的情况下,确定该帧事件帧出现丢帧,其中,所述前空帧数为该事件帧的前一事件帧与该事件帧之间的空帧数。
一种可能的实施方式中,所述第二获取模块,还用于:
在所述丢帧检测结果为丢帧的情况下,获取最新的事件采集时刻的渲染数据,以及,重新获取所述目标房间对应的至少一帧事件帧;
所述渲染模块,还用于:基于所述最新的事件采集时刻的渲染数据以及重新获取的至少一帧事件帧,对所述目标房间的场景画面进行渲染。
一种可能的实施方式中,对所述目标房间的场景画面进行渲染并展示之后,所述渲染模块,还用于:
响应针对所述第二虚拟形象的控制操作,确定所述控制操作对应的目标事件帧;
将所述目标事件帧进行缓存,并基于所述目标事件帧,对所述目标房间的场景画面进行更新渲染。
一种可能的实施方式中,在所述目标房间当前包含的第一虚拟形象的个数不小于所述目标房间对应的目标个数的情况下,渲染的所述目标房间的场景画面中所述第二虚拟形象的展示状态与所述第一虚拟形象的展示状态不同;
在对所述目标房间的场景画面进行渲染之后,所述渲染模块还用于:
在检测到所述目标房间当前包含的第一虚拟形象的个数小于所述目标房间对应的目标个数的情况下,在接收到身份变更指令后,将所述目标用户端对应的虚拟形象的身份类型由第二虚拟形象变更为第一虚拟形象,并对所述目标用户端对应的虚拟形象的展示状态进行更新。
第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
本公开提供的画面展示方法、装置、计算机设备及存储介质中,当目标房间的虚拟形象的个数达到目标个数之后,再进入目标房间的虚拟形象的目标用户端,可以获取目标房间当前包含的第一虚拟形象的参与用户端产生的事件数据,然后在目标用户端基于获取的事件数据、执行触发操作的目标时刻的渲染数据以及目标用户端的第二虚拟形象,对目标房间的场景画面进行渲染,这样对于各目标用户端来说,在进入目标房间之后所需要渲染的数据仅仅包括目标个数的第一虚拟形象、目标个数的第一虚拟形象的事件数据、以及各目标用户端本身的第二虚拟形象,这样无需对目标房间进行人数限制即可将目标用户端的渲染压力保持在可控范围内,另一方面,由于仅将第二虚拟形象渲染在目标用户端的目标房间的场景画面中,对于目标用户端来说,目标用户端的第二虚拟形象也加入了目标房间,但是由于目标房间的渲染数据并不包含目标用户端的第二虚拟形象,因此并未增加其他用户端的渲染压力,目标房间可以容纳更多的用户端的虚拟形象,提升了用户体验。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种画面展示方法的流程图;
图2示出了本公开实施例所提供的画面展示方法中,事件采集时刻的示意图;
图3示出了本公开实施例所提供的一种画面展示方法中,整体时间流程表;
图4示出了本公开实施例所提供的一种画面展示装置的示意图;
图5示出了本公开实施例所提供的一种计算机设备的结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
在虚拟社交中,当一个用户端控制虚拟形象执行操作之后,其操作数据需要通过服务器同步到其他的用户端,以实现场景画面的同步。当建立场景房间之后,用户端的虚拟形象在进入场景房间之后,需要获取场景房间内的全部用户的操作数据,并基于操作数据进行画面渲染,这样当场景房间内的用户数量较多时,用户端需要接收的操作数据的数量也会比较多,因此用户端的渲染压力会比较大。
相关技术中,一般是限制各个场景房间的用户数量,当场景房间的用户数量达到一定数量时,则停止其他用户的加入,这样对于未加入的用户来说体验较差。
另一种方法中,可以通过观看场景房间直播的方式来参与场景房间,然而这种方式,用户端的虚拟用户无法真正参与到场景房间的互动中来,用户体验仍旧较差。
基于此,本公开提供了一种画面展示方法、装置、计算机设备及存储介质,当目标房间的虚拟形象的个数达到目标个数之后,再进入目标房间的虚拟形象的目标用户端,可以获取目标房间当前包含的第一虚拟形象的参与用户端产生的事件数据,然后在目标用户端基于获取的事件数据、执行触发操作的目标时刻的渲染数据以及目标用户端的第二虚拟形象,对目标房间的场景画面进行渲染,这样对于各目标用户端来说,在进入目标房间之后所需要渲染的数据仅仅包括目标个数的第一虚拟形象、目标个数的第一虚拟形象的事件数据、以及各目标用户端本身的第二虚拟形象,这样无需对目标房间进行人数限制即可将目标用户端的渲染压力保持在可控范围内,另一方面,由于仅将第二虚拟形象渲染在目标用户端的目标房间的场景画面中,对于目标用户端来说,目标用户端的第二虚拟形象也加入了目标房间,但是由于目标房间的渲染数据并不包含目标用户端的第二虚拟形象,因此并未增加其他用户端的渲染压力,目标房间可以容纳更多的用户端的虚拟形象,提升了用户体验。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。
作为一种可选的但非限定性的实现方式,响应于接收到用户的主动请求,向用户发送提示信息的方式例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或者“不同意”向电子设备提供个人信息的选择控件。
可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其它满足相关法律法规的方式也可应用于本公开的实现方式中。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种画面展示方法进行详细介绍,本公开实施例所提供的画面展示方法的执行主体一般为终端设备,所述终端设备例如可以为智能手机、平板电脑、个人计算机、智能穿戴设备等。
参见图1所示,为本公开实施例提供的画面展示方法的流程图,所述方法包括步骤101~步骤103,其中:
步骤101、响应针对目标房间的触发操作,获取所述目标房间在所述触发操作对应的目标时刻的渲染数据。
步骤102、在所述目标房间当前包括的第一虚拟形象的个数达到所述目标房间对应的目标个数的情况下,获取所述目标房间对应的至少一帧事件帧,所述事件帧中包括参与用户端在各事件采集时刻,控制所述第一虚拟形象产生的事件数据,所述第一虚拟形象为在所述目标房间包括的虚拟形象的个数未达到所述目标个数的情况下加入所述目标房间的虚拟形象。
步骤103、基于所述渲染数据、所述至少一帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
以下为对上述步骤的详细介绍,下文中虚拟形象加入目标房间与用户端加入目标房间意义相同。
针对步骤101、
所述目标房间可以是在目标场景内创建的房间,所述目标场景可以是应用程序内的场景,例如所述目标场景可以是游戏大厅;所述目标房间在建立之后,加入所述目标房间的用户端可以控制对应的虚拟形象执行与所述目标房间匹配的交互动作,例如若所述目标房间为音乐会房间,则加入所述目标房间的用户端可以控制对应的虚拟形象进行音乐控制。
所述针对目标房间的触发操作可以是指申请加入所述目标房间的触发操作,具体的,用户可以申请主动加入所述目标房间,则所述针对目标房间的触发操作例如可以是针对所述目标房间的房间标识的点击操作,或者目标房间的创建者可以邀请用户加入所述目标房间,所述针对目标房间的创建操作例如可以是针对所述目标房间的邀请信息的接收操作。
所述目标房间在某一时刻的渲染数据可以理解为所述目标房间在某一时刻的快照,具体的,所述目标房间内可以包含多个用户端的虚拟形象,而这些虚拟形象在各个时刻的状态(例如位置、动作等)都可能会发生变化,因此,所述目标房间在某一时刻的渲染数据用于表征,所述目标房间、以及所述目标房间所包含的虚拟形象在该时刻的状态。
实际应用中,所述目标房间在被创建之后,可以在各个事件采集时刻都存储所述目标房间在各个事件采集时刻的渲染数据,这样当任一用户端加入所述目标房间之后,可以获取所述目标房间的渲染数据以对所述目标房间进行展示。
针对步骤102、
所述目标房间对应的目标个数可以是指所述目标房间所能容纳的虚拟形象的最大个数,所述目标个数可以是预设值,也可以是根据所述目标房间的房间类型确定的值,例如对于音乐会等交互较少的房间,所述目标个数的值可以设置的较高,而对于游戏等互动较多的房间,所述目标个数的值可以设置的较低。
示例性的可以在确定所述目标房间的房间类型之后,将于所述目标房间的房间类型匹配的个数作为所述目标个数。
所述第一虚拟形象可以理解为在所述目标房间包含的虚拟形象的数量未达到所述目标个数的情况下加入所述目标房间的虚拟形象,所述参与用户端为所述第一虚拟形象对应的用户端;所述第二虚拟形象可以理解为在所述目标房间包含的虚拟形象的数量达到所述目标个数的情况下申请加入所述目标房间的虚拟形象,所述目标用户端为所述第二虚拟形象对应的用户端。
示例性的,若当前加入所述目标房间的虚拟形象的数量为10个,所述目标房间对应的目标个数为10个,则当第11个用户端申请加入所述目标房间时,所述目标房间当前包含的第一虚拟形象的个数等于所述目标房间对应的目标个数,则第11个用户端为目标用户端,第11个用户端对应的虚拟形象为第二虚拟形象;而若当前加入所述目标房间的虚拟形象的数量为9个,所述目标房间对应的目标个数为10个,则当第10个用户端申请加入所述目标房间时,所述目标房间当前包含的第一虚拟形象的个数小于所述目标房间对应的目标个数,则第10个用户端为参与用户端,第10个用户端对应的虚拟形象为第一虚拟形象。
第一虚拟形象在加入所述目标房间之后,参与用户端可以对第一虚拟形象进行控制,控制第一虚拟形象产生的操作数据即为所述事件数据,或者简称为事件,参与用户端在产生事件之后,可以将事件上传至服务器,服务器再将事件下发至其他用户端,以实现各用户端之间的画面统一。
所述服务器可以按照预设周期下发事件到用户端,所述服务器下发事件的时刻可以理解为所述事件采集时刻,因此,所述事件采集时刻也是有固定周期的,或者说各事件采集时刻之间的时间间隔是相同的。
在同一事件采集时刻,可能有多个参与用户端执行了操作行为,因此,在同一事件采集时刻可能有多个参与用户端产生多个事件,所述多个用户端在同一事件采集时刻产生的多个事件构成该事件采集时刻的事件帧。
这里,需要说明的是,所述服务器接收的是参与用户端的事件数据,而并不接收目标用户端的事件数据,所述服务器下发的事件可以是仅下发到各个参与用户端,目标用户端可以主动获取事件;或者所述服务器下发的事件可以是下发到进入目标房间的各个用户端,可以包括参与用户端和目标用户端。
由于目标用户端获取的渲染数据是目标时刻的渲染数据,因此目标时刻之后的事件帧对于目标用户端才有渲染意义,因此,在一种可能的实施方式中,在获取所述目标房间对应的至少一帧事件帧时,可以是在响应针对所述目标房间的触发操作之后,按照预设周期获取所述目标房间的事件帧,每个周期获取的事件帧为未被获取的所述目标时刻之后的事件帧,例如可以是上一次获取事件帧的时刻到当前次获取事件帧的时刻之间产生的事件帧,第一次获取事件帧的时刻可以为所述目标时刻。
通过这种方式,目标用户端能够实时获取到最新的事件帧,以实现目标用户端与参与用户端之间的画面同步。
然而,由于目标用户端加入所述目标房间的时刻与开始获取所述目标房间的时刻可能并不是相邻的时刻,例如可能由于网络原因,所述目标用户端在加入所述目标房间的一段时间之后才开始获取事件帧,因此服务器需要对事件帧进行存储。这样,目标用户端在获取渲染数据时,可以按照预设的周期,从服务器存储的事件帧中获取未被目标用户端获取的事件帧。
其中,目标用户端首次获取事件帧时,获取的是目标时刻到首次获取事件帧的时刻(下面简称为事件帧获取时刻)之间的事件帧,服务器需要基于目标时刻,筛选出目标时刻到事件帧获取时刻之间的事件帧。
由于所述服务器存储的事件帧较多,在目标用户端的个数较多时,服务器存储的事件帧可能包括各个目标用户端的目标时刻之前的事件帧,不同目标用户端的目标时刻可能不同,也就不同目标用户端进入所述目标房间的时刻不同,对于每一个目标用户端,服务器都进行事件帧的筛选可能会增大服务器的压力。因此,在一种可能的实施方式中,所述目标用户端在获取所述目标房间对应的至少一帧事件帧时,可以是在响应针对所述目标房间的触发操作之后,获取所述目标房间对应的事件帧获取时刻之前的第一事件帧。
这样,由于目标用户端获取的第一事件帧是事件帧获取时刻之前的全部事件帧,因此,所述第一事件帧必定包含所述目标时刻到事件帧获取时刻之间的事件帧。
目标用户端在获取事件帧之后,可以再在目标用户端进行事件帧的筛选,这样可以将部分数据筛选压力下放到各个用户端,减轻了服务器的压力。
另外,在获取所述第一事件帧之后,目标用户端还可以按照预设周期获取事件帧获取时刻之后的第二事件帧,然后基于第二事件帧对目标房间渲染的场景画面进行更新渲染。
实际应用中,所述目标用户端按照预设周期从所述服务器拉取事件帧,每次拉取的事件帧为上一次拉取事件帧对应的时刻到当前拉取时刻之间产生的事件帧,因此,所述服务器需要存储部分事件帧,所述目标用户端每次拉取的事件帧可能有多帧。
一种可能的场景中,所述服务器存储的当前时刻的事件帧可能数量较多,例如在目标房间创建半个小时之后,目标用户端才加入所述目标房间,此时所述服务器存储的事件帧可以为所述目标房间在创建之后到事件帧获取时刻产生的所有事件帧,若目标用户端在获取目标房间对应的事件帧时,将这些事件帧也发送到目标用户端,则这些事件帧中的大部分事件帧对于目标用户端来说是无用的,因此,所述目标用户端获取的可以是所述目标房间对应的目标时间段内的事件帧,其中,所述目标时间段为初始时刻到事件帧获取时刻之间的时间段,所述初始时刻为所述目标时刻之前的距离所述目标时刻为预设时长的时刻,所述事件帧获取时刻为所述目标时刻之后,首次获取事件帧的时刻。
这里,所述目标时间段包括所述目标用户端加入所述目标房间的时刻到所述事件帧获取时刻之间的时间,也即所述目标用户端获取的第一事件帧包含所述目标时刻到事件帧获取时刻的各个事件采集时刻的事件帧。
示例性的,若所述目标时刻为t5时刻,所述事件帧获取时刻为t7时刻,则所述目标用户端获取的是t7时刻之前的事件帧,若初始时刻为事件帧获取时刻之前的3个时刻,则所述目标用户端获取的是t4~t7时刻之间的事件帧。
对于服务器而言,每得到一帧事件帧,可以对该事件帧的有效期进行标注,例如有效期即为上述目标时间段的长度,这样目标用户端在获取第一事件帧时,可以直接获取有效期内的事件帧。
实际应用中,所述目标用户端可能由于网络等原因,导致拉取的事件帧可能较多,然而数据传输能力是有限的,因此,所述目标用户端可以每次拉取不超过预设个数的事件帧。
示例性的,如图2所示,若所述目标用户端时刻A拉取了一次事件帧,按照预设的周期,下一次拉取事件帧的时刻应该是时刻B,但是由于目标用户端的网络原因,在时刻B目标用户端没能拉取事件帧,在时刻C目标用户端才再次拉取事件帧,拉取的事件帧为时刻A到时刻C之间产生的事件帧,然而可能数量较多,因此所述目标用户端可能仅拉取了部分事件帧,则将这部分事件帧的最后一帧事件帧对应的时刻D作为当前次拉取的时刻,若下一次拉取为时刻E,则拉取的为时刻D~时刻E之间的事件帧。
在另外一种可能的实施方式中,为了缓解服务器的压力,各个参与用户端在上传事件至服务器之后,服务器可以按照预设周期,将新产生的事件帧打包发送至消息直播平台(或者可以理解为另一服务器),目标用户端可以从所述消息直播平台获取所述目标房间对应的事件帧。
针对步骤103、
一种可能的实施方式中,若所述目标用户端获取的所述目标房间对应的事件帧为所述目标时刻之后的事件帧,则在对所述目标房间的场景画面进行渲染时,可以直接基于所述渲染数据、获取的事件帧以及所述目标用户端对应的第二虚拟形象进行渲染。
若所述目标用户端获取的所述目标房间对应的事件帧包括上述第一事件帧,第一事件帧中包括所述目标时刻之前的事件帧,这部分的事件帧对于目标用户端来说是无需渲染的,因此可以先对获取的事件帧进行筛选。
具体的,可以先基于所述至少一帧事件帧的第一帧号以及所述渲染数据的第二帧号,确定所述至少一帧事件帧中的待渲染事件帧;其中,任一事件采集时刻的渲染数据的帧号与该事件采集时刻的事件帧的帧号相同;然后可以基于所述渲染数据、所述待渲染事件帧以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染。
这里,在确定所述待渲染事件帧时,可以将对应的第一帧号小于所述第二帧号的事件帧丢弃,将对应的第一帧号大于或等于所述第二帧号的事件帧作为所述待渲染事件帧。
由于对应的第一帧号等于所述第二帧号的事件帧,为所述目标时刻的事件帧,所述渲染数据为所述目标时刻的渲染数据,对应的第一帧号大于所述第二帧号的事件帧为所述目标时刻之后发生的事件帧,因此,这样才能获取目标时刻及目标时刻之后的各个时刻,所述第一虚拟形象的状态变化情况。
在所述事件帧包括多帧的情况下,一种可能的实施方式中,在基于所述渲染数据、所述多帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染时,可以按照所述多帧事件帧的帧号顺序,基于所述渲染数据、各帧事件帧中的事件数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染。
然而实际场景中,可能会由于网络波动等情况造成丢帧,因此在在基于所述渲染数据、各帧事件帧中的事件数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染之前,还可以对各帧事件帧进行丢帧检测;在所述丢帧检测结果为未丢帧的情况下,基于所述渲染数据、各帧事件帧中的时间数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染。
一种可能的实施方式中,在对各帧事件帧进行丢帧检测时,可以检测当前待渲染的事件帧与已渲染的事件帧的帧号是否连续,若连续则未发生丢帧。
然而实际场景中,可能在某些事件采集时刻,并未有事件生成,也即所有的参与用户端均未操作第一虚拟形象,因此,此时可能会有空事件帧的情况。若按照上述实施方式进行丢帧检测,则可以将空事件帧也发送至用户端,也即各个事件采集时刻均可以有对应的事件帧,部分事件采集时刻的事件帧为空。
空事件帧并未有任何渲染作用,因此为了节省数据传输资源,可以向用户端发送前空帧数,所述前空帧数为任一事件帧的前一事件帧与该事件帧之间的空帧数。
相应的,在另外一种可能的实施方式中,在对各帧事件帧进行丢帧检测时,针对任一事件帧,基于该帧事件帧的帧号、该事件帧的前一事件帧的帧号、以及前空帧数,对该帧事件帧进行丢包检测。
具体的,针对任一事件帧,在该帧事件帧的帧号与该事件帧的前空帧数之差,大于该事件帧的前一事件帧的帧号加1的情况下,可以确定该帧事件帧出现丢帧。
示例性的,可以通过以下公式进行丢包检测:
事件帧的帧号-前空帧数>该事件帧的前一事件帧的帧号+1
若满足上述公式,则可以确定丢帧检测结果为丢帧,若不满足上述公式,则可以确定丢帧检测结果为未丢帧。
示例性的,若当前事件帧的帧号为7,前空帧数为2,当前事件帧的前一帧号为4,7-2=4+1,不满足上述公式,则可以确定未丢帧;若当前事件帧的前一帧号为3,则7-2>3+1,满足上述公式,则可以确定丢帧。
在丢帧检测结果为丢帧的情况下,由于无法确定具体丢帧丢的是哪一帧,因此可以直接获取最新的事件采集时刻的渲染数据,以及,重新获取所述目标房间对应的至少一帧事件帧,然后基于所述最新的事件采集时刻的渲染数据以及重新获取的至少一帧事件帧,对所述目标房间的场景画面进行渲染,之前获取的渲染数据以及事件帧可以丢弃。
这里,重新获取所述目标房间对应的至少一帧事件帧的方法与上述方法相同,在此暂不赘述。
需要说明的是,目标用户端在获取到所述目标房间对应的事件帧之后,在经过上述筛选和丢帧检测之后,就可以进行后续的渲染过程,而由于目标房间内的参与用户端是会不断生产事件的,因此需要重复执行获取步骤102~步骤103的步骤。
下面,将结合具体的时刻表,对上述获取事件帧、渲染数据以及渲染的过程进行介绍。参照图3所示,为本公开提供的整体时间流程表,在各个事件采集时刻都有对应的渲染数据,以及事件帧,部分事件采集时刻(t5、t6时刻)的事件帧为空,假设目标用户端在t3时刻加入目标房间,则:
读取t3时刻的渲染数据“渲染数据3”;
在t4时刻开始获取事件帧,t4时刻获取的事件帧包括:事件帧0、事件帧1、事件帧2、事件帧3、事件帧4,目标用户端可以每隔3个时刻轮询获取事件帧,在t7时刻再次获取事件帧7,以及前空帧数2;t10时刻获取事件帧8、9、10。
同时,在t4时刻开始,开始筛选获取的事件帧,事件帧0~2的帧号小于渲染数据3的帧号,则直接丢弃,从事件帧3开始,逐帧基于渲染数据和各事件帧进行场景画面的渲染。
可选地,在对对所述目标房间的场景画面进行渲染之后,还可以响应针对所述第二虚拟形象的控制操作,确定所述控制操作对应的目标事件帧;然后将所述目标事件帧进行缓存,并基于所述目标事件帧,对所述目标房间的场景画面进行更新渲染。
这里,所述目标用户端对所述第二虚拟形象进行控制操作产生事件之后,由于第二虚拟形象只展示在目标用户端,对于其他的目标用户端以及参与用户端,并未展示第二虚拟形象,因此所述目标用户端产生的事件无需上传服务器。
第二虚拟形象展示在目标房间内,所以对于目标用户端来说,第二虚拟形象加入了所述目标房间,而对于参与用户端以及其他目标用户端来说,第二虚拟形象并未展示在目标房间内,因此第二虚拟形象无法与参与用户端的第一虚拟形象以及其他目标用户端的虚拟形象进行直接的交互,例如打招呼等互动。
另外,为了突出第二虚拟形象与第一虚拟形象之间的区别,所述目标用户端渲染的所述目标房间的场景画面中所述第二虚拟形象的展示状态与所述第一虚拟形象的展示状态可以不同,例如所述第二虚拟形象的展示状态可以为第一展示状态,所述第一虚拟形象的展示状态为第二展示状态,所述第一展示状态可以区别于正常的显示状态,例如可以通过白色线条展示,所述第二展示状态例如可以是正常显示状态。
在目标用户端加入所述目标房间之后,所述目标房间包括的参与用户端的数量可能会发生改变,可能会有部分参与用户端退出所述目标房间,因此,所述目标用户端的身份信息可能会发生变化。
示例性的,在检测到所述目标房间当前包含的第一虚拟形象的个数小于所述目标房间对应的目标个数的情况下,在接收到身份变更指令后,将所述第二虚拟形象的展示状态变更为所述第二展示状态。
这里,所述身份变更指令可以是服务器下发的,服务器在检测到所述目标房间当前包含的第一虚拟形象的个数小于所述目标房间对应的目标个数的情况下,可以基于各目标用户端的特征信息发送身份变更指令。
示例性的,可以向最早加入所述目标房间的目标用户端发送身份变更指令。
所述目标用户端在接收到所述身份变更指令之后,还可以将身份信息更新为参与用户端,将所述目标用户端对应的虚拟形象的身份类型由第二虚拟形象变更为第一虚拟形象,并对所述目标用户端对应的虚拟形象的展示状态进行更新,例如可以更新为正常显示状态。
这样,更新后的参与用户端可以将产生的事件发送至服务器,服务器可以将事件同步至目标房间内的其他参与用户端,并在其他参与用户端上展示更新后的参与用户端的虚拟形象,此时,服务器的渲染数据中包括更新后的参与用户端的虚拟形象。
需要说明的是,参与用户端和目标用户端可以理解为所述目标房间内两种身份的用户端,所述参与用户端为所述目标房间内的人数小于目标人数的情况下加入所述目标房间的用户端,所述目标用户端为所述目标房间内的人数不小于目标人数的情况下加入所述目标房间的用户端。
所述参与用户端的第一虚拟形象展示在所述目标房间内的各个用户端上,包括参与用户端和目标用户端,目标用户端的第二虚拟形象只展示在目标用户端;参与用户端控制第一虚拟形象产生的事件需要上传至服务器,并通过服务器下发至所述目标房间内的各个用户端,所述目标用户端控制第二虚拟形象产生的事件只保存在目标用户端;参与用户端在各个事件采集时刻可以接收服务器主动下发的事件帧,所述目标用户端需要按照预设周期轮询获取事件帧,因此所述参与用户端和所述目标用户端展示的场景画面之间存在一定事件的延迟。
本公开提供的画面展示方法中,当目标房间的虚拟形象的个数达到目标个数之后,再进入目标房间的虚拟形象的目标用户端,可以获取目标房间当前包含的第一虚拟形象的参与用户端产生的事件数据,然后在目标用户端基于获取的事件数据、执行触发操作的目标时刻的渲染数据以及目标用户端的第二虚拟形象,对目标房间的场景画面进行渲染,这样对于各目标用户端来说,在进入目标房间之后所需要渲染的数据仅仅包括目标个数的第一虚拟形象、目标个数的第一虚拟形象的事件数据、以及各目标用户端本身的第二虚拟形象,这样无需对目标房间进行人数限制即可将目标用户端的渲染压力保持在可控范围内,另一方面,由于仅将第二虚拟形象渲染在目标用户端的目标房间的场景画面中,对于目标用户端来说,目标用户端的第二虚拟形象也加入了目标房间,但是由于目标房间的渲染数据并不包含目标用户端的第二虚拟形象,因此并未增加其他用户端的渲染压力,目标房间可以容纳更多的用户端的虚拟形象,提升了用户体验。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与画面展示方法对应的画面展示装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述画面展示方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图4所示,为本公开实施例提供的一种画面展示装置的架构示意图,所述装置包括:第一获取模块401、第二获取模块402、渲染模块403;其中,
第一获取模块401,用于响应针对目标房间的触发操作,获取所述目标房间在所述触发操作对应的目标时刻的渲染数据;
第二获取模块402,用于在所述目标房间当前包括的第一虚拟形象的个数达到所述目标房间对应的目标个数的情况下,获取所述目标房间对应的至少一帧事件帧,所述事件帧中包括参与用户端在各事件采集时刻,控制所述第一虚拟形象产生的事件数据,所述第一虚拟形象为在所述目标房间包括的虚拟形象的个数未达到所述目标个数的情况下加入所述目标房间的虚拟形象;
渲染模块403,用于基于所述渲染数据、所述至少一帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染。
一种可能的实施方式中,所述渲染模块403,在基于所述渲染数据、所述至少一帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染并展示时,用于:
基于所述至少一帧事件帧的第一帧号以及所述渲染数据的第二帧号,确定所述至少一帧事件帧中的待渲染事件帧;其中,任一事件采集时刻的渲染数据的帧号与该事件采集时刻的事件帧的帧号相同;
基于所述渲染数据、所述待渲染事件帧以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
一种可能的实施方式中,所述渲染模块403,在基于所述至少一帧事件帧的第一帧号以及所述渲染数据的第二帧号,确定所述至少一帧事件帧中的待渲染事件帧时,用于:
将所述至少一帧事件帧中,帧号大于或等于所述第二帧号的事件帧作为所述待渲染事件帧。
一种可能的实施方式中,所述第二获取模块402,在获取所述目标房间对应的至少一帧事件帧时,用于:
获取所述目标房间对应的事件帧获取时刻之前的第一事件帧,其中,所述事件帧获取时刻为所述目标时刻之后,首次获取事件帧的时刻;
所述第二获取模块402,还用于:
在获取所述第一事件帧之后,按照预设周期获取所述事件帧获取时刻之后的第二事件帧;
所述渲染模块403,还用于:基于所述第二事件帧对所述目标房间渲染的场景画面进行更新渲染。
一种可能的实施方式中,所述第二获取模块402,在获取所述目标房间对应的至少一帧事件帧时,用于:
获取所述目标房间对应的目标时间段内的事件帧,其中,所述目标时间段为初始时刻到事件帧获取时刻之间的时间段,所述初始时刻为所述目标时刻之前的距离所述目标时刻为预设时长的时刻,所述事件帧获取时刻为所述目标时刻之后,首次获取事件帧的时刻。
一种可能的实施方式中,在所述事件帧包括多帧的情况下,所述渲染模块403,在基于所述渲染数据、所述多帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染并展示时,用于:
按照所述多帧事件帧的帧号顺序,基于所述渲染数据、各帧事件帧中的事件数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
一种可能的实施方式中,在基于所述渲染数据、各帧事件帧中的事件数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示之前,所述渲染模块403还用于:
对各帧事件帧进行丢帧检测;
在所述丢帧检测结果为未丢帧的情况下,基于所述渲染数据、各帧事件帧中的时间数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
一种可能的实施方式中,所述渲染模块403,在对各帧事件帧进行丢帧检测时,用于:
针对任一事件帧,在该帧事件帧的帧号与该事件帧的前空帧数之差,大于该事件帧的前一事件帧的帧号加1的情况下,确定该帧事件帧出现丢帧,其中,所述前空帧数为该事件帧的前一事件帧与该事件帧之间的空帧数。
一种可能的实施方式中,所述第二获取模块402,还用于:
在所述丢帧检测结果为丢帧的情况下,获取最新的事件采集时刻的渲染数据,以及,重新获取所述目标房间对应的至少一帧事件帧;
所述渲染模块403,还用于:基于所述最新的事件采集时刻的渲染数据以及重新获取的至少一帧事件帧,对所述目标房间的场景画面进行渲染。
一种可能的实施方式中,对所述目标房间的场景画面进行渲染并展示之后,所述渲染模块403,还用于:
响应针对所述第二虚拟形象的控制操作,确定所述控制操作对应的目标事件帧;
将所述目标事件帧进行缓存,并基于所述目标事件帧,对所述目标房间的场景画面进行更新渲染。
一种可能的实施方式中,在所述目标房间当前包含的第一虚拟形象的个数不小于所述目标房间对应的目标个数的情况下,渲染的所述目标房间的场景画面中所述第二虚拟形象的展示状态与所述第一虚拟形象的展示状态不同;
在对所述目标房间的场景画面进行渲染之后,所述渲染模块403还用于:
在检测到所述目标房间当前包含的第一虚拟形象的个数小于所述目标房间对应的目标个数的情况下,在接收到身份变更指令后,将所述目标用户端对应的虚拟形象的身份类型由第二虚拟形象变更为第一虚拟形象,并对所述目标用户端对应的虚拟形象的展示状态进行更新。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
基于同一技术构思,本公开实施例还提供了一种计算机设备。参照图5所示,为本公开实施例提供的计算机设备500的结构示意图,包括处理器501、存储器502、和总线503。其中,存储器502用于存储执行指令,包括内存5021和外部存储器5022;这里的内存5021也称内存储器,用于暂时存放处理器501中的运算数据,以及与硬盘等外部存储器5022交换的数据,处理器501通过内存5021与外部存储器5022进行数据交换,当计算机设备500运行时,处理器501与存储器502之间通过总线503通信,使得处理器501在执行以下指令:
响应针对目标房间的触发操作,获取所述目标房间在所述触发操作对应的目标时刻的渲染数据;
在所述目标房间当前包括的第一虚拟形象的个数达到所述目标房间对应的目标个数的情况下,获取所述目标房间对应的至少一帧事件帧,所述事件帧中包括参与用户端在各事件采集时刻,控制所述第一虚拟形象产生的事件数据,所述第一虚拟形象为在所述目标房间包括的虚拟形象的个数未达到所述目标个数的情况下加入所述目标房间的虚拟形象;
基于所述渲染数据、所述至少一帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
一种可能的实施方式中,处理器501执行的指令中,所述基于所述渲染数据、所述至少一帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染并展示,包括:
基于所述至少一帧事件帧的第一帧号以及所述渲染数据的第二帧号,确定所述至少一帧事件帧中的待渲染事件帧;其中,任一事件采集时刻的渲染数据的帧号与该事件采集时刻的事件帧的帧号相同;
基于所述渲染数据、所述待渲染事件帧以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
一种可能的实施方式中,处理器501执行的指令中,所述基于所述至少一帧事件帧的第一帧号以及所述渲染数据的第二帧号,确定所述至少一帧事件帧中的待渲染事件帧,包括:
将所述至少一帧事件帧中,帧号大于或等于所述第二帧号的事件帧作为所述待渲染事件帧。
一种可能的实施方式中,处理器501执行的指令中,所述获取所述目标房间对应的至少一帧事件帧,包括:
获取所述目标房间对应的事件帧获取时刻之前的第一事件帧,其中,所述事件帧获取时刻为所述目标时刻之后,首次获取事件帧的时刻;
所述方法还包括:
在获取所述第一事件帧之后,按照预设周期获取所述事件帧获取时刻之后的第二事件帧;
基于所述第二事件帧对所述目标房间渲染的场景画面进行更新渲染。
一种可能的实施方式中,处理器501执行的指令中,所述获取所述目标房间对应的至少一帧事件帧,包括:
获取所述目标房间对应的目标时间段内的事件帧,其中,所述目标时间段为初始时刻到事件帧获取时刻之间的时间段,所述初始时刻为所述目标时刻之前的距离所述目标时刻为预设时长的时刻,所述事件帧获取时刻为所述目标时刻之后,首次获取事件帧的时刻。
一种可能的实施方式中,处理器501执行的指令中,在所述事件帧包括多帧的情况下,基于所述渲染数据、所述多帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染并展示,包括:
按照所述多帧事件帧的帧号顺序,基于所述渲染数据、各帧事件帧中的事件数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
一种可能的实施方式中,处理器501执行的指令中,在基于所述渲染数据、各帧事件帧中的事件数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示之前,还包括:
对各帧事件帧进行丢帧检测;
在所述丢帧检测结果为未丢帧的情况下,基于所述渲染数据、各帧事件帧中的时间数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
一种可能的实施方式中,处理器501执行的指令中,所述对各帧事件帧进行丢帧检测,包括:
针对任一事件帧,在该帧事件帧的帧号与该事件帧的前空帧数之差,大于该事件帧的前一事件帧的帧号加1的情况下,确定该帧事件帧出现丢帧,其中,所述前空帧数为该事件帧的前一事件帧与该事件帧之间的空帧数。
一种可能的实施方式中,处理器501执行的指令中,还包括:
在所述丢帧检测结果为丢帧的情况下,获取最新的事件采集时刻的渲染数据,以及,重新获取所述目标房间对应的至少一帧事件帧;
基于所述最新的事件采集时刻的渲染数据以及重新获取的至少一帧事件帧,对所述目标房间的场景画面进行渲染。
一种可能的实施方式中,处理器501执行的指令中,对所述目标房间的场景画面进行渲染并展示之后,还包括:
响应针对所述第二虚拟形象的控制操作,确定所述控制操作对应的目标事件帧;
将所述目标事件帧进行缓存,并基于所述目标事件帧,对所述目标房间的场景画面进行更新渲染。
一种可能的实施方式中,处理器501执行的指令中,在所述目标房间当前包含的第一虚拟形象的个数不小于所述目标房间对应的目标个数的情况下,渲染的所述目标房间的场景画面中所述第二虚拟形象的展示状态与所述第一虚拟形象的展示状态不同;
在对所述目标房间的场景画面进行渲染之后,还包括:
在检测到所述目标房间当前包含的第一虚拟形象的个数小于所述目标房间对应的目标个数的情况下,在接收到身份变更指令后,将所述目标用户端对应的虚拟形象的身份类型由第二虚拟形象变更为第一虚拟形象,并对所述目标用户端对应的虚拟形象的展示状态进行更新。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的画面展示方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的画面展示方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
Claims (14)
1.一种画面展示方法,其特征在于,应用于目标用户端,包括:
响应针对目标房间的触发操作,获取所述目标房间在所述触发操作对应的目标时刻的渲染数据;
在所述目标房间当前包括的第一虚拟形象的个数达到所述目标房间对应的目标个数的情况下,获取所述目标房间对应的至少一帧事件帧,所述事件帧中包括参与用户端在各事件采集时刻,控制所述第一虚拟形象产生的事件数据,所述第一虚拟形象为在所述目标房间包括的虚拟形象的个数未达到所述目标个数的情况下加入所述目标房间的虚拟形象;
基于所述渲染数据、所述至少一帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
2.根据权利要求1所述的方法,其特征在于,所述基于所述渲染数据、所述至少一帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染并展示,包括:
基于所述至少一帧事件帧的第一帧号以及所述渲染数据的第二帧号,确定所述至少一帧事件帧中的待渲染事件帧;其中,任一事件采集时刻的渲染数据的帧号与该事件采集时刻的事件帧的帧号相同;
基于所述渲染数据、所述待渲染事件帧以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
3.根据权利要求2所述的方法,其特征在于,所述基于所述至少一帧事件帧的第一帧号以及所述渲染数据的第二帧号,确定所述至少一帧事件帧中的待渲染事件帧,包括:
将所述至少一帧事件帧中,帧号大于或等于所述第二帧号的事件帧作为所述待渲染事件帧。
4.根据权利要求1~3任一所述的方法,其特征在于,所述获取所述目标房间对应的至少一帧事件帧,包括:
获取所述目标房间对应的事件帧获取时刻之前的第一事件帧,其中,所述事件帧获取时刻为所述目标时刻之后,首次获取事件帧的时刻;
所述方法还包括:
在获取所述第一事件帧之后,按照预设周期获取所述事件帧获取时刻之后的第二事件帧;
基于所述第二事件帧对所述目标房间渲染的场景画面进行更新渲染。
5.根据权利要求1所述的方法,其特征在于,所述获取所述目标房间对应的至少一帧事件帧,包括:
获取所述目标房间对应的目标时间段内的事件帧,其中,所述目标时间段为初始时刻到事件帧获取时刻之间的时间段,所述初始时刻为所述目标时刻之前的距离所述目标时刻为预设时长的时刻,所述事件帧获取时刻为所述目标时刻之后,首次获取事件帧的时刻。
6.根据权利要求1所述的方法,其特征在于,在所述事件帧包括多帧的情况下,基于所述渲染数据、所述多帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染并展示,包括:
按照所述多帧事件帧的帧号顺序,基于所述渲染数据、各帧事件帧中的事件数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
7.根据权利要求6所述的方法,其特征在于,在基于所述渲染数据、各帧事件帧中的事件数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示之前,所述方法还包括:
对各帧事件帧进行丢帧检测;
在所述丢帧检测结果为未丢帧的情况下,基于所述渲染数据、各帧事件帧中的时间数据以及所述第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
8.根据权利要求7所述的方法,其特征在于,所述对各帧事件帧进行丢帧检测,包括:
针对任一事件帧,在该帧事件帧的帧号与该事件帧的前空帧数之差,大于该事件帧的前一事件帧的帧号加1的情况下,确定该帧事件帧出现丢帧,其中,所述前空帧数为该事件帧的前一事件帧与该事件帧之间的空帧数。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在所述丢帧检测结果为丢帧的情况下,获取最新的事件采集时刻的渲染数据,以及,重新获取所述目标房间对应的至少一帧事件帧;
基于所述最新的事件采集时刻的渲染数据以及重新获取的至少一帧事件帧,对所述目标房间的场景画面进行渲染。
10.根据权利要求1所述的方法,其特征在于,对所述目标房间的场景画面进行渲染并展示之后,所述方法还包括:
响应针对所述第二虚拟形象的控制操作,确定所述控制操作对应的目标事件帧;
将所述目标事件帧进行缓存,并基于所述目标事件帧,对所述目标房间的场景画面进行更新渲染。
11.根据权利要求1所述的方法,其特征在于,在所述目标房间当前包含的第一虚拟形象的个数不小于所述目标房间对应的目标个数的情况下,渲染的所述目标房间的场景画面中所述第二虚拟形象的展示状态与所述第一虚拟形象的展示状态不同;
在对所述目标房间的场景画面进行渲染之后,所述方法还包括:
在检测到所述目标房间当前包含的第一虚拟形象的个数小于所述目标房间对应的目标个数的情况下,在接收到身份变更指令后,将所述目标用户端对应的虚拟形象的身份类型由第二虚拟形象变更为第一虚拟形象,并对所述目标用户端对应的虚拟形象的展示状态进行更新。
12.一种画面展示装置,其特征在于,应用于目标用户端,包括:
第一获取模块,用于响应针对目标房间的触发操作,获取所述目标房间在所述触发操作对应的目标时刻的渲染数据;
第二获取模块,用于在所述目标房间当前包括的第一虚拟形象的个数达到所述目标房间对应的目标个数的情况下,获取所述目标房间对应的至少一帧事件帧,所述事件帧中包括参与用户端在各事件采集时刻,控制所述第一虚拟形象产生的事件数据,所述第一虚拟形象为在所述目标房间包括的虚拟形象的数量小于所述目标个数的情况下加入所述目标房间的虚拟形象;
渲染模块,用于基于所述渲染数据、所述至少一帧事件帧以及所述目标用户端对应的第二虚拟形象,对所述目标房间的场景画面进行渲染并展示。
13.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至11任一项所述的画面展示方法的步骤。
14.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至11任一项所述的画面展示方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211384802.8A CN115686416A (zh) | 2022-11-07 | 2022-11-07 | 一种画面展示方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211384802.8A CN115686416A (zh) | 2022-11-07 | 2022-11-07 | 一种画面展示方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115686416A true CN115686416A (zh) | 2023-02-03 |
Family
ID=85050432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211384802.8A Pending CN115686416A (zh) | 2022-11-07 | 2022-11-07 | 一种画面展示方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115686416A (zh) |
-
2022
- 2022-11-07 CN CN202211384802.8A patent/CN115686416A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2023279917A1 (zh) | 弹幕显示方法、弹幕发送方法、装置、计算机设备、计算机可读存储介质及计算机程序产品 | |
CN110830735A (zh) | 一种视频生成方法、装置、计算机设备和存储介质 | |
CN110545442A (zh) | 一种直播互动方法、装置、电子设备及可读存储介质 | |
CN112188223B (zh) | 直播视频播放方法、装置、设备及介质 | |
CN114025180A (zh) | 一种游戏操作同步系统、方法、装置、设备及存储介质 | |
CN108765084B (zh) | 一种虚拟三维空间的同步处理方法及装置 | |
CN111569436A (zh) | 基于直播观战中互动的处理方法、装置及设备 | |
CN112367530A (zh) | 视频处理方法、装置、电子设备和存储介质 | |
CN113521743A (zh) | 游戏同步方法、装置、终端、服务器和存储介质 | |
CN113824983A (zh) | 数据匹配方法、装置、设备及计算机可读存储介质 | |
CN112789864B (zh) | 一种直播方法、装置、设备及计算机可读存储介质 | |
CN114844869A (zh) | 多媒会议参会统计方法、装置、计算机设备及存储介质 | |
CN113244609A (zh) | 多画面的显示方法和装置、存储介质及电子设备 | |
CN105872756B (zh) | 一种分享电视播放信息的方法、装置及系统 | |
CN110354496B (zh) | 电子竞技赛事的处理方法及装置、存储介质、电子设备 | |
CN117085335A (zh) | 游戏编辑方法、游戏编辑装置、存储介质与电子设备 | |
CN115686416A (zh) | 一种画面展示方法、装置、计算机设备及存储介质 | |
CN113014852A (zh) | 信息提示方法、装置及设备 | |
CN116192946A (zh) | 一种云渲染系统及云渲染方法 | |
CN114404959A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN113132808B (zh) | 视频生成方法、装置及计算机可读存储介质 | |
CN112804551A (zh) | 一种直播方法、装置、计算机设备及存储介质 | |
CN111821696B (zh) | 一种游戏观战的方法及装置、电子设备、存储介质 | |
CN117750146A (zh) | 直播互动方法、装置和计算机可读存储介质 | |
CN114432693A (zh) | 一种数据同步方法、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |