三维场景渲染方法和系统以及相关设备与流程

文档序号:12722756阅读:343来源:国知局
三维场景渲染方法和系统以及相关设备与流程

本发明涉及人机交互领域,尤其涉及一种三维场景渲染方法和系统以及相关设备。



背景技术:

随着终端及4G(第四代移动通信技术)等网络能力的不断提升,立体导航、虚拟会展、增强虚拟现实、移动大型多人在线(MMO,Massive Multiplayer Online)游戏等移动3D(3Dimensions,三维)交互式应用日益丰富,不断带来全新的交互式沉浸体验。

然而现代移动交互应用中的3D场景设计日趋庞大、复杂,针对复杂的3D场景进行实时、高效的空间裁剪(Spatial Culling),进而避免绘制那些不在屏幕范围内的3D物体,逐渐成为提升移动终端3D交互式渲染效率的关键手段之一。但是,当这一手段被应用于移动终端时,仍有一系列难题亟待解决。

移动终端的CPU(Central Processing Unit,中央处理器)的内存容量、处理能力有限,当对大规模复杂3D场景进行实时的、细粒度的空间裁剪时,容易导致虚拟内存频繁地读入读出,在极大消耗有限内存资源的同时降低了终端处理性能,使得移动端CPU不堪重负、响应迟钝,难以达到实时交互响应要求。此外,移动终端的GPU一般计算性能有限,无法针对大面积屏幕像素进行实时的高级光照、着色及后处理计算,进而导致无法实时计算渲染,大大影响了三维交互式应用在移动终端的交互体验。



技术实现要素:

本发明实施例所要解决的一个技术问题是:如何提高三维场景的渲 染效率,以满足移动终端的三维交互式应用的使用体验。

根据本发明实施例的第一个方面,提供了一种三维场景渲染方法,包括:云端接收终端发送的交互控制信息;云端根据交互控制信息裁剪云端对应的三维场景;云端生成裁剪后的三维场景的层次深度图;云端将三维场景的裁剪结果和层次深度图发送给终端,以便终端根据三维场景的裁剪结果和层次深度图进行场景的合成。

在一个实施例中,交互控制信息包括镜头信息和场景设定信息;云端根据交互控制信息裁剪云端对应的三维场景包括:云端根据场景设定信息确定所要裁剪的三维场景,根据镜头信息和预先建立的三维场景空间索引结构裁剪三维场景。

在一个实施例中,云端生成裁剪后的三维场景的层次深度图包括:云端采用层级式Z深度的方式,生成裁剪后的三维场景的纹理映射层次深度图。

在一个实施例中,云端的三维场景为静态三维场景;终端根据三维场景的裁剪结果和层次深度图进行场景的合成包括:终端根据交互控制信息和建立的动态三维近景的空间索引结构对动态三维近景进行裁剪;终端根据层次深度图将动态三维近景的裁剪结果插入到静态三维场景的裁剪结果中对应的层次和深度,以进行场景合成。

在一个实施例中,还包括:云端根据交互控制信息渲染云端对应的平面远景画面;云端将渲染后的平面远景画面信息发送给终端,以便终端根据渲染后的平面远景画面进行场景的合成。

在一个实施例中,云端根据交互控制信息渲染云端对应的平面远景画面包括:云端检索缓冲中是否已有相应的平面远景画面,如果有,则从缓冲中获取已经渲染的平面远景画面,如果没有,则根据交互控制信息渲染云端对应的平面远景画面,将渲染后的平面远景画面保存到缓冲中。

在一个实施例中,云端检索缓冲中是否已有相应的平面远景画面包括:云端对交互控制信息进行编码,以获得平面远景画面的编码;云端根据平面远景画面的编码检索缓冲中是否已有相应的平面远景画 面。

在一个实施例中,云端对交互控制信息进行编码包括:云端采用希尔伯特空间填充曲线编码的方式对镜头的位置信息进行编码,采用立体角有序划分的方式对镜头的方向信息进行编码,将编码后的镜头位置信息和镜头方向信息进行哈希操作,获得场景设定信息对应场景中的平面远景画面的编码;其中,交互控制信息包括镜头的位置信息、镜头的方向信息和场景设定信息。

