虚拟世界场景的图像的提供方法和设备及处理方法和设备的制作方法

文档序号:7744142阅读:442来源:国知局
专利名称:虚拟世界场景的图像的提供方法和设备及处理方法和设备的制作方法
技术领域
本发明的各实施方式一般地涉及虚拟世界在计算机环境中的实现,更特别地涉及用于提供虚拟世界的场景的图像的方法和设备、用于处理虚拟世界的场景的图像的方法和设备,以及用于实现虚拟世界的系统。
背景技术
虚拟世界是一种用计算机仿真的虚拟三维(3D)环境,用户可以在其中以化身 (avatar)的形式与其他用户进行交流。虚拟世界与普通的网络游戏不同,是一个同时支持多人在线的3D虚拟环境。目前,虚拟世界已经成为信息技术领域的热点之一。在现有的虚拟世界实现中,客户端从服务器接收与虚拟世界有关的3D场景数据,然后在客户端本地利用收到的3D场景数据执行渲染,并根据渲染结果生成虚拟世界场景的图像以便显示。执行前述渲染需要的计算量通常是非常大的。例如,对于高保真度的电影图像,一天的时间可能也只渲染几帧图像。为此,为了解决上述与计算量有关的问题,电影图像通常采用预渲染方式,S卩,在实际播放之前预先对已拍摄的图像执行渲染。然而,与图像预先已经拍摄好的电影图像不同,虚拟世界场景的图像是实时产生的,并且以不可预测的方式进行改变。因此,场景的图像不可能采用这种预渲染技术,而是必须进行实时渲染,其所需的计算量更是巨大。因此, 通常要求客户端具有非常高的计算能力,例如,需要客户端具有例如专用图形处理器的附加设备,以便能够执行实时渲染。这无疑增加了客户端的成本。另外,诸如普通台式计算机、便携式计算设备、便携式通信设备等这些轻量级设备越来越为流行。然而,这些设备的计算能力较低,功率支持也较弱,所以难以实现所期望的实时渲染。因此,若能够在这种轻量级的普通客户端上实现对虚拟世界场景的图像的实时显示将是极具吸引力的。

发明内容
因此,有必要提供一种用于实现虚拟世界的改进的技术方案,以便至少部分地解决或者缓解现有技术中存在的上述技术问题。在本发明的一个实施方式中,提供了一种用于提供虚拟世界的场景的图像的方法。该方法包括对该虚拟世界的场景进行渲染,以生成多个渲染结果;基于至少一部分该渲染结果生成图像流;以及向客户端发送该图像流。在本发明的又一个实施方式中,该对该虚拟世界的场景进行渲染包括在该虚拟世界中,从该客户端的相应化身的位置和观察角度,对该虚拟世界的该场景进行渲染以生成该多个渲染结果。在本发明的另一个实施方式中,该对该虚拟世界的场景进行渲染可以包括在该虚拟世界中,从至少一个固定观察角度,对该虚拟世界的该场景进行渲染以生成该多个渲染结果。
在本发明的另一个实施方式中,该至少一个固定观察角度包括多个固定观察角度,并且该多个固定观察角度被预先设置为从分布在该场景的外围空间中的多个点各自朝向该场景。

在本发明的另一个实施方式中,该方法还包括从多个固定观察角度中,选择与该客户端的相应化身的观察角度尽可能接近的至少一个固定观察角度,以便将从该至少一个固定观察角度生成的渲染结果作为该一部分渲染结果。在本发明的另一个实施方式中,该从至少一个固定观察角度对该虚拟世界的该场景进行渲染还包括分别以不同的投影深度对该场景进行渲染;并且该方法还包括根据该相应化身在该虚拟世界中的位置,从该多个渲染结果中选择投影深度与该位置对应的渲染结果作为该一部分渲染结果。在本发明的另一个实施方式中,分别以不同的投影深度对该场景进行渲染还包括针对与该不同投影深度对应的场景变化进行渲染。在本发明的又一个实施方式中,提供了一种用于处理虚拟世界场景的图像的方法。该方法包括在客户端接收该虚拟世界的场景的至少两个图像流;以及将该至少两个图像流合并成单个图像流用于播放。在本发明的另一个实施方式中,提供了一种用于提供虚拟世界的场景的图像的设备。该设备包括渲染装置,用于对该虚拟世界的场景进行渲染以生成多个渲染结果;图像流生成装置,用于基于至少一部分该渲染结果生成图像流;以及发送装置,用于向客户端发送该图像流。在本发明的另一个实施方式中,提供了一种用于处理虚拟世界的场景的图像的设备。该设备包括接收装置,用于在客户端接收该虚拟世界的场景的至少两个图像流;以及合并装置,用于将该至少两个图像流合并成单个图像流用于播放。在本发明的另一个实施方式中,提供了一种用于实现虚拟世界的系统。该系统包括如前述任一实施方式中的用于提供虚拟世界的场景的图像的设备以及如前述任一实施方式中的用于处理虚拟世界的场景的图像的设备。在本发明的另一个实施方式中,提供了一种计算机程序产品。该计算机程序产品上置有计算机程序代码,当该计算机程序代码在一台设备上运行时,能够使该设备执行前述实施方式中的用于提供虚拟世界场景的图像的方法的步骤。在本发明的另一个实施方式中提供了一种计算机程序产品。该计算机程序产品上置有计算机程序代码,当该计算机程序代码在一台设备上运行时,能够使该设备执行前述实施方式中的用于处理虚拟世界场景的图像的方法的步骤。根据本发明的实施方式,可以在服务器处执行实时渲染,而客户端只需接收由至少一部分渲染结果生成的图像流用于播放。因此,通过本发明的各实施方式,将执行渲染的工作量从计算能力和/或功率支持能力较弱的客户端转移到了服务器,从而使得虚拟世界的客户端无需安装诸如图形处理器的专用设备,并且使得为轻量级的客户端提供虚拟世界服务成为可能。另外,根据本发明的某些实施方式,可以在服务器针对多个固定观察角度执行渲染,并从渲染结果中选择适合于相应化身的渲染结果生成用于发送到客户端的图像流。由此可以使得服务器执行渲染所需的计算量与客户端的数目无关,从而提高了服务器的性能和可扩展性,并且为在不同的客户端之间实现信息共享以及利用点对点技术提供了可能。 这在连接至服务器的客户端数目不定或非常多时尤其有益。


通过对结合附图所示出的实施方式进行详细说明,本发明各实施方式的上述以及其他特征将更加明显,本发明附图中相同的标号表示相同或相似的部件。在附图中图1示意性地示出了根据一种技术方案实现虚拟世界的示例系统的方框图;图2示意性地示出了根据本发明的一个实施方式实现虚拟世界的系统的方框图;图3示意性地示出了根据本发明的一个实施方式用于提供虚拟世界场景的图像的方法的流程图;图4示意性地示出了根据发明的另一实施方式实现虚拟世界的系统的方框图;图5示意性地示出了用于执行渲染的渲染引擎的示例性结构的方框图;图6示意性地示出了根据本发明的又一实施方式的原理的示意图;图7示意性地示出了根据发明的该又一实施方式实现虚拟世界的系统的方框图;图8示意性地示出了根据本发明的该又一实施方式用于提供虚拟世界场景的图像的方法的流程图;图9A和图9B示意性地示出了根据本发明的两个不同实施方式用于预先设置固定观察角度的方式的图示;图10示意性地示出了可在本发明中使用的物体网格模型;图IlA和IlB分别示意性地示出了根据本发明的两个不同实施方式用于执行渲染的示意图;图12示意性地示出了根据本发明的一个实施方式的三角面片组关系网络(TGRN) 的图示;图13A和图13B示意性地示出了根据本发明的实施方式用于选择适合于化身的渲染结果的方式的图示;图14A示出了根据本发明的一个实施方式用于显示虚拟世界场景的图像的方法的流程图;图14B示出了根据本发明的一个实施方式用于处理虚拟世界场景的图像的方法的流程图;图15示意性地示出了在根据本发明的一个实施方式中用于组合图像帧的图示;图16示意性地示出了根据本发明的一个示例性具体实现用于实现虚拟世界的系统架构的方框图;图17A和图17B分别示意性地示出了根据本发明的两个实施方式用于提供虚拟世界场景的图像的设备的方框图;图18A示意性地示出了根据本发明的一个实施方式用于显示虚拟世界场景的图像的设备的方框图;图18B意性地示出了根据本发明的一个实施方式用于处理虚拟世界场景的图像 的设备的方框图;以及图19示意性地示出了可以实现根据本发明的实施方式的计算机设备的结构方框图。
具体实施例方式本发明的各实施式中,在服务器对虚拟世界的场景进行渲染,并且只将与客户端的相应化身有关的图像流传送给客户端,因而降低了对客户端的计算能力和/或功率支持能力的需求。在某些实施方式中,只从某些固定观察角度对虚拟世界的场景进行渲染,并且只根据与客户端的相应化身的观察角度尽可能接近的一个或多个固定观察角度的渲染结果生成相应的图像流以便发往客户端;在客户端处将收到的一个或多个图像流合并成单个图像流以便播放。因此,相对于数目不定的客户端和各不相同的化身及观察角度来说,本发明的各实施方式提高了服务器的性能和可扩展性,并且为在不同的客户端之间实现信息共享以及利用点对点技术提供了可能。在下文中,将参考附图通过实施方式本发明提供的方法、设备和系统进行详细的描述。附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。图1示意性地示出了根据一种技术方案实现虚拟世界的示例系统的方框图。如图 1所示,该 系统包括服务器100和客户端110. 1,客户端110. 2,...,客户端110. η。其中, 各个客户端与服务器100之间进行消息传送以便进行交互,并且虚拟世界的服务器100响应于与客户端对应的化身的状态,将相应的3D场景数据传送给各个客户端。每个客户端包括渲染引擎,该渲染引擎用于针对客户端接收的3D场景数据执行渲染,包括例如对透射效果、遮挡关系、远近关系、光线、视窗剪裁等的处理。执行渲染得到的渲染结果存储在帧缓冲器内,以便在客户端的显示器上显示。图2示意性地示出了根据本发明的一个实施方式实现虚拟世界的系统的方框图。 如图2所示,服务器200包括仿真服务器201和渲染代理202。仿真服务器201接收来自渲染代理的消息并将适当的3D场景数据发送给渲染代理202。渲染代理202执行渲染,以根据来自仿真服务器201的3D场景数据生成渲染结果,并由渲染的结果生成适合于客户端的相应化身的流媒体,该流媒体将发送到客户端210。客户端210与服务器200执行交互,以相互传输数据和命令。客户端210还接收来自渲染代理202的流媒体并进行播放,从而在客户端210显示该客户端201的相应化身在虚拟世界中所看到的场景的图像。需要指出的是,在实际应用中,该服务器200可以以单台服务器来实现,可以以多台服务器来实现,或者是服务器集群的形式。另外,渲染代理202可以与仿真服务器201实现在同一台服务器上,也可以与仿真服务器201实现在不同服务器上,甚至由第三方运营的不同服务器上。而且,渲染代理202也可以作为能够与服务器200通信的单独实体来实现,例如通过一台服务器、多台服务器或者服务器集 群来实现。图3示意性地示出了根据本发明的一个实施方式的用于提供虚拟世界场景的图像的方法的流程图。如图3所示,首先在步骤S301,对该虚拟世界的场景进行渲染,以生成多个渲染结果。在本发明的一个实施方式中,可以在服务器处从每个化身的位置和观察角度为其执行实时渲染,从而得到对应于每个化身的渲染结果。在本发明的另一个实施方式中,可以在服务器处以至少一个固定观察角度执行渲染,从而得到对应于每个固定观察角度的渲染结果。并且在另一个实施方式中,还可以在每个固定观察角度,针对不同的投影深度来执行渲染。接着,流程进行到步骤S302。在步骤S302,基于至少一部分渲染结果生成图像流。 在本发明的一个实施方式中,可以将针对每个化身执行渲染得到多个渲染结果中的与客户端的相应化身对应的渲染结果转换成流媒体。在本发明的另一个实施方式中,从根据固定观察角度形成的多个渲染结果中将与该客户端的相应化身的观察角度(或者朝向)相适应的那部分渲染结果转换成流媒体。在另一个实施方式中,可以将与相应化身的观察角度和位置相适应的那部分渲染结果转换成流媒体。然后,在步骤S303,向客户端发送该图像流,如前述流媒体。在本发明的一个实施方式中,只要在客户端安装有适合于播放该图像流的播放器,就可以在客户端播放比如以流媒体形式的图像流。在本发明的另一个实施方式中,向客户端发送至少两个图像流,这两个图像流将在客户端处合并以形成用于播放的单个图像流。关于结合图3所描述的各个实施方式,将在下文中参考图4至图13分别进行更详细的描述。图4示意性地示出根据发明的另一实施方式的实现虚拟世界的系统的方框图。在如图4所示的实施方式中,在服务器400处针对连接到该虚拟世界服务器的每个客户端 410. 1,410. 2、. · ·、和410. η设置相应的渲染代理402. 1,402. 2、. · ·、和402. η。每个渲染代
理402. 1,402. 2.....和402. η在该虚拟世界中从相应客户端的相应化身的位置和观察角
度对相应的场景执行渲染,从而生成适合于相应化身的渲染结果。执行渲染的操作将结合图5来说明。图5示意性地示出了可以用于执行渲染的渲染引擎的示例性结构的方框图。在一
种实施方式中,图5所示的渲染引擎是图4所示的渲染代理402. 1,402. 2.....或402. η的
一部分。如图5所示,渲染流水线组件根据摄像数据(包括渲染引擎中的摄像模块的位置和观察角度)将输入的3D场景数据转换成适当的二维(2D)模型数据,然后渲染目标组件根据相应化身的视区数据(视窗或者剪裁窗)来剪裁生成的2D模型数据,并将其投影到该预定的视区。渲染得到的渲染结果作为帧缓存而存储在帧缓冲器中。在一个实施方式中,图4所示的渲染代理402. 1,402. 2.....或402. η还包括一种
将图5所示生成的一部分渲染结果转换成适合于在相应的客户端播放的图像流的装置、电路等。该图像流例如可以是当前流行的流媒体格式,诸动态图像专家组4(MPG4)、H. 264等格式。将渲染结果转换成流媒体的技术在本领域是已知的,此处不再赘述。之后,渲染代理
402. 1,402. 2.....或402. η将转换成的图像流发送到相应的客户端410. 1,410. 2.....或
410. η进行播放。从上面的描述可以看出,根据图4所示的实施方式,执行渲染的工作量从计算能力和/或功率支持能力较弱的客户端转移到了服务器,从而使得普通客户端无需安装诸如图形处理器的专用设备,并且使得为诸如移动通信终端、便携计算机等轻量级的客户端提供虚拟世界服务成为可能。然而,本发明人注意到,在实际应用中连接到服务器400的客户端410的数目可能非常大且数目不定。针对这种情况,本发明提供了其他实施方式。下面,将结合图6至图13 分别进行说明。 图6示意性地示出了根据本发明的又一实施方式的原理的示意图。根据该实施方式,在3D虚拟世界中,从至少一个固定观察角度,对该虚拟世界的场景进行渲染,以生成多个渲染结果。如图6所示,在一种实施方式中,在虚拟世界的外围空间中设置多个固定观察角度的渲染代理,例如标记为W(西)、NW(西北)、N(北)、NE(东北)、E(东)、SE(东南)、 S(南)、SW(西南)等8个渲染代理。这8个渲染代理均勻地设置在该外围空间的一个圆形周边上,并且其相应的观察角度朝向场景内部。根据客户端的相应化身的观察角度,将例如两个适当的渲染代理渲染得到的投影图像以流媒体形式提供给客户端。对于图6中所示客户端的相应化身,适当的渲染代理例如是渲染代理NW和渲染代理W。在一种实施方式中, 当某固定观察角度与该客户端的相应化身的观察角度之差的绝对值在0度、0度与45度之间的任一角度、或45度时,将该固定观察角度确定为适当的观察角度(或与客户端的相应化身的观察角度尽可能接近的固定观察角度),并且将位于该固定观察角度的渲染代理确定为一个适当的渲染代理而得到选择。在其他实施方式中,还可以采用其他方式选择适当的固定观察角度和对应的渲染代理。后文参照图13详细描述了另一种实施方式,用于选择适当的固定观察角度和对应的渲染代理。在图6所示的实施方式中,在客户端处将两个图像流合并成单个图像流,以便在该客户端上显示。图7示意性地示出了根据发明的该实施方式的实现虚拟世界的系统的方框图。如图7所示,服务器700包括仿真服务器701以及k个的渲染代理702. 1,702. 2.,. . . 702. k, 其中k为大于等于1的整数。这k个渲染代理与位于k个不同位置的固定观察角度相对应, 用于从相应的固定观察角度来执行渲染。对于每个客户端,根据化身的观察角度选择适合于相应化身的至少两个渲染代理,并将所选择的渲染代理执行渲染得到渲染结果中适合于该相应化身的那部分转换成流媒体,以便发送到相应的客户端710. 1或710. 2。如图7所示,向客户端710. 1发送分别基于渲染代理702. 1和渲染代理702. 2得到的流媒体1和流媒体2,为客户端710. 2发送基于渲染代理702. 2和渲染代理702. k得到的流媒体2’和流媒体k。根据该实施方式,在服务器700处设置的渲染代理的数目可以是固定的,而与所连接的客户端的数目无关,所以使得服务器700的负荷与进入虚拟世界的化身的数目无关,因此,服务器的性能得到提高,并且使服务器具有很好的扩展能力。另外,每个渲染代理 702. 1,702. 2.,... 702. k产生的渲染结果可以为多个客户端共享,因此使资源得到节约。另夕卜,也为在虚拟世界系统中实现点对点技术提供了可能性。图8示意性地示出了根据本发明的又一实施方式的用于提供虚拟世界场景的图像的方法的流程图。为如图8所示,首先在步骤S801,在虚拟世界中,从至少一个固定观察角度,对该虚拟世界的场景进行渲染,以生成多个渲染结果。该实施方式中,在虚拟世界中设置多个固定的观察角度。在一个实施方式中,设置多个固定观察角度,将该多个固定观察角度预先设置为是从分布在该场景的外围空间中的多个点各自朝向该场景的。一个预先设置多个固定观察角度的例子示于前文所述的图6。如图6所示,在虚拟世界的场景中的西部位置、西北部位置、北部位置、东北部位置、东部位置、东南部位置、南部位置、西南部位置分别设置一个朝向场景内部的固定的观察角度,优选地朝向场景的中心。本领域技术人员可以理解,基于本说明书的内容,也可以设想到通过进一步细分来设置更多数目的、来自更多空间位置的(平面的或立体的)固定观察角度。图6示出了在虚拟世界外围空间的一个圆形周边上设置固定观察角度的方式,这种方式对于一些简单应用是可行的,但对于复杂的应用可能就需要采用其他设置方式。图9A和图9B分别示出了适于复杂应用的两个预先设置多个固定观察角度的例子。如图9A所示,虚拟世界的外围空间可以是包围该场景空间的球形外围空间,在该球形外围空间上可以找出圆心与该球形外围空间的球心重合且处于不同平面的6个同心圆,在每个圆的圆周上分别设置例如4个朝向场景内部(优选地 朝向场景中心)的固定观察角度,以使得这24个观察角度基本均勻地分布在所述外围空间上。如图9B所示,虚拟世界的场景也由一个球形外围空间包围,在该球形外围空间上可以找出圆心与该球形外围空间的球心重合且处于相互垂直平面内的3个同心圆以及对称位于其中一个圆两则且与之平行的两个圆形。在该5个圆形的周边上分别设置朝向场景内部的固定观察角度,以使得所有固定观察角度基本均勻地分布在该外围空间上。需要说明的是,图6、图9A和图9B示出的仅是预先设置多个固定观察角度的例子, 而不应将它们理解为是对本发明的限制。相反,本领域技术人员根据本发明的这些示例性描述可以设想到多种其他用于设置固定观察角度的实施方式。此外需要说明的是,所设置的固定观察角度的数目可以根据实际应用来确定。一般而言,所设置的固定观察角度的数目越大,能够向客户端提供的场景的图像的观察角度与化身本身的观察角度就越接近,因此在客户端呈现给用户的视频流的图像将会越完整和越真实。然而,设置的固定观察角度的数目越大,服务器需要承担的计算量也就越大,占用的计算资源就越多。因此,固定观察角度的数目可以根据实际的系统需求来合理选择,以便在实时渲染的计算量和场景的图像的质量之间进行适当的折衷。此外,将固定观察角度设置为尽可能均勻地分布在场景的外部空间是有利的,能较好地保证一致的图像质量。在一个实施方式中,通过步骤S801,可以从每个固定观察角度执行渲染,可以得到针对每个固定观察角度的渲染结果。另外,本发明人还注意到,化身还可能在场景中处于与不同场景深度对应的位置,因此,即使处于同一观察角度,同一化身在不同场景深度时看到的场景的图像也可能不同。为此,在本发明的另一实施方式中,对于每个固定观察角度,进一步以不同的投影深度对虚拟世界的场景进行渲染。后文将结合图10至图12详细地描述基于投影深度进行的渲染。继续参照图8,流程进行到步骤S802。在步骤S802,从该多个渲染结果中,选择一部分渲染结果。后文将参照图13详细地描述选择一部分渲染结果的例子。接着,流程进行到步骤S803。在步骤S803,基于该一部分渲染结果生成图像流。在一个实施方式中,选择对应于两个固定观察角度的两组渲染结果。可以首先对所选择的每组渲染结果进行裁剪,以使每组渲染结果更加适合该化身。剪裁可以依据化身的观察区域、 化身的位置、化身的观察角度其中一个或多个来执行。此后,可以根据裁剪得到的每组渲染结果来生成例如MPG4、H. 264格式的两个流媒体。然后,在步骤S804,向客户端发送生成的流媒体。发送的媒体流将在客户端被处理(例如执行转换和合并,这将在下文详细描述)和显示。在如前所述的各实施方式中,可以从已设置的多个固定观察角度中选择与客户端的相应化身的观察角度尽可能接近的至少一个固定观察角度,以便将从该至少一个固定观察角度生成的渲染结果作为一部分渲染结果用于生成针对于该客户端的图像流。图10示意性地示出了可在本发明各实施方式中使用的物体网格模型。其中物体网格模型由三角面片组(TG)构成。三角面片组是用于表示对象的相互邻接的可见三角面片的组合。三角面片的方向可以定义为三角面片的法向方向。因此,如果三角面片的方向与化身或者摄像模块的观察方向(如,前文所述的一个固定观察角度)之间的角度小于η/2, 则认为该三角面片是可见的。三角面片组是与摄像模块相关的,即,对于不同固定观察角度的摄像模块,其三角面片组是不同的。图10示出了分别以不同的细分程度来表示球体的网
格模型MO、。1和Ml等。在一个实施方式中,三角面片组可以具有诸如TG的标识(ID)、该
TG所属的物体的ID、相关的摄像模块的ID、该三角面片组的最大深度和最小深度等属性。 需要说明的是,三角面片组只是用于物体网格模型的一个例子,实际上,诸如四边形面片组等的多边形面片组均可以在本发明的各实施方式中使用。图IlA示意性地示出了根据本发明的一个实施方式的用于执行渲染的示意图。在该实施方式中,以不同投影深度对场景进行渲染,以得到对应于不同投影深度的投影结果。 如图IlA所示,与例如摄像模块N对应的示例性场景包括图案彼此不同的物体1至5,其中物体1、物体2、物体4和物体5依次更加远离于虚拟世界中的摄像模块N,物体2与物体3 距摄像模块的距离相同。对于图IlA所示的情形,为了能够基于不同的投影深度来执行渲染,可以首先确定用于执行渲染的投影深度。在一个实施方式中,投影深度选择为使得能够在投影深度的数目尽可能少的情况下,对包括所有可能物体组合的场景执行渲染。对于图 IlA所示的场景,选择了所示的投影深度1至投影深度4。为此,可以以图IlA所示的投影深度执行渲染,从而得到与图IlA中所示的图像m至图像N4对应的四个彼此不同的渲染结果。图IlB示意性地示出了根据本发明的另一实施方式的用于执行渲染的示意图。在该实施方式中,与图IlA不同的是,在同一场景深度处存在多个物体的情况下,还进一步通过逐步去除该多个物体来执行渲染。换言之,如图IlB所示,针对每个固定观察角度,通过根据投影深度从该场景中逐步去除每个物体来进行渲染,以得到包括场景中不同物体组合的多个渲染结果。如图IlB所示,得到分别与图像N、N-U N-l-2、N_l_3、N_l_2_3和 N-1-2-3-4对应的渲染结果,其中图像N(对应于图IlA中的图像Ni)是包括所有物体的图像,图像N-I (对应于图IlA中的图像N2)是去除物体1的图像,图像N-1-2是去除了物体 1和物体2的图像,依此类推。从图IlA和图IlB的比较可以看出,图IlB中除与图IlA中对应的渲染结果之外,还包括与去除物体1和2是图像N-1-2以及去除物体1和3的图像 N-1-3对应的渲染结果。得到的渲染结果可以以适当的方式存储。图12示意性地示出了根据本发明的一个实施方式的三角面片组关系网络(TGRN) 的图示。在一个实施方式中,针对每个渲染代理(或者说针对每个摄像模块),以图12所示的TGRN的结构来存储渲染得到的结果。如图12所示的三角面片组网络是包括渲染节点的有向网络,渲染节点与渲染结果相关联,渲染节点之间的有向连线表示渲染结果之间的关系。在本发明的一个实施方式(例如图11A)中,渲染节点与不同投影深度的渲染结果相关联,有向连线表示投影深度的大小关系。例如,与父节点相关联的渲染结果的投影深度大于与子节点相关联的渲染结果的投影深度,或反之亦然。在本发明的另一个实施方式(例如图11B)中,渲染节点与包括场景中不同物体组合的渲染结果相关联,有向连线表示渲染结果所涉及的物体组合之间的关系。例如与父节点相关联的渲染结果包括的物体是与子结点相关联的渲染结果所包括的物体的子集,或反之亦然。每个渲染节点可以包括诸如节点代码、投影深度、相关的渲染结果或者是对渲染结果的引用等属性,还可以包括与该渲染节点相关的所有三角面片组以及与该渲染结果相关的物体的ID。存储在TGRN中的各渲染结果、三角面片组以及相关的物体是随着场景变动和/或替身移动而实时更新的。需要说明的是,图12所示的TGRN网络只是示例性的。对于其中物体数目大且关系错综复杂的场景, 该TGRN网络将会更加复杂。

