专利名称:一种在3d游戏中获得物体显示色的方法
技术领域:
本发明涉及计算机色彩显示技术,尤其涉及一种在3D游戏中获得物体显示色的方法。
背景技术:
3D游戏中为了渲染游戏的情节,通常需要大量的场景,而每个场景又由许多的物体组成,例如房屋等建筑物。为丰富视觉效果,我们常常加入了光源,例如日光、月光、屋子里的灯光或者悬挂的灯笼,为体现光亮的感觉,需要根据光源以及物体色计算出物体每个顶点的显示色,进行显示。而现有的3D游戏中,获得光照效果是利用光源的光照强弱,结合物体的材质色,计算得到物体各顶点的显示色,即物体显示色=光能强弱×物体材质色其中,计算得到的光能强弱存储在光照图(LightMap)中。
上述方法,光照图中只存储了光照强弱,在最终得到的物体色中没有考虑光源的颜色对物体显示色的影响,例如在游戏中,需要渲染一个红色的球,无论光源是红色,黄色,还是白色,最终渲染后的球体的颜色,仍然是红色,与光源的颜色无关,因此获得的光照效果不够逼真,显示的物体的颜色不够细腻。
发明内容
为解决上述问题,本发明目的在于提供一种在3D游戏中获得物体显示色的方法,以使获得的物体显示色更加细腻。
为实现上述目的,本发明提供了一种在3D游戏中获得物体色的方法,该方法包括步骤A获取预置的光源颜色信息;
步骤B利用光源颜色信息获得的漫反射光值与预置的环境光值相加,计算获得光能效果值;步骤C根据光能效果值与物体绘制点的材质色,计算获得物体绘制点的显示色。
其中,步骤B后进一步包括将获得的光能效果值存储于光能效果图中。
其中,步骤A包括获取预置的光源颜色信息的红、绿、蓝RGB三个分量;步骤B包括步骤B1物体欲绘制点的点积函数分别与该点的光源衰弱因子相乘的结果值和获取的光源颜色信息的RGB三个分量分别相乘,获得物体绘制点的漫反射光的RGB三个分量值;步骤B2得到的漫反射光的RGB三个分量值分别与预置的对应环境光的RGB三个分量分别相加,获得光能效果的RGB三个分量值。
其中,步骤C包括光能效果值与物体绘制点的材质色相乘,获得物体绘制点的显示色。
其中,步骤A包括分别获取预置的多个光源的光源颜色信息的RGB三个分量;步骤B包括步骤B11物体绘制点的点积函数与该点的光源衰弱因子相乘的结果值分别和获取的每个光源对应的光源颜色RGB三个分量值相乘,获得每个光源在物体绘制点的漫反射光的RGB三个分量值;步骤B22将获得的每个光源颜色的漫反射光值相加,得到物体绘制点的最终漫反射光的RGB三个分量值;步骤B33得到的漫反射光的RGB三个分量值分别与预置的环境光的RGB三个分量分别相加,获得光能效果的RGB三个分量值。
其中,该方法进一步包括获取光能效果值与物体各点的显示色的值的计算均使用浮点数。
以上技术方案可以看出,由于在计算光照时,不但考虑了光源的光照强弱而且还充分考虑到光源的颜色,图像中的物体不仅可随着距光源的远近改变亮度,物体的颜色还可随着光源颜色的变化而变化,使得图像中所显示的物体更加逼真。
进一步,在有多个光源的情况下,本发明分别考虑每个光源颜色对被渲染的物体色的影响,使得输出的图象中被渲染的物体色更加真实,从而,提高了服务质量,将吸引更多的用户。
图1为本发明一实施例中在3D游戏中获得物体显示色的流程图;图2为本发明另一实施例中在3D游戏中获得物体显示色的流程图。
具体实施例方式
本发明在充分考虑光源颜色对被渲染物体的影响下,提供了一种在3D游戏中获得物体显示色的方法,为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
参见图1,当游戏场景中只有一个光源时,实现本发明目的需要以下步骤步骤101.从光源信息表中获取预置的光源颜色信息,即红、绿、蓝(RGB)三个分量的值;RGB分别代表R红、G绿、R蓝三种颜色,由红、绿、蓝相加混合,以取得其他颜色的颜色合成方式称为RGB色彩模式,R、G、B这三个参数的取值范围都在0至255之间,例如,(0,0,0)显示白色,(255,255,255)显示黑色;例如设获取RGB值为(200,200,127),将RGB值转换成浮点数,即(200/255,200/255,127/255)得到(0.7843,0.7843,0.5);其中,计算使用浮点数,是为了提高计算的精度,也可采用整点运算;
其中,预置光源颜色的信息的光源信息表中包括光源位置,光源所作场景,光源颜色,光源标识(光源ID);步骤102.获取欲绘制的物体表面点的法向量与入射光线方向,两者相乘获得点积函数;根据光源与绘制点的远近,计算出光源衰弱因子;其中,点积函数结果主要是考虑光线直射和光线斜射对物体表面得到光能强弱产生的影响,衰弱因子是考虑光源远近对物体表面产生的影响;例如设获得法向量为(0.5,0.5,0.5),获得的入射光线方向为(0,0,1),那么根据点积公式dot=dot(A*B)=Ax*Bx+Ay*By+Az*Bz,则本例中,点积函数为0.5×0+0.5×0+0.5*1=0.5;其中,点积函数的结果限制在0到1.0的范围内,结果小于0的情况表明这个点无法获得光源照射,因此,处理成0;其中,光源衰弱因子的结果限制在0到1.0的范围内;例如设光源衰弱因子为0.1;步骤103.将获得的点积函数与计算得到的光源衰弱因子相乘所获得的结果值与获取的光源颜色的RGB三个分量分别相乘,所得的最后结果值为漫反射光的值;例如漫反射光值=(0.7843,0.7843,0.5)*0.5*0.1=(0.039215,0.039125,0.025);步骤104.根据游戏中不同的环境,将获得的漫反射光值与预置的包含RGB三个分量的环境光值相加,获得光能效果值,并将光能效果值RGB三个分量分别存储于光能效果图(colormap)中;其中,环境光值表现物体在没有被光照到时呈现的阴影的颜色,例如阴天、晴天等,因环境光值不受光源光照的影响,所以,可预置一个环境光值表,用以保存游戏中不同场景中的环境光值,例如设获取的环境光值的RGB三个分量的值为(0.1,0.2,0);至此,光能效果中不仅包含了光照强弱信息,还加入了光源颜色信息;
本例中所得光能效果值为(0.139215,0.239125,0.025);步骤105.将存储于colormap中的光能效果值的三个RGB分量乘以物体材质色,获得物体绘制点的显示色;其中,由于游戏过程是游戏循环构成,在每个游戏循环中,要完成一次游戏画面的重新绘制以及游戏的逻辑计算,需要进行大量的计算,为减少计算量,在计算3D游戏中的静态物体绘制点的显示色时,可直接从存储光能效果值的光能效果图(corlormap)中获取需要的光能效果值,而在计算游戏中动态物体绘制点的显示色时,则需要进行实时计算以获得光能效果值;同样,为减少计算量,在计算3D游戏中的静态物体绘制点的显示色时,可直接从预置的物体信息表中获取物体材质色,物体信息表中包括物体标识(物体ID),物体计算点位置,计算点材质色,物体所属场景;而在计算游戏中的动态物体绘制点的显示色时,需要对物体材质色进行实时计算;至此,实现了本发明的目的;其中,为了使计算方便,上述步骤中所有的计算都使用浮点数。
参见图2,当游戏场景中有多个光源时,实现本发明目的需要以下步骤步骤201.从光源信息表中获取预置的每个光源的颜色信息,即红、绿、蓝(RGB)三个分量的值;其中,存储光源颜色的信息的光源信息表中包括光源位置,光源所在场景,光源颜色,光源标识(光源ID);步骤202.获取物体表面预绘制点的法向量与入射光线方向,两者相乘获得点积函数;根据光源与绘制点的远近,计算出光源衰弱因子;其中,点积函数的结果限制在0到1.0的范围内,结果小于0的情况表明这个点无法获得光源照射,因此,处理成0;其中,光源衰弱因子的结果限制在0到1.0的范围内;步骤203.将获得的点积函数与计算得到的光源衰弱因子相乘所获得的结果值与获取的每个光源颜色的RGB三个分量分别相乘,计算得到每个光源在物体绘制点的漫反射光值;步骤204.将获得的每个光源的漫反射光值相加,其结果为获得的最终的漫反射光值;步骤205.将获得的最终的漫反射光值与预置的环境光值相加,获得光能效果值,并将光能效果值的RGB三个分量分别存储于光能效果图(colormap)中;其中,环境光值表现物体在没有被光照到时呈现的阴影的颜色,例如阴天、晴天等,因环境光值不受光源光照的影响,所以,可从预置的保存游戏中不同场景的环境光值的环境光值表中获取;至此,光能效果中包含了光照强弱信息,光源颜色信息;步骤206.将光能效果值的三个RGB分量乘以物体绘制点的材质色,获得物体绘制点的显示色;其中,由于游戏过程是游戏循环构成,在每个游戏循环中,要完成一次游戏画面的重新绘制以及游戏的逻辑计算,需要进行大量的计算,为减少计算量,在计算3D游戏中的静态物体绘制点的显示色时,可直接从存储光能效果值的光能效果图(corlormap)中获取需要的光能效果值,而在计算游戏中动态物体绘制点的显示色时,则需要进行实时计算以获得光能效果值;同样,为减少计算量,在计算3D游戏中的静态物体绘制点的显示色时,可直接从预置的物体信息表中获取物体材质色,物体信息表中包括物体标识(物体ID),物体计算点位置,计算点材质色,物体所属场景;而在计算游戏中的动态物体绘制点的显示色时,需要对物体材质色进行实时计算;至此,实现了本发明的目的;其中,为了使计算方便,上述步骤中所有的计算都使用浮点数。
以上仅是本发明的较佳的实施例而已,并不用于限制本发明,如在本发明的精神和原则之内,所作的修改、等同替换、改进等,均应包括在本发明的保护范围之内。
权利要求
1.一种在3D游戏中获得物体显示色的方法,其特征在于,该方法包括步骤A获取预置的光源颜色信息;步骤B利用光源颜色信息获得的漫反射光值与预置的环境光值相加,计算获得光能效果值;步骤C根据光能效果值与物体绘制点的材质色,计算获得物体绘制点的显示色。
2.根据权利要求1所述的在3D游戏中获得物体显示色的方法,其特征在于步骤B后进一步包括将获得的光能效果值存储于光能效果图中。
3.根据权利要求1所述的在3D游戏中获得物体显示色的方法,其特征在于步骤A包括获取预置的光源颜色信息的红、绿、蓝RGB三个分量;步骤B包括步骤B1物体欲绘制点的点积函数分别与该点的光源衰弱因子相乘的结果值和获取的光源颜色信息的RGB三个分量分别相乘,获得物体绘制点的漫反射光的RGB三个分量值;步骤B2得到的漫反射光的RGB三个分量值分别与预置的对应环境光的RGB三个分量分别相加,获得光能效果的RGB三个分量值。
4.根据权利要求1所述的在3D游戏中获得物体显示色的方法,其特征在于步骤C包括光能效果值与物体绘制点的材质色相乘,获得物体绘制点的显示色。
5.根据权利要求1所述的在3D游戏中获得物体显示色的方法,其特征在于步骤A包括分别获取预置的多个光源的光源颜色信息的RGB三个分量;步骤B包括步骤B11物体绘制点的点积函数与该点的光源衰弱因子相乘的结果值分别和获取的每个光源对应的光源颜色RGB三个分量值相乘,获得每个光源在物体绘制点的漫反射光的RGB三个分量值;步骤B22将获得的每个光源颜色的漫反射光值相加,得到物体绘制点的最终漫反射光的RGB三个分量值;步骤B33得到的漫反射光的RGB三个分量值分别与预置的环境光的RGB三个分量分别相加,获得光能效果的RGB三个分量值。
6.根据权利要求1至5任一所述的在3D游戏中获得物体显示色的方法,其特征在于,该方法进一步包括获取光能效果值与物体各点的显示色的值的计算均使用浮点数。
全文摘要
本发明提供了一种在3D游戏中获得物体显示色的方法,通过该方法,获取预置的光源颜色信息,利用光源颜色信息与预置的环境光值,计算获得光能效果值,根据光能效果值与预置的物体绘制点的材质色,计算获得物体各点的显示色。利用本发明,能够使被渲染的物体或场景的更加真实且颜色更为细腻,提升了服务质量,将吸引更多的用户。
文档编号G06T15/50GK1889127SQ200610088930
公开日2007年1月3日 申请日期2006年7月26日 优先权日2006年7月26日
发明者罗洪波 申请人:北京金山数字娱乐科技有限公司