场景渲染方法、装置、电子设备及存储介质与流程
未命名
09-22
阅读:73
评论:0

1.本技术涉及图像渲染技术领域,尤其涉及一种场景渲染方法、装置、电子设备及存储介质。
背景技术:
2.本部分旨在为权利要求书中陈述的本技术的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.虚拟场景的渲染工作,例如3d场景的渲染,往往由客户端单机完成。由于客户端单机运算能力有限,尤其在移动互联网时代,客户端往往运行在移动设备上,运算能力比起台式机更加不足,这就使得客户端运行的实时程序无法渲染更加丰富的场景。
技术实现要素:
4.有鉴于此,本技术的目的在于提出一种场景渲染方法、装置、电子设备及存储介质。
5.基于上述目的,本技术提供了一种场景渲染方法,包括:
6.将待渲染场景分成多个待渲染任务;其中,每个所述待渲染任务至少对应所述待渲染场景中的一个虚拟物体;
7.将至少部分所述待渲染任务分配到多个云端节点,以使所述云端节点执行所述待渲染任务,得到所述待渲染任务对应的所述虚拟物体的深度图和颜色图;
8.获取所有所述待渲染任务对应的所述深度图和所述颜色图;
9.基于所有所述深度图和所述颜色图得到所述待渲染场景的渲染结果。
10.基于同一发明构思,本技术示例性实施例还提供了一种场景渲染装置,包括:
11.场景拆分模块,将待渲染场景分成多个待渲染任务;其中,每个所述待渲染任务至少对应所述待渲染场景中的一个虚拟物体;
12.任务分配模块,将至少部分所述待渲染任务分配到多个云端节点,以使所述云端节点执行所述待渲染任务,得到所述待渲染任务对应的所述虚拟物体的深度图和颜色图;
13.获取模块,获取所有所述待渲染任务对应的所述深度图和所述颜色图;
14.渲染模块,基于所有所述深度图和所述颜色图得到所述待渲染场景的渲染结果。
15.基于同一发明构思,本技术示例性实施例还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可由所述处理器执行的计算机程序,所述处理器执行所述程序时实现如上所述的场景渲染方法。
16.基于同一发明构思,本技术示例性实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行如上所述的场景渲染方法。
17.从上面所述可以看出,本技术提供的场景渲染方法、装置、电子设备及存储介质,将待渲染场景分成多个待渲染任务;其中,每个所述待渲染任务至少对应所述待渲染场景
中的一个虚拟物体;将至少部分所述待渲染任务分配到多个云端节点,以使所述云端节点执行所述待渲染任务,得到所述待渲染任务对应的所述虚拟物体的深度图和颜色图;获取所有所述待渲染任务对应的所述深度图和所述颜色图;基于所有所述深度图和所述颜色图得到所述待渲染场景的渲染结果,从而通过将渲染场景的部分任务分配给多个云端节点,通过多个云端节点来减轻客户端本地的渲染压力,使得客户端能够获得更复杂丰富的渲染结果,同时,通过深度图和颜色图来得到最终的渲染结果,可以使得待渲染场景能够支持更多样的任务划分。
附图说明
18.为了更清楚地说明本技术或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1为本技术实施例的一种应用场景的示意图;
20.图2为本技术实施例的一种场景渲染方法的流程示意图;
21.图3为本技术实施例的一种待渲染场景的结构示意图;
22.图4为本技术实施例的第一待渲染任务对应的虚拟物体的结构示意图;
23.图5为本技术实施例的第二待渲染任务对应的虚拟物体的结构示意图;
24.图6为本技术实施例的第三待渲染任务对应的虚拟物体的结构示意图;
25.图7为本技术实施例的一种场景渲染装置的结构示意图;
26.图8为本技术实施例的一种具体的电子设备的结构示意图。
具体实施方式
27.下面将参考若干示例性实施方式来描述本技术的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本技术,而并非以任何方式限制本技术的范围。相反,提供这些实施方式是为了使本技术更加透彻和完整,并且能够将本技术的范围完整地传达给本领域的技术人员。
28.根据本技术的实施方式,提出了一种场景渲染方法、系统、电子设备及存储介质。
29.在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
30.下面参考本技术的若干代表性实施方式,详细阐释本技术的原理和精神。
31.发明概述
32.目前,相关技术中,虚拟场景的渲染工作,例如3d场景的渲染,往往由客户端单机完成。由于客户端单机运算能力有限,尤其在移动互联网时代,客户端往往运行在移动设备上,运算能力比起台式机更加不足,这就使得客户端运行的实时程序无法渲染更加丰富的场景。
33.为了解决上述问题,本技术提供了一种场景渲染方法,具体包括:
34.将待渲染场景分成多个待渲染任务;其中,每个所述待渲染任务至少对应所述待渲染场景中的一个虚拟物体;将至少部分所述待渲染任务分配到多个云端节点,以使所述
云端节点执行所述待渲染任务,得到所述待渲染任务对应的所述虚拟物体的深度图和颜色图;获取所有所述待渲染任务对应的所述深度图和所述颜色图;基于所有所述深度图和所述颜色图得到所述待渲染场景的渲染结果,从而通过将渲染场景的部分任务分配给多个云端节点,通过多个云端节点来减轻客户端本地的渲染压力,使得客户端能够获得更复杂丰富的渲染结果,同时,通过深度图和颜色图来得到最终的渲染结果,可以使得待渲染场景能够支持更多样的任务划分,例如可以按照待渲染场景中不同的虚拟物体进行划分任务,由于每个虚拟物体在渲染时同时渲染颜色图和深度图,即使不同的两个虚拟物体相互之间的位置发生变化,也同样可以通过深度图来确定这两个虚拟物体在渲染好的场景中的相互遮挡关系。
35.在介绍了本技术的基本原理之后,下面具体介绍本技术的各种非限制性实施方式。
36.应用场景总览
37.在一些具体的应用场景中,本技术的场景渲染方法可以应用于各种涉及场景渲染的平台或系统中,可选的,该系统或平台可以是游戏系统或平台。作为一种示例,该应用场景可以包括至少一个服务器和至少一个终端设备(客户端)。终端设备包括但不限于桌面计算机、移动电话、移动电脑、平板电脑、媒体播放器、智能可穿戴设备视、个人数字助理(personal digital assistant,pda)或其它能够实现上述功能的电子设备等。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。服务器与终端之间可以通过网络进行通信,以实现数据的传输。其中,网络可以是有线网络或无线网络,本技术对此不作具体限定。
38.服务器可以是提供各种服务的服务器。具体的,服务器可以用于为终端运行的应用程序提供后台服务。可选的,在一些实现方式中,本技术实施例提供的场景渲染方法可以由客户端(终端设备)执行。参考图1,本技术实施提供的场景渲染方法由客户端从服务器获取数据,并由客户端将至少部分待渲染任务分配到多个云端节点(云端节点a到云端节点n),然后客户端从多个云端节点收集待渲染任务的结果,并得到最终的待渲染场景的渲染结果。可选的,客户端与各个云端节点之间通过网络进行通信。
39.可选的,上述无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也能够是任何网络,包括但不限于局域网(local area network,lan)、城域网(metropolitan area network,man)、广域网(wide area network,wan)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(hyper text mark-up language,html)、可扩展标记语言(extensible markup language,xml)等的技术和/或格式来代表通过网络交换的数据。此外还能够使用诸如安全套接字层(secure socket layer,ssl)、传输层安全(transport layer security,tls)、虚拟专用网络(virtual private network,vpn)、网际协议安全(internet protocol security,ipsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还能够使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
40.下面结合具体的应用场景,来描述根据本技术示例性实施方式的场景渲染方法。
需要注意的是,上述应用场景仅是为了便于理解本技术的精神和原理而示出,本技术的实施方式在此方面不受任何限制。相反,本技术的实施方式可以应用于适用的任何场景。
41.示例性方法
42.参考图2,本技术实施例提供了一种场景渲染方法,该场景渲染方法的执行主体可以但不限于是服务器或终端设备。所述方法包括以下步骤:
43.s101,将待渲染场景分成多个待渲染任务;其中,每个所述待渲染任务至少对应所述待渲染场景中的一个虚拟物体。
44.具体实施时,客户端在确定待渲染场景后,先将待渲染场景分成多个待渲染任务,可选的,可以按照待渲染场景中不同的虚拟物体进行任务划分,可选的,每个所述待渲染任务至少对应所述待渲染场景中的一个虚拟物体。参考图3,为本实施例提供的一种待渲染场景的结构示意图,该待渲染场景主要包括一个虚拟桌子和16个虚拟人物,然后按照虚拟物体可以分成三个待渲染任务,其中,第一待渲染任务包括一个虚拟桌子,参考图4,第二个待渲染任务和第三个虚拟任务各自包括8个虚拟人物,参考图5和图6。可选的,在一些实施例中,待渲染场景中的虚拟物体还可以包括虚拟天空等虚拟环境。
45.s102,将至少部分所述待渲染任务分配到多个云端节点,以使所述云端节点执行所述待渲染任务,得到所述待渲染任务对应的所述虚拟物体的深度图和颜色图。
46.具体实施时,为了减少客户端的渲染负担,可以将至少部分所述待渲染任务分配到多个云端节点,即可以将全部的待渲染任务都分配给多个云端节点,也可以将部分待渲染任务分配给多个云端节点,每个云端节点在接收到其被分配的待渲染任务后,可以单独完成对应的待渲染任务,从而得到所述待渲染任务对应的所述虚拟物体的深度图和颜色图,即每个云端节点通过执行其对应的待渲染任务,均可以得到待渲染场景中的部分虚拟物体的深度图和颜色图。可选的,每个云端节点具体对虚拟物体的渲染过程,可以参考相关技术中的任意一种渲染方法,对此不做限定。
47.需要说明的是,当客户端只将部分待渲染任务分配给多个云端节点时,剩下的待渲染任务可以由客户端本地来完成,从而可以减少云端节点的渲染压力。
48.需要说明的时,云端节点在得到所述待渲染任务对应的所述虚拟物体的深度图和颜色图后,可以先对深度图和颜色图进行编码,然后将编码后的深度图和颜色图发送给客户端,客户端在接收到云端节点发送的深度图和颜色图后,可以先对深度图和颜色图进行解码。可选的,编码和解码的具体方法可以根据需要进行选择,对此不做限定,例如,可以采用h264和rvl进行深度图和颜色图的编码和解码。
49.在一些实施例中,将至少部分所述待渲染任务分配到多个云端节点,具体包括:
50.将所述多个待渲染任务中的目标渲染任务分配到多个所述云端节点;
51.其中,所述目标渲染任务对应的所述虚拟物体为动态虚拟物体。
52.具体实施时,考虑到一般待渲染场景中的动态虚拟物体一般渲染工作量较大,例如,图3中的虚拟人物。而待渲染场景中的静态虚拟物体一般渲染工作量较大,例如,图3中的虚拟桌子。因此,可以优先将动态虚拟物体对应的目标渲染任务分配到多个所述云端节点,从而避免客户端发生卡顿。
53.在一些实施例中,将至少部分所述待渲染任务分配到多个云端节点,具体包括:
54.确定所述待渲染场景中禁止穿过的目标虚拟物体;
55.将所述目标虚拟物体的碰撞体信息发送到每个所述云端节点,以使所述云端节点执行所述待渲染任务时,能够基于所述目标虚拟物体的碰撞体信息调整所述待渲染任务对应的所述虚拟物体的位置信息;
56.其中,所述碰撞体信息包括所述目标虚拟物体的位置信息和碰撞轮廓信息。
57.具体实施时,考虑到当待渲染场景为动态场景时,例如,游戏大厅场景,此时,游戏大厅场景中的各个虚拟角色可能会发生走动,而在走动过程中可能会与游戏大厅场景中的其他虚拟物体(角色)发生碰撞,而如果无视这种碰撞,会导致最终渲染出的场景中存在多个虚拟物体的穿模现象,即二两虚拟物体相互交叉,从而影响视觉感受。为了避免这种情况,可以将将所述目标虚拟物体的碰撞体信息发送到每个所述云端节点,以使所述云端节点执行所述待渲染任务时,能够基于所述目标虚拟物体的碰撞体信息调整所述待渲染任务对应的所述虚拟物体的位置信息。可选的,所述待渲染场景中禁止穿过的目标虚拟物体,可以根据需要进行设置,例如,可以将待渲染场景中的所有虚拟物体均确定为目标虚拟物体,也可以只将一些属于建筑类的虚拟物体确定为目标虚拟物体,对此不做限定。
58.在一些实施例中,将至少部分所述待渲染任务分配到多个云端节点,具体包括:
59.将所述待渲染场景对应的虚拟相机参数,以及每个所述云端节点对应的所述待渲染任务中的虚拟物体的渲染参数,发送给每个所述云端节点。
60.具体实施时,当将至少部分所述待渲染任务分配到多个云端节点时,为了避免不同云端节点渲染出的结果产生偏差,需要将所述待渲染场景对应的虚拟相机参数,以及每个所述云端节点对应的所述待渲染任务中的虚拟物体的渲染参数,发送给每个所述云端节点。
61.s103,获取所有所述待渲染任务对应的所述深度图和所述颜色图。
62.具体实施时,在将至少部分所述待渲染任务分配到多个云端节点后,各个云端节点会分别进行不同的渲染,然后客户端通过收集所有所述待渲染任务对应的所述深度图和所述颜色图,就可以通过所有所述待渲染任务对应的所述深度图和所述颜色图进行最终渲染结果的计算。
63.在一些实施例中,获取所有所述待渲染任务对应的所述深度图和所述颜色图,具体包括:
64.获取所有所述云端节点发送的所述深度图和所述颜色图;
65.或,获取客户端本地执行其被分配的所述待渲染任务得到的所述深度图和所述颜色图,以及所有所述云端节点发送的所述深度图和所述颜色图。
66.具体实施时,当客户端将全部的待渲染任务都分配给多个云端节点时,从所有所述云端节点获取所有所述待渲染任务对应的所述深度图和所述颜色图。当客户端将部分待渲染任务分配给多个云端节点时,需要同时从所有所述云端节点及客户端本地获取所有所述待渲染任务对应的所述深度图和所述颜色图。可选的,所述客户端可以是服务器或终端设备,对此不做限定。
67.s104,基于所有所述深度图和所述颜色图得到所述待渲染场景的渲染结果。
68.具体实施时,在收集到所有所述待渲染任务对应的所述深度图和所述颜色图之后,根据所有所述深度图和所述颜色图得到所述待渲染场景的渲染结果,即通过所述深度图将所有所述颜色图合并,得到所述待渲染场景的渲染结果。
69.在一些实施例中,基于所有所述深度图和所述颜色图得到所述待渲染场景的渲染结果,具体包括:
70.对于所述待渲染场景中的每个像素位置,从所有所述深度图和所述颜色图中确定多个与所述像素位置对应的颜色值与深度值,将多个所述深度值中距离虚拟摄像机最近的目标深度值对应的目标颜色值作为所述像素位置的颜色值。
71.具体实施时,在基于所有所述深度图和所述颜色图得到所述待渲染场景的渲染结果时,将多个所述深度值中距离虚拟摄像机最近的目标深度值对应的目标颜色值作为所述待渲染场景中的每个像素位置的颜色值。可选的,可以进行多次循环迭代,每次比较当前深度值和上一次深度值谁距离虚拟摄像机更近,即谁的深度值更小,若当前深度值更近,则用当前深度值覆盖上一次深度值,并继续进行迭代,直到该像素位置的所有深度值均完成迭代为止,然后将最终的深度值对应的颜色值作为此像素位置的输出结果。
72.在一些实施例中,获取所有所述待渲染任务对应的所述深度图和所述颜色图,具体包括:
73.将获取的所述待渲染任务对应的所述深度图和所述颜色图保存至预设缓存区中;其中,所述待渲染场景包括随时间发生变化的多个图像帧,每个所述图像帧对应有一个编号信息,所述云端节点在执行所述待渲染任务时会依次对多个所述图像帧对应的虚拟物体进行渲染,得到每个编号信息对应的所述深度图和所述颜色图;
74.响应于确定所述预设缓存区中的目标编号信息对应的所述深度图和所述颜色图的数量均等于预设阈值,从所述预设缓存区中获取所述目标编号信息对应的所有所述深度图和所述颜色图,并删除所述预设缓存区中所述目标编号信息对应的所有所述深度图和所述颜色图;
75.其中,所述目标编号信息对应的所述深度图和所述颜色图用于得到所述目标编号信息对应的所述图像帧的渲染结果。
76.具体实施时,考虑到,各个云端节点与客户端进行交互时,可能会产生不同的网络延时,而且,当待渲染场景为动态场景时,即待渲染场景包括随时间发生变化的多个图像帧,由于需要依次合并得到每个图像帧的渲染结果,所以当某个图像帧缺少部分所述深度图和所述颜色图时,并不能马上进行合并处理,因此,需要在客户端中预先设置一个缓存区,由缓存区先收集所有云端节点或客户端本地的所述深度图和所述颜色图,然后,当收集的所述深度图和所述颜色图满足合并条件后,客户端在从缓存区获取需要的所述深度图和所述颜色图,以进行后续的合并步骤。同时,考虑到客户端内存的节约,当从缓存区获取到需要的所述深度图和所述颜色图,就可以将这部分所述深度图和所述颜色图进行删除。可选的,预设阈值可以根据需要进行设置,该预设阈值一般与待渲染任务的数量相等。
77.在一些实施例中,获取所有所述待渲染任务对应的所述深度图和所述颜色图,具体包括:
78.为每个所述待渲染任务创建预设数量的缓存区;其中,所述待渲染场景包括随时间发生变化的多个图像帧,每个所述图像帧对应有一个编号信息,所述云端节点在执行所述待渲染任务时会依次对多个所述图像帧对应的虚拟物体进行渲染,得到每个编号信息对应的所述深度图和所述颜色图;
79.对于每个所述待渲染任务,获取所述待渲染任务对应的当前图像帧的当前编号信
息,基于所述当前编号信息和所述预设数量确定所述当前编号信息对应的所述深度图和所述颜色图在所述预设数量的缓存区中的目标保存位置,将所述当前编号信息对应的所述深度图和所述颜色图保存在所述目标保存位置对应的缓存区中,并删除所述目标保存位置对应的缓存区中之前保存的历史深度图和历史颜色图;
80.从所有所述创建的缓存区中获取所有所述待渲染任务对应的所述深度图和所述颜色图。
81.具体实施时,为了进一步提高获取所述深度图和所述颜色图的效率,并进一步提高缓存区释放的内存的效率,本实施例中为每个所述待渲染任务均创建预设数量的缓存区,对于每个所述待渲染任务的每个缓存区,由于会用当前的深度图和颜色图覆盖之前保存的历史深度图和历史颜色图,因此,每个缓存区最多只保存一个图像帧对应的所述深度图和所述颜色图。可选的,预设数量可以根据需要进行设置,一般可以综合考虑客户端的内存消耗和多个节点的导致的画面延时差异来确定该预设数量,例如,可以将该预设数量设置为32,则每个所述待渲染任务均对应有32个缓存区。
82.在一些实施例中,每个所述待渲染任务对应的预设数量的缓存区中的每个缓存区包括颜色缓存区和深度缓存区。例如,当预设数量设置为32时,每个所述待渲染任务均对应有32个颜色缓存区和32个深度缓存区,若此时用字母表示,则cij表示第i个待渲染任务的第j个缓存区。
83.在一些实施例中,基于所述当前编号信息和所述预设数量确定所述当前编号信息对应的所述深度图和所述颜色图在所述预设数量的缓存区中的目标保存位置,具体包括:
84.确定所述预设数量除以所述当前编号信息对应的数值得到的目标余数,基于所述目标余数确定所述当前编号信息对应的所述深度图和所述颜色图在所述预设数量的缓存区中的目标保存位置。
85.具体实施时,若预设数量设置为32,且当前编号信息对应的数值为33时,此时用32除以33得到的余数为1,因此,确定所述当前编号信息对应的所述深度图和所述颜色图在所述预设数量的缓存区中的目标保存位置为排列第二的缓存区。需要说明的是,当前编号信息对应的数值从0开始计数,当目标余数为0时,对应的目标保存位置为排列第一的缓存区。
86.在一些实施例中,从所有所述创建的缓存区中获取所有所述待渲染任务对应的所述深度图和所述颜色图,具体包括:
87.在所有所述创建的缓存区中,响应于确定排序位次相同且属于不同所述待渲染任务的缓存区中保存的所述深度图和所述颜色图对应的目标编号信息均相同,从所有所述创建的缓存区中获取所述目标编号信息对应的所述深度图和所述颜色图;
88.其中,每个所述待渲染任务对应的预设数量的缓存区均按照预设顺序进行排列,所述目标编号信息对应的所述深度图和所述颜色图用于得到所述目标编号信息对应的图像帧的渲染结果。
89.具体实施时,为了能够准确的获取到同一个图像帧对应的所有所述深度图和所述颜色图,当在所有所述创建的缓存区中,确定排序位次相同且属于不同所述待渲染任务的缓存区中保存的所述深度图和所述颜色图对应的目标编号信息均相同时,从所有所述创建的缓存区中获取所述目标编号信息对应的所述深度图和所述颜色图,即获得了该目标编号信息对应的图像帧的所有所述深度图和所述颜色图。
90.在一些实施例中,从所有所述创建的缓存区中获取所有所述待渲染任务对应的所述深度图和所述颜色图,具体还包括:
91.响应于确定所述目标编号信息为多个,从多个所述目标编号信息中确定编号信息数值最大的最新编号信息,并从所有所述创建的缓存区中只获取所述最新编号信息对应的所述深度图和所述颜色图;
92.其中,多个所述图像帧的编号信息的数值按照从小到大的顺序排列。
93.具体实施时,考虑到,当待渲染场景为动态场景时,待渲染场景每一秒可能对应多个图像帧,为了使客户端能优先获取到最新的图像帧,当确定所述目标编号信息为多个时,说明此时可以同时合成多个图像帧,但是为了保证用户的视觉感受,使用户最先了解到最近的画面,此时,从多个所述目标编号信息中确定编号信息数值最大的最新编号信息,并从所有所述创建的缓存区中只获取所述最新编号信息对应的所述深度图和所述颜色图。
94.在一些实施例中,在从所有所述创建的缓存区中获取所有所述待渲染任务对应的所述深度图和所述颜色图之前,获取所有所述待渲染任务对应的所述深度图和所述颜色图,具体还包括:
95.获取所有所述创建的缓存区中保存的所述深度图和所述颜色图对应的多个编号信息;
96.响应于确定所述多个编码信息中任意两个编码信息之间的数值差大于预设差值,删除所有所述创建的缓存区中保存的所述深度图和所述颜色图。
97.具体实施时,考虑到一些极端情况,由于网络延时,可能某个云端节点发送的深度图和颜色图对应的图像帧的编码信息的数值远小于其他云端节点发送的深度图和颜色图对应编码信息的数值,从而导致客户端永远无法收集齐属于一个图像帧的深度图和颜色图,进而导致了客户端画面的卡顿,为了避免这种情况,可以通过清空所有所述创建的缓存区,并统一所有所述待渲染任务的执行进度,即相当于所有云端节点以相同的起点,重新开始执行待渲染任务,而且网络延时一般是暂时的,所以当所有云端节点以相同的起点,重新开始执行待渲染任务后,不仅可以快速的恢复客户端的画面,而且给发送延时的云端节点争取到了网络恢复的时间。
98.在一些实施例中,在删除所有所述创建的缓存区中保存的所述深度图和所述颜色图之后,获取所有所述待渲染任务对应的所述深度图和所述颜色图,具体还包括:
99.再次获取所有所述创建的缓存区中保存的所述深度图和所述颜色图对应的多个编号信息;
100.响应于确定再次获取的所述多个编码信息中任意两个编码信息之间的数值差大于预设差值,再次删除所有所述创建的缓存区中保存的所述深度图和所述颜色图,并统一所有所述待渲染任务的执行进度,同时降低所述待渲染场景单位时间对应的图像帧的数量。
101.具体实施时,考虑到有时候云端节点的网络延时并不能马上恢复,此时,除使所有云端节点以相同的起点,重新开始执行待渲染任务之外,还可以进一步降低所述待渲染场景单位时间对应的图像帧的数量,即通过拉长所有云端节点处理每个图像帧对应的深度图和颜色图的时间,从而减少各个云端节点之间的时延。
102.本技术提供的场景渲染方法,将待渲染场景分成多个待渲染任务;其中,每个所述
待渲染任务至少对应所述待渲染场景中的一个虚拟物体;将至少部分所述待渲染任务分配到多个云端节点,以使所述云端节点执行所述待渲染任务,得到所述待渲染任务对应的所述虚拟物体的深度图和颜色图;获取所有所述待渲染任务对应的所述深度图和所述颜色图;基于所有所述深度图和所述颜色图得到所述待渲染场景的渲染结果,从而通过将渲染场景的部分任务分配给多个云端节点,通过多个云端节点来减轻客户端本地的渲染压力,使得客户端能够获得更复杂丰富的渲染结果,同时,通过深度图和颜色图来得到最终的渲染结果,可以使得待渲染场景能够支持更多样的任务划分。
103.示例性设备
104.基于同一发明构思,与上述任意实施例方法相对应的,本技术还提供了一种场景渲染装置。
105.参考图7,所述场景渲染装置,包括:
106.场景拆分模块201,将待渲染场景分成多个待渲染任务;其中,每个所述待渲染任务至少对应所述待渲染场景中的一个虚拟物体;
107.任务分配模块202,将至少部分所述待渲染任务分配到多个云端节点,以使所述云端节点执行所述待渲染任务,得到所述待渲染任务对应的所述虚拟物体的深度图和颜色图;
108.获取模块203,获取所有所述待渲染任务对应的所述深度图和所述颜色图;
109.渲染模块204,基于所有所述深度图和所述颜色图得到所述待渲染场景的渲染结果。
110.为了描述的方便,描述以上系统时以功能分为各种模块分别描述。当然,在实施本技术时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
111.上述实施例的系统用于实现前述任一实施例中相应的场景渲染方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
112.基于同一发明构思,与上述任意实施例方法相对应的,本技术还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的场景渲染方法。
113.图8示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
114.处理器1010可以采用通用的cpu(central processing unit,中央处理器)、微处理器、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
115.存储器1020可以采用rom(read only memory,只读存储器)、ram(random access memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
116.输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/
模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
117.通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。
118.总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
119.需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
120.上述实施例的电子设备用于实现前述任一实施例中相应的场景渲染方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
121.示例性程序产品
122.基于同一发明构思,与上述任意实施例方法相对应的,本技术还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的场景渲染方法。
123.本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
124.上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的场景渲染方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
125.基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种计算机程序产品,其包括计算机程序。在一些实施例中,所述计算机程序由一个或多个处理器执行以使得所述处理器执行上述实施例所述的场景渲染方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
126.所在领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本技术的范围(包括权利要求)被限于这些例子;在本技术的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本技术实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
127.另外,为简化说明和讨论,并且为了不会使本技术实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(ic)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本技术实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本技术实施例的平台
的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本技术的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本技术实施例。因此,这些描述应被认为是说明性的而不是限制性的。
128.尽管已经结合了本技术的具体实施例对本技术进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态ram(dram))可以使用所讨论的实施例。
129.本技术实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本技术实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本技术的保护范围之内。
技术特征:
1.一种场景渲染方法,其特征在于,包括:将待渲染场景分成多个待渲染任务;其中,每个所述待渲染任务至少对应所述待渲染场景中的一个虚拟物体;将至少部分所述待渲染任务分配到多个云端节点,以使所述云端节点执行所述待渲染任务,得到所述待渲染任务对应的所述虚拟物体的深度图和颜色图;获取所有所述待渲染任务对应的所述深度图和所述颜色图;基于所有所述深度图和所述颜色图得到所述待渲染场景的渲染结果。2.根据权利要求1所述的方法,其特征在于,获取所有所述待渲染任务对应的所述深度图和所述颜色图,具体包括:获取所有所述云端节点发送的所述深度图和所述颜色图;或,获取客户端本地执行其被分配的所述待渲染任务得到的所述深度图和所述颜色图,以及所有所述云端节点发送的所述深度图和所述颜色图。3.根据权利要求2所述的方法,其特征在于,将至少部分所述待渲染任务分配到多个云端节点,具体包括:将所述多个待渲染任务中的目标渲染任务分配到多个所述云端节点;其中,所述目标渲染任务对应的所述虚拟物体为动态虚拟物体。4.根据权利要求1所述的方法,其特征在于,基于所有所述深度图和所述颜色图得到所述待渲染场景的渲染结果,具体包括:对于所述待渲染场景中的每个像素位置,从所有所述深度图和所述颜色图中确定多个与所述像素位置对应的颜色值与深度值,将多个所述深度值中距离虚拟摄像机最近的目标深度值对应的目标颜色值作为所述像素位置的颜色值。5.根据权利要求1所述的方法,其特征在于,将至少部分所述待渲染任务分配到多个云端节点,具体包括:确定所述待渲染场景中禁止穿过的目标虚拟物体;将所述目标虚拟物体的碰撞体信息发送到每个所述云端节点,以使所述云端节点执行所述待渲染任务时,能够基于所述目标虚拟物体的碰撞体信息调整所述待渲染任务对应的所述虚拟物体的位置信息;其中,所述碰撞体信息包括所述目标虚拟物体的位置信息和碰撞轮廓信息。6.根据权利要求1所述的方法,其特征在于,将至少部分所述待渲染任务分配到多个云端节点,具体包括:将所述待渲染场景对应的虚拟相机参数,以及每个所述云端节点对应的所述待渲染任务中的虚拟物体的渲染参数,发送给每个所述云端节点。7.根据权利要求1所述的方法,其特征在于,获取所有所述待渲染任务对应的所述深度图和所述颜色图,具体包括:将获取的所述待渲染任务对应的所述深度图和所述颜色图保存至预设缓存区中;其中,所述待渲染场景包括随时间发生变化的多个图像帧,每个所述图像帧对应有一个编号信息,所述云端节点在执行所述待渲染任务时会依次对多个所述图像帧对应的虚拟物体进行渲染,得到每个编号信息对应的所述深度图和所述颜色图;响应于确定所述预设缓存区中的目标编号信息对应的所述深度图和所述颜色图的数
量均等于预设阈值,从所述预设缓存区中获取所述目标编号信息对应的所有所述深度图和所述颜色图,并删除所述预设缓存区中所述目标编号信息对应的所有所述深度图和所述颜色图;其中,所述目标编号信息对应的所述深度图和所述颜色图用于得到所述目标编号信息对应的所述图像帧的渲染结果。8.根据权利要求1所述的方法,其特征在于,获取所有所述待渲染任务对应的所述深度图和所述颜色图,具体包括:为每个所述待渲染任务创建预设数量的缓存区;其中,所述待渲染场景包括随时间发生变化的多个图像帧,每个所述图像帧对应有一个编号信息,所述云端节点在执行所述待渲染任务时会依次对多个所述图像帧对应的虚拟物体进行渲染,得到每个编号信息对应的所述深度图和所述颜色图;对于每个所述待渲染任务,获取所述待渲染任务对应的当前图像帧的当前编号信息,基于所述当前编号信息和所述预设数量确定所述当前编号信息对应的所述深度图和所述颜色图在所述预设数量的缓存区中的目标保存位置,将所述当前编号信息对应的所述深度图和所述颜色图保存在所述目标保存位置对应的缓存区中,并删除所述目标保存位置对应的缓存区中之前保存的历史深度图和历史颜色图;从所有所述创建的缓存区中获取所有所述待渲染任务对应的所述深度图和所述颜色图。9.根据权利要求8所述的方法,其特征在于,每个所述待渲染任务对应的预设数量的缓存区中的每个缓存区包括颜色缓存区和深度缓存区。10.根据权利要求8所述的方法,其特征在于,基于所述当前编号信息和所述预设数量确定所述当前编号信息对应的所述深度图和所述颜色图在所述预设数量的缓存区中的目标保存位置,具体包括:确定所述预设数量除以所述当前编号信息对应的数值得到的目标余数,基于所述目标余数确定所述当前编号信息对应的所述深度图和所述颜色图在所述预设数量的缓存区中的目标保存位置。11.根据权利要求10所述的方法,其特征在于,从所有所述创建的缓存区中获取所有所述待渲染任务对应的所述深度图和所述颜色图,具体包括:在所有所述创建的缓存区中,响应于确定排序位次相同且属于不同所述待渲染任务的缓存区中保存的所述深度图和所述颜色图对应的目标编号信息均相同,从所有所述创建的缓存区中获取所述目标编号信息对应的所述深度图和所述颜色图;其中,每个所述待渲染任务对应的预设数量的缓存区均按照预设顺序进行排列,所述目标编号信息对应的所述深度图和所述颜色图用于得到所述目标编号信息对应的图像帧的渲染结果。12.根据权利要求11所述的方法,其特征在于,从所有所述创建的缓存区中获取所有所述待渲染任务对应的所述深度图和所述颜色图,具体还包括:响应于确定所述目标编号信息为多个,从多个所述目标编号信息中确定编号信息数值最大的最新编号信息,并从所有所述创建的缓存区中只获取所述最新编号信息对应的所述深度图和所述颜色图;
其中,多个所述图像帧的编号信息的数值按照从小到大的顺序排列。13.根据权利要求8所述的方法,其特征在于,在从所有所述创建的缓存区中获取所有所述待渲染任务对应的所述深度图和所述颜色图之前,获取所有所述待渲染任务对应的所述深度图和所述颜色图,具体还包括:获取所有所述创建的缓存区中保存的所述深度图和所述颜色图对应的多个编号信息;响应于确定所述多个编码信息中任意两个编码信息之间的数值差大于预设差值,删除所有所述创建的缓存区中保存的所述深度图和所述颜色图,并统一所有所述待渲染任务的执行进度。14.根据权利要求8所述的方法,其特征在于,在删除所有所述创建的缓存区中保存的所述深度图和所述颜色图之后,获取所有所述待渲染任务对应的所述深度图和所述颜色图,具体还包括:再次获取所有所述创建的缓存区中保存的所述深度图和所述颜色图对应的多个编号信息;响应于确定再次获取的所述多个编码信息中任意两个编码信息之间的数值差大于预设差值,再次删除所有所述创建的缓存区中保存的所述深度图和所述颜色图,并统一所有所述待渲染任务的执行进度,同时降低所述待渲染场景单位时间对应的图像帧的数量。15.一种场景渲染装置,其特征在于,包括:场景拆分模块,将待渲染场景分成多个待渲染任务;其中,每个所述待渲染任务至少对应所述待渲染场景中的一个虚拟物体;任务分配模块,将至少部分所述待渲染任务分配到多个云端节点,以使所述云端节点执行所述待渲染任务,得到所述待渲染任务对应的所述虚拟物体的深度图和颜色图;获取模块,获取所有所述待渲染任务对应的所述深度图和所述颜色图;渲染模块,基于所有所述深度图和所述颜色图得到所述待渲染场景的渲染结果。16.一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可由所述处理器执行的计算机程序,所述处理器执行所述程序时实现如权利要求1至14中任意一项所述的方法。17.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行根据权利要求1至14中任一项所述的方法。
技术总结
本申请提供一种场景渲染方法、装置、电子设备及存储介质,该方法包括将待渲染场景分成多个待渲染任务;其中,每个所述待渲染任务至少对应所述待渲染场景中的一个虚拟物体;将至少部分所述待渲染任务分配到多个云端节点,以使所述云端节点执行所述待渲染任务,得到所述待渲染任务对应的所述虚拟物体的深度图和颜色图;获取所有所述待渲染任务对应的所述深度图和所述颜色图;基于所有所述深度图和所述颜色图得到所述待渲染场景的渲染结果,从而通过将渲染场景的部分任务分配给多个云端节点,通过多个云端节点来减轻客户端本地的渲染压力,使得客户端能够获得更复杂丰富的渲染结果。使得客户端能够获得更复杂丰富的渲染结果。使得客户端能够获得更复杂丰富的渲染结果。
技术研发人员:杨扬
受保护的技术使用者:网易(杭州)网络有限公司
技术研发日:2023.06.26
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/