在一个实施例中,其中,云端将三维场景的裁剪结果、层次深度图、渲染后的平面远景画面信息分别编码为独立的码流,并封装为具有时间轴的复用码流,并将复用码流发送给终端。

根据本发明实施例的第二个方面,提供一种用于三维场景渲染的云端服务器,包括:交互控制信息接收模块,用于接收终端发送的交互控制信息;三维场景裁剪模块,用于根据交互控制信息裁剪云端对应的三维场景;层次深度图生成模块,用于生成裁剪后的三维场景的层次深度图;发送模块,用于将三维场景的裁剪结果和层次深度图发送给终端,以便终端根据三维场景的裁剪结果和层次深度图进行场景的合成。

在一个实施例中,交互控制信息包括镜头信息和场景设定信息;三维场景裁剪模块用于根据场景设定信息确定所要裁剪的三维场景,根据镜头信息和预先建立的三维场景空间索引结构裁剪三维场景。

在一个实施例中,层次深度图生成模块用于采用层级式Z深度的方式,生成裁剪后的三维场景的纹理映射层次深度图。

在一个实施例中,还包括:平面远景渲染模块,用于根据交互控制信息渲染云端对应的平面远景画面;发送模块用于将渲染后的平面远景画面信息发送给终端,以便终端根据渲染后的平面远景画面进行场景的合成。

在一个实施例中,平面远景渲染模块包括缓冲检索单元、渲染单元和缓存单元;缓冲检索单元用于检索缓冲中是否已有相应的平面远景画面;渲染单元用于当缓冲中已有相应的平面远景画面时,从缓冲 中获取已经渲染的平面远景画面,当缓冲中没有相应的平面远景画面时,根据交互控制信息渲染云端对应的平面远景画面;缓存单元用于将渲染后的平面远景画面保存到缓冲中。

在一个实施例中,缓冲检索单元包括编码子单元和检索子单元;编码子单元用于对交互控制信息进行编码,以获得平面远景画面的编码;检索子单元用于根据平面远景画面的编码检索缓冲中是否已有相应的平面远景画面。

在一个实施例中,编码子单元用于采用希尔伯特空间填充曲线编码的方式对镜头的位置信息进行编码,采用立体角有序划分的方式对镜头的方向信息进行编码,将编码后的镜头位置信息和镜头方向信息进行哈希操作,获得场景设定信息对应场景中的平面远景画面的编码;其中,交互控制信息包括镜头的位置信息、镜头的方向信息和场景设定信息。

在一个实施例中,发送模块用于将三维场景的裁剪结果、层次深度图、渲染后的平面远景画面信息分别编码为独立的码流,并封装为具有时间轴的复用码流,并将复用码流发送给终端。

根据本发明实施例的第三个方面,提供一种用于三维场景渲染的终端,包括:接收模块,用于接收云端发送的静态三维场景的裁剪结果和静态三维场景的层次深度图;三维近景裁剪模块,用于根据交互控制信息和建立的动态三维近景的空间索引结构对动态三维近景进行裁剪;场景合成模块,用于根据静态三维场景的层次深度图将动态三维近景的裁剪结果插入到静态三维场景的裁剪结果中对应的层次和深度,以进行场景合成。

根据本发明实施例的第四个方面,提供一种三维场景渲染系统,包括前述任意一种云端服务器和前述终端。

本发明通过采用性能较强的云端完成三维场景的裁剪、采用终端合成云端发送的裁剪结果的方式,能够提高三维场景渲染的效率,降低了对终端性能的要求。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明 的其它特征及其优点将会变得清楚。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出本发明三维场景渲染方法的一个实施例的流程示意图。

图2示出本发明三维场景渲染方法的另一个实施例的流程示意图。

图3示出本发明三维场景渲染系统的一个实施例的结构示意图。

图4示出本发明用于三维场景渲染的云端服务器的一个实施例的结构示意图。

