CN117095104A - 场景渲染方法、装置、存储介质及计算机设备 - Google Patents

场景渲染方法、装置、存储介质及计算机设备 Download PDF

Info

Publication number
CN117095104A
CN117095104A CN202311043703.8A CN202311043703A CN117095104A CN 117095104 A CN117095104 A CN 117095104A CN 202311043703 A CN202311043703 A CN 202311043703A CN 117095104 A CN117095104 A CN 117095104A
Authority
CN
China
Prior art keywords
target
sub
rendering
pixel stream
scene
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
Application number
CN202311043703.8A
Other languages
English (en)
Inventor
娄帅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311043703.8A priority Critical patent/CN117095104A/zh
Publication of CN117095104A publication Critical patent/CN117095104A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/28Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network with correlation of data from several navigational instruments
    • G01C21/30Map- or contour-matching
    • G01C21/32Structuring or formatting of map data
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/38Electronic maps specially adapted for navigation; Updating thereof
    • G01C21/3804Creation or updating of map data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/05Geographic models

Landscapes

  • Engineering & Computer Science (AREA)
  • Remote Sensing (AREA)
  • Physics & Mathematics (AREA)
  • Radar, Positioning & Navigation (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Automation & Control Theory (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本申请提供一种场景渲染方法,应用于目标显示设备组中的父节点设备,目标显示设备组包括至少一个子节点设备;包括:接收目标显示设备组中的目标子节点设备发送的子渲染指令;向服务端发送目标显示设备组的渲染指令;接收服务端返回的针对目标场景的目标像素流,目标像素流为服务端调用为目标显示设备组分配的渲染实例进行渲染得到;从目标像素流中获取目标子区域对应的像素流内容;向目标子节点设备发送目标子区域的像素流内容。本申请的渲染技术应用于地图或车载等场景,为同一场景进行渲染的设备组调用对应的渲染实例进行场景渲染,无需为每个设备单独调用渲染实例,提高渲染实例的复用率,从而避免服务端资源及数据流量的过度消耗。

Description

场景渲染方法、装置、存储介质及计算机设备
技术领域
本申请涉及云计算技术领域,更具体地,涉及一种场景渲染方法、装置、存储介质及计算机设备。
背景技术
场景渲染是从准备好的场景中创建实际的多维图像或动画的过程,场景渲染的应用领域可以包括计算机与视频游戏、模拟、电影、地图或者电视特效以及可视化设计等。现有技术通常采用的云渲染方式为分布式计算,进而同时基于多个计算节点进行场景渲染,以提高渲染效果和速率。
例如,通过采用云渲染技术进行地图渲染,能够得到用于交通数字孪生等场景的高质量地图或动画。由于场景渲染存在对渲染结果进行多设备的展示需求,因此,云渲染需要为多个终端设备执行各自对应的渲染任务。然而,这种多设备的云渲染任务存在云端资源及数据流量过度消耗甚至浪费的问题。
发明内容
本申请实施例提供一种场景渲染方法、装置、存储介质以及计算机设备。可以解决上述问题,提高云端资源的复用率,降低云端资源及数据流量的过度消耗。
一方面,本申请实施例提供一种场景渲染方法,应用于目标显示设备组中的父节点设备,目标显示设备组还包括至少一个子节点设备,该方法包括:接收目标显示设备组中的目标子节点设备发送的子渲染指令;向服务端发送目标显示设备组对应的渲染指令,目标显示设备组对应的渲染指令包括目标显示设备组中至少一个设备发起的子渲染指令;一子渲染指令用于请求对目标场景中的一子区域进行渲染;至少一个设备包括目标子节点设备;接收服务端返回的针对目标场景的目标像素流;目标像素流为服务端响应于渲染指令,调用为目标显示设备组分配的渲染实例对目标场景中对应的子区域进行渲染得到的;从目标像素流中获取目标子区域对应的像素流内容,目标子区域是指目标子节点设备所对应子渲染指令请求渲染的子区域;向目标子节点设备发送目标子区域对应的像素流内容。
如此,基于对同一场景进行渲染的多个设备构成设备组,并以设备组为单元,为每个设备组配置对应的渲染实例进行场景渲染,无需为每个设备调用独立的渲染实例,在多设备共享展示的场景中,有效避免了单个设备调用渲染实例时,导致对目标场景中的相同或相近区域的重复渲染,使得渲染实例的复用率得到提升,从而降低服务端资源以及设备和服务端间数据交互流量的过度消耗。
另一方面,本申请实施例提供另一种场景渲染方法,应用于服务端,该方法包括:接收目标显示设备组的父节点设备发送的渲染指令,渲染指令包括目标显示设备组中至少一个设备发起的子渲染指令;一子渲染指令用于请求对目标场景中的一子区域进行渲染;至少一个设备包括目标子节点设备;响应于渲染指令,调用为目标显示设备组分配的渲染实例对目标场景中对应的子区域进行渲染,得到每个子渲染指令所请求子区域对应的像素流内容;对每个子渲染指令所请求子区域对应的像素流内容进行组合,得到目标场景对应的目标像素流;向父节点设备发送目标场景对应的目标像素流,以使父节点设备从目标像素流中获取目标子区域对应的像素流内容,并向目标子节点设备发送目标子区域对应的像素流内容;目标子区域为目标子节点设备对应子渲染指令请求渲染的子区域。
另一方面,本申请实施例还提供一种场景渲染装置,应用于目标显示设备组中的父节点设备,目标显示设备组还包括至少一个子节点设备,该装置包括:第一接收模块,用于接收目标显示设备组中的目标子节点设备发送的子渲染指令;第一发送模块,用于向服务端发送目标显示设备组对应的渲染指令,目标显示设备组对应的渲染指令包括目标显示设备组中至少一个设备发起的子渲染指令;一子渲染指令用于请求对目标场景中的一子区域进行渲染;至少一个设备包括目标子节点设备;数据接收模块,用于接收服务端返回的针对目标场景的目标像素流;目标像素流为服务端响应于渲染指令,调用为目标显示设备组分配的渲染实例对目标场景中对应的子区域进行渲染得到的;内容获取模块,用于从目标像素流中获取目标子区域对应的像素流内容,目标子区域是指目标子节点设备所对应子渲染指令请求渲染的子区域;内容发送模块,用于向目标子节点设备发送目标子区域对应的像素流内容。
另一方面,本申请实施例还提供一种场景渲染装置,应用于服务端,该装置包括:第二接收模块,用于接收目标显示设备组的父节点设备发送的渲染指令,渲染指令包括目标显示设备组中至少两个设备分别发起的子渲染指令;一子渲染指令用于请求对目标场景中的一子区域进行渲染;至少两个设备包括目标子节点设备;区域渲染模块,用于响应于渲染指令,调用为目标显示设备组分配的渲染实例对目标场景中对应的子区域进行渲染,得到每个子渲染指令所请求子区域对应的像素流内容;内容组合模块,用于将每个子渲染指令所请求子区域对应的像素流内容进行组合,得到目标场景对应的目标像素流;第二发送模块,用于向父节点设备发送目标场景对应的目标像素流,以使父节点设备从目标像素流中获取目标子区域对应的像素流内容,并向目标子节点设备发送目标子区域对应的像素流内容;目标子区域为目标子节点设备对应子渲染指令请求渲染的子区域。
另一方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,其中,在该计算机程序被处理器运行时执行上述的场景渲染方法。
另一方面,本申请实施例还提供一种计算机设备,该计算机设备包括处理器以及存储器,存储器存储有计算机程序,该计算机程序被处理器调用时执行上述的场景渲染方法。
另一方面,本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在存储介质中;计算机设备的处理器从存储介质读取该计算机程序,处理器执行该计算机程序,使得计算机设备执行上述场景渲染方法中的步骤。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的一种系统框架示意图。
图2示出了本申请实施例提供的一种云渲染地图的场景示意图。
图3示出了本申请实施例提供的一种场景渲染方法的流程示意图。
图4示出了本申请实施例提供的一种场景渲染的区域示意图。
图5示出了本申请实施例提供的一种设备组的子图划分示意图。
图6示出了本申请实施例提供的另一种场景渲染的区域示意图。
图7示出了本申请实施例提供的又一种场景渲染的区域示意图。
图8示出了本申请实施例提供的另一种场景渲染方法的流程示意图。
图9示出了本申请实施例提供的又一种场景渲染方法的流程示意图。
图10示出了本申请实施例提供的一种像素流的重组包体的结构示意图。
图11示出了本申请实施例提供的一种场景渲染方法的时序图。
图12示出了本申请实施例提供的一种场景渲染方法的系统框架图。
图13是本申请实施例提供的一种场景渲染装置的模块框图。
图14是本申请实施例提供的另一种场景渲染装置的模块框图。
图15是本申请实施例提供的一种计算机设备的模块框图。
图16是本申请实施例提供的一种计算机可读存储介质的模块框图。
具体实施方式
下面详细描述本申请的实施方式,实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性地,仅用于解释本申请,而不能理解为对本申请的限制。
在说明书、权利要求书和上述附图所描述的一些流程中,包含了按照特定顺序出现的多个步骤,但应该清楚了解,这些步骤可以不按照其在本文中出现的顺序来执行或并行执行,步骤序号仅仅是用于区分开各个不同的步骤,序号本身不代表任何的执行顺序。此外,本文中的“第一”和“第二”等描述,是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
为了使本技术领域的人员更好地理解本申请的方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请的具体实施方式中,涉及到的地图信息、场景信息以及网络信息等相关数据,当运用到本申请实施例的具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规及标准,并且在法律法规及个人信息主体的授权范围内,开展后续数据使用及处理行为。
本申请的场景渲染方法主要涉及云计算产品体系下云渲染技术的应用,其中,云计算(Cloud Computing)广义是指服务的交付和使用模式,通过网络以按需、易扩展的方式获得所需服务。这种服务可是IT和软件、互联网相关,也可是其他服务。云计算是由分布式计算(Distributed Computing)、并行计算(Parallel Computing)、网络存储(NetworkStorage Technologies)等传统计算机和网络技术发展融合的产物。云计算技术的应用领域包括云存储(Cloud Storage)、云安全(Cloud Security)和云渲染(Cloud Rendering)等。
云渲染(Cloud Rendering)技术与常规的云计算类似,即将3D程序放在远程的服务器中渲染,采用云+端的形式,业务端产品和云渲染用户终端对接,无需关心云渲染的云端架构和计算资源的管理。用户终端通过Web软件或者直接在本地的3D程序中点击一个“云渲染”按钮并借助高速互联网接入访问资源,指令从用户终端发出,服务器即可根据指令执行对应的渲染任务,而渲染结果的画面则被传送回用户终端加以显示。
例如,在申请提供的场景渲染方法中,多个终端设备以设备组为单元接入云服务端的云渲染平台,从而完成云渲染实例在多个终端设备共享展示渲染场景的任务。其中,由不同终端设备构成的设备组的网络拓扑结构为有向无环图(Directed Acyclic Graph,DAG),该有向无环图指的是一个无回路的有向图,也即,从任意顶点出发无法经过若干条边回到该点。
在云端对多个终端设备进行场景渲染时,云端需要为每个终端设备分配单独的渲染实例,之后,为不同的终端设备单独调用对应的渲染实例,从而为多个终端设备执行各自对应的渲染任务,终端设备例如显示屏(智能屏幕)、投影设备、或者其他具备显示功能的设备。例如,云渲染地图产品可以使用多个智能屏幕共同负责显示一个地图场景。或者,在展会中通过使用多个智能投影共同显示一个展示场景。
但是,这种多设备的云渲染任务无法避免云端资源以及数据流量的过度消耗甚至浪费。这是由于云端运行渲染实例的成本开销较大,然而,同一场景中绝大部分待渲染的区域的像素分布大致相同或重复,在对同一场景中的不同区域进行云渲染的过程中,都会单独调用各自的渲染示例,容易造成重复渲染,从而,造成云端资源以及数据流量的过度消耗甚至浪费。
例如,智能座舱通常配置有多个不同系统的屏幕,当使用多个屏幕共同维护一个地图场景的渲染时,每个屏幕会负责显示该地图中的一个区域对应的图像,进而负责该地图场景的云渲染平台会为每个屏幕调用一个渲染实例进行对应的区域渲染。而该地图中像素分布大致相同的区域(公园、山地等)就会导致重复渲染。为了解决上述问题,发明人经过研究,提出了本申请实施例提供的场景渲染方法。
下面先对本申请所涉及到的场景渲染方法的系统的架构进行介绍。
在本申请实施例中,场景渲染方法可以应用在Client-Server(C/S)架构下由服务端和多个终端设备构成的计算机系统。其中,服务端可以为独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云计算、云函数、云存储、云通信、网络服务、域名服务、中间件服务、安全服务、CDN、区块链以及大数据和人工智能平台等基础云计算服务的云服务器。
终端设备可以是智能屏幕、智能投影、车载设备、智能电视、平板电脑、笔记本电脑、台式计算机、智能手机等具有显示、存储和计算功能的设备,在此不做限定。终端设备可以基于通讯技术通过无线网络或有线网络与服务端建立通讯连接,以便终端设备可以和服务端共同完成场景渲染任务。示例性地,终端设备和服务端可以基于网页实时通信(WebReal-Time Communication,WebRTC)技术建立通信连接。
如图1所示,本申请实施例提供的场景渲染方法可以应用在计算机系统100中,在一些实施例中,该计算机系统100可以包括云服务端110以及位于用户侧120的终端设备,图1中示例性示出了位于用户侧120的六个终端设备。云服务端110可以设置多个渲染实例,图1中示例性示出了服务端110中的两个用于进行场景渲染的渲染实例:第一渲染实例111和第二渲染实例112。
在具体实施例中,可以根据划分策略可以将用户侧120中的多个终端设备进行设备组划分,图1中示例性示出将六个终端设备划分成两个设备组,即第一设备组121和第二设备组122。其中,每个设备组的拓扑图为有向无环图,该划分策略可以依据终端设备的使用功能或者设置位置等进行设置,在此不做限定。
第一设备组121包括三个终端设备,第一设备1211为该第一设备组121中的父节点设备,其余两个设备为第一设备1211中的子节点设备。第二设备组122包括三个终端设备,第二设备1221为第二设备组122中的父节点设备,其余两个设备为设备1211的子节点设备。第一设备1211和第二设备1221可接收各自所在设备组中的子节点设备发送的子渲染指令,并将该子渲染指令转发至云服务端110,进而云服务端110可以为每个设备组调用对应的渲染实例进行场景渲染。
例如,云服务端110可以响应于第一设备1211发送的渲染指令,为第一设备组121调用第一渲染实例111进行场景渲染,云服务端110可响应于第二设备1221发送的渲染指令,为第二设备组122调用第二渲染实例112进行场景渲染。
需要说明的是,图1仅是本申请实施例提供的一种系统的架构示意图,本申请实施例描述的系统的架构是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定。例如,图1中仅示出了两个设备组,但在不同实施例中用户侧120可以存在更多或者更少的设备组,每个设备组中也可以存在更多或者更少的设备。第一渲染实例111可以泛指多个渲染实例中的一个,第二渲染实例112也可以泛指多个渲染实例中的一个,本实施例仅以第一渲染实例111和第二渲染实例112来举例说明。渲染实例的类型及数量可基于业务需求进行设置,在此不做限定。
示例性地,本申请实施例提供的场景渲染方法可应用在基于云渲染的地图应用产品。请参阅图2,图2示出一种云渲染地图的场景示意图。车辆220的座舱中控台设置有第一显示器221、第二显示器222和第三显示器223,此外,车辆220的座舱中还设置有其他的显示器,图2未示出。基于座舱内的所有显示器构建链接网络,并进行DAG的分组划分。由于该三个显示器的设置位置同属中控台,可以将该三个显示器划分为一个设备组,其中,第一显示器221可以作为父节点设备,第二显示器222和第三显示器223可以作为该设备组中的子节点设备。
可选地,第一显示器221、第二显示器222和第三显示器223组成的设备组可以共同负责显示同一地图。第一显示器221作为设备组的父节点设备可以通过网络与服务端210建立通讯连接,也可以与其他设备组的父节点设备连接。第三显示器223可以响应于驾驶员的触动操作生成渲染地图的指令,进而第一显示器221可以收集到第三显示器223发送的渲染指令,并将该渲染指令发送至服务端210。
进一步地,服务端210可以响应于该渲染指令为该设备组调用地图渲染实例,并将渲染得到的像素流内容返回至第一显示器221,进而,第一显示器221可以对该像素流内容进行解析,得到在三个显示器上所要分别显示的三个区域的像素流,并将渲染后的地图上的每个区域的像素流分发至对应的显示器进行同步展示。
值得注意的是,图2仅是本申请实施例提供的一种应用场景示意图,本申请实施例描述的应用场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定。例如,图2所示的多屏的云渲染地图的场景,在其它情况下,也可以是多屏的云渲染展品展出的场景,或者多屏的云渲染游戏的场景。也可以是设备组中一屏幕请求渲染所显示的场景子区域后,该屏幕和设备组中其他屏幕同样显示渲染后的场景子区域。本领域普通技术人员可知,随着系统架构的演变和新的应用场景的出现,本申请实施例提供的技术方案对于解决类似的技术问题,同样适用。
请参阅图3,图3示出了本申请一个实施例提供的场景渲染方法的流程示意图。在本实施例中,所述场景渲染方法可以由设备组中的父节点设备执行,该父节点设备至少具有显示、存储、计算和通信的功能。如图3所示,所述场景渲染方法具体可以包括以下步骤:
步骤110:接收目标显示设备组中的目标子节点设备发送的子渲染指令。
在本申请实施例中,目标显示设备组为对目标场景进行渲染的多个显示设备所组成的设备组。目标场景为由多个基于像素数据表示的场景元素所组成的待渲染场景。其中,目标显示设备组包括父节点设备和子节点设备。父节点设备为目标显示设备组的拓扑子图的根节点所对应的设备,子节点设备为目标显示设备组中除父节点设备之外的其他设备。
例如,在智能座舱中,多名乘客可以利用各自使用的智能显示屏对导航地图进行地图渲染,该导航地图由线、面、建筑物和兴趣点(Point of Interest,POI)等场景元素构成。其中,对导航地图进行地图渲染的多个智能显示屏构成了一个目标显示设备组。该目标显示设备组的网络拓扑图中的根节点对应的智能显示屏即为父节点设备,在该目标显示设备组中,与作为父节点设备的智能显示屏进行通信的其他智能显示屏即为子节点设备。
在一些实施例中,目标子节点设备为目标子节点设备中向父节点设备发送子渲染指令的子节点设备。该子渲染指令为目标子节点设备响应于用户操作,生成用于请求对目标场景中的子区域进行渲染的指令。该子区域为目标子节点设备针对目标场景中一个独立划分进行渲染的区域。
请参阅图4,图4示出一种场景渲染的区域示意图。如图4所示,智能座舱中的目标显示设备组包括三个智能显示屏:智能显示屏A、智能显示屏B和智能显示屏C。其中,智能显示屏A是目标显示设备组的拓扑子图中的根节点,为此可以作为目标显示设备组的父节点设备,智能显示屏B和智能显示屏C为目标显示设备组的子节点设备。
示例性地,智能座舱中的乘客根据自己的看图需求,可以使用各自的智能显示屏观看导航地图中的同一个区域,也即,子区域。例如,智能座舱中的智能显示屏A、智能显示屏B以及智能显示屏C都显示了导航地图M的子区域M0。该导航地图M可以是二维平面地图。
乘客若要观看子区域M0的三维地图时,可以点击智能显示屏B上的渲染控件。从而,智能显示屏B可以响应于乘客对渲染控件的点击操作,生成子渲染指令,该子渲染指令可以用于请求对子区域M0的二维平面地图进行三维渲染。接着,智能显示屏B可将该子渲染指令发送至所在目标显示设备组的父节点设备,也即,智能显示屏A。进而,智能显示屏A可接收到作为目标子节点设备的智能显示屏B发送来的子渲染指令。
可选地,智能显示屏A接收到的子渲染指令也可以是智能显示屏C发送来的请求对子区域M0的二维平面地图进行三维渲染的子渲染指令。智能显示屏A也可以同时接收到智能显示屏B和智能显示屏C各自发送来的请求对子区域M0的二维平面地图进行三维渲染的子渲染指令,或者接连接收到智能显示屏B和智能显示屏C各自发送来的请求对子区域M0的二维平面地图进行三维渲染的子渲染指令。
考虑到基于多个不同系统的设备对同一场景进行云渲染时,需要为每个设备分配一个独立的渲染实例,容易造成云端资源以及数据流量的过度消耗,例如,如图4所示,智能显示屏A、B、C都显示了导航地图M的子区域M0,可以理解的是,若让智能显示屏A、B和C分别对各自显示的子区域M0请求使用独立的渲染实例进行渲染,会存在重复渲染的情况,导致渲染资源的浪费,并且每个智能显示屏都需要与云端通信,需要消耗较多的数据流量。
为此,本申请提出将用于对同一需要渲染的场景,也即,目标场景(如图4中的导航地图M)进行云渲染的多个设备构成一个设备组,也即,目标显示设备组(如图4中的智能显示屏A、B和C),进而,以设备组为单位进行渲染实例分配,为一个目标显示设备组分配一个独立的渲染实例,用于对该目标场景进行渲染,以节约云端资源以及数据流量的消耗。
在本申请实施例中,目标显示设备组为对用户侧的设备集合进行划分得到的。具体地,可以根据设备集合中各设备的设备信息,构建设备集合的网络拓扑图。并对设备集合的网络拓扑图进行划分,确定至少一个拓扑子图,一个拓扑子图中涉及的设备作为一个设备组,拓扑子图为有向无环图。进而,可以将拓扑子图中作为根节点的设备确定为设备组中的父节点设备,将拓扑子图中除根节点外的其他设备确定为设备组中的子节点设备。
其中,设备信息可以为设备的网络连接状态,例如,智能座舱中处于在线状态的车载显示器X分别与其他在线状态的车载显示器Y和车载显示器Z通过局域网进行网络连接,该局域网可以包括车载网络(Controller-Area-Network,CAN)、蓝牙或则ZigBee等,在此不做限定。对设备集合的网络拓扑图进行划分的划分依据可以是设备的位置分布或者设备的使用功能,也可以是多个划分依据的组合划分等。
例如,在智能座舱中,可以将座舱的位于同一区域(例如上文中的中控台)的多个显示器划分为一个设备组。在会展场馆中,可以将需要进行动画循环播放的特定的多个智能投影设备划分为一个设备组。父节点设备作为设备组对应的拓扑子图的根节点,可以通过最短路径与设备组中的每个子节点设备进行连接,避免数据重复传输,提高数据传输效率。在一些实施例中,若设备组中存在中控设备,可以将该中控设备直接作为父节点设备。若设备组中不存在中控设备,可以从设备组中随机选取一个设备作为父节点设备。
为了保证设备组中多个设备协同工作,即使遇到父节点设备宕机,整个设备组仍然能够对外保持服务的可用性,可以为设备组动态确定父节点设备。
在另一些实施例中,在划分得到设备组之后,可以初始化设备组中随机选取的一个设备作为父节点设备。进一步地,在父节点设备工作的过程中,父节点设备可以周期性地向子节点设备发送心跳包,该心跳包可以包括远程过程调用(Remote Procedure Call,RPC)。若存在子节点设备在特定时长内未接收到父节点设备发送的心跳包,也即,父节点设备的心跳时长影响正常工作,则触发对设备组中父节点设备的选举机制。
其中,每个设备都可以处于3个状态之一:父节点状态、子节点状态、选举状态。通常,设备组仅有一个设备为父节点状态,其他设备均为子节点状态。选举状态用来选举成为父节点设备。当选举机制启动时,若子节点状态的设备在选举超时时间内未收到父节点设备的心跳包,则转换为选举状态。为了避免选举冲突,选举超时时间是一个随机数(如,150~300ms)。
进一步地,设备在成为选举状态后,向其他设备发出投票请求,若收到设备组中过半个设备以上的同意回应,即被选举为父节点设备,并向其他节点发送选举成功消息,开始下一阶段的工作。其他处于选举状态的节点接收到选举成功消息,则由选举状态转为子节点状态。
在另一些实施例中,可以基于多个评估维度对设备进行性能进行评分,从而将设备组中性能评分最高的设备作为父节点设备。例如,从设备的网络通信维度和计算资源维度对设备组进行评分,具体地,基于设备的网络数据传输的丢包率确定网络通信评分,基于设备的处理器的内存占用率确定计算资源评分,进而对网络通信评分和计算资源评分进行加权求和,得到设备的性能评分,并将性能评分最高的设备作为父节点设备。
请参阅图5,图5示出一种设备组的子图划分示意图。如图5所示,用户侧的设备集合中有九个设备,在得到设备集合对应的网络拓扑图后,可以根据设备的位置分布和使用功能分别对该网络拓扑图进行DAG子图的划分,得到两个设备组,包括:根据设备的位置分布划分出的设备组I{A,A0,A1,A2,A3},以及根据设备的使用功能划分出的设备组II{B,B0,B1,B2}。其中,设备组I中的父节点设备为设备A,其余为子节点设备。设备组II中的父节点设备为设备B,其余为子节点设备。
目标子节点设备泛指目标显示设备组中当前发起子渲染指令的子节点设备,目标子节点设备可以为一个或多个。
在一些实施例中,目标子节点设备发送的子渲染指令可以是目标子节点设备响应于用户操作生成的用于请求渲染的指令。该用户操作可以是用户在目标子节点设备的触控屏上进行的滑动操作,例如,滑动操作可以设置为启动渲染目标子节点设备的触控屏上当前显示的地图区域,该渲染可以是将地图区域从2D图像转化为3D图像。示例性地,用户在目标子节点设备的触控屏上进行的滑动操作时,目标子节点设备可以响应于用户的滑动操作生成对应的子渲染指令。
在另一些实施例中,目标子节点设备也可以自动生成子渲染指令,例如,响应于一渲染任务自动生成子渲染指令。
本申请中设备组的子节点设备通过父节点设备与服务端进行通信连接,换言之,子节点设备并不直接与服务端通信连接,而是将父节点设备作为子节点设备与服务端之间的通信中介。这样,在多设备需要请求渲染的场景下,可以减少服务端的通信压力以及数据传输消耗的数据流量。在此基础上,目标子节点设备发起的子渲染指令先被路由到所在设备组(即目标显示设备组)中的父节点设备,之后由父节点设备将该子渲染指令转发到服务端。
作为一种实施方式,目标子节点设备可以将生成的子渲染指令通过目标显示设备组对应的拓扑子图发送至目标显示设备组中的父节点设备,例如,目标子节点设备基于拓扑子图中自身与父节点设备之间的最短路径发送子渲染指令至父节点设备。进一步地,父节点设备可以在接收该子渲染指令后,将该子渲染指令存储至消息队列中。
步骤120:向服务端发送目标显示设备组对应的渲染指令,目标显示设备组对应的渲染指令包括目标显示设备组中至少一个设备发起的子渲染指令,一子渲染指令用于请求对目标场景中的一子区域进行渲染,至少一个设备包括目标子节点设备。
其中,服务端用于对目标场景进行渲染。父节点设备作为目标显示设备组中的一个设备也可以对应生成子渲染指令,用于请求对目标场景中的一子区域进行渲染。目标显示设备组中的各设备均可请求进行渲染,因此,渲染指令所包括至少一个设备发起的子渲染指令可以包括目标子节点设备发起的子渲染指令,也可以包括目标子节点设备和该目标显示设备组中除目标子节点设备外的其他设备(例如,父节点设备,或者其他的子节点设备)分别发起的子渲染指令。
作为一种实施方式,父节点设备可以将存储在消息队列中的每个子渲染指令顺次发送至服务端。可选地,父节点设备可以将消息队列中的子渲染指令,按照消息队列的出队顺序批量发送至服务端,也可以将消息队列中的子渲染指令逐一发送至服务端。
步骤130:接收服务端返回的针对目标场景的目标像素流,目标像素流为服务端响应于渲染指令,调用为目标显示设备组分配的渲染实例对目标场景中对应的子区域进行渲染得到的。
由于同一场景中像素分布大致相同或相近的区域较多,所以在本申请中,以设备组为单位进行渲染实例分配,可以为目标显示设备组分配一个渲染实例对目标场景中对应的子区域进行渲染,避免云端重复对像素分布大致相同或相近的区域进行渲染。其中,渲染实例指的是对目标场景中的子区域进行图像或图形处理得到相应模型或动画的显示效果的计算机程序。
作为一种实施方式,服务端接收父节点设备发送的渲染指令后,可以将父节点设备的设备标识作为目标显示设备组的组标识,并对应为目标显示设备组分配对应的渲染实例,并对目标场景中对应的子区域进行渲染得到的子区域的像素流内容。进一步地,服务端可以对渲染得到的每个子区域的像素流内容进行重组得到目标像素流,并将该目标像素流返回至目标显示设备组的父节点设备,进而父节点设备可以接收到服务端返回的针对目标场景的目标像素流。
可以理解的是,针对目标场景的目标像素流中包括目标显示设备组对应的渲染指令所请求渲染的全部子区域对应的像素流内容,目标显示设备组对应的渲染指令所请求渲染的区域(即多个子渲染指令所请求渲染子区域的集合)可以是目标场景中的全部区域,也可以是目标场景中的不同区域,在此不进行限定。进一步的,目标显示设备组中两个不同的设备所分别请求渲染的子区域之间可能是两个相互独立的子区域(即不存在重叠部分的两个子区域),也可以是存在部分重叠的两个子区域。
在目标显示设备组中两个不同的设备所分别请求渲染的子区域存在部分重叠的情况下,由于为该目标显示设备组分配一个渲染实例,为该目标显示设备组的渲染实例可以针对重叠的部分仅渲染一次,这样,被重叠的部分可以被复用,由此可以提升服务端的渲染效率,降低服务端计算资源的消耗。
步骤140:从目标像素流中获取目标子区域对应的像素流内容,目标子区域是指目标子节点设备所对应子渲染指令请求渲染的子区域。
作为一种实施方式,目标显示设备组中的父节点设备可以对获取的目标像素流进行解析,得到目标子区域对应的像素流内容。示例性地,父节点设备对目标像素流进行解析之后,可以得到多个像素流分段,进一步地,父节点设备可以从多个像素流分段中,确定出包含有目标子设备的设备标识的像素流分段,进而从该像素流分段中获取目标子设备请求渲染的目标子区域对应的像素流内容。
步骤150:向目标子节点设备发送目标子区域对应的像素流内容。
作为一种实施方式,父节点设备可以根据目标显示设备组的拓扑结构,确定目标子节点设备与父节点设备之间的内容传输路径,进一步地,将目标子区域对应的像素流内容经内容传输路径,发送至目标子节点设备,从而,目标子节点设备在获取对应的像素流内容时,可以对该像素流内容解码后进行显示。其中,内容传输路径指的是目标显示设备组对应的拓扑子图中,从父节点设备到目标子节点设备之间经过的所有边的集合,例如,父节点设备到目标子节点设备的最短路径。
示例性地,在如图4所示的场景中,智能显示屏B作为目标子节点设备可将用于请求对子区域M0的二维平面地图进行三维渲染的子渲染指令,发送至所在目标显示设备组的父节点设备,也即,智能显示屏A,之后,智能显示屏A可以将接收到的子渲染指令发送至服务端。进一步地,服务端接收到该子渲染指令时,可将智能显示屏A的设备标识作为目标显示设备组的组标识,并基于该组标识为智能显示屏A所在的目标显示设备组分配对应的渲染实例,并对子区域M0进行三维渲染得到子区域M0对应的三维地图的像素流内容。
进一步地,服务端可以对渲染得到的三维地图的像素流内容进行重组得到目标像素流,并将该目标像素流返回至目标显示设备组的智能显示屏A,进而智能显示屏A接收到目标像素流后,从目标像素流中解析出三维地图的像素流内容。进而,智能显示屏A根据目标显示设备组的DAG子图,分别确定出与智能显示屏B和智能显示屏C之间的第一内容传输路径和第二内容传输路径,进而,通过第一内容传输路径和第二内容传输路径分别向智能显示屏B和智能显示屏C下发三维地图的像素流内容。
智能显示屏B和智能显示屏C接收到三维地图的像素流内容,可以对该像素流内容进行解码,并对解码后的子区域M0的三维地图进行显示,智能显示屏A同样在获取三维地图的像素流内容时,可对解码后的子区域M0的三维地图进行显示,如此,目标显示设备组的智能显示屏A、智能显示屏B以及智能显示屏C都可以显示渲染后的子区域M0的三维地图。
示例性地,请参阅图6,图6示出另一种场景渲染的区域示意图。在如图6所示的场景中,智能座舱的中控台设置有三个智能显示屏:智能显示屏D、智能显示屏E以及智能显示屏F。根据该三个智能显示屏设置位置,该三个智能显示屏可以划分为一个目标显示设备组,该目标显示设备组可以用于对导航地图M(也即,目标场景)的组合显示。其中,导航地图M是由子区域M1、子区域M3和子区域M5组成。智能显示屏D用于显示子区域M1,智能显示屏E用于显示子区域M3,智能显示屏F用于显示子区域M5
智能显示屏E是该目标显示设备组的DAG子图的根节点,可以作为该目标显示设备组的父节点设备。智能显示屏D和智能显示屏F为该目标显示设备组的子节点设备。该目标显示设备组可以对导航地图M进行渲染。例如,乘客在智能座舱中可以选择中控台的任一智能显示屏请求对导航地图M的渲染。屏幕智能显示屏E接收到渲染指令时可以向服务端发送该渲染指令。服务端接收到该渲染指令时,可以将智能显示屏E的设备标识作为目标显示设备组的组标识,并基于该组标识为智能显示屏E所在的目标显示设备组分配对应的渲染实例。服务端可以利用该渲染实例对导航地图M进行渲染,得到渲染之后的导航地图M。
进一步地,服务端可以将该渲染之后的导航地图M的三个子区域的像素流内容进行重组得到目标像素流,并将该目标像素流返回至智能显示屏E,进而智能显示屏E可以接收到服务端返回的针对导航地图M的目标像素流,并对该目标像素流进行解析,分别得到渲染后的三个子区域M1、M3和M5的像素流内容。
智能显示屏E根据目标显示设备组的DAG子图,分别确定出与智能显示屏D和智能显示屏F之间的内容传输路径,进而,基于确定的内容传输路径分别为智能显示屏D和智能显示屏F下发渲染后的子区域M1和子区域M5的像素流内容。
智能显示屏D接收渲染后的子区域M1的像素流内容,并对该渲染后的子区域M1的像素流内容进行解码显示,智能显示屏F接收渲染后的子区域M5的像素流内容,并对该渲染后的子区域M5的像素流内容进行解码显示。同时,智能显示屏E也可以对渲染后的子区域M3的像素流内容进行解码显示。如此,目标显示设备组的智能显示屏D、智能显示屏E以及智能显示屏F组合显示了渲染后的导航地图M。
需要说明的是,图4和图6仅是本申请实施例提供的两种场景渲染的区域示意图,本申请实施例描述的需要渲染的子区域,是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定。例如,图4中需要渲染的子区域为导航地图的同一区域,图6中需要渲染的子区域为组成整个导航地图的部分区域。但在不同实施例中需要渲染的子区域,其在目标场景中的面积和位置关系是由具体场景的应用需求决定的,在此不做限定。
例如,请参阅图7,图7示出又一种场景渲染的区域示意图。如图7所示的场景中,智能座舱中的目标显示设备组包括的智能显示屏A、智能显示屏B、智能显示屏C分别显示了导航地图M的子区域M2、子区域M4、子区域M6。其中,子区域M2属于子区域M4的一部分区域,每个子区域的面积大小不同。在服务端接收到该目标显示设备组的父节点设备发送的渲染指令时,可以为该目标显示设备组分配对应的渲染示例,并调用该目标显示设备组对导航地图M进行渲染,并对渲染后的导航地图M的像素流内容进行重组得到目标像素流。
其中,父节点设备发送的渲染指令可以包括智能显示屏A请求对子区域M2进行渲染的子渲染指令、智能显示屏B请求对子区域M4进行渲染的子渲染指令和智能显示屏C请求对子区域M6进行渲染的子渲染指令。可选地,服务端也可以基于子区域M2、子区域M4、子区域M6确定出待渲染区域,该待渲染区域可以为能够覆盖到三个子区域的最小区域,如待渲染区域N。从而,无需对整个导航地图M进行渲染,节约计算资源。
在本实施例中,目标显示设备组中的父节点设备可以接收目标显示设备组中的目标子节点设备发送的子渲染指令,并向服务端发送目标显示设备组对应的渲染指令,目标显示设备组对应的渲染指令包括目标显示设备组中至少两个设备分别发起的子渲染指令一子渲染指令用于请求对目标场景中的一子区域进行渲染至少两个设备包括目标子节点设备。进一步地,父节点设备可以接收服务端返回的针对目标场景的目标像素流目标像素流为服务端响应于渲染指令,调用为目标显示设备组分配的渲染实例对目标场景中对应的子区域进行渲染得到的。
如此,通过为对设备集合的网络拓扑进行DAG划分,可以得到对同一场景进行渲染的设备组,进而以设备组为单元,为每个设备组调用对应的渲染实例进行场景渲染,无需为每个设备调用独立的云渲染实例,从而提升在多设备展示的场景中云渲染实例的复用率,避免服务端资源的过度消耗。同时,设备组中每个设备通过父节点设备与服务端间接的进行数据传输,可以降低设备与服务端之间由数据传输产生的数据流量的过度消耗。进一步地,从目标像素流中获取目标子区域对应的像素流内容,目标子区域是指目标子节点设备所对应子渲染指令请求渲染的子区域,并向目标子节点设备发送目标子区域对应的像素流内容,使得目标子节点设备可对像素流内容解码后进行显示。
请参阅图8,图8示出了本申请另一个实施例提供的场景渲染方法的流程示意图。在具体的实施例中,所述场景渲染方法可以由设备组中的设备执行,该设备至少具有显示、存储、计算和通信的功能。如图8所示,所述场景渲染方法具体可以包括以下步骤:
步骤210:接收目标显示设备组中的目标子节点设备发送的子渲染指令。
步骤220:向服务端发送目标显示设备组对应的渲染指令,目标显示设备组对应的渲染指令包括目标显示设备组中至少一个设备发起的子渲染指令,一子渲染指令用于请求对目标场景中的一子区域进行渲染,至少一个设备包括目标子节点设备。
步骤230:接收服务端返回的针对目标场景的目标像素流,目标像素流为服务端响应于渲染指令,调用为目标显示设备组分配的渲染实例对目标场景中对应的子区域进行渲染得到的。
具体地,步骤210至步骤230可以参考前述实施例中步骤110至步骤130的内容,在此不再赘述。
为目标显示设备组分配的渲染实例对目标场景中对应的子区域进行渲染之后,得到了对应的子区域的像素流内容,进而子节点设备可以对像素流内容进行解码展示。然而,考虑到用户存在对目标场景的渲染区域进行轮播展示的需求,为此,可以利用目标显示设备组中的子节点设备对目标场景的目标像素流进行解码轮播,具体步骤可以包括步骤240a和步骤250a:
步骤240a:响应于针对目标显示设备组的轮播指令,对目标像素流进行解码,获得目标场景对应的渲染帧序列。
其中,轮播指令可以是目标显示设备组中的设备(例如,目标显示设备组中的父节点设备,或者子节点设备)响应于用户操作生成的,也可以是由目标显示设备组中的设备自动生成的。例如,用户在目标显示设备组中一个子节点设备的用户界面或者操作面板上点击轮播按键,进而,该子节点设备响应于该点击操作生成轮播指令,并将该轮播指令发送至父节点设备。
作为一种实施方式,父节点设备可以响应于针对目标显示设备组的轮播指令,对目标像素流进行解码,得到目标场景中每个子区域对应的渲染帧,并由每个子区域对应的渲染帧构成目标场景对应的渲染帧序列。
步骤250a:向目标显示设备组中的子节点设备顺序发送渲染帧序列,以使目标显示设备组中的各设备轮播渲染帧序列。
作为一种实施方式,父节点设备可以将渲染帧序列中的每个子区域对应的渲染后的渲染帧,按照传输顺序,异步发送至对应的子节点设备。具体地,父节点设备可以基于目标显示设备组的拓扑结构,确定目标子节点设备与父节点设备之间的内容传输路径,其中,传输顺序可以是由用户对目标显示设备组中的设备进行自定义设置的,在此不做限定。
进一步地,父节点设备可以将目标子区域对应的像素流内容经内容传输路径,基于相同时间间隔发送至目标显示设备组中的各设备。从而,目标显示设备组中的各设备可以在不同时刻接收到对应的渲染帧,以轮播方式展示出对应的渲染帧。例如,智能座舱中的目标显示设备组中的每个显示器可以轮播出对应的地图场景中对应的地图区域的渲染帧。
作为另一种实施方式,父节点设备可以响应于针对目标显示设备组的广播指令,对目标像素流进行解码,得到目标场景对应的渲染帧序列,进一步地,向目标显示设备组中的每个设备广播渲染帧序列中对应的子区域的渲染帧,进而,目标显示设备组中的各设备可以同步展示对应的子区域的渲染帧。其中,广播指令可以是目标显示设备组中的设备响应于用户操作生成的,也可以是基于配置信息自动生成的。可选地,父节点设备可以响应轮播指令或者广播指令,向目标显示设备组中每个设备发送相同的子区域的渲染帧,以便目标显示设备组的设备对同一画面进行轮播或广播。
如此,父节点设备可以响应轮播指令或者广播指令,对目标像素流进行解码,获得目标场景对应的渲染帧序列,后续接收到渲染帧序列的设备无需再进行解码。
通过父节点设备直接对目标像素流直接进行解码,可以实现将对目标场景进行渲染后渲染帧快速地传输至目标显示设备组中对应的节点设备,从而提高对渲染场景进行轮播或广播的效率。
在一些实施例中,可以对目标显示设备组中不同子节点设备之间显示的画面进行切换,具体步骤可以包括步骤240b至步骤260b:
步骤240b:接收目标子节点设备发送的画面切换指令,画面切换指令用于指示显示目标场景中第一子区域对应的画面,第一子区域与目标子区域是不同的子区域。
步骤250b:响应于画面切换指令,从目标场景的目标像素流中获取第一子区域对应的像素流内容。
其中,第一子区域指的是目标场景中不同于目标子区域的区域,例如,在地图渲染场景中,地图可以由X区域、Y区域以及Z区域组成,若X区域为目标子区域,则Y区域或Z区域可以作为第一子区域。设备标识指的是目标显示设备组中每个设备对应的唯一的身份标识。
作为一种实施方式,父节点设备可以响应于画面切换指令,从目标场景的目标像素流中获取第一像素流分段,该第一像素流分段包括第一子区域对应的像素流内容和第一设备对应的设备标识,该第一设备是目标显示设备组中请求渲染第一子区域的设备。进一步地,父节点设备可以将第一像素流分段中第一设备对应的设备标识替换成目标子节点设备的设备标识。
示例性地,目标显示设备组包括父节点设备、目标子节点设备(P设备),以及第一设备(Q设备)。在父节点设备接收到P设备发送的画面切换指令时,可以响应于画面切换指令,基于Q设备的设备标识,从目标场景的目标像素流解析的多个像素流分段中,获取设备标识与Q设备的设备标识相同的像素流分段,也即,Q设备对应的像素流分段,进而,从该像素流分段中获取Q设备对应的子区域的像素流内容。
步骤260b:向目标子节点设备发送第一子区域对应的像素流内容。
作为一种实施方式,父节点设备可以根据替换后的第一像素流分段中目标子节点设备的设备标识,向目标子节点设备发送第一子区域对应的像素流内容。
可选地,父节点设备在基于第一设备的设备标识从目标场景的目标像素流中获取第一子区域对应的像素流内容的同时,还可以基于目标子节点设备的设备标识从目标场景的目标像素流中获取目标子节点设备对应的像素流分段,并将目标子节点设备对应的像素流分段中目标子节点设备的设备标识替换成第一设备的设备标识。
进一步地,父节点设备可以根据替换后的目标子节点设备对应的像素流分段中目标子节点设备的设备标识,向第一设备发送目标子区域对应的像素流内容,从而完成目标显示设备组中的目标子节点设备和第一设备的像素流内容的替换,当目标子节点设备和第一设备对获取的像素流内容进行解码展示时,两个设备即可显示出切换后的画面。
如上的步骤240b至步骤260b示出了响应于目标子节点设备发送的画面切换指令进行切换的处理过程,在其他实施例中,在目标设备中的其他设备请求进行组内画面切换的情况下,可以按照步骤240b至步骤260b所示过程进行类似处理,对此不再赘述。
在本实施例中,父节点设备可以对目标像素流直接进行解码,实现将对目标场景进行渲染后渲染帧快速地传输至目标显示设备组中对应的节点设备,从而提高对渲染场景进行轮播或广播的效率。此外,父节点设备可以响应于目标子节点设备发送的画面切换指令,基于第一设备的设备标识,从目标场景的目标像素流中获取第一子区域对应的像素流内容,并将第一子区域对应的像素流内容发送至目标子节点设备,使得目标子设备显示的画面可以切换为第一设备显示的画面,无需目标子设备请求服务端分配渲染实例对第一子区域进行重新渲染,如此,可以降低不同设备组之间进行画面切换时的云端渲染的计算资源,还可以提高云渲染时对不同设备进行像素流分发的灵活性和可扩展性。
请参阅图9,图9示出了本申请又一个实施例提供的场景渲染方法的流程示意图。在具体的实施例中,所述场景渲染方法可以由服务端执行,如图9所示,所述场景渲染方法具体可以包括以下步骤:
步骤310:接收目标显示设备组的父节点设备发送的渲染指令,渲染指令包括目标显示设备组中至少一个设备发起的子渲染指令一子渲染指令用于请求对目标场景中的一子区域进行渲染,至少一个设备包括目标子节点设备。
作为一种实施方式,服务端可以包括渲染服务节点,该渲染服务节点可以每次接收目标显示设备组的父节点设备发送的一个批次的子渲染指令,该一个批次的渲染指令中包括了目标显示设备组中多个设备发起的子渲染指令。可选地,渲染服务节点也可以同时接收不同设备组的父节点设备发送的渲染指令。
步骤320:响应于渲染指令,调用为目标显示设备组分配的渲染实例对目标场景中对应的子区域进行渲染,得到每个子渲染指令所请求子区域对应的像素流内容。
其中,渲染实例可以由云渲染供应商根据具体的业务需求预先进行配置在服务端。可选地,渲染实例可以与设备组的组标识关联存储在关系数据库中。
作为一种实施方式,服务端的渲染服务节点可以响应于每个子渲染指令,获取发送该子渲染指令的父节点设备关联的组标识,进一步地,渲染服务节点可以根据该组标识从存储有渲染实例的数据库中为目标显示设备组匹配对应的渲染实例,进而调用与该组标识匹配的渲染实例对目标场景中对应的子区域进行渲染,得到每个子渲染指令所请求子区域对应的像素流内容。
可选地,渲染服务节点也可以在接收不同设备组的父节点设备发送的渲染指令时,根据不同设备组的父节点设备的组标识,同时为每个设备组分配对应的渲染实例,进而调用该渲染实例对每个设备组的渲染场景中对应的子区域进行渲染。
步骤330:将每个子渲染指令所请求子区域对应的像素流内容进行组合,得到目标场景对应的目标像素流。
为了便于将每个子渲染指令所请求子区域对应的像素流内容能够准确地返回至目标显示设备组中的每个子节点设备,服务端可以基于目标显示设备组的拓扑子图的结构,对所有渲染得到的像素流内容进行重组打包,以便返回至父节点设备。可选地,在重组打包前后,也可以对渲染得到的像素流内进行码率控制、包头标注以及分辨率适配等操作。
作为一种实施方式,服务端的推流服务节点可以基于各子渲染指令所请求子区域对应的像素流内容,以及子渲染指令的发送设备的设备标识,确定各子渲染指令对应的像素流分段,进一步地,推流服务节点可以将多个子渲染指令对应的像素流分段进行组包,得到目标场景对应的目标像素流。
例如,请参阅图10,图10示出一种像素流的重组包体的结构示意图。如图10所示,服务端可以将各子渲染指令所请求子区域对应的像素流内容进行重排组装成包,进而以数据包的数据结构来传输每一帧对应的目标像素流。具体地,该包体可以包括包头、目标显示设备组中各个设备(例如,父节点设备、子节点设备)对应的像素流分段以及用于区分各个像素流分段的标记分隔符。
其中,包头可以包括帧头、目标显示设备组中的设备总数和组标识等,该帧头可以包括对应的帧号。每个像素流分段可以包括所对应的设备的设备标识、子节点设备的子渲染指令所请求子区域对应的像素流内容和像素流大小。标记分隔符用于区分目标显示设备组中不同节点的像素流分段。
步骤340:向父节点设备发送目标场景对应的目标像素流,以使父节点设备从目标像素流中获取目标子区域对应的像素流内容,并向目标子节点设备发送目标子区域对应的像素流内容,目标子区域为目标子节点设备对应子渲染指令请求渲染的子区域。
作为一种实施方式,服务端的推流服务节点可以将重组打包得到的目标像素流,发送至父节点设备,进而,父节点设备可以将目标像素流中的目标子区域对应的像素流内容发送至对应的目标子节点设备,具体实施过程,可以参照上述步骤140以及步骤150,在此不再赘述。
在实际的应用场景中,根据用户的使用需求,存在将一个设备组的显示画面整体与另一个设备组的显示画面进行切换,例如,驾驶员将驾驶侧的屏幕组画面,切换到副驾驶侧的屏幕组进行同步显示。为此,本申请还可以在设备组之间进行画面的整体切换,具体步骤可以包括步骤350至步骤380:
步骤350:接收父节点设备发送的场景切换指令,场景切换指令用于请求将目标显示设备组显示的目标场景的画面切换至第一场景的画面,第一场景与目标场景是不同的场景。
在本申请实施例中,场景切换指令可以是目标显示设备组中的某个设备响应于用户操作生成的用于请求场景切换的计算机指令。例如,用户在目标显示设备组中一个设备的触控屏上点击场景切换选择按键,进而,该设备响应于对切换选择按键的点击操作生成目标场景与第一场景的切换指令,并将该场景切换指令发送至父节点设备。该切换选择按键用于用户选择将将当前设备组(也即,目标显示设备组)显示的场景画面切换为其他设备组的第一场景的画面。
步骤360:响应于场景切换指令,获取第一场景对应的第一像素流。
步骤370:将第一像素流中第一设备组对应的组标识替换为目标显示设备组对应的组标识,得到替换后的第一像素流,第一设备组为请求渲染第一场景的设备组。
可以理解的是,在其他设备组的父节点设备请求对第一场景进行渲染的情况下,服务端在接收到目标显示设备组中的父节点设备发送的场景切换指令后,可以复用第一场景的渲染结果,即第一场景对应的第一像素流。
在一些实施例中,第一像素流中包括第一设备组对应的组标识,在此情况下,可以将第一像素流中第一设备组对应的组标识,替换为目标显示设备组对应的组标识。在一些实施例中,在设备组中的父节点设备与服务端进行通信的情况下,可以将设备组中父节点设备对应的设备标识作为设备组对应的组标识。
在另一些实施例中,服务端可以是按照图8所示的过程进行组包得到第一像素流,按照图8所示的组包方式,第一像素流中各像素流分段中的设备标识是第一设备组中设备的设备标识,在此种情况下,可以对应将第一像素流中的全部设备标识替换为目标显示设备组中设备对应的设备标识。可以理解的是,替换后第一像素流中的一个像素流分段中的设备标识为目标显示设备组中一个设备的设备标识,且,替换后第一像素流中的不同的像素流分段中的设备标识不同。
考虑到每个设备组中的设备数量存在差异,场景切换可能会出现两个设备组在进行画面的整体切换错误的情况,例如,设备组A有3个屏幕,设备组B有4个屏幕,将设备组A的屏幕切换到设备组B的屏幕会因为屏幕数量不匹配导致切换错误。为此,可以先对需要切换的多个设备组进行设备数量的匹配检测,若设备数量相同,则可进行画面的整体切换。
在一些实施例中,服务端可以响应于父节点设备发送的场景切换指令,判断第一设备组的设备数量和目标显示设备组的设备数量是否相同,若设备数量不同,则服务端可以发送至切换错误至父节点设备,使得父节点设备显示切换错误的提示信息,例如,在屏幕中显示错误窗口,该错误窗口提示两个待切换组中的设备数量不匹配。若设备数量相同,则服务端对第一设备组和目标显示设备组进行像素流的替换。
具体地,服务端可以获取第一场景对应的第一设备组的组标识以及目标显示设备组的组标识。进一步地,服务端可以根据第一设备组的组标识,获取第一场景对应的第一像素流,根据目标显示设备组的组标识,获取目标场景对应的目标像素流,并对第一像素流中第一设备组的组标识和目标像素流中目标显示设备组的组标识进行互换,得到替换后的第一像素流和替换后的目标像素流。
步骤380:向父节点设备发送替换后的第一像素流,以使父节点设备将替换后的第一像素流中一子区域对应的像素流内容分发到目标显示设备组中的一个设备。
考虑到每个设备组对应的拓扑子图的拓扑结构存在差异,例如,两者的拓扑结构可以相同、对称或者不同。为此,可以根据两者的拓扑结构的匹配情况,针对性向设备组中的子节点设备发送切换组标识后的像素流内容。
作为一种实施方式,若目标显示设备组的拓扑结构和第一设备组的拓扑结构相同,服务端可以直接向目标显示设备组的父节点设备发送替换后的第一像素流,以使该父节点设备将替换后的第一像素流中一子区域对应的像素流内容分发到目标显示设备组中的一个设备,并且,服务端可以向第一设备组的父节点设备发送替换后的目标像素流,以使该父节点设备将替换后的目标像素流中一子区域对应的像素流内容分发到第一设备组中的一个设备。换后的目标像素流是将目标像素流中的设备标识替换为第一设备组中的设备标识得到的,针对目标像素流中的设备标识进行替换的过程与对第一像素流中的设备标识进行替换的过程类似,在此不再赘述。
在本实施例中,服务端可以接收目标显示设备组的父节点设备发送的渲染指令,响应于渲染指令,调用为目标显示设备组分配的渲染实例对目标场景中对应的子区域进行渲染,得到每个子渲染指令所请求子区域对应的像素流内容,并基于目标显示设备组的拓扑子图的结构对所有渲染得到的像素流内容进行组合得到目标像素流,向父节点设备发送目标场景对应的目标像素流,从而,便于服务端向设备组传输经整合的渲染资源,提高渲染资源的传输效率。
此外,服务端可以响应于场景切换指令,直接基于替换设备组间的设备标识,对不同设备组显示的场景画面进行动态切换,从而,无需请求服务端重新分配渲染实例对不同场景进行重新渲染,提升服务端渲染资源的复用率,有效降低设置组与服务端之间数据传输时使用数据流量和云端资源的消耗。
请参阅图11,图11示出了本申请还一个实施例提供的场景渲染方法的时序图。在具体的实施例中,所述场景渲染方法可以由设备集合和服务端共同执行。以下将针对图11所示的时序流程结合图12所示的系统框架图进行详细地阐述。如图11所示,所述场景渲染方法具体可以包括以下步骤:
示例性地,场景渲染方法可以应用在不同业务场景中,例如,云渲染地图、云渲染展品展出或者云渲染游戏、视频会议等基于多屏的业务场景。下面以智能座舱的云渲染地图应用场景为例,介绍各个步骤。
步骤410:接收目标显示设备组中的目标子节点设备发送的子渲染指令。
步骤420:向服务端发送目标显示设备组对应的渲染指令。
如图12所示,目标显示设备组中包括父节点设备、目标子节点设备以及其他的子节点设备。其中,每个设备可以为智能座舱中的显示器。该目标显示设备组可以用于地图场景的渲染,可选地,目标显示设备组中的每个设备可以负责地图场景中的一块地图子区域的显示。
作为一种实施方式,目标子节点设备可以响应于用户操作生成对应的子渲染指令,并将该子渲染指令发送至父节点设备,进而,父节点设备可以接收目标显示设备组中的目标子节点设备发送的子渲染指令,并将该子渲染指令通过WebRTC SDK发送至服务端。
步骤430:接收目标显示设备组的父节点设备发送的渲染指令。
步骤440:响应于渲染指令,调用为目标显示设备组分配的渲染实例对目标场景中对应的子区域进行渲染,得到每个子渲染指令所请求子区域对应的像素流内容。
作为一种实施方式,服务端的渲染服务节点可以获取目标显示设备组的父节点设备发送的包括多个子渲染指令的渲染指令,进一步地,渲染服务节点可以响应于渲染指令,根据父节点设备的组标识,为该目标显示设备组确定匹配的渲染实例,并调用该渲染实例对目标场景中对应的子区域进行渲染,得到每个子渲染指令所请求子区域对应的像素流内容。
步骤450:将每个子渲染指令所请求子区域对应的像素流内容进行组合,得到目标场景对应的目标像素流。
步骤460:向父节点设备发送目标场景对应的目标像素流。
作为一种实施方式,服务端的推流服务节点可以将目标显示设备组的子渲染指令所请求子区域对应的像素流内容进行组合,也即,重排组装成包,得到目标像素流。对应地,也可以对其他设备组的像素流内容进行组装成包。进一步地,推流服务节点可以通过WebRTC SDK将目标像素流发送至目标显示设备组的父节点设备。
步骤470:接收服务端返回的针对目标场景的目标像素流。
步骤480:从目标像素流中获取目标子区域对应的像素流内容。
作为一种实施方式,目标显示设备组的父节点设备可以通过WebRTC SDK接收来自服务端返回的针对目标场景的目标像素流。该目标像素流至少包括标记分隔符和目标显示设备组中各设备的设备标识。
进一步地,父节点设备可以根据目标像素流中的标记分隔符,对目标像素流进行分段,确定多个像素流分段,并在多个像素流分段中确定包括目标子节点设备的设备标识的目标像素流分段,进而,从目标像素流分段中获取目标子区域的像素流内容。
步骤490:向目标子节点设备发送目标子区域对应的像素流内容。
作为一种实施方式,目标显示设备组的父节点设备可以向目标子节点设备发送目标子区域对应的像素流内容。如此,目标显示设备组中向父节点设备发送子渲染指令的各个子节点设备都能得到服务端返回的对应的子区域的像素流内容,进而,可以在智能座舱中显示渲染后的地图子区域,可选地,可以基于百叶窗或波浪形式的显示效果对该地图子区域进行显示。具体地,步骤490可以参考前述实施例中步骤150的内容,在此不再赘述。
在本申请实施例中,父节点设备可以接收目标显示设备组中的目标子节点设备发送的子渲染指令,并向服务端发送目标显示设备组对应的渲染指令,当服务端接收目标显示设备组的父节点设备发送的渲染指令时,可以响应于渲染指令,调用为目标显示设备组分配的渲染实例对目标场景中对应的子区域进行渲染,得到每个子渲染指令所请求子区域对应的像素流内容,并对每个子渲染指令所请求子区域对应的像素流内容进行组合,得到目标场景对应的目标像素流,进而,服务端可以向父节点设备发送目标场景对应的目标像素流。
进一步地,父节点设备可以接收服务端返回的针对目标场景的目标像素流,并从目标像素流中获取目标子区域对应的像素流内容,进而,向目标子节点设备发送目标子区域对应的像素流内容。如此,通过为对设备集合的网络拓扑进行DAG划分,可以得到对同一场景进行渲染的设备组,进而以设备组为渲染单元,为每个设备组调用对应的渲染实例进行场景渲染,无需为每个设备调用独立的云渲染实例,提升在多设备共享展示的场景中云渲染实例的复用率,从而降低云端资源的过度消耗。并且服务端基于目标显示设备组的拓扑子图的结构对所有渲染得到的像素流内容进行组合得到目标像素流,向父节点设备发送目标场景对应的目标像素流,从而,便于服务端向设备组传输经整合的渲染资源,提高渲染资源的传输效率。
请参阅图13,其示出了本申请实施例提供的一种场景渲染装置500的结构框图。该场景渲染装置500应用于目标显示设备组中的父节点设备,所述目标显示设备组还包括至少一个子节点设备,该场景渲染装置500包括:
第一接收模块501,用于接收所述目标显示设备组中的目标子节点设备发送的子渲染指令;
第一发送模块502,用于向服务端发送所述目标显示设备组对应的渲染指令,所述目标显示设备组对应的渲染指令包括所述目标显示设备组中至少一个设备发起的子渲染指令;一子渲染指令用于请求对目标场景中的一子区域进行渲染;所述至少一个设备包括所述目标子节点设备;
数据接收模块503,用于接收所述服务端返回的针对所述目标场景的目标像素流;所述目标像素流为所述服务端响应于所述渲染指令,调用为所述目标显示设备组分配的渲染实例对所述目标场景中对应的子区域进行渲染得到的;
内容获取模块504,用于从所述目标像素流中获取目标子区域对应的像素流内容,所述目标子区域是指所述目标子节点设备所对应子渲染指令请求渲染的子区域;
内容发送模块505,用于向所述目标子节点设备发送所述目标子区域对应的像素流内容。
在一些实施例中,内容发送模块505可以具体用于:根据所述目标显示设备组的拓扑结构,确定所述目标子节点设备与所述父节点设备之间的内容传输路径;将所述目标子区域对应的像素流内容经所述内容传输路径,发送至所述目标子节点设备。
在一些实施例中,场景渲染装置500还可以包括:轮播响应模块506,用于响应于针对所述目标显示设备组的轮播指令,对所述目标像素流进行解码,获得所述目标场景对应的渲染帧序列;顺序发送模块507,用于向所述目标显示设备组中的子节点设备顺序发送所述渲染帧序列,以使所述目标显示设备组中的各设备轮播所述渲染帧序列。
在一些实施例中,场景渲染装置500还可以包括:第一指令接收模块508,用于接收所述目标子节点设备发送的画面切换指令,所述画面切换指令用于指示显示所述目标场景中第一子区域对应的画面,所述第一子区域与所述目标子区域是不同的子区域;第一切换响应模块509,用于响应于所述画面切换指令从所述目标场景的目标像素流中获取所述第一子区域对应的像素流内容;内容切换模块510,用于向所述目标子节点设备发送所述第一子区域对应的像素流内容。
在一些实施例中,第一切换响应模块509可以具体用于:响应于所述画面切换指令,从所述目标场景的目标像素流中获取第一像素流分段,所述第一像素流分段包括所述第一子区域对应的像素流内容和第一设备对应的设备标识;所述第一设备是所述目标显示设备组中请求渲染所述第一子区域的设备;将所述第一像素流分段中所述第一设备对应的设备标识替换成所述目标子节点设备的设备标识。内容切换模块510可以具体用于:根据替换后的第一像素流分段中目标子节点设备的设备标识,向所述目标子节点设备发送所述第一子区域对应的像素流内容。
在一些实施例中,场景渲染装置500还可以包括:拓扑构建模块511,用于根据设备集合中各设备的设备信息,构建所述设备集合的网络拓扑图;拓扑划分模块512,用于对所述设备集合的网络拓扑图进行划分,确定至少一个拓扑子图,一个拓扑子图中涉及的设备作为一个设备组;所述拓扑子图为有向无环图;设节点确定模块513,用于将所述拓扑子图中作为根节点的设备确定为设备组中的父节点设备,将所述拓扑子图中除根节点外的其他设备确定为设备组中的子节点设备。
在一些实施例中,所述目标像素流至少包括标记分隔符和所述目标显示设备组中各设备的设备标识;内容获取模块还可以具体用于:根据所述目标像素流中的标记分隔符,对所述目标像素流进行分段,确定多个像素流分段;在所述多个像素流分段中确定包括所述目标子节点设备的设备标识的目标像素流分段;从所述目标像素流分段中获取目标子区域的像素流内容。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参阅图14,其示出了本申请实施例提供的另一种场景渲染装置600的结构框图。该场景渲染装置600应用于服务端,该场景渲染装置600包括:
第二接收模块601,用于接收目标显示设备组的父节点设备发送的渲染指令,所述渲染指令包括所述目标显示设备组中至少一个设备发起的子渲染指令;一子渲染指令用于请求对目标场景中的一子区域进行渲染;所述至少一个设备包括所述目标子节点设备;
区域渲染模块602,用于响应于所述渲染指令,调用为所述目标显示设备组分配的渲染实例对所述目标场景中对应的子区域进行渲染,得到每个所述子渲染指令所请求子区域对应的像素流内容;
内容组合模块603,用于将每个所述子渲染指令所请求子区域对应的像素流内容进行组合,得到所述目标场景对应的目标像素流;
第二发送模块604,用于向所述父节点设备发送所述目标场景对应的目标像素流,以使所述父节点设备从所述目标像素流中获取目标子区域对应的像素流内容,并向所述目标子节点设备发送所述目标子区域对应的像素流内容;所述目标子区域为所述目标子节点设备对应子渲染指令请求渲染的子区域。
在一些实施例中,内容组合模块603可以具体用于:基于各子渲染指令所请求子区域对应的像素流内容,以及所述子渲染指令的发送设备的设备标识,确定各所述子渲染指令对应的像素流分段;将每个所述子渲染指令对应的像素流分段进行组包,得到所述目标场景对应的目标像素流。
在一些实施例中,场景渲染装置600还可以包括:第二指令接收模块605,用于接收所述父节点设备发送的场景切换指令,所述场景切换指令用于请求将所述目标显示设备组显示的目标场景的画面切换为第一场景的画面,所述第一场景与所述目标场景是不同的场景;第二指令响应模块606,用于响应于所述场景切换指令,获取所述第一场景对应的第一像素流;场景切换模块607,用于将所述第一像素流中第一设备组对应的组标识替换为目标显示设备组对应的组标识,得到替换后的第一像素流;所述第一设备组为请求渲染所述第一场景的设备组;像素发送模块608,用于向所述父节点设备发送所述替换后的第一像素流,以使所述父节点设备将所述替换后的第一像素流中一子区域对应的像素流内容分发到所述目标显示设备组中的一个设备。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
如图15所示,本申请实施例还提供一种计算机设备700,该计算机设备700包括处理器710、存储器720、电源730和输入单元740,存储器720存储有计算机程序,计算机程序被处理器710调用时,可实执行上述实施例提供的各种方法步骤。本领域技术人员可以理解,图中示出的计算机设备的结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器710可以包括一个或多个处理核。处理器710利用各种接口和线路连接整个电池管理系统内的各种部分,通过运行或执行存储在存储器720内的指令、程序、指令集或程序集,调用存储在存储器720内的数据,执行电池管理系统的各种功能和处理数据,以及执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体控制。可选地,处理器710可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器710可集成中央处理器710(CentralProcessing Unit,CPU)、图像处理器710(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器710中,单独通过一块通信芯片进行实现。
存储器720可以包括随机存储器720(Random Access Memory,RAM),也可以包括只读存储器720(Read-Only Memory)。存储器720可用于存储指令、程序、指令集或程序集。存储器720可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各种方法实施例的指令等。存储数据区还可以存储计算机设备在使用中所创建的数据(比如电话本和音视频数据)等。相应地,存储器720还可以包括存储器控制器,以提供处理器710对存储器720的访问。
电源730可以通过电源管理系统与处理器710逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源730还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
输入单元740,该输入单元740可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,计算机设备700还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器710会按照如下的指令,将一个或一个以上的计算机程序的进程对应的可执行文件加载到存储器720中,并由处理器710来运行存储在存储器720中的比如电话本和音视频数据,从而实现前述实施例提供的各种方法步骤。
如图16所示,本申请实施例还提供一种计算机可读存储介质800,该计算机可读存储介质800中存储有计算机程序810,计算机程序810可被处理器调用于执行本申请实施例提供的各种方法步骤。
计算机可读存储介质可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质包括非易失性计算机可读存储介质(Non-Transitory Computer-Readable Storage Medium)。计算机可读存储介质800具有执行上述实施例中任何方法步骤的计算机程序的存储空间。这些计算机程序可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。计算机程序能够以适当形式进行压缩。
根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序被存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行上述实施例提供的各种方法步骤。
以上,仅是本申请的较佳实施例而已,并非对本申请作任何形式上的限制,虽然本申请已以较佳实施例揭示如上,然而并非用以限定本申请,任何本领域技术人员,在不脱离本申请技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本申请技术方案内容,依据本申请的技术实质对以上实施例所作的任何简介修改、等同变化与修饰,均仍属于本申请技术方案的范围内。

Claims (15)

1.一种场景渲染方法,其特征在于,应用于目标显示设备组中的父节点设备,所述目标显示设备组还包括至少一个子节点设备;所述方法包括:
接收所述目标显示设备组中的目标子节点设备发送的子渲染指令;
向服务端发送所述目标显示设备组对应的渲染指令,所述目标显示设备组对应的渲染指令包括所述目标显示设备组中至少一个设备发起的子渲染指令;一子渲染指令用于请求对目标场景中的一子区域进行渲染;所述至少一个设备包括所述目标子节点设备;
接收所述服务端返回的针对所述目标场景的目标像素流;所述目标像素流为所述服务端响应于所述渲染指令,调用为所述目标显示设备组分配的渲染实例对所述目标场景中对应的子区域进行渲染得到的;
从所述目标像素流中获取目标子区域对应的像素流内容,所述目标子区域是指所述目标子节点设备所对应子渲染指令请求渲染的子区域;
向所述目标子节点设备发送所述目标子区域对应的像素流内容。
2.根据权利要求1所述的方法,其特征在于,所述向所述目标子节点设备发送所述目标子区域对应的像素流内容,包括:
根据所述目标显示设备组的拓扑结构,确定所述目标子节点设备与所述父节点设备之间的内容传输路径;
将所述目标子区域对应的像素流内容经所述内容传输路径,发送至所述目标子节点设备。
3.根据权利要求1所述的方法,其特征在于,在所述接收所述服务端返回的针对所述目标场景的目标像素流之后,所述方法还包括:
响应于针对所述目标显示设备组的轮播指令,对所述目标像素流进行解码,获得所述目标场景对应的渲染帧序列;
向所述目标显示设备组中的子节点设备顺序发送所述渲染帧序列,以使所述目标显示设备组中的各设备轮播所述渲染帧序列。
4.根据权利要求1所述的方法,其特征在于,在所述接收所述服务端返回的针对所述目标场景的目标像素流之后,所述方法还包括:
接收所述目标子节点设备发送的画面切换指令,所述画面切换指令用于指示显示所述目标场景中第一子区域对应的画面,所述第一子区域与所述目标子区域是不同的子区域;
响应于所述画面切换指令,从所述目标场景的目标像素流中获取所述第一子区域对应的像素流内容;
向所述目标子节点设备发送所述第一子区域对应的像素流内容。
5.根据权利要求4所述的方法,其特征在于,所述响应于所述画面切换指令,从所述目标场景的目标像素流中获取所述第一子区域对应的像素流内容,包括:
响应于所述画面切换指令,从所述目标场景的目标像素流中获取第一像素流分段,所述第一像素流分段包括所述第一子区域对应的像素流内容和第一设备对应的设备标识;所述第一设备是所述目标显示设备组中请求渲染所述第一子区域的设备;
将所述第一像素流分段中所述第一设备对应的设备标识替换成所述目标子节点设备的设备标识;
所述向所述目标子节点设备发送所述第一子区域对应的像素流内容,包括:
根据替换后的第一像素流分段中目标子节点设备的设备标识,向所述目标子节点设备发送所述第一子区域对应的像素流内容。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据设备集合中各设备的设备信息,构建所述设备集合的网络拓扑图;
对所述设备集合的网络拓扑图进行划分,确定至少一个拓扑子图,一个拓扑子图中涉及的设备作为一个设备组;所述拓扑子图为有向无环图;
将所述拓扑子图中作为根节点的设备确定为设备组中的父节点设备,将所述拓扑子图中除根节点外的其他设备确定为设备组中的子节点设备。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述目标像素流至少包括标记分隔符和所述目标显示设备组中各设备的设备标识;
所述从所述目标像素流中获取目标子区域对应的像素流内容,包括:
根据所述目标像素流中的标记分隔符,对所述目标像素流进行分段,确定多个像素流分段;
在所述多个像素流分段中确定包括所述目标子节点设备的设备标识的目标像素流分段;
从所述目标像素流分段中获取目标子区域的像素流内容。
8.一种场景渲染方法,其特征在于,应用于服务端;所述方法包括:
接收目标显示设备组的父节点设备发送的渲染指令,所述渲染指令包括所述目标显示设备组中至少一个设备发起的子渲染指令;一子渲染指令用于请求对目标场景中的一子区域进行渲染;所述至少一个设备包括所述目标子节点设备;
响应于所述渲染指令,调用为所述目标显示设备组分配的渲染实例对所述目标场景中对应的子区域进行渲染,得到每个所述子渲染指令所请求子区域对应的像素流内容;
将每个所述子渲染指令所请求子区域对应的像素流内容进行组合,得到所述目标场景对应的目标像素流;
向所述父节点设备发送所述目标场景对应的目标像素流,以使所述父节点设备从所述目标像素流中获取目标子区域对应的像素流内容,并向所述目标子节点设备发送所述目标子区域对应的像素流内容;所述目标子区域为所述目标子节点设备对应子渲染指令请求渲染的子区域。
9.根据权利要求8所述的方法,其特征在于,所述将每个所述子渲染指令所请求子区域对应的像素流内容进行组合,得到所述目标场景对应的目标像素流,包括:
基于各子渲染指令所请求子区域对应的像素流内容,以及所述子渲染指令的发送设备的设备标识,确定各所述子渲染指令对应的像素流分段;
将每个所述子渲染指令对应的像素流分段进行组包,得到所述目标场景对应的目标像素流。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
接收所述父节点设备发送的场景切换指令,所述场景切换指令用于请求将所述目标显示设备组显示的目标场景的画面切换为第一场景的画面,所述第一场景与所述目标场景是不同的场景;
响应于所述场景切换指令,获取所述第一场景对应的第一像素流;
将所述第一像素流中第一设备组对应的组标识替换为目标显示设备组对应的组标识,得到替换后的第一像素流;所述第一设备组为请求渲染所述第一场景的设备组;
向所述父节点设备发送所述替换后的第一像素流,以使所述父节点设备将所述替换后的第一像素流中一子区域对应的像素流内容分发到所述目标显示设备组中的一个设备。
11.一种场景渲染装置,其特征在于,应用于目标显示设备组中的父节点设备,所述目标显示设备组还包括至少一个子节点设备;所述装置包括:
第一接收模块,用于接收所述目标显示设备组中的目标子节点设备发送的子渲染指令;
第一发送模块,用于向服务端发送所述目标显示设备组对应的渲染指令,所述目标显示设备组对应的渲染指令包括所述目标显示设备组中至少一个设备发起的子渲染指令;一子渲染指令用于请求对目标场景中的一子区域进行渲染;所述至少一个设备包括所述目标子节点设备;
数据接收模块,用于接收所述服务端返回的针对所述目标场景的目标像素流;所述目标像素流为所述服务端响应于所述渲染指令,调用为所述目标显示设备组分配的渲染实例对所述目标场景中对应的子区域进行渲染得到的;
内容获取模块,用于从所述目标像素流中获取目标子区域对应的像素流内容,所述目标子区域是指所述目标子节点设备所对应子渲染指令请求渲染的子区域;
内容发送模块,用于向所述目标子节点设备发送所述目标子区域对应的像素流内容。
12.一种场景渲染装置,其特征在于,应用于服务端;所述装置包括:
第二接收模块,用于接收目标显示设备组的父节点设备发送的渲染指令,所述渲染指令包括所述目标显示设备组中至少一个设备发起的子渲染指令;一子渲染指令用于请求对目标场景中的一子区域进行渲染;所述至少一个设备包括所述目标子节点设备;
区域渲染模块,用于响应于所述渲染指令,调用为所述目标显示设备组分配的渲染实例对所述目标场景中对应的子区域进行渲染,得到每个所述子渲染指令所请求子区域对应的像素流内容;
内容组合模块,用于将每个所述子渲染指令所请求子区域对应的像素流内容进行组合,得到所述目标场景对应的目标像素流;
第二发送模块,用于向所述父节点设备发送所述目标场景对应的目标像素流,以使所述父节点设备从所述目标像素流中获取目标子区域对应的像素流内容,并向所述目标子节点设备发送所述目标子区域对应的像素流内容;所述目标子区域为所述目标子节点设备对应子渲染指令请求渲染的子区域。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序可被处理器调用执行如权利要求1至10任一项所述的方法。
14.一种计算机设备,其特征在于,包括:
存储器;
一个或多个处理器,与所述存储器耦接;
一个或多个计算机程序,其中,所述一个或多个计算机程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个计算机程序配置用于执行如权利要求1至10任一项所述的方法。
15.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被存储在存储介质中;计算机设备的处理器从存储介质读取所述计算机程序,处理器执行所述计算机程序,使得所述计算机设备执行如权利要求1至10任一项所述的方法。
CN202311043703.8A 2023-08-17 2023-08-17 场景渲染方法、装置、存储介质及计算机设备 Pending CN117095104A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311043703.8A CN117095104A (zh) 2023-08-17 2023-08-17 场景渲染方法、装置、存储介质及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311043703.8A CN117095104A (zh) 2023-08-17 2023-08-17 场景渲染方法、装置、存储介质及计算机设备

Publications (1)

Publication Number Publication Date
CN117095104A true CN117095104A (zh) 2023-11-21

Family

ID=88789836

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311043703.8A Pending CN117095104A (zh) 2023-08-17 2023-08-17 场景渲染方法、装置、存储介质及计算机设备

Country Status (1)

Country Link
CN (1) CN117095104A (zh)

Similar Documents

Publication Publication Date Title
CN103106679B (zh) 分布式3d多通道渲染方法、系统和平台
US7937452B2 (en) Framework for rendering plug-ins in remote access services
US8924985B2 (en) Network based real-time virtual reality input/output system and method for heterogeneous environment
CN102866919B (zh) 一种基于云端绘制的大规模三维场景多人协同创作方法
CN108011886A (zh) 一种协同控制方法、系统、设备及存储介质
US11878236B2 (en) Streaming video game statistics
CN108052364A (zh) 一种基于远程操作的图像显示方法、装置、设备及存储介质
CN103889524B (zh) 信息处理系统、信息处理方法、信息处理程序、存储信息处理程序的计算机可读记录介质、数据结构、信息处理服务器和信息处理终端
CN107959687A (zh) 一种数据处理方法、系统、设备及存储介质
US11219831B2 (en) Live camera video character representations
CN112473130A (zh) 场景渲染方法、装置、集群、存储介质及电子设备
WO2024066828A1 (zh) 一种数据处理方法、装置、设备、计算机可读存储介质及计算机程序产品
CN106201259A (zh) 一种虚拟现实系统中分享全景影像的方法和装置
US11331587B2 (en) Video game player, spectator and audience interaction
CN113992688A (zh) 分布单元云端部署方法、设备、存储介质和系统
CN102270354A (zh) 基于对等运算集群的分布式渲染方法及其渲染系统
CN111031399A (zh) 弹幕处理方法和系统
US11344816B2 (en) Video game waiting queue and audience interaction
EP1266295B1 (en) Image processing apparatus and method
US10708639B1 (en) State-based image data stream provisioning
CN117095104A (zh) 场景渲染方法、装置、存储介质及计算机设备
CN114398018B (zh) 画面显示方法、装置、存储介质及电子设备
CN116503498A (zh) 一种画面渲染方法和相关装置
US10715846B1 (en) State-based image data stream provisioning
US20210192675A1 (en) Graphics processor unit, platform comprising such a graphics processor unit and a multi-core central processor, and method for managing resources of such a graphics processor unit

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication