发明内容
本申请实施例提供了一种画面展示方法、信息生成方法、装置、设备及存储介质,可以提高虚拟场景的渲染效率。所述技术方案如下:
一方面,提供了一种画面展示方法,所述方法包括:
获取目标视角,所述目标视角是对虚拟场景进行观察的相机视角;所述虚拟场景对应有高概率视角集合,所述高概率视角集合中包含在所述虚拟场景中的访问概率大于概率阈值的相机视角;
响应于所述目标视角属于所述高概率视角集合,获取所述高概率视角集合对应的模型可见性信息;所述模型可见性信息用于指示所述虚拟场景中的各个场景模型在所述高概率视角集合下未被遮挡的模型部分;
将所述模型可见性信息指示的模型部分的渲染数据提交至渲染组件,以通过所述渲染组件渲染所述虚拟场景的场景画面;
展示所述虚拟场景的场景画面。
一方面,提供了一种信息生成方法,所述方法包括:
获取虚拟场景对应的高概率视角集合,所述高概率视角集合中包含在所述虚拟场景中的访问概率大于概率阈值的相机视角;
基于所述高概率视角集合,确定可见模型部分指示信息,所述可见模型部分指示信息用于指示所述虚拟场景中的各个场景模型在所述高概率视角集合下未被遮挡的模型部分;
生成所述高概率视角集合对应的模型可见性信息;所述模型可见性信息用于指示虚拟场景展示设备在目标视角属于所述高概率视角集合时,将所述模型可见性信息指示的模型部分的渲染数据提交至渲染组件;所述目标视角是对虚拟场景进行观察的相机视角。
另一方面,提供了一种画面展示装置,所述装置包括:
视角获取模块,用于获取目标视角,所述目标视角是对虚拟场景进行观察的相机视角;所述虚拟场景对应有高概率视角集合,所述高概率视角集合中包含在所述虚拟场景中的访问概率大于概率阈值的相机视角;
可见性信息获取模块,用于响应于所述目标视角属于所述高概率视角集合,获取所述高概率视角集合对应的模型可见性信息;所述模型可见性信息用于指示所述虚拟场景中的各个场景模型在所述高概率视角集合下未被遮挡的模型部分;
渲染模块,用于将所述模型可见性信息指示的模型部分的渲染数据提交至渲染组件,以通过所述渲染组件渲染所述虚拟场景的场景画面;
展示模块,用于展示所述虚拟场景的场景画面。
在一种可能的实现方式中,所述场景模型由至少两个多边形构成;所述模型可见性信息包括所述未被遮挡的模型部分的多边形可见信息,以及,所述未被遮挡的模型部分的多边形的顶点可见信息。
在一种可能的实现方式中,所述多边形可见信息包含所述未被遮挡的模型部分中的多边形的索引区间;
所述顶点可见信息包含所述未被遮挡的模型部分中的多边形顶点的索引区间。
在一种可能的实现方式中,所述装置还包括:
画面渲染模块,用于响应于所述目标视角属于所述高概率视角集合,基于所述虚拟场景的场景模型渲染所述虚拟场景的场景画面。
另一方面,提供了一种信息生成装置,所述装置包括:
视角集合获取模块,用于获取虚拟场景对应的高概率视角集合,所述高概率视角集合中包含在所述虚拟场景中的访问概率大于概率阈值的相机视角;
指示信息获取模块,用于基于所述高概率视角集合,确定可见模型部分指示信息,所述可见模型部分指示信息用于指示所述虚拟场景中的各个场景模型在所述高概率视角集合下未被遮挡的模型部分;
可见性信息生成模块,用于生成所述高概率视角集合对应的模型可见性信息;所述模型可见性信息用于指示虚拟场景展示设备在目标视角属于所述高概率视角集合时,将所述模型可见性信息指示的模型部分的渲染数据提交至渲染组件;所述目标视角是对虚拟场景进行观察的相机视角。
在一种可能的实现方式中,所述场景模型由至少两个多边形构成;所述模型可见性信息包括所述未被遮挡的模型部分的多边形可见信息,以及,所述未被遮挡的模型部分的多边形的顶点可见信息。
在一种可能的实现方式中,所述指示信息获取模块,包括:
数组获取子模块,用于获取各个所述场景模型在所述高概率视角集合下的多边形可见性数组,作为所述可见模型部分指示信息;所述多边形可见性数组用于指示各个所述场景模型中的多边形分别在所述高概率视角集合下是否可见。
在一种可能的实现方式中,所述多边形可见性数组中包含各个所述场景模型中的多边形分别对应的数值;
所述数组获取子模块,包括:
多边形获取单元,用于获取目标多边形,所述目标多边形是目标场景模型包含的各个多边形中,在第一相机视角下处于可见状态的多边形;所述目标场景模型是各个所述场景模型中,在所述第一相机视角下被遮挡的场景模型;所述第一相机视角是所述高概率视角集合中任意一个相机视角;
数值设置单元,用于将所述多边形可见性数组中,对应所述目标多边形的数值设置为指定数值。
在一种可能的实现方式中,所述装置还包括:
模型筛选单元,用于获取目标多边形之前,从各个所述场景模型中筛选出满足遮挡条件的第一类型场景模型,以及满足被遮挡条件的第二类型场景模型;
目标确定单元,用于将所述第二类型场景模型中,在第一相机视角下被所述第一类型场景模型遮挡的场景模型,确定为所述目标场景模型。
在一种可能的实现方式中,所述多边形获取单元,用于,
对所述目标场景模型中的各个多边形的顶点进行编号;
基于所述各个多边形的顶点的编号,为所述各个多边形的顶点赋予不同的颜色值;
基于所述第一相机视角,对所述目标场景模型进行顶点着色渲染,获得所述目标场景模型对应的顶点着色渲染图像;
基于所述顶点着色渲染图像中各个像素点上的颜色值,获取所述各个多边形的顶点中的可见顶点;
基于所述各个多边形的顶点中的可见顶点,获取所述目标多边形。
在一种可能的实现方式中,所述可见性信息生成模块,包括:
排序子模块,用于基于所述多边形可见性数组,对各个所述场景模型的多边形进行排序;所述高概率视角集合下可见的多边形,在排序后的各个所述场景模型的多边形中是连续的;
第一信息获取子模块,用于基于多边形索引编号结果,获取所述未被遮挡的模型部分的多边形可见信息;所述多边形索引编号结果是对排序后的各个所述场景模型的多边形的索引进行顺序编号的结果;所述多边形可见信息包含所述未被遮挡的模型部分中的多边形的索引区间;
第二信息获取子模块,用于基于多边形顶点索引编号结果,获取所述未被遮挡的模型部分的顶点可见信息;所述多边形顶点索引编号结果是对排序后的各个所述场景模型的多边形中的顶点的索引进行顺序编号的结果;所述顶点可见信息包含所述未被遮挡的模型部分中的多边形顶点的索引区间;
可见性信息生成子模块,用于将所述未被遮挡的模型部分的多边形可见信息,以及所述未被遮挡的模型部分的顶点可见信息,获取为所述高概率视角集合对应的模型可见性信息。
另一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行以实现如上述方面所述的方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现如上述方面所述的方法。
另一方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面所述的方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
预先生成虚拟场景中,在高概率视角集合下未被遮挡的模型部分的指示信息,在虚拟场景渲染过程中,当用户的目标视角处于高概率视角集合时,对高概率视角集合下未被遮挡的模型部分进行渲染,而被遮挡的模型部分则不需要提交渲染,相应的,也就不需要对被遮挡的模型部分进行顶点着色,从而在大部分情况下能够减少渲染过程中的顶点着色的步骤,进而提高对虚拟场景的渲染效率。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
应当理解的是,在本文中提及的“若干个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
请参考图1,其示出了本申请一示例性实施例提供的虚拟场景开发及展示***的架构图。如图1所示,该虚拟场景开发及展示***包含开发端设备110以及虚拟场景展示设备120。
上述开发端设备110可以是虚拟场景的开发者/运营者对应的计算机设备。
虚拟场景开发完成后,虚拟场景的渲染相关的数据可以存储或更新到虚拟场景展示设备120中。
虚拟场景展示设备120,是运行虚拟场景对应的应用程序的计算机设备。其中,当虚拟场景展示设备120是用户终端时,该应用程序可以是客户端程序;当虚拟场景展示设备120是服务器时,该应用程序可以是服务端程序/云端程序。
虚拟场景是指应用程序在终端上运行时显示(或提供)的虚拟场景。该虚拟场景可以是对真实世界的仿真环境场景,也可以是半仿真半虚构的三维环境场景,还可以是纯虚构的三维环境场景。虚拟场景可以是二维虚拟场景、2.5维虚拟场景和三维虚拟场景中的任意一种,下述实施例以虚拟场景是三维虚拟场景来举例说明,但对此不加以限定。
对于三维的虚拟场景来说,为了提高更好的使用体验,通常允许用户在较大的范围内调整其观察虚拟场景的视角。然而,在很多虚拟场景(比如自走棋游戏场景)下,各个用户观察虚拟场景的视角通常会集中在一小部分视角中,并且很少进行视角的调整。也就是说,在这些虚拟场景中,图形渲染时所用的视角参数往往集中在一个或者两个较小的空间,比如,只有小于20%甚至小于1%的全场景概览视角,而其它时刻的视角固定在某个位置。在这种虚拟场景中,如果能够将视角参数归类到一个或者少量的稀疏的集合中,则小范围视角带来的可见性信息的连续性可以被用来预计算出视角参数集合对应的场景可见集。基于这个理论,本申请各个实施例提出一种通过预计算视角参数对应的场景模型可见集,在虚拟场景展示时,当视角参数满足条件时,通过预先计算出的场景模型可见集来提交渲染,以减少对被遮挡的模型的顶点着色,从而提高渲染效率。
上述方案分为离线部分和在线部分,其中,离线部分负责预计算视角参数对应的场景模型可见集的相关信息,在线部分负责在虚拟场景运行过程中,在特定的视角参数下根据场景模型可见集的相关信息提交渲染。
其中,离线部分可以由开发端设备110执行,该部分可以包括:获取虚拟场景对应的高概率视角集合,该高概率视角集合中包含在该虚拟场景中的访问概率大于概率阈值的相机视角;基于该高概率视角集合,确定可见模型部分指示信息,该可见模型部分指示信息用于指示该虚拟场景中的各个场景模型在该高概率视角集合下未被遮挡的模型部分;生成该高概率视角集合对应的模型可见性信息;该可见性信息用于指示虚拟场景展示设备在目标视角属于该高概率视角集合时,将该可见性信息指示的模型部分的渲染数据提交至渲染组件;该目标视角是对虚拟场景进行观察的相机视角。
上述在线部分可以由虚拟场景展示设备120执行,该部分可以包括:获取目标视角,该目标视角是对虚拟场景进行观察的相机视角;该虚拟场景对应有高概率视角集合,该高概率视角集合中包含在该虚拟场景中的访问概率大于概率阈值的相机视角;响应于该目标视角属于该高概率视角集合,获取该高概率视角集合对应的模型可见性信息;该模型可见性信息用于指示该虚拟场景中的各个场景模型在该高概率视角集合下未被遮挡的模型部分;将该可见性信息指示的模型部分的渲染数据提交至渲染组件,以通过该渲染组件渲染该虚拟场景的场景画面;该子模型信息包括该可见性信息指示的模型部分的渲染数据;展示该虚拟场景的场景画面。
在上述方案中,预先生成虚拟场景中,在高概率视角集合下未被遮挡的模型部分的指示信息,在虚拟场景渲染过程中,当用户的目标视角处于高概率视角集合时,对高概率视角集合下未被遮挡的模型部分进行渲染,而被遮挡的模型部分则不需要提交渲染,相应的,也就不需要对被遮挡的模型部分进行顶点着色,从而在大部分情况下能够减少渲染过程中的顶点着色的步骤,从而提高对虚拟场景的渲染效率。
请参考图2,其示出了本申请一示例性实施例提供的虚拟场景中的信息生成以及画面展示方法的流程图。该方法可以由计算机设备执行,该计算机设备可以是图1所示***中的开发端设备110和虚拟场景展示设备120。如图2所示,该方法可以包括如下步骤:
步骤201,开发端设备获取虚拟场景对应的高概率视角集合,该高概率视角集合中包含在该虚拟场景中的访问概率大于概率阈值的相机视角。
在本申请实施例中,上述虚拟场景对应的高概率视角集合可以包含一个,也可以包含多个,且多个高概率视角集合两两之间不存在交集。比如,可以包含两个没有交集的高概率视角集合。
上述高概率视角集合中可以包含一个或多个被高概率访问的相机视角。其中,一个相机视角被访问,是指该虚拟场景的运行过程中,观察看虚拟场景的相机视角被设置(可以是***默认设置,也可以是根据用户的视角调整操作进行设置)为该相机视角。
在一种可能的实现方式中,上述高概率视角集合可以由开发人员/运营人员进行人工设置。
在另一种可能的实现方式中,上述高概率视角集合也可以由开发端设备分析统计获得的。
比如,开发端设备可以获取该虚拟场景的运行记录,并基于该虚拟场景的运行记录,统计虚拟场景对应的各个相机视角被访问的概率,并将各个相机视角中,被访问的概率高于概率阈值的相机视角加入上述高概率视角集合。此时,上述概率阈值可以是由开发人员预先设置在开发端设备中。
其中,一个相机视角被访问的概率,可以是该相机视角被访问的次数,与虚拟场景中的各个相机视角被访问的总次数之间的比值。
开发端设备获取到高概率视角集合之后,即可以基于该高概率视角集合,确定可见模型部分指示信息,该可见模型部分指示信息用于指示该虚拟场景中的各个场景模型在该高概率视角集合下未被遮挡的模型部分。该过程可以参考下述步骤202,以及步骤202下的描述。
步骤202,开发端设备获取各个该场景模型在该高概率视角集合下的多边形可见性数组,作为该可见模型部分指示信息;该多边形可见性数组用于指示各个该场景模型中的多边形分别在该高概率视角集合下是否可见。
在三维虚拟场景中,一个虚拟场景中可以包含多个场景模型,比如建筑、虚拟角色、虚拟地形等等。场景模型由至少两个多边形构成;比如,在通常情况下,一个在场景模型可以由若干个三角形构成,且相邻三角形之间具有共同的边。各个三角形通过边相接,共同组成一个场景模型的外表面。
在本申请实施例中,基于场景模型由多边形构成的原理,可以确定场景模型中各个多边形在高概率视角集合下是否可见,以便在高概率视角集合下,对不可见的多边形进行剔除,从而达到将场景模型在高概率视角集合下被遮挡的部分进行提取的效果。
在一种可能的实现方式中,该多边形可见性数组中包含各个该场景模型中的多边形分别对应的数值。
其中,上述获取各个该场景模型在该高概率视角集合下的多边形可见性数组的过程可以如下:
获取目标多边形,该目标多边形是目标场景模型包含的各个多边形中,在第一相机视角下处于可见状态的多边形;该目标场景模型是各个该场景模型中,在该第一相机视角下被遮挡的场景模型;该第一相机视角是该高概率视角集合中任意一个相机视角;
将该多边形可见性数组中,对应该目标多边形的数值设置为指定数值。
在本申请实施例中,开发端设备可以通过一个数组来表示虚拟场景中各个场景模型在高概率视角集合下是否可见,比如,该数组的长度可以是虚拟场景中各个场景模型所包含的多边形的个数,其中每个数值表示一个多边形在高概率视角集合下是否可见,例如,对于在高概率视角集合下可见的多边形,该多边形在数组中的数值可以为1,否则为0。
在一种可能的实现方式中,获取目标多边形之前,该方法还包括:
从各个该场景模型中筛选出满足遮挡条件的第一类型场景模型,以及满足被遮挡条件的第二类型场景模型;
将该第二类型场景模型中,在第一相机视角下被该第一类型场景模型遮挡的场景模型,确定为该目标场景模型。
在虚拟场景中,通常会同时存在多个场景模型,并且,在单个视角下,多个场景模型中可能存在部分模型被遮挡,而其它模型则没有被遮挡。如果对虚拟场景中所有场景模型中的多边形都进行可见性检测,则会引入较高的计算量,影响离线剔除的效率。
对此,在本申请实施例中,在获取目标相机视角下的目标多边形之前,可以首先确定出在该目标相机视角下,虚拟场景中哪些场景模型被其它场景模型遮挡,并将被遮挡的场景模型确定为上述目标场景模型,后续在获取目标多边形时,仅针对被遮挡的场景模型执行获取目标多边形的步骤,而其它未被遮挡的场景模型中的多边形,均视为在该目标相机视角下可见,而被遮挡的场景模型中,除了目标多边形之外的其它多边形可以视为不可见。
也就是说,在上述多边形可见性数组中,被遮挡的场景模型中的目标多边形对应的数值,以及未被遮挡的场景模型中各个多边形对应的数值可以设置为1,而被遮挡的场景模型中的目标多边形之外的多边形对应的数值则可以设置为0。
在一种可能的实现方式中,上述获取目标多边形的过程可以如下:
对该目标场景模型中的各个多边形的顶点进行编号;
基于该各个多边形的顶点的编号,为该各个多边形的顶点赋予不同的颜色值;
基于该第一相机视角,对该目标场景模型进行顶点着色渲染,获得该目标场景模型对应的顶点着色渲染图像;
基于该顶点着色渲染图像中各个像素点上的颜色值,获取该各个多边形的顶点中的可见顶点;
基于该各个多边形的顶点中的可见顶点,获取该目标多边形。
在本申请实施例中,可以通过离线渲染的方式,确定场景模型中哪些多边形可见,哪些多边形不可见。比如,开发者设备对一个场景模型中每个多边形的顶点赋予不同的颜色值,然后根据之前设置好的渲染相关参数,对场景模型进行顶点着色,得到顶点着色的图像,其中,可见的多边形的顶点将会被映射到图像中,此时,开发者设备再遍历图像中每个像素点的颜色值,就可以将遍历到的颜色值对应的顶点,确定为可见的顶点,再通过可见的顶点,即可以得到场景模型中可见的多边形。
其中,在实际应用时,各个场景模型中的多边形可以是三角形,各个三角形之间可能会具有共用顶点的情况,在这种情况下,程序可以把共同顶点拆开作为不共用的顶点,拆开的顶点虽然有重合的顶点位置,但是会各自有各自所属三角形对应的顶点颜色,由于把共同顶点进行拆开的过程是为了求解所属三角形的可见性,在得到对应的可见性信息之后,可以对临时创建的模型进行丢弃,所以不会影响最终展示的模型的拓扑结构。由于在进行渲染时关闭了多重采样反走样功能,这样同一像素点的颜色不会出现两个颜色进行混合的情况,若三角形小于一个像素点,则该三角形可能被隐藏。但在预计算的时候渲染分辨率可以是最终渲染时分辨率的几倍大,因此,对共同顶点设置不同的颜色不会对后续解码出顶点编号产生影响。
在本申请实施例中,开发者设备可以根据三角形编号重新组织模型的顶点数组,并赋予每个三角形确定的顶点颜色,编号index向颜色color的编码方式如下公式:
其中color由红绿蓝三个通道组成,为0到255的值。对应的可以得到颜色color向编号index的解码方式,如下公式:
index(color)=colorblue×2562+colorgreen×256+colorred-1
开发端设备可以基于多边形可见性数组,生成该高概率视角集合对应的模型可见性信息;其中,该模型可见性信息用于指示该虚拟场景中的各个场景模型在该高概率视角集合下未被遮挡的模型部分。生成模型可见性信息的过程可以参考下述步骤203至步骤206的描述。
步骤203,开发端设备基于该多边形可见性数组,对各个该场景模型的多边形进行排序;该高概率视角集合下可见的多边形,在排序后的各个该场景模型的多边形中是连续的。
在本申请实施例中,为了提高后虚拟场景展示过程中,在一个高概率视角集合对应的子模型进行渲染提交的效率,开发端设备可以根据多边形可见性数组,对虚拟场景中各个场景模型的多边形的相关数据(包括多边形数组和顶点数组)进行重新排序,也就是说,将各个多边形的属于同一个高概率视角集合下可见的多边形的相关数据排列在一起,从而方便后续提交过程中快速查询要提交的渲染数据。
步骤204,开发端设备基于多边形索引编号结果,获取该未被遮挡的模型部分的多边形可见信息;该多边形索引编号结果是对排序后的各个该场景模型的多边形的索引进行顺序编号的结果;该多边形可见信息包含该未被遮挡的模型部分中的多边形的索引区间。
在本申请实施例中,为了提高后续提交渲染时的查询效率,还可以按照上述步骤203中的排序结果,对多边形的索引进行重新编号,以便后续查询高概率视角集合对应的多边形数组。
步骤205,开发端设备基于多边形顶点索引编号结果,获取该未被遮挡的模型部分的顶点可见信息;该多边形顶点索引编号结果是对排序后的各个该场景模型的多边形中的顶点的索引进行顺序编号的结果;该顶点可见信息包含该未被遮挡的模型部分中的多边形顶点的索引区间。
与多边形的索引类似的,在本申请实施例中,还可以按照上述步骤203中的排序结果,对多边形的顶点的索引进行重新编号,以便后续查询高概率视角集合对应的顶点数组。
步骤206,开发端设备将该未被遮挡的模型部分的多边形可见信息,以及该未被遮挡的模型部分的顶点可见信息,获取为该高概率视角集合对应的模型可见性信息。
也就是说,在本申请实施例中,开发端设备在离线阶段,以多边形和多边形的顶点为粒度,针对高概率视角集合,对虚拟场景中被遮挡的模型部分进行剔除,留下未被震荡的模型部分,作为该虚拟场景对应在高概率视角集合下的子模型。
本申请实施例所示的方案中,开发端设备可以提供渲染引擎工具插件,从而给图形渲染开发流程提供支持。开发人员可以在引擎中设置预计算参数(包含上述高概率视角集合),打开场景并调用预计算命令,即可完成对模型场景的预计算阶段。
其中,在预计算参数的设置界面中可以包含各个视角参数集的相机设置部分,还可以包含该视角参数集中相机可能的变换信息集合。此外,为了便于后续通过渲染的方式来确定未被遮挡的模型部分,还可以进一步设置渲染相关的参数,比如设置在预计算过程中用来绘制顶点颜色的着色器、渲染分辨率集合、以及渲染的精度倍率等等。
图3是本申请实施例涉及的一种预计算参数设置界面的示意图。如图3所示,相机模式A(Camera Pattern A)31是第一个视角参数集的相机设置部分,变换信息A(Transforms A)32包含第一个视角参数集中相机可能的变换信息集合。同样的,相机模式B(Camera Pattern B)以及变换信息B(Transforms B)是第二个视角参数集的相关设置。顶点颜色着色器(Color Shader)33是在预计算过程中用来绘制顶点颜色的着色器。渲染分辨率(Screen Size)34是两个视角参数集公用的渲染分辨率集合。精度倍率(AccuracyTimes)35用来设置预计算是渲染的精度倍率。
完成设置之后,打开需要预计算的场景,图4是本申请实施例涉及的引擎菜单栏示意图。如图4所示,通过引擎的菜单栏41可以调用预计算命令和调试命令。
调试窗口命令打开之后,引擎可以展示一个调试窗口,图5是本申请实施例涉及的一种调试窗口示意图。如图5所示,在窗口中可以显示相关弹窗51,相关弹窗51中可以显示当前虚拟场景拥有不同的场景模型的数量。
在编辑器中点击不同的按钮,则会根据不同的筛选规则展示场景中的模型,以提供开发人员查看在当前场景中遮挡物和被遮挡物是否筛选正确。
在预计算完成之后,运行场景,可以在相机对象中找到执行预计算的组件。在该组件的上下文菜单中可以包含对各个视角参数集进行被遮挡的模型部分剔除的操作。上述组件提供了代码上的接口,也可以向开发人员提供从其他逻辑脚本触发预计算参数的方法。
图6是本申请实施例涉及的一种剔除控制界面。如图6所示,在相机对象中的“VRIBO控制”组件对应的上下文菜单61中有“STA”、“STB”和“RM”按钮控件,用户点击上述按钮控件分别可以启用场景在A视角下的剔除、在B视角下的剔除以及不剔除。组件提供了代码上的接口,也提供给开发人员从其他逻辑脚本触发子模型设置的方法。
其中,在生成上述高概率视角集合对应的模型可见性信息之后,开发者设备即可以将高概率视角集合,以及高概率视角集合对应的模型可见性信息,作为虚拟场景的渲染数据的一部分,或者,作为虚拟场景的关联数据,部署至虚拟场景展示设备中。
步骤207,虚拟场景展示设备获取目标视角,该目标视角是对虚拟场景进行观察的相机视角;该虚拟场景对应有高概率视角集合,该高概率视角集合中包含在该虚拟场景中的访问概率大于概率阈值的相机视角。
在本申请实施例中,虚拟场景展示设备在展示虚拟场景的过程中,可以获取当前时刻的观察虚拟场景的相机视角,得到目标视角。
步骤208,虚拟场景展示设备响应于该目标视角属于该高概率视角集合,获取该高概率视角集合对应的模型可见性信息;该模型可见性信息用于指示该虚拟场景中的各个场景模型在该高概率视角集合下未被遮挡的模型部分。
虚拟场景展示设备可以检测该目标视角是否属于高概率视角集合,若是,则处理器(比如CPU)可以将该高概率视角集合对应的子模型的渲染数据提交到渲染组件(比如GPU)进行渲染,这样渲染组件也只需要对可见的子模型进行顶点着色,而不需要对虚拟场景中完整的场景模型进行顶点着色。在该步骤中,若该目标视角属于高概率视角集合,则虚拟场景展示设备可以获取该高概率视角集合对应的模型可见性信息。
其中,上述模型可见性信息,可以指示高概率视角集合下未被遮挡的模型部分对应的多边形的顶点索引和多边形索引,该模型可见性信息可以用于查询高概率视角集合下未被遮挡的模型部分对应的渲染数据。
步骤209,虚拟场景展示设备将该模型可见性信息指示的模型部分的渲染数据提交至渲染组件,以通过该渲染组件渲染该虚拟场景的场景画面。
由上述步骤可知,上述可见性信息包括该未被遮挡的模型部分的多边形可见信息,以及,该未被遮挡的模型部分的多边形顶点的可见信息。在本申请实施例中,虚拟场景展示设备可以通过多边形可见信息,读取高概率视角集合下未被遮挡的模型部分中的各个多边形对应的多变形数组,并读取未被遮挡的模型部分中的各个多边形顶点的顶点数组,并将读取到的多边形数组和顶点数组提交给渲染组件进行渲染,以渲染出高概率视角集合下的子模型。
步骤210,虚拟场景展示设备响应于该目标视角不属于该高概率视角集合,基于该虚拟场景的场景模型渲染该虚拟场景的场景画面。
在本申请实施例中,如果该目标视角不属于高概率视角集合,则虚拟场景展示设备中的处理器可以将虚拟场景中各个场景模型的渲染数据提交给渲染组件进行渲染,以保证非高概率视角集合对应的相机视角下的正常显示。
步骤211,虚拟场景展示设备展示该虚拟场景的场景画面。
综上所述,本申请实施例所示的方案,预先生成虚拟场景中,在高概率视角集合下未被遮挡的模型部分的指示信息,在虚拟场景渲染过程中,当用户的目标视角处于高概率视角集合时,对高概率视角集合下未被遮挡的模型部分进行渲染,而被遮挡的模型部分则不需要提交渲染,相应的,也就不需要对被遮挡的模型部分进行顶点着色,从而在大部分情况下能够减少渲染过程中的顶点着色的步骤,从而提高对虚拟场景的渲染效率。
本申请上述图2对应的实施例所示的方案,可以分为三个方面,分别是:***设计、***预计算实现过程、***运行时实现过程。
一、***设计
设在场景渲染时,相机视角参数e的全集为Ue,p(e)为渲染时相机参数为e的活动概率。那么有:
∫e∈Uep(e)=1
根据视角e的频繁活动范围,创建不相交的两个稀疏视角集合,Se_1和Se_2,尽量使其覆盖高的活动概率p(Se_1)和p(Se_2)。这时令Seo=Ue-Se1-Se2,作为剔除条件不满足时的退化方案,活动概率为p(Se0)=1-p(Se1)-p(Se2)。
对于所有三角形集合Ut,定义其子集为St,定义某个视角e下的可见集为St(e)当视角e不确定时,可见性也不确定,我们认为此时的可见集为全集Ut,并在预计算阶段通过计算确定Se_1和Se_2的可见集St_e1和St_e2,得到:
之后创建四个集合St_1,St_2,St_3,St_4。使得:
将模型的顶点数组和索引数组按照St_1,St_2,St_3,St_4顺序重新排列,即可在不同视角集合下对模型不同子集进行提交渲染:
模型的顶点/三角形数组可视化示意图可以如图7所示。
在现代的图形学渲染管线中,向GPU(Graphics Processing Unit,图形处理器)提交渲染时,可以指定只绘制三角形数组中的一部分,也可以指定这部分三角形所对应了顶点数组的那个子区间,实现三角形剔除和顶点剔除。在实际的工程实现中,顶点也可以按照三角形重组的思路进行处理,让程序实现在Se_1和Se_2时同时进行三角形剔除和顶点剔除。完成预计算阶段之后,保存新的模型数据,并导出子模型的信息。
在运行时,通过在查询当前视角所处在的视角集,获取对应的可见集,将子模型的信息发送给GPU,即可在极低的消耗下完成对场景三角形和顶点的剔除。
二、***预计算实现过程
***的预计算实现流程图可以如图8所示。首先输入程序预计算配置(即步骤S81),然后,程序获取场景设置,得到场景、稀疏视角和预计算相关的各项设置,从而设置场景(即步骤S82)。之后将场景中的遮挡物和被遮挡物找出,按照场景三角形的索引顺序给所有顶点设置顶点颜色,关闭其他无关的渲染器;遍历视角集Se_1,渲染并计算St_e1的可见性;遍历视角集Se_2,渲染并计算St_e2的可见性(即步骤S83)。接着对场景的每个被遮挡物模型进行重组处理(即步骤S84),根据三角形可见性得到顶点可见性,根据可见性重组模型的顶点和三角形,重新关联三角形的顶点索引,输出重组后的模型文件并计算St_e1和St_e2的子模型信息(即步骤S85)。
以上过程中的主要步骤详细实现方案如下:
1)设置场景
这个步骤需要对场景进行设置,根据规则获取当前场景的遮挡物和被遮挡物,这里的遮挡物定义为在实时渲染时能够对其他模型造成遮挡的模型,可以筛选为静态且非半透明材质的模型;被遮挡物定义为可以在实时渲染中根据视角进行三角形剔除的模型,可以参考以下条件筛选:静态、非半透明材质、有足够的剔除价值等。
备份现有的场景和模型,关闭其他无关的渲染组件,将筛选得到的遮挡物和被遮挡物进行三角形编号,根据三角形编号重新组织模型的顶点数组,赋予每个三角形确定的顶点颜色,编号index向颜色color的编码方式如下公式:
其中color由红绿蓝三个通道组成,为0到255的值。对应的可以得到颜色color向编号index的解码方式,如下公式:
index(color)=colorblue×2562+colorgreen×256+colorred-1
2)计算视角集的可见性
这个步骤分别在视角参数集合Se_1和Se_2获取可见集St_e1和St_e2,以Se_1为例,输入s视角参数集合Se_1,输出St_e1,其三角形可见集的输出流程图可以如图9所示。首先,输入视角参数集合Se_1(即步骤S91),设置maxIndex为被遮挡物三角形总数(即步骤S92),然后初始化长度为maxIndex的result数组,全部设置为0(S93),然后遍历视角参数集合Se_1所有的视角参数,判断是否遍历完成Se_1所有的视角参数(即步骤S94),若没有遍历完Se_1所有的视角参数,则设置相机的视角参数(即步骤S95),然后,用绘制顶点颜色的着色器渲染当前场景(即步骤S96),接着回读渲染结果(即步骤S97),判断是否遍历完成帧缓冲区的每个像素(即步骤S98),若判断遍历完成帧缓冲区的每个像素后,执行步骤S94,若没有遍历完成帧缓冲区的每个像素,则将像素颜色解码为编号index(即步骤S99),然后,将数组result[index]设置为1(即步骤S910),接着继续执行步骤S98,若在执行步骤S94时,判断遍历完成Se_1所有的视角参数,则输出对应的三角形可见集St_e1(即步骤S911)。
在这个过程中,视角参数应包括相机的渲染分辨率、视口长宽比、视场角度、相机位置和空间旋转量。应注意在调用渲染之前,应该确保相机的多重采样反走样和高动态范围功能关闭,背景颜色被设置为黑色,并且将渲染目标设置为给定分辨率的渲染纹理中。
在回读渲染结果时,可以通过将当前活动渲染纹理设置为刚刚渲染使用的渲染纹理,再执行ReadPixels指令将数据从GPU端读取到CPU端,即可得到一个大小为渲染分辨率的颜色数组,由第1步中的解码公式即可得到像素点所对应的三角形。
3)对遮挡物模型进行重组
这个步骤是本申请的关键步骤,在经过第2步之后,程序获得两个关于场景三角形可见性的数组St_e1和St_e2,数组的长度皆为MaxIndex。将两个关于三角形的可见信息与原场景的模型的三角形索引数组拼合在一起得到的信息可视化图可以如图10所示,其中数据部分为随机数据。
以其中模型1为例,模型重组的过程包括以下几个步骤:
S1,从场景三角形可见性result中截取当前模型三角形可见性St_e1和St_e2
S2,根据模型三角形可见性计算模型顶点可见性Sv_e1和Sv_e2
S3,重新组合顶点数组
S4,重新组合三角形数组
S5,将三角形数组对应的顶点信息更新为新的顶点索引
S6,输出模型和子模型信息
请参考图11,其示出了本申请实施例涉及的一种顶点可见性输出示意图。由于三角形数组中存储的是三个一组的模型顶点索引,因此通过图11所示的方法即可通过St_e1获得顶点可见性Sv_e1。首先,输入模型以及模型的三角形可见信息(即步骤S1101),然后获取顶点总数为vertexCount(即步骤S1102),接着将初始化长度为vertexCount的数组St_e1全部设置为0(即步骤S1103),然后,判断是否遍历完成三角形可见信息数组(即步骤S1104),若没有遍历完成,则判断三角形是否可见(即步骤S1105),若判断为三角形不可见,则继续执行步骤S1104,若判断三角形可见,则取出该可见三角形的顶点索引a,b,c(即步骤S1106),然后将St_e1[a],St_e1[b]以及St_e1[c]设置为1(即步骤S1107),若判断遍历完成三角形可见信息数组,则输出顶点可见性数组Sv_e1(即步骤S1108)。
以三角形2为例,在第2步中程序得知该三角形在Se_1下可见,在Se_2下不可见,那么其对应的顶点4,顶点5,顶点6也在Se_1下可见,在Se_2下不可见。经过这个过程,可视化的可见集示意图可以如图12所示。其中顶点数组的顶点属性代表着每个顶点本身有的信息,可能包括顶点坐标、顶点的纹理坐标、顶点法线、顶点切线等,取决于模型三维建模时的导出数据,整个顶点属性数据连接起来就是顶点数组的实际内容。
为了能够在Se_1和Se_2下对顶点信息进行剔除,程序需要根据得到的Sv_e1和Sv_e2将整个顶点属性数组进行重新组合。顶点数据重新组合的方式与在***设计中给出的三角形数组重新组合方式相同。求解Sv_e1∩Sv_e2,设定顶点数组全集为Ut,并求解以下4个临时区间:
之后按照Sv1,Sv2,Sv3,Sv4顺序重新排列顶点数组,可以得到新的顶点数组,新的顶点数组的示意图可以如图13所示。可以看到经过重新组合之后,Sv_1、Sv_2、Sv_3、Sv_4对应的可见性分别是e1可见e2不可见、e1和e2都可见、e1不可见e2可见、e1和e2都不可见。
其中新的顶点数组的索引中有:
那么可以获得在Se_0、Se_1、Se_2下的顶点可见子区间VBO_e0、VBO_e1、VBO_e2如下公式。其中VBO为一个二元值,定义为{offset,count},offset是在顶点数组中的偏移,count是顶点数量。
用新的顶点数组索引顺序保存整个顶点数组,代替原有顶点数组,即完成对顶点数组的重组。
之后用相同的方法对三角形数组进行重新排序,重排后的三角形数组示意图可以如图14所示。
相同的能够得到:
以及在Se_0、Se_1、Se_2下的三角形可见子区间IBO_e0、IBO_e1、IBO_e2如下公式:
三角形数组的重组还需要考虑最后一个步骤,由于顶点数组进行重组,顶点所在的位置已经发生变化,需要重新映射。例如新的顶点索引数组第一个三角形对应的旧顶点索引为4,5,6,对应的三个顶点属性是E,F,G,但这三个顶点在新的顶点数组里面并不在4,5,6而是在0,1,2。需要通过根据顶点数组的变换关系反向映射。得到正确的索引0,1,2,重映射后的顶点索引示意图可以如图15所示。
完成映射之后用新的顶点索引取代三角形数组内容,保存整个三角形数组,完成对三角形数组的重组。
由于重组前的模型和重组后的模型的长度一样,且对于Se_0可见集Ut和Uv,故对于Se_0来说不需要额外保存数据,而对于Se_1和Se_2,需要保存的数据为:IBO_e1、VBO_e1和IBO_e2、VBO_e2。上述需要保存的数据,即为上述图2所示的实施例中,高概率视角集合对应的模型可见性信息。
将处理好的模型(包括重新排列编号后的顶点数组和三角形数组)取代原有模型,将子模型区间信息(即上述模型可见性信息)存于场景的渲染器脚本中,即可完成预计算过程。
三、***运行时实现过程
虚拟场景运行时实现过程示意图可以如图16所示。程序需要采集当前视角参数e(即步骤S1601),然后根据***设计章节中的稀疏视角集的定义与分类,计算对应的稀疏视角集(即步骤S1602),判断是否属于Se_1范围(即步骤S1603),若属于Se_1范围,则设置可见集为St_e1(即步骤S1604),若判断不属于Se_1范围,则判断是否属于Se_2范围(即步骤S1605),若属于Se_2范围,则设置可见集为St_e2(即步骤S1606),如果不属于Se_2范围,则设置可见集为St_e0(即步骤S1607),取出对应的VBO和IBO子区间信息,通过设置模型的子模型信息向GPU提交设置的可见集St_e1、St_e2以及St_e0,进行渲染(即步骤S1608)。
本申请提出了一种在稀疏视角参数下的场景三角形和顶点剔除方案,用低至可以忽略的运行时消耗和内存占用量换取较大的剔除率,适用于视角参数稀疏且对场景复杂度较高的图形产品,兼容运行在不同的引擎、设备和平台中。
本申请解决了业界已有方案不能解决的问题:在现有方案中,在CPU阶段进行动态剔除的方案均以模型为粗粒度,无法更精细地进行剔除;而对场景的静态剔除方案可以达到细粒度但由于视角空间自由度较大导致剔除率不高;以细粒度对模型进行动态剔除的过程均发生在GPU阶段,GPU带宽和像素着色器的消耗量仍较大,在顶点数量多的场景中带来无效优化。本申请提出了一种既能够在CPU端执行的动态剔除方案,又保证了超高的剔除精细度和剔除正确性,同时步带来额外的性能和空间消耗。
本申请方案中,理论上***的剔除收益为:
其中,|Ut|为确定量,要提高剔除***收益,应该尽量选择两个活动概率大且本身剔除率大的稀疏视角集Se_1和Se_2。例如在双人棋类对战游戏渲染中,相机频繁活动在棋手视角周边区域,设置Se_1和Se_2在这两个区域能够带来较好的剔除效果。在这一类型的场景中,由于相机参数的变化频率并不高,可以在场景的程序逻辑上优化剔除过程,即不需要每帧都重新计算相机参数视角集,可以在视角转变的时候进行一次性的设置。
另外,在一些有阴影渲染的场景中,可以将其中一个稀疏视角集设置为光源投影视角,也能够给阴影渲染阶段带来较大的提升。在渲染运行时通过设置阴影投射过程的代理模型,使得阴影渲染结果能够正确表现在画面上。
由于在预计算过程我们通过渲染并回读可见性的方式确定可见集,这里的剔除包含遮挡剔除、面剔除和视锥体剔除三种,剔除效果可观且无需再开启CPU视锥体剔除、PreZ剔除等功能,能够进一步降低***运行消耗。
本申请经过实际项目测试,在一个双人棋类游戏渲染中进行验证。相机参数集合为全场景,其中99%以上的参数集中在棋手双方视角周边,将Se_1和Se_2分别确定为双方棋手视角的可活动区域范围,采用若干设备的分辨率作为渲染分辨率进行预计算。得到的对比结果在两个场景中均有较大改进,测试结果如下表1(数据包含不能被剔除的部分动态物件等)所示:
表1
例如,场景2的A视角在剔除前的场景预览图可以如图17所示。完成剔除后,在自由视角下预览Sv_e1和Sv_e2时的场景预览图可以如图18所示。而相机实际渲染结果在剔除前后没有区别。
图19是本申请一个示例性实施例提供的画面展示装置的结构框图,该装置可以用于执行如上述图2所示的方法中,由虚拟场景展示设备执行的全部或者部分步骤。如图19所示,该装置包括:
视角获取模块1901,用于获取目标视角,所述目标视角是对虚拟场景进行观察的相机视角;所述虚拟场景对应有高概率视角集合,所述高概率视角集合中包含在所述虚拟场景中的访问概率大于概率阈值的相机视角;
可见性信息获取模块1902,用于响应于所述目标视角属于所述高概率视角集合,获取所述高概率视角集合对应的模型可见性信息;所述模型可见性信息用于指示所述虚拟场景中的各个场景模型在所述高概率视角集合下未被遮挡的模型部分;
渲染模块1903,用于将所述模型可见性信息指示的模型部分的渲染数据提交至渲染组件,以通过所述渲染组件渲染所述虚拟场景的场景画面;
展示模块1904,用于展示所述虚拟场景的场景画面。
在一种可能的实现方式中,所述场景模型由至少两个多边形构成;所述模型可见性信息包括所述未被遮挡的模型部分的多边形可见信息,以及,所述未被遮挡的模型部分的多边形的顶点可见信息。
在一种可能的实现方式中,所述多边形可见信息包含所述未被遮挡的模型部分中的多边形的索引区间;
所述顶点可见信息包含所述未被遮挡的模型部分中的多边形顶点的索引区间。
在一种可能的实现方式中,所述装置还包括:
画面渲染模块,用于响应于所述目标视角属于所述高概率视角集合,基于所述虚拟场景的场景模型渲染所述虚拟场景的场景画面。
综上所述,本申请实施例所示的方案,预先生成虚拟场景中,在高概率视角集合下未被遮挡的模型部分的指示信息,在虚拟场景渲染过程中,当用户的目标视角处于高概率视角集合时,对高概率视角集合下未被遮挡的模型部分进行渲染,而被遮挡的模型部分则不需要提交渲染,相应的,也就不需要对被遮挡的模型部分进行顶点着色,从而在大部分情况下能够减少渲染过程中的顶点着色的步骤,从而提高对虚拟场景的渲染效率。
图20是本申请一个示例性实施例提供的画面生成装置的结构框图,该装置可以用于执行如上述图2所示的方法中,由开发端设备执行的全部或者部分步骤。如图20所示,该装置包括:
视角集合获取模块2001,用于获取虚拟场景对应的高概率视角集合,所述高概率视角集合中包含在所述虚拟场景中的访问概率大于概率阈值的相机视角;
指示信息获取模块2002,用于基于所述高概率视角集合,确定可见模型部分指示信息,所述可见模型部分指示信息用于指示所述虚拟场景中的各个场景模型在所述高概率视角集合下未被遮挡的模型部分;
可见性信息生成模块2003,用于生成所述高概率视角集合对应的模型可见性信息;所述模型可见性信息用于指示虚拟场景展示设备在目标视角属于所述高概率视角集合时,将所述模型可见性信息指示的模型部分的渲染数据提交至渲染组件;所述目标视角是对虚拟场景进行观察的相机视角。
在一种可能的实现方式中,所述场景模型由至少两个多边形构成;所述模型可见性信息包括所述未被遮挡的模型部分的多边形可见信息,以及,所述未被遮挡的模型部分的多边形的顶点可见信息。
在一种可能的实现方式中,所述指示信息获取模块,包括:
数组获取子模块,用于获取各个所述场景模型在所述高概率视角集合下的多边形可见性数组,作为所述可见模型部分指示信息;所述多边形可见性数组用于指示各个所述场景模型中的多边形分别在所述高概率视角集合下是否可见。
在一种可能的实现方式中,所述多边形可见性数组中包含各个所述场景模型中的多边形分别对应的数值;
所述数组获取子模块,包括:
多边形获取单元,用于获取目标多边形,所述目标多边形是目标场景模型包含的各个多边形中,在第一相机视角下处于可见状态的多边形;所述目标场景模型是各个所述场景模型中,在所述第一相机视角下被遮挡的场景模型;所述第一相机视角是所述高概率视角集合中任意一个相机视角;
数值设置单元,用于将所述多边形可见性数组中,对应所述目标多边形的数值设置为指定数值。
在一种可能的实现方式中,所述装置还包括:
模型筛选单元,用于获取目标多边形之前,从各个所述场景模型中筛选出满足遮挡条件的第一类型场景模型,以及满足被遮挡条件的第二类型场景模型;
目标确定单元,用于将所述第二类型场景模型中,在第一相机视角下被所述第一类型场景模型遮挡的场景模型,确定为所述目标场景模型。
在一种可能的实现方式中,所述多边形获取单元,用于,
对所述目标场景模型中的各个多边形的顶点进行编号;
基于所述各个多边形的顶点的编号,为所述各个多边形的顶点赋予不同的颜色值;
基于所述第一相机视角,对所述目标场景模型进行顶点着色渲染,获得所述目标场景模型对应的顶点着色渲染图像;
基于所述顶点着色渲染图像中各个像素点上的颜色值,获取所述各个多边形的顶点中的可见顶点;
基于所述各个多边形的顶点中的可见顶点,获取所述目标多边形。
在一种可能的实现方式中,所述可见性信息生成模块,包括:
排序子模块,用于基于所述多边形可见性数组,对各个所述场景模型的多边形进行排序;所述高概率视角集合下可见的多边形,在排序后的各个所述场景模型的多边形中是连续的;
第一信息获取子模块,用于基于多边形索引编号结果,获取所述未被遮挡的模型部分的多边形可见信息;所述多边形索引编号结果是对排序后的各个所述场景模型的多边形的索引进行顺序编号的结果;所述多边形可见信息包含所述未被遮挡的模型部分中的多边形的索引区间;
第二信息获取子模块,用于基于多边形顶点索引编号结果,获取所述未被遮挡的模型部分的顶点可见信息;所述多边形顶点索引编号结果是对排序后的各个所述场景模型的多边形中的顶点的索引进行顺序编号的结果;所述顶点可见信息包含所述未被遮挡的模型部分中的多边形顶点的索引区间;
可见性信息生成子模块,用于将所述未被遮挡的模型部分的多边形可见信息,以及所述未被遮挡的模型部分的顶点可见信息,获取为所述高概率视角集合对应的模型可见性信息。
综上所述,本申请实施例所示的方案,预先生成虚拟场景中,在高概率视角集合下未被遮挡的模型部分的指示信息,在虚拟场景渲染过程中,当用户的目标视角处于高概率视角集合时,对高概率视角集合下未被遮挡的模型部分进行渲染,而被遮挡的模型部分则不需要提交渲染,相应的,也就不需要对被遮挡的模型部分进行顶点着色,从而在大部分情况下能够减少渲染过程中的顶点着色的步骤,从而提高对虚拟场景的渲染效率。
图21是根据一示例性实施例示出的一种计算机设备的结构示意图。该计算机设备可以实现为上述图1所示***中的开发端设备或者虚拟场景展示设备。
所述计算机设备2100包括中央处理单元(CPU,Central Processing Unit)2101、包括随机存取存储器(Random Access Memory,RAM)2102和只读存储器(Read-OnlyMemory,ROM)2103的***存储器2104,以及连接***存储器2104和中央处理单元2101的***总线2105。可选的,所述计算机设备2100还包括帮助计算机内的各个器件之间传输信息的基本输入/输出***2106,和用于存储操作***2113、应用程序2114和其他程序模块2115的大容量存储设备2107。
所述大容量存储设备2107通过连接到***总线2105的大容量存储控制器(未示出)连接到中央处理单元2101。所述大容量存储设备2107及其相关联的计算机可读介质为计算机设备2100提供非易失性存储。也就是说,所述大容量存储设备2107可以包括诸如硬盘或者光盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、闪存或其他固态存储其技术,CD-ROM、或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的***存储器2104和大容量存储设备2107可以统称为存储器。
计算机设备2100可以通过连接在所述***总线2105上的网络接口单元2111连接到互联网或者其它网络设备。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,中央处理器2101通过执行该一个或一个以上程序来实现图2所示的方法中,由开发端设备执行的全部或者部分步骤;或者,中央处理器2101通过执行该一个或一个以上程序来实现图2所示的方法中,由虚拟场景展示设备执行的全部或者部分步骤。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,该计算机可读存储介质可以是上述实施例中的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。该计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现如本申请上述各个实施例所述的方法。
可选地,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、固态硬盘(SSD,Solid State Drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各个实施例所述的方法。
本领域技术人员在考虑说明书及实践这里公开的方案后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的保护范围由权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构/方案,并且可以在不脱离其范围进行各种修改和改变。本申请的范围由所附的权利要求来限制。