一种在游戏场景中显示天空球的方法和装置与流程

文档序号:12748929阅读:457来源:国知局
一种在游戏场景中显示天空球的方法和装置与流程

本发明涉及图形技术领域,特别涉及一种在游戏场景中显示天空球的方法和装置。



背景技术:

随着计算机软、硬件突飞猛进的发展,计算机图形学在各个行业的应用也得到迅速普及和深入。目前,计算机图形学己进入三维时代,三维图形在人们周围无所不在。科学计算可视化、计算机动画和虚拟现实已经成为近年来计算机图形学的三大热门话题,而这三大热门话题的技术核心均为三维图形。

天空是当前图形引擎场景制作中重要的一部分,通过它可以表达时间,天气,塑造气氛等等。目前,显示天空的方法包括天空盒和天空球两种。

传统的天空球采用经纬线划分方法,有南北极和赤道部分。然而,在经纬线划分方法中,在对应纹理贴图时,整个球面的纹理密度是不统一的。在南北极部分纹理密度过大,会有堆积现象,在赤道部分纹理密度过小,会有拉伸现象。

图1为现有技术中基于经纬线划分方法生成的球体模型。由图1可见,由于纹理密度不均匀,因此造成显卡负载过大。



技术实现要素:

有鉴于此,本发明的目的是提供一种在游戏场景中显示天空球的方法和装置,提高纹理密度均匀度,从而降低显卡负载。

一种在游戏场景中显示天空球的方法,该方法包括:

基于预定的游戏视野范围确定天空球半径,并建立顶点位于由该天空球半径所确定的球面上的正二十面体模型;

对于所述正二十面体模型的每一个三角形执行多次递归细分以形成球体模型,其中每次递归细分包括:在三角形的每条边的中点处拆分,并将拆分点的平面坐标映射到球面上;

针对球体模型执行纹理贴图以生成天空球,并在屏幕中透视投影展示所述天空球。

在一个实施方式中,所述多次递归细分为:四次递归细分。

在一个实施方式中,所述在三角形的每条边的中点处拆分,并将拆分点的平面坐标映射到球面上包括:

对于每个三角形,在每条边的中点处拆分并计算中点的平面坐标,并将平面坐标所表示的向量进行单位化;

将所述向量乘以天空球半径,将平面坐标作为顶点映射到基于所述天空球半径确定的球面上。

在一个实施方式中,针对球体模型执行纹理贴图以生成天空球包括:

针对球体模型执行512×512分辨率的纹理贴图以生成天空球。

一种在游戏场景中显示天空球的装置,该装置包括:

模型建立模块,用于基于预定的游戏视野范围确定天空球半径,并建立顶点位于由该天空球半径所确定的球面上的正二十面体模型;

递归模块,用于对于所述正二十面体模型的每一个三角形执行多次递归细分以形成球体模型,其中每次递归细分包括:在三角形的每条边的中点处拆分,并将拆分点的平面坐标映射到球面上;

展示模块,用于针对球体模型执行纹理贴图以生成天空球,并在屏幕中透视投影展示所述天空球。

在一个实施方式中,所述多次递归细分为:四次递归细分。

在一个实施方式中,递归模块,用于对于每个三角形,在每条边的中点处拆分并计算中点的平面坐标,并将平面坐标所表示的向量进行单位化;将所述向量乘以天空球半径,将平面坐标作为顶点映射到基于所述天空球半径确定的球面上。

在一个实施方式中,展示模块,用于针对球体模型执行512×512分辨率的纹理贴图以生成天空球。

从上述技术方案可以看出,在本发明实施方式中:基于预定的游戏视野范围确定天空球半径,并建立顶点位于由该天空球半径所确定的球面上的正二十面体模型;对于所述正二十面体模型的每一个三角形执行多次递归细分以形成球体模型,其中每次递归细分包括:在三角形的每条边的中点处拆分,并将拆分点的平面坐标映射到球面上;针对球体模型执行纹理贴图以生成天空球,并在屏幕中透视投影展示所述天空球。可见,本发明实施方式基于正二十面体递归细分构成球体模型,使之有均匀纹理密度,在纹理尺寸上节省更多的消耗,可以降低显存空间。

附图说明

以下附图仅对本发明做示意性说明和解释,并不限定本发明的范围。