图5示出本发明用于三维场景渲染的终端的一个实施例的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面参考图1描述本发明一个实施例的三维场景渲染方法。

图1为本发明三维场景渲染方法的一个实施例的流程图。如图1所示,该实施例的方法包括:

步骤S102,云端接收终端发送的交互控制信息。

步骤S104,云端根据交互控制信息裁剪云端对应的三维场景。

其中,交互控制信息可以包括镜头信息和场景设定信息。当应用中的三维场景有多个时,云端根据场景设定信息可以确定所要裁剪的三维场景,并根据镜头信息和预先建立的三维场景空间索引结构裁剪三维场景,以便生成只呈现在屏幕中的部分的裁剪结果。三维场景的空间索引结构可以为八叉树、K-d树(k-dimensional树的简称,是一种分割k维数据空间的数据结构)、BSP树(二叉空间分割树)等。

步骤S106,云端生成裁剪后的三维场景的层次深度图。

其中,云端可以采用层级式Z深度(Hierarchy Z)的方式,生成裁剪后的三维场景的纹理映射层次深度图。Hierarchy Z采用最大值(Maximum)方法来生成层级式深度图。该方式具体为:对于一个层级,每个像素中存储该像素所对应的深度值,取相邻的4个像素中的深度值最大的像素,作为下一个层级中所对应的像素的深度值的取值。根据需要,本领域技术人员还可以采用其他的方式生成层次深度图,这里不再赘述。

步骤S108,云端将三维场景的裁剪结果和层次深度图发送给终端,以便终端根据三维场景的裁剪结果和层次深度图进行场景的合成。

通过采用性能较强的云端完成三维场景的裁剪、采用终端合成云端发送的裁剪结果的方式,能够提高三维场景渲染的效率,降低了对终端性能的要求,尤其适用于于大规模的、实时的三维交互系统或应用。

在大型的三维交互式应用中,三维场景通常又包括静态三维场景和动态三维场景。其中,三维静态场景的规模通常较大,例如场景中的固定建筑物、固定自然景观等等;三维动态场景的规模则相对较小,通常为近景中交互控制的对象或者NPC(Non-Player Character,非玩家控制角色)等等。因此,可以将规模较大的静态三维场景在云端进行渲染,将在终端渲染能力范围内的动态三维近景在终端进行渲染。因此,在步骤S108中,终端根据三维场景的裁剪结果和层次深度图进行场景的合成可以包括:终端根据交互控制信息和建立的动态三维近景的空间索引结构对动态三维近景进行裁剪;终端根据层次深度图将 动态三维近景的裁剪结果插入到静态三维场景的裁剪结果中对应的层次和深度,以进行场景合成。通过结合云端生成的层次深度图将终端渲染的动态三维近景与云端渲染的静态三维场景进行合成,能够使合成后的场景符合正确的遮挡关系。通过采用这种方法,能够使终端在能力范围内进行动态三维近景的渲染,提高了渲染效率。根据需要,也可以将动态三维近景以和渲染静态三维场景同样的方式在云端进行渲染,此处不再赘述。

除了三维对象以外,三维场景中还可能包括平面远景。平面远景通常为二维平面图像,其变化较小,内容也相对固定,用于增加三维场景的层次感,丰富画面内容。在本发明中,对于三维场景中的平面远景可以采用如下方式进行渲染:云端根据交互控制信息渲染云端对应的平面远景画面;云端将渲染后的平面远景画面信息发送给终端,以便终端根据渲染后的平面远景画面进行场景的合成。通过采用这种方法,只需渲染平面远景画面呈现在屏幕中的部分,能够高效地满足对画面丰富度的要求。

由于平面远景画面的变化相对较小,渲染内容可能产生重复,因此,云端具体可以采用以下方法渲染云端对应的平面远景画面:云端检索缓冲中是否已有相应的平面远景画面,如果有,则从缓冲中获取已经渲染的平面远景画面,如果没有,则根据交互控制信息渲染云端对应的平面远景画面,将渲染后的平面远景画面保存到缓冲中。通过采用上述方法,可以只渲染缓冲中未进行缓存的平面远景画面而不必每次都进行重新渲染,提高了渲染效率。

