欢迎光临小豌豆知识网!
当前位置:首页 > 生活技术 > 运动娱乐> 光照贴图制作、游戏模型的渲染方法、装置和电子设备独创技术42349字

光照贴图制作、游戏模型的渲染方法、装置和电子设备

2021-04-06 23:57:20

光照贴图制作、游戏模型的渲染方法、装置和电子设备

  技术领域

  本发明涉及模型渲染的技术领域,尤其是涉及一种光照贴图制作、游戏模型的渲染方法、装置和电子设备。

  背景技术

  烘培是一种离线计算场景光照效果的方法,是指将物体受到的光照信息预先存储到固定的位置上形成光照贴图,之后采样光照贴图进行实时渲染。

  目前,传统的烘焙方法通过反射球进行差值运算。这种方法需要摆放数量较多的反射球才可以获得较好的法线高光效果,并且因为摆放的反射球数量较多,需要占用较多的内存和性能资源。由于手机性能的制约,在手机中进行烘焙时,为了降低占用的内存和性能资源需要减少反射球的数量,导致渲染中计算光照时无法计算法线高光等细节,渲染效果较差。

  发明内容

  有鉴于此,本发明的目的在于提供一种光照贴图制作渲染方法,以降低占用的内存和性能资源,获得较好的法线高光细节,提高渲染效果。

  第一方面,本发明实施例提供了一种光照贴图制作渲染方法,方法包括:基于虚拟场景中的虚拟光源与虚拟场景中的游戏模型的位置关系,确定游戏模型的光照方向信息;基于光照方向信息生成游戏模型的光照贴图,其中,光照贴图包含有光照方向信息对应的像素信息;其中,光照贴图用于为在游戏运行中提供光照方向信息以渲染游戏模型。

  在本发明较佳的实施例中,上述游戏模型包括至少一个顶点,基于虚拟场景中的虚拟光源与虚拟场景中的游戏模型的位置关系,确定游戏模型的光照方向信息的步骤,包括:基于虚拟场景中的虚拟光源与虚拟场景中的游戏模型的各个顶点间的位置关系,确定游戏模型的光照方向信息。

  在本发明较佳的实施例中,上述虚拟光源包括至少一个子光源,基于虚拟场景中的虚拟光源与虚拟场景中的游戏模型的各个顶点间的位置关系,确定游戏模型的光照方向信息的步骤,包括:确定游戏模型的各个顶点对应的子光源;基于各个顶点与其对应的子光源间的连线向量,确定各个顶点的光照方向信息;将各个顶点的光照方向信息的集合作为游戏模型的光照方向信息。

  在本发明较佳的实施例中,上述基于各个顶点与其对应的子光源间的连线向量,确定各个顶点的光照方向信息的步骤,包括:对于每个顶点,执行以下操作:将顶点与顶点对应的子光源连线,得到顶点的连线向量;将连线向量进行归一化处理;基于归一化处理的连线向量确定顶点的光照方向信息。

  在本发明较佳的实施例中,上述基于归一化处理的连线向量确定顶点的光照方向信息的步骤,包括如下步骤之一:确定顶点对应的子光源的数量为1个,将归一化处理的连线向量作为顶点的光照方向信息;确定顶点对应的子光源的数量大于1个,将归一化处理的连线向量相加,得到顶点的光照方向信息。

  在本发明较佳的实施例中,上述光照方向信息的每个分量值的取值范围为[-1,1];游戏模型的光照贴图的颜色空间为RGB空间;基于光照方向信息生成游戏模型的光照贴图的步骤,包括:将光照方向信息转化为RGB空间的像素信息;基于转化后的RGB(Red GreenBlue,红绿蓝)空间的像素信息生成游戏模型的光照贴图。

  在本发明较佳的实施例中,上述将光照方向信息转化为RGB空间的像素信息的步骤,包括:通过下述算式将光照方向信息转化为RGB空间的像素信息:(r,g,b)=((x,y,z)+1)/2;其中,(r,g,b)为RGB空间的像素信息,r、g、b分别为RGB空间的像素信息的红、绿、蓝的分量值;(x,y,z)为光照方向信息,x、y和z分别为光照方向信息在三维坐标系下的三个方向对应的向量分量值。

  在本发明较佳的实施例中,上述光照贴图的RGB空间预先保存有游戏模型的光照信息;基于转化后的RGB空间的像素信息生成游戏模型的光照贴图的步骤,包括:将RGB空间扩大,将转化后RGB空间的像素信息保存在扩大后的RGB空间中。

  第二方面,本发明实施例还提供一种游戏模型的渲染方法,方法包括:获取游戏模型对应的光照贴图;根据光照贴图确定光照方向信息;根据光照方向信息计算游戏模型的光照值;根据光照值渲染游戏模型。

  在本发明较佳的实施例中,上述根据光照方向信息计算游戏模型的光照值的步骤,包括:通过下述算式计算游戏模型的光照值:N=D·L;其中,L为光照方向信息;D为游戏模型的法线向量,N为法线向量对应的光照值。

  第三方面,本发明实施例还提供一种光照贴图制作渲染装置,装置包括:光照方向信息确定模块,用于基于虚拟场景中的虚拟光源与虚拟场景中的游戏模型的位置关系,确定游戏模型的光照方向信息;光照贴图生成模块,用于基于光照方向信息生成游戏模型的光照贴图,其中,光照贴图包含有光照方向信息对应的像素信息;其中,光照贴图用于为在游戏运行中提供光照方向信息以渲染游戏模型。

  第四方面,本发明实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现上述的光照贴图制作渲染方法或上述游戏模型的渲染方法的步骤。

  第五方面,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述的光照贴图制作渲染方法或上述游戏模型的渲染方法的步骤。

  本发明实施例带来了以下有益效果:

  本发明实施例提供了一种光照贴图制作、游戏模型的渲染方法、装置和电子设备,根据游戏模型的光照方向信息生成光照贴图,并基于光照贴图渲染游戏模型;生成的光照贴图中包含有游戏模型的光照方向信息,进行渲染时可以根据光照方向信息计算法线高光细节,以提高渲染效果。且无需设置反射球,可以降低占用的内存和性能资源。

  本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。

  为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

  附图说明

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

  图1为本发明实施例提供的一种虚拟场景的示意图;

  图2为本发明实施例提供的一种光照贴图制作渲染方法的流程图;

  图3为本发明实施例提供的另一种光照贴图制作渲染方法的流程图;

  图4为本发明实施例提供的一种光照方向信息确定方式的示意图;

  图5为本发明实施例提供的一种光照贴图的示意图;

  图6为本发明实施例提供的一种光照贴图生成方法的示意图;

  图7为本发明实施例提供的一种游戏模型的渲染方法的流程图;

  图8为本发明实施例提供的一种基于光照贴图渲染游戏模型的方法的示意图;

  图9为本发明实施例提供的一种游戏模型渲染的对比效果示意图;

  图10为本发明实施例提供的另一种游戏模型渲染的对比效果示意图;

  图11为本发明实施例提供的另一种游戏模型渲染的对比效果示意图;

  图12为本发明实施例提供的一种光照贴图制作渲染装置的结构示意图;

  图13为本发明实施例提供的一种游戏模型的渲染装置的结构示意图;

  图14为本发明实施例提供的一种电子设备的结构示意图。

  具体实施方式

  为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

  目前,在进行游戏界面开发以及其它虚拟场景中,通常使用烘焙方法实现场景光照效果,为了降低烘焙过程占用的内存和性能资源,达到高光等细节的渲染效果,本发明实施例提供的一种光照贴图制作、游戏模型的渲染方法、装置和电子设备,该技术可以应用于服务器、电脑、手机、平板电脑等可以实现人机交互的设备上,尤其可以适用于手机游戏场景中,如音乐游戏、卡牌游戏、射击游戏中。

  为便于对本实施例进行理解,首先对本发明实施例所公开的一种光照贴图制作渲染方法进行详细介绍。

  本实施例的虚拟场景包括游戏模型和虚拟光源。在一个虚拟场景中游戏模型和虚拟光源的数量不做限定。游戏模型是虚拟场景中的预设模型,可以是需要进行渲染的模型,例如汽车模型、虚拟人物模型、虚拟物品模型等。虚拟光源在虚拟场景中发出光线,虚拟光源发出的光线可以照射到游戏模型,也可以不照射到游戏模型,虚拟光源发出的光线数量不做限定。参见图1所示的一种虚拟场景的示意图,如图1所示,在一个虚拟场景中包括一个游戏模型和5个虚拟光源A-E。其中,图1中虚拟光源的箭头代表该虚拟光源发出的光线。可以看出,5个虚拟光源中,虚拟光源E发出两条光线,其余4个虚拟光源均发出一条光线,虚拟光源A、C、D发出的光线可以照射到游戏模型,虚拟光源B发出的光线无法照射到游戏模型,虚拟光源E发出的光线中,一条可以照射到游戏模型,一条无法照射到游戏模型。

  基于上述描述,本实施例提供了一种光照贴图制作渲染方法,参见图2所示的一种光照贴图制作渲染方法的流程图,该光照贴图制作渲染方法包括如下步骤:

  步骤S202,基于虚拟场景中的虚拟光源与虚拟场景中的游戏模型的位置关系,确定游戏模型的光照方向信息。

  游戏模型为需要进行渲染的模型,游戏模型设置在一个虚拟场景中,该虚拟场景包括虚拟光源,虚拟光源发射光线,如果虚拟光源发射的光线照射到游戏模型上,可以将照射到游戏模型上的光线作为游戏模型的光照方向信息。也就是说,如果虚拟光源X发射的光线可以照射到游戏模型上,可以将以虚拟光源X为起点,游戏模型为终点的向量作为光照方向信息。

  步骤S204,基于光照方向信息生成游戏模型的光照贴图,其中,光照贴图包含有光照方向信息对应的像素信息;其中,光照贴图用于为在游戏运行中提供光照方向信息以渲染游戏模型。

  光照贴图是指模拟光源对应的一张贴图,用于将光源对物体产生的影响以光照信息(也即像素信息)的形式保存在光照贴图上。光照贴图保存了虚拟光源对游戏模型的光照影响。光照贴图通过颜色空间的形式保存光照信息,光照贴图每一个坐标的像素信息对应了游戏模型对应位置的明暗信息。

  例如:光照贴图中的坐标(x1,y1)与游戏模型的坐标(X1,Y1)对应。那么光照贴图中坐标(x1,y1)的值就是该坐标的像素信息,该像素信息对应了游戏模型的坐标(X1,Y1)的光照信息。

  通过预先设定的转化关系可以将光照方向信息转化为像素信息,并格局转化后的像素信息生成游戏模型的光照贴图,生成的光照贴图中就包含有光照方向信息,根据上述转化关系和生成后的光照贴图,可以确定游戏模型的光照方向信息。举例来说,假设光照方向信息为(a,b,c),根据对应关系将(a,b,c)转化为像素信息(x,y,z),并将(x,y,z)保存在光照贴图中。

  在生成光照贴图后,可以根据光照贴图渲染游戏模型,在渲染过程中可以从生成的光照贴图中确定像素信息,根据上述转化关系将像素信息转化为光照方向信息,并根据光照方向信息计算法线高光细节。例如:光照贴图中保存有一个像素信息(x,y,z),根据上述转化关系,可以将像素信息(x,y,z)转化为光照方向信息(a,b,c),并根据光照方向信息(a,b,c)计算法线的光照值,从而计算法线高光。

  本发明实施例提供的一种光照贴图制作渲染方法,根据游戏模型的光照方向信息生成光照贴图,并基于光照贴图渲染游戏模型;生成的光照贴图中包含有游戏模型的光照方向信息,进行渲染时可以根据光照方向信息计算法线高光细节,以提高渲染效果。且无需设置反射球,可以降低占用的内存和性能资源。

  本实施例提供了另一种光照贴图制作渲染方法,该方法在上述实施例的基础上实现;本实施例重点描述确定游戏模型的光照方向信息的具体实施方式。如图3所示的另一种光照贴图制作渲染方法的流程图,本实施例中的光照贴图制作渲染方法包括如下步骤:

  步骤S302,基于虚拟场景中的虚拟光源与虚拟场景中的游戏模型的各个顶点间的位置关系,确定游戏模型的光照方向信息。

  游戏模型包括至少一个顶点,游戏模型的顶点即游戏模型的突出点,可以理解为游戏模型中曲率突出点。顶点可以根据游戏模型的形状确定。例如:如果游戏模型为正方体,则有8个顶点;如果游戏模型为三角体,则有4个顶点。

  如果游戏模型包括至少一个顶点,可以根据虚拟光源与游戏模型的各个顶点间的位置关系确定光照方向信息,例如:将可以照射到该顶点的光源与该顶点的连线作为光照方向信息,光照方向信息可以用向量的形式表示。如果游戏模型不包括顶点,如游戏模型为圆柱体或者球体,可以由渲染人员手动指定游戏模型上的若干个点作为该游戏模型的顶点。此外,渲染人员还可以在游戏模型上修改顶点的信息,例如:删除顶点或增加其他的点作为顶点。

  根据虚拟光源与游戏模型的各个顶点间的位置关系确定光照方向信息的步骤,可以通过步骤A1-步骤A3执行:

  步骤A1,确定游戏模型的各个顶点对应的子光源。

  本实施例中,可以基于光线直线照射原理且都给子光源,子光源也可以成为照射光源。光线直线照射原理是指光沿直线传播,对于本实施例中,可以理解为虚拟光源发射的光线沿直线传播,光线可以用向量或者函数的形式表示。在虚拟场景中,可以确定游戏模型的顶点位置(可以通过坐标表示)、虚拟光源的位置(可以通过坐标表示)以及虚拟光源的光线发射方向(通过向量或者函数的形式表示)。因此,对于游戏模型的每个顶点确定哪些虚拟光源可以照射到该顶点,并将可以照射到该顶点的虚拟光源称作该顶点对应的子光源。

  步骤A2,基于各个顶点与其对应的子光源间的连线向量,确定各个顶点的光照方向信息。

  上述确定各个顶点的光照方向信息的步骤,可以具体包括如下步骤B1-步骤B4:

  步骤B1,对于每个顶点,执行以下操作:

  由于照射到每个顶点的虚拟光源并不一定相同,每个顶点都可以确定其对应的子光源,每个顶点对应的子光源并不一定相同。

  步骤B2,将顶点与顶点对应的子光源连线,得到顶点的连线向量。

  顶点与顶点对应的子光源连线得到连线向量,子光源可以发射该连线向量相同方向的光线,该光线可以照射到顶点。例如,对一个坐标为(0,0,0)的顶点,有一个坐标为(1,1,1)子光源,那么该顶点的连线向量为(1,1,1)。

  步骤B3,将连线向量进行归一化处理。

  对于同一个顶点,因为每个子光源与该顶点的距离并不一定相同,每个子光源对应的连线向量的大小也不一定相同。然而,本实施例中只需要考虑连线向量的方向作为子光源发射光线的方向,不需要考虑连线向量的大小。因此,可以将连线向量归一化处理。归一化处理可以将连线向量统一为单位向量,即归一化处理后的连线向量的大小均为1,归一化处理后的连线向量的方向作为子光源发射光线的方向。例如,如果连线向量为(0,0,5),归一化后的连线向量为(0,0,1)。

  步骤B4,基于归一化处理的连线向量确定顶点的光照方向信息。

  对于一个顶点,该顶点对应的归一化处理的连线向量的数量与该顶点对应的子光源的数量相同。根据顶点对应的子光源的数量不同,可以采用如下步骤之一确定光照方向信息:

  确定顶点对应的子光源的数量为1个,可以将归一化处理的连线向量作为顶点的光照方向信息;例如,如果一个顶点只对应一个子光源,归一化后的连线向量为(0,0,1),可以将向量(0,0,1)作为该顶点的光照方向信息。

  确定顶点对应的子光源的数量大于1个,将归一化处理的连线向量相加,得到顶点的光照方向信息。如果顶点对应的子光源的数量大于1个,说明该顶点对应的归一化处理的连线向量的数量大于1个,需要将这些归一化处理的连线向量相加,得到顶点的光照方向信息。参见图4所示的一种光照方向信息确定方式的示意图,如图4所示,图4中包括子光源A和B,带箭头的实线分别表示子光源A和B归一化处理的连线向量,带箭头的虚线代表将这两个归一化处理的连线向量相加,得到的光照方向信息。例如:子光源A的归一化处理的连线向量为(0,0,1),子光源B的归一化处理的连线向量为(0,1,0),那么二者相加后的光照方向信息为(0,1,1)。

  上述确定顶点的光照方向信息的方式,首先从虚拟光源中确定照射顶点的子光源,然后基于子光源确定顶点的连线向量,基于归一化后的连线向量确定顶点的光照方向信息,光照方向信息可以表征虚拟光源照射顶点的方向,光照方向信息的确定方式简单且准确。

  步骤A3,将各个顶点的光照方向信息的集合作为游戏模型的光照方向信息。

  经过上述步骤可以确定游戏模型中每个顶点的光照方向信息,可以将上述顶点的光照方向信息的集合作为游戏模型的光照方向信息。举例来说,游戏模型包括3个顶点1、2、3,顶点1、2、3的光照方向信息分别为a、b、c,可以将a,b,c的集合作为游戏模型的光照方向信息,集合中光照方向信息的排列顺序可以与顶点的编号顺序相同。

  步骤S304,基于光照方向信息生成游戏模型的光照贴图,其中,光照贴图包含有光照方向信息对应的像素信息;其中,光照贴图用于为在游戏运行中提供光照方向信息以渲染游戏模型。

  由于归一化处理的连线向量为单位向量,光照方向信息可以是单位向量,或者单位向量的和。因此,光照方向信息的每个分量的取值范围为[-1,1]。在光照贴图中,通过颜色空间来存储像素信息。本实施例中的颜色空间可以为RGB空间,RGB空间的像素信息的每个分量值的取值范围为(0,1)。为了生成光照贴图,需要转化光照方向信息的每个分量值,以使转化后的光照方向信息的每个分量值的取值范围为(0,1)。因此,生成光照贴图的步骤可以通过步骤C1-步骤C2执行:

  步骤C1,将光照方向信息转化为RGB空间的像素信息。

  可以通过下述算式将光照方向信息转化为RGB空间的像素信息:(r,g,b)=((x,y,z)+1)/2;其中,(r,g,b)为RGB空间的像素信息,r、g、b分别为RGB空间的像素信息的红、绿、蓝的分量值;(x,y,z)为光照方向信息,x、y和z分别为光照方向信息在三维坐标系下的三个方向对应的向量分量值。

  例如,转化前的光照方向信息为(x,y,z)=(-0.5,0,0.5),-0.5为横坐标的向量分量值,0为纵坐标的向量分量值,0.5为竖坐标的向量分量值。转化后的像素信息(r,g,b)=((-0.5,0,0.5)+1)/2=(0.25,0.5,0.75)。0.25为像素信息的红的分量值,0.5为像素信息的绿的分量值,0.75为像素信息的蓝的分量值转化后的像素信息的每个分量均在取值范围(0,1)之间。

  光照方向信息可以为向量的集合,该集合中的每一个向量均可以转化为一个RGB空间的像素信息,转化后的像素信息的排列方式可以与光照方向信息的排列方式相同。例如:光照方向信息为[(-0.5,0,0.5),(-0.5,0,0),(0,0,0.5)],转化后的像素信息可以为[(0.25,0.5,0.75),(0.25,0.5,0.5),(0.5,0.5,0.75)]。

  步骤C2,基于转化后的RGB空间的像素信息生成游戏模型的光照贴图。

  光照贴图的RGB空间可以预先保存有游戏模型的光照信息,预先保存的光照信息可以用于游戏模型的渲染操作。因此,可以将RGB空间扩大,扩大的比例可以为一倍,将转化后RGB空间的像素信息保存在扩大后的RGB空间中。其中,扩大的方式可以为上下扩大,也可以为左右扩大。参见图5所示的一种光照贴图的示意图,图5中的光照贴图的RGB空间分为面积相等的上下两部分,上面部分的RGB空间预先保存有游戏模型的光照信息;下面部分的RGB空间保存转化后RGB空间的像素信息。

  这里需要说明的是,像素信息在光照贴图中的保存位置为光照方向信息对应的顶点在光照贴图中的位置。例如:如果游戏模型包括多个顶点,将上述多个顶点对应的光照方向信息的集合作为游戏模型的光照方向信息。游戏模型的光照方向信息转化后的RGB空间的像素信息的排列顺序可以与顶点对应的光照方向信息的顺序相同。因此,根据排列顺序可以确定像素信息与顶点的对应关系,并可以将像素信息保存在对应顶点在光照贴图中的位置。

  如果顶点对应的子光源的数量大于1个,除了将归一化处理的连线向量相加,得到顶点的光照方向信息;然后根据顶点的光照方向信息确定游戏模型的方向向量,并将游戏模型的方向向量转化为RGB空间的像素信息,最终生成光照贴图的步骤之外。还可以先将每个归一化处理的连线向量转化为RGB空间的像素信息,并将这些RGB空间的像素信息相加,采用相加后的RGB空间的像素信息生成光照贴图。

  参见图6所示的一种光照贴图生成方法的示意图,该方法中包括了生成光照贴图的整体流程,需要说明的是,图6仅示出一种情况对应的整体流程,并不表示图6的流程包括本实施例的全部内容对应的流程,可以依据本实施例的内容对图6的流程进行调整。如图6所示,该光照贴图生成方法包括如下步骤:

  步骤S602,对于每个顶点,从未被选择的子光源中选择一个子光源对应的归一化处理的连线向量。

  如果一个顶点对应了多个子光源,每个子光源都可以确定一个连线向量,从该顶点对应的全部子光源中选择一个子光源,并确定上述顶点与该子光源对应的连线向量,并进行归一化处理。连线向量的确定方式与归一化处理方法与上述实施例采用的方法相同,这里不再赘述。

  步骤S604,将上述归一化处理的连线向量转化为RGB空间的像素信息。

  将归一化处理的连线向量转化为RGB空间的像素信息,转化像素信息的方法与上述实施例采用的方法相同,这里不再赘述。

  步骤S606,判断该顶点对应的子光源是否全部被选择。如果是,执行步骤S608;如果否,执行步骤S602。

  如果存在未被选择的子光源,需要重新执行步骤S602,继续算全部子光源对应的像素信息。如果该顶点对应的子光源全部被选择,则执行步骤S608,进行光照贴图生成操作。

  步骤S608,基于每个转化后的RGB空间的像素信息求和,并根据求和后的像素信息生成游戏模型的光照贴图。

  将所有子光源对应的RGB空间的像素信息求和,并根据求和后的像素信息生成游戏模型的光照贴图。例如:该顶点对应2个子光源,分别对应下述2个像素信息(R1,G1,B1)和(R2,G2,B2),可以根据像素信息(R1+R2,G1+G2,B1+B2)生成光照贴图。该方式与前述实施例中先将连线向量相加,再计算像素信息不同,采用先计算像素信息后将像素信息求和的方式,同样可以生成光照贴图。

  本实施例还提供了一种游戏模型的渲染方法,参见图7所示的一种游戏模型的渲染方法的流程图,该游戏模型的渲染方法包括如下步骤:

  步骤S702,获取游戏模型对应的光照贴图。

  基于光照贴图渲染游戏模型,可以从光照贴图中获取渲染需要的参数,根据上述参数计算游戏模型的光照值,并进行渲染。为了计算法线高光,可以从光照贴图中确定光照方向信息,基于光照方向信息对游戏模型进行渲染。

  步骤S704,根据光照贴图确定光照方向信息。

  光照贴图中保存了RGB空间的像素信息,RGB空间的像素信息是由光照方向信息转化得到的。可以根据预先确定的转化关系将光照贴图保存的像素信息转化为光照方向信息。例如:通过下述算式将光照方向信息转化为RGB空间的像素信息:(r,g,b)=((x,y,z)+1)/2;转化后的像素信息(r,g,b)=(0.25,0.5,0.75)。转化前的光照方向信息为(x,y,z),((x,y,z)+1)/2=(r,g,b)=(0.25,0.5,0.75),(x,y,z)=(-0.5,0,0.5)。

  步骤S706,根据光照方向信息计算游戏模型的光照值。

  在确定光照方向信息之后,可以根据光照方向信息计算游戏模型的光照值,光照值可以体现游戏模型的法线高光。具体来说,可以通过下述算式计算游戏模型的光照值:N=D·L;其中,L为光照方向信息;D为游戏模型的法线向量,N为法线向量对应的光照值。

  在虚拟场景布置游戏模型时,就会确定游戏模型的法线向量。因此,在进行渲染的时候可以直接确定游戏模型的法线向量,然后将法线向量与光照方向信息点乘,得到该法线向量对应的光照值。

  法线向量与顶点是一一对应的关系,因此,如果游戏模型包括多个顶点时,计算法线向量A对应的光照值时,需要从游戏模型的光照方向信息中确定与法线向量A对应的顶点a的光照方向信息,基于法线向量A和顶点a的光照方向信息确定法线向量A对应的光照值。

  步骤S708,根据光照值渲染游戏模型。

  在确定游戏模型全部的法线向量对应的光照值后,可以采用渲染工具应用上述光照值渲染游戏模型,得到游戏模型的亮度参数。由于渲染时应用了法线向量对应的光照值,游戏模型的亮度参数中就会体现法线高光细节。

  本发明实施例提供的一种游戏模型的渲染方法,在进行渲染时可以根据光照方向信息计算法线高光细节,以提高渲染效果。且无需设置反射球,可以降低占用的内存和性能资源。

  参见图8所示的一种基于光照贴图渲染游戏模型的方法的示意图,该方法中包括了基于光照贴图渲染游戏模型的整体流程,需要说明的是,图8仅示出一种情况对应的整体流程,并不表示图8的流程包括本实施例的全部内容对应的流程,可以依据本实施例的内容对图8的流程进行调整。如图8所示,该基于光照贴图渲染游戏模型的方法包括如下步骤:

  步骤S802,从光照贴图中读取像素信息。

  步骤S804,基于读取的像素信息确定光照方向信息;

  步骤S806,基于光照方向信息计算游戏模型的光照值,应用光照值渲染游戏模型的亮度参数。

  上述方法中,基于光照贴图可以确定光照方向信息,基于光照方向信息渲染游戏模型可以计算法线高光细节,以提高渲染效果。参见图9所示的一种游戏模型渲染的对比效果示意图,图9的左图中没有应用本发明实施例提供的方法进行渲染,图9的右图中应用本发明实施例提供的方法进行渲染,针对虚线框中的树皮纹理细节,左图的细节并不明显,而右图的细节较为明显,即本实施例提供的方法具有更好的渲染效果。

  参见图10所示的另一种游戏模型渲染的对比效果示意图,图10的左图中没有应用本发明实施例提供的方法进行渲染,图10的右图中应用本发明实施例提供的方法进行渲染,图10采用点光源照射游戏模型,右图中的渲染细节效果要明显好于左图中的渲染细节效果。

  参见图11所示的另一种游戏模型渲染的对比效果示意图,图11采用面光源照射游戏模型,图11的游戏模型具有较为明显的明暗对比,渲染效果较好。

  需要说明的是,上述各方法实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

  对应于上述方法实施例,本发明实施例提供了一种光照贴图制作渲染装置,如图12所示的一种光照贴图制作渲染装置的结构示意图,该光照贴图制作渲染装置包括:

  光照方向信息确定模块1201,用于基于虚拟场景中的虚拟光源与虚拟场景中的游戏模型的位置关系,确定游戏模型的光照方向信息;

  光照贴图生成模块1202,用于基于光照方向信息生成游戏模型的光照贴图,其中,光照贴图包含有光照方向信息对应的像素信息;其中,光照贴图用于为在游戏运行中提供光照方向信息以渲染游戏模型。

  本发明实施例提供了一种光照贴图制作渲染装置,根据游戏模型的光照方向信息生成光照贴图,并基于光照贴图渲染游戏模型;生成的光照贴图中包含有游戏模型的光照方向信息,进行渲染时可以根据光照方向信息计算法线高光细节,以提高渲染效果。且无需设置反射球,可以降低占用的内存和性能资源。

  游戏模型包括至少一个顶点,上述光照方向信息确定模块,还用于基于虚拟场景中的虚拟光源与虚拟场景中的游戏模型的各个顶点间的位置关系,确定游戏模型的光照方向信息。

  虚拟光源包括至少一个子光源,上述光照方向信息确定模块,还用于确定游戏模型的各个顶点对应的子光源;基于各个顶点与其对应的子光源间的连线向量,确定各个顶点的光照方向信息;将各个顶点的光照方向信息的集合作为游戏模型的光照方向信息。

  上述光照方向信息确定模块,还用于对于每个顶点,执行以下操作:将顶点与顶点对应的子光源连线,得到顶点的连线向量;将连线向量进行归一化处理;基于归一化处理的连线向量确定顶点的光照方向信息。

  上述光照方向信息确定模块,还用于确定顶点对应的子光源的数量为1个,将归一化处理的连线向量作为顶点的光照方向信息;确定顶点对应的子光源的数量大于1个,将归一化处理的连线向量相加,得到顶点的光照方向信息。

  上述光照方向信息的每个分量值的取值范围为[-1,1];上述游戏模型的光照贴图的颜色空间为RGB空间;上述光照贴图生成模块,还用于将光照方向信息转化为RGB空间的像素信息;基于转化后的RGB空间的像素信息生成游戏模型的光照贴图。

  上述光照贴图生成模块,还用于通过下述算式将光照方向信息转化为RGB空间的像素信息:(r,g,b)=((x,y,z)+1)/2;其中,(r,g,b)为RGB空间的像素信息,r、g、b分别为RGB空间的像素信息的红、绿、蓝的分量值;(x,y,z)为光照方向信息,x,y、和z分别为光照方向信息在三维坐标系下的三个方向对应的向量分量值。

  上述光照贴图的RGB空间预先保存有游戏模型的光照信息;上述光照贴图生成模块,还用于将RGB空间扩大,将转化后RGB空间的像素信息保存在扩大后的RGB空间中。

  本发明实施例提供的光照贴图制作渲染装置,与上述实施例提供的光照贴图制作渲染方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。

  对应于上述方法实施例,本发明实施例提供了一种游戏模型的渲染装置,如图13所示的一种游戏模型的渲染装置的结构示意图,该游戏模型的渲染装置包括:

  光照贴图获取模块1301,用于获取游戏模型对应的光照贴图;

  光照方向信息获取模块1302,用于根据光照贴图确定光照方向信息;

  光照值计算模块1303,用于根据光照方向信息计算游戏模型的光照值;

  游戏模型渲染模块1304,用于根据光照值渲染游戏模型。

  本发明实施例提供的一种游戏模型的渲染装置,在进行渲染时可以根据光照方向信息计算法线高光细节,以提高渲染效果。且无需设置反射球,可以降低占用的内存和性能资源。

  上述光照值计算模块,还用于通过下述算式计算游戏模型的光照值:N=D·L;其中,L为光照方向信息;D为游戏模型的法线向量,N为法线向量对应的光照值。

  本发明实施例提供的游戏模型的渲染装置,与上述实施例提供的光照贴图制作渲染方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。

  本发明实施例还提供了一种电子设备,用于运行上述光照贴图制作渲染方法或游戏模型的渲染方法;参见图14所示的一种电子设备的结构示意图,该电子设备包括存储器100和处理器101,其中,存储器100用于存储一条或多条计算机指令,一条或多条计算机指令被处理器101执行,以实现上述光照贴图制作渲染方法或游戏模型的渲染方法。

  进一步地,图14所示的电子设备还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。

  其中,存储器100可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

  处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。

  本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述光照贴图制作渲染方法或游戏模型的渲染方法,具体实现可参见方法实施例,在此不再赘述。

  本发明实施例所提供的光照贴图制作、游戏模型的渲染方法、装置和电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。

  所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和/或装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

  另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

  所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

  在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

  最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

《光照贴图制作、游戏模型的渲染方法、装置和电子设备.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)