图1为现有技术中经纬线划分法生成的球体模型示意图。

图2为根据本发明在游戏场景中显示天空球的方法流程图。

图3为根据本发明正二十面体模型的示意图。

图4为根据本发明对三角形的递归细分示意图。

图5为根据本发明基于正二十面体递归划拆分的球体模型示意图。

图6为根据本发明在游戏场景中显示天空球的装置结构图。

具体实施方式

为了对发明的技术特征、目的和效果有更加清楚的理解,现对照附图说明本发明的具体实施方式,在各图中相同的标号表示相同的部分。

在本文中,“示意性”表示“充当实例、例子或说明”,不应将在本文中被描述为“示意性”的任何图示、实施方式解释为一种更优选的或更具优点的技术方案。

为使图面简洁,各图中的只示意性地表示出了与本发明相关部分,而并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。

在一些大型的3D游戏中,有几个必不可少的元素,比如说天空和大地,这些元素的存在可以增加3D场景的真实感。天空其实就是一个很大的容器,把整个世界都罩在下面,大地就是一个平面,场景中所有的元素都显示在二者所包围的空间中。

三维天空的技术主要包括三种类型:一种是平面型天空(Sky Plane),仅用一个平面盖在所有元素的头顶。这种技术有点弱,很容易被识破,真实感也很低,有时还需要用雾来覆盖远景以增加真实感,但是效果和技术含量依然很低。一种是天空穹庐(Sky Dome),有时也称为天空球,即放到场景元素头顶上的是一个曲面,通常都会为一个半球,这种技术的真实性和立体感强;另外一种是天空盒子(Sky Box),即把天空做成一个立方体,所有的元素都罩在其下。

现有技术的天空球采用经纬线划分方法。然而,在经纬线划分方法中,在对应纹理贴图时,整个球面的纹理密度是不统一的。在南北极部分纹理密度过大,会有堆积现象,在赤道部分纹理密度过小,会有拉伸现象。

在本发明实施方式中,基于正二十面体递归细分构成球体模型,使之有均匀纹理密度。

图2为根据本发明在游戏场景中显示天空球的方法流程图。

如图2所示,该方法包括:

步骤201:基于预定的游戏视野范围确定天空球半径,并建立顶点位于由该天空球半径所确定的球面上的正二十面体模型。

在这里,首先基于预定的游戏视野范围确定天空球半径,而且可以建立顶点位于由该天空球半径所确定的球面上的正二十面体模型。

图3为根据本发明正二十面体模型的示意图。

如图3所示,正二十面体模型是由20个等边三角形所组成的正多面体,共有12个顶点,30条棱,20个面。

步骤202:对于正二十面体模型的每一个三角形执行多次递归细分以形成球体模型,其中每次递归细分包括:在三角形的每条边的中点处拆分,并将拆分点的平面坐标映射到球面上。

在这里,对于对正二十面体模型中的每一个等边三角形,在每条边的中点之间拆分,最后把新生成的顶点坐标所表示的向量进行单位化,将此向量乘以球的半径,将新生成的顶点坐标映射球面上。

图4为根据本发明对三角形的递归细分示意图。

如图4所示,以正二十面体模型中的一个三角形P0P1P2为例进行说明,三角形P0P1P2各个顶点的坐标分别为P0、P1和P2。该三角形P0P1P2具有三条等边,分别为P0P1、P0P2和P1P2

第一次递归细分包括:

首先,计算三角形P0P1P2的三条等边的各自中点坐标。具体地,计算等边P0P1的中点坐标,假定中点为P01,则P01=(P0+P1)/2;计算等边P0P2的中点坐标,假定中点为P20,则P20=(P0+P2)/2;计算等边P1P2的中点坐标,假定中点为P12,则P12=(P1+P2)/2。

而且,三角形P0P1P2被拆分为四个三角形,分别为:三角形P0P01P20、三角形P1P01P12、三角形P2P20P12和三角形P01P20P12

然后,将新生成的顶点坐标P01、P20和P12所表示的向量进行单位化,将此向量乘以球的半径,将新生成的顶点坐标映射球面上。