当云端检索缓冲中是否已有相应的平面远景画面时,具体可以根据交互控制信息进行搜索,即:云端对交互控制信息进行编码,以获得平面远景画面的编码;云端根据平面远景画面的编码检索缓冲中是否已有相应的平面远景画面。利用编码进行检索的方式效率较高,并且便于存储。

云端对交互控制信息进行编码的方式可以为:云端采用希尔伯特空间填充曲线编码的方式对镜头的位置信息进行编码,采用立体角有 序划分的方式对镜头的方向信息进行编码,将编码后的镜头位置信息和镜头方向信息进行哈希操作,获得场景设定信息对应场景中的平面远景画面的编码;其中,交互控制信息包括镜头的位置信息、镜头的方向信息和场景设定信息。希尔伯特曲线编码是一种可压缩的空间位置编码,通过采用希尔伯特空间填充曲线编码的方式对镜头的位置信息进行编码,能够以尽可能短的字符串来表示空间中的某个特定位置,便于在云端生成相应的哈希索引值,提高索引效率;通过采用立体角有序划分的方式对镜头的方向信息进行编码,能够将镜头的方向定义为若干个角度,每个方向对应一定的球面度,再将每个方向进行编号。根据镜头的位置信息、镜头的方向信息和场景设定信息,能够准确定位到三维场景中需要渲染的部分。

在云端将云端的三维场景裁剪、渲染的结果发送到终端这一传输过程中,具体可以采用以下方法:云端将三维场景的裁剪结果、层次深度图、渲染后的平面远景画面信息分别编码为独立的码流,并封装为具有时间轴的复用码流,并将复用码流发送给终端。终端通过获取时间轴信息,能够将解码后的云端发送的复用码流解码还原为三维场景的裁剪结果、层次深度图和渲染后的平面远景画面信息。在解码后,终端可以将云端发送的平面远景画面信息作为光栅化画面的最底层,再将三维场景的渲染结果与平面远景画合成为最终的输出画面,进行屏幕输出,完成终端中三维场景画面的更新。

下面参考图2描述本发明另一个实施例的三维场景渲染方法。

图2为本发明三维场景渲染方法的另一个实施例的流程图。如图2所示,该实施例的方法包括:

步骤S202,终端向位于云端的前端接入服务器发送交互控制信息,其中,交互控制信息包括镜头信息和场景设定信息。

步骤S204,位于云端的前端接入服务器向云端渲染集群发送交互控制信息。

步骤S206,云端渲染集群根据交互控制信息裁剪云端对应的大规模静态三维场景,并生成裁剪后的静态三维场景的层次深度图,再根 据交互控制信息裁剪并以较小的分辨率渲染云端对应的平面远景画面。

步骤S208,云端渲染集群向前端码流封装服务器发送裁剪后的静态三维场景以及层次深度图。

步骤S210,云端渲染集群向实时视频编码集群发送渲染后的平面远景画面信息。

步骤S212,实时视频编码集群对平面远景画面信息进行视频编码,并生成平面远景视频流。

步骤S214,实时视频编码集群向前端码流封装服务器发送平面远景视频流。

步骤S216,前端码流封装服务器将裁剪后的静态三维场景、层次深度图和平面远景视频流分别编码为独立的码流,添加相应的时间轴标记,并将这些独立的码流封装为可以实时传输的复用码流。

步骤S218,前端码流封装服务器通过前端接入服务器向终端发送复用码流。

步骤S220,终端对云端发送的复用码流进行解码。

步骤S222,终端根据交互控制信息建立相应的小规模的动态三维近景的空间索引结构,并对动态三维近景进行裁剪。

步骤S224,终端根据层次深度图合并动态三维进行和静态三维场景,将动态三维近景的裁剪结果插入到静态三维场景的裁剪结果中对应的层次和深度。

步骤S226,终端渲染用于呈现在屏幕中的合并后的三维场景,并将平面远景画面作为光栅化画面的最底层,生成最终的输出画面,并进行屏幕输出,完成画面的更新。