在本发明的又一个实施方式中,在已经产生有渲染结果的情况下,在基于另一投影深度执行渲染时,可以针对不同投影深度的场景改变部分来执行渲染,从而得到变化的渲染结果,并将其存储在对应的渲染节点中。该实施方式的有益之处在于,能够显著降低执行渲染的计算量,并降低需要存储的渲染结果,因而节约了系统的计算资源和存储资源。图13示出了根据本发明的一个实施方式的用于确定适合于化身的固定观察角度的方法。如图13A所示,首先在场景中确定用于表示化身的观察角度的矢量V。然后,在该场景的外围空间表面上中找到一个点P,使得从该点P指向场景中心0的矢量与表示化身观察角度的矢量V平行。接着,可以在布置于场景的外围空间中的所有固定观察角度中选择例如三个固定观察角度Ni,Nj和Nk,使得点P位于这三个固定观察角度所在点形成的球面三角形上且该球面三角形在所有满足条件的球面三角形中面积最小。以此方式,就可以选择适合于该化身的三个固定观察角度。在需要选择两个固定观察角度的情况下,则可以从确定的这三个固定观察角度中选择两个。从而将从所选择的这至少两个观察角度生成的渲染结果作为用于形成流媒体的一部分渲染结果。需要说明的是,图13A和图13B给出的只是一个说明性的实例,根据本发明的教导,本领域技术人员可以设想到用于选择适当固定观察角度的若干不同的实施方式。例如, 可以寻找距点P位置最近的至少两个固定观察角度,或者与点P指向点0的矢量夹角最小的至少两个固定观察角度。另外,在本发明的另一个实施方式中,还可以在布置于场景的外围空间中的所有固定观察角度中确定四个或更多固定观察角度。需要说明的是,如果存在与化身的观察角度完全相同的固定观察角度,也可以只选择该固定观察角度,从而使得发送到客户端的数据量尽可能小。另外,在进一步针对每个固定观察角度以不同投影深度生成多个渲染结果的实施方式中,可以从对应于每个已选定固定观察角度的多个渲染结果中选择适合于该化身的一个渲染结果。在一个实施方式中,选择投影深度与化身的位置相适应的渲染结果。在另一个实施方式中,选择包括化身能够看到的物体组合的渲染结果。根据该实施方式,可以根据化身的位置确定化身能够看到的物体,然后从基于不同深度的渲染结果中找到恰好包括该化身能看到的所有物体的渲染结果。在另一个实施方式中,还选择不包括对于化身不可见的物体的渲染结果。根据该实施方式,可以首先根据化身的位置确定对于化身不可见的物体,然后从渲染结果中选择恰好去除了该不可见的物体的渲染结果。
在某实施方式中,节点代码的命名基于摄像模块编号、以及渲染结果不包括的物体的ID来命名。例如12所示,包括所有物体的渲染结果的节点代码被命名为N,而去除了物体1、物体1和2、物体1和3、物体1、2和3以及物体1、2、3和4的渲染节点的节点代码分别命名为N-I,N-l-2, N-l-3, N-1-2-3和N-1-2-3-4。根据该实施方式,可以首先确定适应于化身的摄像模块的编号,然后确定对该化身不可见的物体的编号。然后,可以通过在渲染节点中寻找代码编号恰好包括所确定的编号的渲染节点,从而来选择用于形成图像流的那部分渲染结果。在渲染节点存储的是变化渲染结果的实施方式中,还需进一步根据实现选择已选节点的前继节点或后继节点,以便得到对于与完整场景的图像的完整渲染结果。图14A示出了根据本发明的一个实施方式的用于显示虚拟世界图像流的流程图。 如图14A所示,首先在步骤S1401,接收来自服务器的虚拟世界场景的图像流。然后在步骤 S1402播放该图像流。如前所述,该图像流例如是MPG4或者H. 264格式的流媒体,因此只要是能够兼容这两种格式中任一种或者两种的媒体播放器均可用来播放场景的图像流。图14B示出了根据本发明的另一实施方式的用于处理虚拟世界图像流的流程图。 在该实施方式中,在步骤S1401’在客户端处接收虚拟世界的场景的至少两个图像流,并在步骤S1403’,将该至少两个图像流合并 成用于播放的单个图像流(如后文将参照图15所述)。前述至少两个图像流是在所述虚拟世界中基于从至少一个固定观察角度对所述虚拟世界的所述场景进行渲染得到的多个渲染结果而生成的。在本发明的又一实施方式中,还可以进一步播放合成的单个图像流。图15示意性地示出了在根据本发明的一个实施方式中用于组合图像帧的图示。 在该图中示出了在时间上同步的两个图像帧1501和1502,它们分别来自说接收的两个图像流。可以理解,从服务器接收的图像流对应于固定观察角度,因此它们通常与化身本身的观察角度存在差异。因此,在一个实施方式中,首先将该至少两个图像流中在时间上同步的至少两个图像帧,分别转换成与该客户端的相应化身的观察角度相适应的至少两个转换图像帧,如图15中的图像帧1503和1504。从图15可以看出经过转换后,各个转换图像帧 1503和1504均对应于相同的观察角度(化身的观察角度),但是每个转换图像帧均存在像素缺失(如转换图像帧1503和1504中的黑色所示)。为了得到较为完整的播放图像帧,可以将转换图像帧1503和1504进行合成(如操作1505),从而得到用于播放的合成图像帧 1506。得到的合成图像帧1506综合了转换图像帧1503和1504所包括的图像信息,因此更加完整。优选地,可以通过其他图像处理技术对于合成图像帧中存在的少量缺失像素进行补偿,以得到更加完整的播放图像帧。需要说明的是,基于两个不同观察角度的图像来生成第三观察角度的图像的技术是已知的,在该领域通常称作虚拟视的生成,故在此不赘述。图16示意性地示出了根据本发明的一个示例性具体实现用于实现虚拟世界的系统架构的方框图。在该系统架构中,包括客户端和服务器,它们通过诸如互联网、电信网络的网络彼此通信。如图16所示,客户端包括Window输入模块、2D用户接口(UI)、消息处理器、媒体播放器和流合并器。Window输入模块用于接收来自用户的输入,诸如对化身进行控制的指令和相关数据。2D UI模块用于向用户显示媒体播放器播放的虚拟世界场景的图像。消息处理器用于接收来自Window输入模块的消息并将其通过网络发送到服务器,以及用来处理来自服务器的消息并在2D UI上显示。流合并器用于合并来自服务器的至少两个流媒体。 媒体播放器用于对流媒体进行解码,以便在2D UI上播放虚拟世界场景的图像。 如图16所示,服务器包括通信模块、消息处理器、资源管理器、渲染代理组、媒体管理器,流媒体生成器。渲染代理组包括k个渲染代理(RA. 1至RA. k)。在服务器中还包括用于存储相关数据的数据结构,例如3D场景描述和3D场景的TRGN(设置在相应的渲染代理中)。通信模块,负责处理网络层的通讯,接收来自客户端的指令和数据,并向客户端发送必要的指令和数据。消息处理器负责处理客户端发送过来的指令和数据,并且不同指令可以由不同消息处理器来处理。对于对3D场景有改变作用的指令,例如对物体的创建、修改、 删除,化身的创建、移动和退出等,消息处理器将根据程序逻辑更新3D场景数据。当化身在移动时,对应的消息处理器会通知流媒体管理器选择最合适的视频流发送给客户端。资源管理器用于管理物体模型和纹理等文件。3D场景描述是一个数据结构,它是对3D场景数据的全局描述,包含了场景中所有物体的元数据。该元数据包含对物体模型和纹理等文件的引用。在服务器可以包括多个渲染代理,每个渲染代理包含两个主要的功能模块,即,渲染引擎和TGRN生成器。TGRN生成器可以实现为一个独立的线程,在系统初始化阶段,它根据 3D场景描述中的元数据获得资源管理的3D模型数据,并由其生成原始3D场景的TGRN网络。而在运行时态,TGRN生成器实时检查3D场景描述是否被更新,如果有更新,则相应地更新3D场景的TGRN。渲染引擎也可以是一个独立的线程,它可以根据3D场景的TGRN网络, 来实时地对其中每个节点进行渲染,并将渲染结果记录在3D场景的TGRN网络的相应节点上。流媒体管理器根据化身的观察角度和位置动态地选择合适的渲染代理和适合的TGRN 节点,将对相应的渲染结果进行剪裁,然后通过流媒体生成器生成客户端支持的流媒体格式,最终将视频流提供给客户端。需要说明的是,图16示出的系统架构只是示例性的,本发明的各实施方式并不局限于此。在实际应用中,可以根据需求对其做出多种改变。例如渲染代理组可以实现在一台服务器上,也可以实现在多台服务器上,流媒体管理器和流媒体生成器也可以实现在单独的服务器上。另外,在渲染代理组实现于多台服务器上时,在每个渲染代理中包括与其位置和观察角度相对应的3D场景描述将是有利的,这是因为在场景发生变化时,可以发送简单的消息通知相应服务器来更新场景数据,而无需实时传送数据量巨大的场景数据,这降低了需要算传输的数据量。图17A和图17B示出了根据本发明的两个实施方式的用于提供虚拟世界的场景的图像的设备。如图17A所示,在一个实施方式中,设备1700包括渲染装置1701,用于对该虚拟世界的场景进行渲染以生成多个渲染结果;图像流生成装置1702,用于基于至少一部分该渲染结果生成图像流;以及发送装置1703,用于向客户端发送该图像流。在一个实施方式中,渲染装置1701被配置为在该虚拟世界中,从该客户端的相应化身的位置和观察角度,对该虚拟世界的场景进行渲染以生成该渲染结果。如图17B所示,在另一个实施方式中,设备1700’包括渲染装置1701’,被配置为在该虚拟世界中,从至少一个固定观察角度, 对该虚拟世界的场景进行渲染以生成该多个渲染结果;图像流生成装置1702’,用于基于至少一部分该渲染结果生成图像流;以及发送装置1703’,用于向客户端发送该图像流。在一个实施方式中,该至少一个固定观察角度包括多个固定观察角度,并且该多个固定观察角度被预先设置为是从分布在该场景的外围空间中的多个点各自朝向该场景的。在另一个实施方式中,设备1700’还包括观察角度选择装置1704’,用于从多个固定观察角度中,选择与该客户端的相应化身的观察角度尽可能接近的至少一个固定观察角度, 以便将从该至少一个固定观察角度生成的渲染结果作为该一部分渲染结果。在一个实施方式中,渲染装置1701’还进一步’被配置为分别以不同的投影深度对该场景进行渲染;并且设备1700’还包括渲染结果选择装置1704’,用于根据该相应化身在该虚拟世界中的位置, 从该多个渲染结果中选择投影深度与该位置对应的渲染结果作为该一部分渲染结果。在一个实施方式中,渲染装置1701’还被配置为针对与该不同投影深度对应的场景变化进行渲
^fe ο图18A示出 根据本发明的一个实施方式的用于显示虚拟世界的场景的图像的设备的方框图。如图18A所示,在一个实施方式中,设备1800包括接收装置1801,用于在客户端处接收该虚拟世界的场景的图像流,以及播放装置1802,用于播放该图像流。图18B示出了根据本发明的一个实施方式的用于处理虚拟世界的场景的图像的设备的方框图。如图18B所示,在该实施方式中,设备1800’包括接收装置1801’,用于在客户端处接收该虚拟世界的场景的至少两个图像流;以及合并装置1803’,用于将该至少两个图像流合并成单个图像流用于播放。此外,该设备还可以进一步包括播放装置,用于播放该图像流。在一个实施方式中,合并装置1803’包括转换装置1804’,用于将该至少两个图像流中的在时间上同步的至少两个图像帧分别转换成与该客户端的相应化身在该虚拟世界中的观察角度相适应的至少两个转换图像帧;以及组合装置1805’,用于将该至少两个转换图像帧组合成该单个图像流中的播放图像帧。前述至少两个图像流是在所述虚拟世界中基于从至少一个固定观察角度对所述虚拟世界的所述场景进行渲染得到的多个渲染结果而生成的。在本发明的一个实施方式中,还提供了一种用于实现虚拟世界的系统,该系统包括上述用于提供虚拟世界的场景的图像的设备1700和1700’中的任何一个,以及上述用于显示虚拟世界的场景的图像的设备1800或用于处理虚拟世界的场景的图像的设备 1800,。关于上述用于提供虚拟世界的场景的图像的设备1700、1700’、用于显示虚拟世界的场景的图像的设备1800、用于处理虚拟世界的场景的图像的设备1800’和用于实现虚拟世界的系统中的各个部件的详细操作,可以参考上文中结合图2至图18对用于提供虚拟世界的场景的图像的方法、用于显示虚拟世界的场景的图像的方法、用于处理虚拟世界的场景的图像的方法以及用于实现虚拟世界的系统架构的具体描述。图19示意性示出了可以实现根据本发明的实施方式的计算机设备的结构方框图。如图19所示,该计算机系统包括CPU(中央处理单元)1901、RAM(随机存取存储器)1902、R0M(只读存储器)1903、系统总线1904、硬盘控制器1905、键盘控制器1906、串行接口控制器1907、并行接口控制器1908、显示器控制器1909、硬盘1910、键盘1911、串行外部设备1912、并行外部设备1913和显示器1914。在这些部件中,与系统总线1904相连的有 CPU 1901、RAM1902、ROM 1903、硬盘控制器1905、键盘控制器1906、串行接口控制器1907、 并行接口控制器1908和显示器控制器1909。硬盘1910与硬盘控制器1905相连,键盘1911 与键盘控制器1906相连,串行外部设备1912与串行接口控制器1907相连,并行外部设备 1913与并行接口控制器1908相连,以及显示器1914与显示器控制器1909相连。图19所述的结构方框图仅仅为了示例的目的而示出的,并非是对本发明的限制。在一些情况下,可以根据需要添加或者减少其中的一些设备。本发明可以采取完全硬件实施方式、完全软件实施方式或既包含硬件组件又包含软件组件的实施方式的形式。在优选实施方式中,本发明实现为软件,其包括但不限于固件、驻留软件、微代码等。而且,本发明还可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,这些介质提供程序代码以供计算机或任何指令执行系统使用或与其结合使用。出于描述目的,计算机可用或计算机可读机制可以是任何有形的装置,其可以包含、存储、通信、传播或传输程序以由指令执行系统、装置或设备使用或与其结合使用。 介质可以是电的、磁的、光的、电磁的、红外线的、或半导体的系统(或装置或器件)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动计算机磁盘、随机访问存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。目前光盘的例子包括紧凑盘_只读存储器(CD-ROM)、压缩盘-读/写(CD-R/W)和DVD 。适合于存储/或执行程序代码的数据处理系统将包括至少一个处理器,其直接地或通过系统总线间接地耦合到存储器元件。存储器元件可以包括在程序代码的实际执行期间所利用的本地存储器、大容量存储器、以及提供至少一部分程序代码的临时存储以便减少执行期间从大容量存储器必须取回代码的次数的高速缓冲存储器。输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等等)可以直接地或通过中间I/O控制器耦合到系统。网络适配器也可以耦合到系统,以使得数据处理系统能够通过中间的私有或公共网络而耦合到其他数据处理系统或远程打印机或存储设备。调制解调器、线缆调制解调器以及以太网卡仅仅是当前可用的网络适配器类型的几个例子。从上述描述应当理解,在不脱离本发明真实精神的情况下,可以对本发明各实施方式进行修改、变更和组合。本说明书中的描述仅仅是用于说明性的,而不应被认为是限制性的。本发明的范围仅受所附权利要求书的限制。
权利要求
1.一种用于提供虚拟世界的场景的图像的方法,包括 对所述虚拟世界的场景进行渲染,以生成多个渲染结果; 基于至少一部分所述渲染结果生成图像流;以及向客户端发送所述图像流。
2.根据权利要求1所述的方法,其中所述对所述虚拟世界的场景进行渲染包括在所述虚拟世界中,从所述客户端的相应化身的位置和观察角度,对所述虚拟世界的所述场景进行渲染以生成所述多个渲染结果。
3.根据权利要求1所述的方法,其中所述对所述虚拟世界的场景进行渲染包括在所述虚拟世界中,从至少一个固定观察角度,对所述虚拟世界的所述场景进行渲染以生成所述多个渲染结果。
4.根据权利要求3所述的方法,其中所述至少一个固定观察角度包括多个固定观察角度,并且所述多个固定观察角度被预先设置为从分布在所述场景的外围空间中的多个点各自朝向所述场景。
5.根据权利要求3所述的方法,还包括从多个固定观察角度中,选择与所述客户端的相应化身的观察角度尽可能接近的至少一个固定观察角度,以便将从所述至少一个固定观察角度生成的渲染结果作为所述一部分渲染结果。
6.根据权利要求3至5其中任一项所述的方法,其中所述从至少一个固定观察角度,对所述虚拟世界的所述场景进行渲染还包括分别以不同的投影深度对所述场景进行渲染; 并且所述方法还包括根据所述相应化身在所述虚拟世界中的位置,从所述多个渲染结果中,选择投影深度与所述位置对应的渲染结果作为所述一部分渲染结果。
7.根据权利要求6所述的方法,其中所述以不同的投影深度对所述场景进行渲染还包括针对与所述不同投影深度对应的场景变化进行渲染。
8.一种用于处理虚拟世界的场景的图像的方法,包括在客户端处接收所述虚拟世界的场景的至少两个图像流,其中所述图像流是根据如权利要求1所述的方法生成;以及将所述至少两个图像流合并成单个图像流用于播放。
9.根据权利要求8所述的方法,其中所述合并包括将所述至少两个图像流中的在时间上同步的至少两个图像帧分别转换成与所述客户端的相应化身在所述虚拟世界中的观察角度相适应的至少两个转换图像帧;以及将所述至少两个转换图像帧组合成所述单个图像流中的播放图像帧。
10.根据权利要求8所述的方法,其中所述至少两个图像流是在所述虚拟世界中基于从至少一个固定观察角度对所述虚拟世界的所述场景进行渲染得到的多个渲染结果的一部分而生成的。
11.一种用于提供虚拟世界的场景的图像的设备,包括渲染装置,用于对所述虚拟世界的场景进行渲染,以生成多个渲染结果; 图像流生成装置,用于基于至少一部分所述渲染结果生成图像流;以及发送装置,用于向客户端发送所述图像流。
12.根据权利要求11所述的设备,其中所述渲染装置被配置为在所述虚拟世界中,从所述客户端的相应化身的位置和观察角度,对所述虚拟世界的所述场景进行渲染以生成所述渲染结果。
13.根据权利要求11所述的设备,其中所述渲染装置被配置为在所述虚拟世界中,从至少一个固定观察角度,对所述虚拟世界的所述场景进行渲染以生成所述多个渲染结果。
14.根据权利要求13所述的设备,其中所述至少一个固定观察角度包括多个固定观察角度,并且所述多个固定观察角度被预先设置为从分布在所述场景的外围空间中的多个点各自朝向所述场景。
15.根据权利要求13所述的设备,还包括观察角度选择装置,用于从多个固定观察角度中,选择与所述客户端的相应化身的观察角度尽可能接近的至少一个固定观察角度,以便将从所述至少一个固定观察角度生成的渲染结果作为所述一部分渲染结果。
16.根据权利要求13至15其中任一项所述的设备,其中所述渲染装置还被配置为分别以不同的投影深度对所述场景进行渲染;并且所述设备还包括渲染结果选择装置,用于根据所述相应化身在所述虚拟世界中的位置,从所述多个渲染结果中选择投影深度与所述位置对应的渲染结果作为所述一部分渲染结果。
17.根据权利要求16所述的设备,其中所述渲染装置还被配置为针对与所述不同投影深度对应的场景变化进行渲染。
18.一种用于处理虚拟世界的场景的图像的设备,包括接收装置,用于在客户端接收所述虚拟世界的场景的至少两个图像流,其中所述图像流是由如权利要求11所述的设备生成;以及合并装置,用于将所述至少两个图像流合并成单个图像流用于播放。
19.根据权利要求18所述的设备,其中所述合并装置包括转换装置,用于将所述至少两个图像流中的在时间上同步的至少两个图像帧分别转换成与所述客户端的相应化身在所述虚拟世界中的观察角度相适应的至少两个转换图像帧; 以及组合装置,用于将所述至少两个转换图像帧组合成所述单个图像流中的播放图像帧。
20.根据权利要求18所述的设备,其中所述至少两个图像流是在所述虚拟世界中基于从至少一个固定观察角度对所述虚拟世界的所述场景进行渲染得到的多个渲染结果的一部分而生成的。
21.一种用于实现虚拟世界的系统,包括根据权利要求11至17中任一项所述的用于提供虚拟世界的场景的图像的设备,以及根据权利要求18至20其中任一项所述的用于处理虚拟世界的场景的图像的设备。
全文摘要
公开了一种用于提供虚拟世界的场景的图像的方法。该方法包括对该虚拟世界的场景进行渲染,以生成多个渲染结果;基于至少一部分渲染结果生成图像流;以及向客户端发送该图像流。通过该方法,可以在轻量级的客户端提供对虚拟世界的场景的图像的实时显示。在一种实施方式中,针对至少一个固定观察角度执行渲染,并从中选择适合于相应化身的渲染结果以生成用于发送到客户端的图像流,从而服务器执行渲染的计算量与客户端数目无关,进一步提高服务器性能和可扩展性。还公开了用于提供虚拟世界的场景的图像的设备、用于处理虚拟世界的场景的图像的方法和设备以及用于实现该虚拟世界的系统。
文档编号H04N21/238GK102196300SQ20101012920
公开日2011年9月21日 申请日期2010年3月18日 优先权日2010年3月18日
发明者兰东俊, 朱子玉, 李起成, 王健, 王宜敏 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1