第二次递归过程包括:计算三角形P0P01P20的三条等边的各自中点坐标,将新生成的顶点坐标所表示的向量进行单位化,将此向量乘以球的半径,将新生成的顶点坐标映射球面上;计算三角形P1P01P12的三条等边的各自中点坐标,将新生成的顶点坐标所表示的向量进行单位化,将此向量乘以球的半径,将新生成的顶点坐标映射球面上;计算三角形P2P20P12的三条等边的各自中点坐标,将新生成的顶点坐标所表示的向量进行单位化,将此向量乘以球的半径,将新生成的顶点坐标映射球面上;计算三角形P01P20P12的三条等边的各自中点坐标,将新生成的顶点坐标所表示的向量进行单位化,将此向量乘以球的半径,将新生成的顶点坐标映射球面上。

而且,三角形P0P01P20、三角形P1P01P12、三角形P2P20P12和三角形P01P20P12中的每一个都被拆分为四个小三角形,从而一共构成16个小三角形。

类似地,第三次递归过程包括,针对这16个小三角形中的每一个,分别计算三条边的各自中点坐标。将新生成的顶点坐标所表示的向量进行单位化,将此向量乘以球的半径,将新生成的顶点坐标映射球面上。16个小三角形每一个都被拆分为四个更小的三角形,从而构成64个更小的三角形。

类似地,可以对这64个更小的三角形中的每一个分别进行中点拆分以执行多次递归。

申请人发现,经过四次递归之后,已经可以形成良好的球体模型。

图5为根据本发明基于正二十面体递归划拆分的球体模型示意图。该球体模型可以具有均匀纹理密度。在正二十面体模型上四次迭代递归拆分三角面,形成合适三角面数量的球体模型。使用该模型替代现有技术中的经纬线划分法生成的模型,原始模型需要1024*1024分辨率的纹理才能达到理想效果,替换后仅使用512*512分辨率的纹理即可达到同样效果,节省了75%的显存空间。

步骤203:针对球体模型执行纹理贴图以生成天空球,并在屏幕中透视投影展示天空球。

在这里,由于天空球是纹理密度均匀的,因此在纹理尺寸上节省更多的消耗。最后,在屏幕中透视投影展示天空球。

基于上述描述,本发明实施方式还提出了一种在游戏场景中显示天空球的装置。

图6为根据本发明在游戏场景中显示天空球的装置结构图。

如图6所示,该装置600包括:

模型建立模块601,用于基于预定的游戏视野范围确定天空球半径,并建立顶点位于由该天空球半径所确定的球面上的正二十面体模型;

递归模块602,用于对于所述正二十面体模型的每一个三角形执行多次递归细分以形成球体模型,其中每次递归细分包括:在三角形的每条边的中点处拆分,并将拆分点的平面坐标映射到球面上;

展示模块603,用于针对球体模型执行纹理贴图以生成天空球,并在屏幕中透视投影展示所述天空球。

在一个实施方式中,多次递归细分为:四次递归细分。

在一个实施方式中,递归模块602,用于对于每个三角形,在每条边的中点处拆分并计算中点的平面坐标,并将平面坐标所表示的向量进行单位化;将所述向量乘以天空球半径,将平面坐标作为顶点映射到基于所述天空球半径确定的球面上。

在一个实施方式中,展示模块603,用于针对球体模型执行512×512分辨率的纹理贴图以生成天空球。

综上所述,在本发明实施方式中:基于预定的游戏视野范围确定天空球半径,并建立顶点位于由该天空球半径所确定的球面上的正二十面体模型;对于所述正二十面体模型的每一个三角形执行多次递归细分以形成球体模型,其中每次递归细分包括:在三角形的每条边的中点处拆分,并将拆分点的平面坐标映射到球面上;针对球体模型执行纹理贴图以生成天空球,并在屏幕中透视投影展示所述天空球。可见,本发明实施方式基于正二十面体递归细分构成球体模型,使之有均匀纹理密度,在纹理尺寸上节省更多的消耗,可以降低显存空间。

在本文中,“一个”并不表示将本发明相关部分的数量限制为“仅此一个”,并且“一个”不表示排除本发明相关部分的数量“多于一个”的情形。

在本文中,“上”、“下”、“前”、“后”、“左”、“右”、“内”、“外”等仅用于表示相关部分之间的相对位置关系,而非限定这些相关部分的绝对位置。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,而并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方案或变更,如特征的组合、分割或重复,均应包含在本发明的保护范围之内。

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