通过采用上述方法,终端和云端能够利用自身性能和特点,高效地完成混合渲染的过程。

下面参考图3描述本发明一个实施例的用于三维场景渲染的系统。

图3为本发明三维场景渲染系统的一个实施例的结构图。如图3所示,该实施例的系统包括:云端服务器32和终端34。其中,云端服务器32用于根据终端34发送的交互控制信息裁剪云端对应的三维场 景并生成层次深度图,终端34用于根据云端服务器32发送的三维场景的裁剪结果和层次深度图进行场景的合成。

下面参考图4描述本发明一个实施例的用于三维场景渲染的云端服务器。

图4为本发明用于三维场景渲染的云端服务器的一个实施例的结构图。如图4所示,该实施例的服务器32包括:交互控制信息接收模块422,用于接收终端发送的交互控制信息;三维场景裁剪模块424,用于根据交互控制信息裁剪云端对应的三维场景;层次深度图生成模块426,用于生成裁剪后的三维场景的层次深度图;发送模块428,用于将三维场景的裁剪结果和层次深度图发送给终端,以便终端根据三维场景的裁剪结果和层次深度图进行场景的合成。

其中,交互控制信息可以包括镜头信息和场景设定信息;三维场景裁剪模块424用于根据场景设定信息确定所要裁剪的三维场景,根据镜头信息和预先建立的三维场景空间索引结构裁剪三维场景。

其中,层次深度图生成模块426可以用于采用层级式Z深度的方式,生成裁剪后的三维场景的纹理映射层次深度图。

其中,云端服务器32还可以包括:平面远景渲染模块,用于根据交互控制信息渲染云端对应的平面远景画面;发送模块428用于将渲染后的平面远景画面信息发送给终端34,以便终端根据渲染后的平面远景画面进行场景的合成。

其中,平面远景渲染模块可以包括缓冲检索单元、渲染单元和缓存单元;缓冲检索单元用于检索缓冲中是否已有相应的平面远景画面;渲染单元用于当缓冲中已有相应的平面远景画面时,从缓冲中获取已经渲染的平面远景画面,当缓冲中没有相应的平面远景画面时,根据交互控制信息渲染云端对应的平面远景画面;缓存单元用于将渲染后的平面远景画面保存到缓冲中。

其中,缓冲检索单元可以包括编码子单元和检索子单元;编码子单元用于对交互控制信息进行编码,以获得平面远景画面的编码;检索子单元用于根据平面远景画面的编码检索缓冲中是否已有相应的平 面远景画面。

其中,编码子单元可以用于采用希尔伯特空间填充曲线编码的方式对镜头的位置信息进行编码,采用立体角有序划分的方式对镜头的方向信息进行编码,将编码后的镜头位置信息和镜头方向信息进行哈希操作,获得场景设定信息对应场景中的平面远景画面的编码;其中,交互控制信息包括镜头的位置信息、镜头的方向信息和场景设定信息。

其中,发送模块428可以用于将三维场景的裁剪结果、层次深度图、渲染后的平面远景画面信息分别编码为独立的码流,并封装为具有时间轴的复用码流,并将复用码流发送给终端。

下面参考图5描述本发明一个实施例的用于三维场景渲染的终端。

图5为本发明用于三维场景渲染的终端的一个实施例的结构图。如图5所示,该实施例的终端34包括:接收模块542,用于接收云端发送的静态三维场景的裁剪结果和静态三维场景的层次深度图;三维近景裁剪模块544,用于根据交互控制信息和建立的动态三维近景的空间索引结构对动态三维近景进行裁剪;场景合成模块546,用于根据静态三维场景的层次深度图将动态三维近景的裁剪结果插入到静态三维场景的裁剪结果中对应的层次和深度,以进行场景合成。

此外,根据本发明的方法还可以实现为一种计算机程序产品,该计算机程序产品包括计算机可读介质,在该计算机可读介质上存储有用于执行本发明的方法中限定的上述功能的计算机程序。本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1