一种游戏场景的渲染方法及装置与流程

    专利查询2022-07-08  146



    1.本发明涉及图像渲染技术领域,更具体的说,涉及一种游戏场景的渲染方法及装置。


    背景技术:

    2.随着游戏技术的进步,游戏场景的制作规模越来越大,物件也越来越多。为给用户带来良好的视觉体验,目前,在游戏图像渲染方案上追求对自然景观的高度还原。因此,在水体渲染上要求水体流动效果等有较为真实的观感,在云朵渲染上要求体现云朵形态可以实现随机变化的飘动效果。
    3.然而,在现有的游戏场景中,水面流动波形比较模式化,容易看到水面朝着某个方向规律的波动。而云朵渲染一般采用固定贴图滚动播放的形式,因此,云朵呈现出同一张或几张图片在规律性平移的效果,并不具有自然云朵飘动的效果。


    技术实现要素:

    4.有鉴于此,本发明公开一种游戏场景的渲染方法及装置,以使云朵的飘动更加自然,水体流动效果连续且细腻,更加符合自然界的水体流动效果。
    5.一种游戏场景的渲染方法,包括:
    6.获取待渲染的原始游戏场景;
    7.获取所述原始游戏场景中的天空模型;
    8.对所述天空模型使用天空材质参数并采用预设天空渲染方案进行渲染,得到天空场景渲染图像,其中,所述预设天空渲染方案为:采用分型布朗运动算法对云朵图像进行分层叠加,并使用形态控制算法处理,得到动态云朵形态效果;
    9.获取所述原始游戏场景中的水体模型;
    10.对所述水体模型使用水体材质参数并采用预设水体渲染方案,在所述天空场景渲染图像的基础上继续渲染水体图像,得到游戏场景渲染图像,其中,所述预设水体渲染方案为:采用所述分型布朗运动算法对水面图像进行处理,并将处理后的水面图像与进行波动效果处理后的水底图像进行叠加。
    11.可选的,所述对所述天空模型使用天空材质参数并采用预设天空渲染方案进行渲染,得到天空场景渲染图像,包括:
    12.对所述天空材质参数中的天空主贴图进行采样,得到天空颜色图像数据;
    13.对所述天空材质参数中的空间信息参数采用透视计算,并对原始云朵相关纹理坐标进行换算,得到具有透视效果的云朵相关纹理坐标;
    14.对所述云朵相关纹理坐标应用在法线贴图和高度贴图采样,对使用纹理坐标进行采样的法线序列和高度序列,进行分型布朗运动算法计算,得到带飘动效果后的目标云朵法线值数据及对应的目标高度值数据;
    15.对所述目标高度值数据,在云朵顶部颜色和底部颜色进行插值得到云朵颜色,并
    使用云朵形态控制算法,得到形态控制后的云朵图像数据;
    16.对所述目标云朵法线值数据,进行整体天空图像进行散射光照计算和兰伯特光照计算,得到天空光照图像数据;
    17.将所述天空颜色图像数据、所述云朵图像数据和所述天空光照图像数据进行叠加,得到天空和云朵均渲染后的所述天空场景渲染图像。
    18.可选的,所述原始云朵相关纹理坐标包括:云朵高度贴图的纹理坐标以及云朵法线贴图的纹理坐标。
    19.可选的,所述云朵的渲染主要包括:云朵透视校正、云朵高度色、云朵运动和云朵光照。
    20.可选的,所述云朵透视校正的处理过程包括:
    21.通过虚拟相机的姿态,计算渲染视线的方向;
    22.将天空平面上点的世界坐标位置在竖直方向上的坐标值,通过使用天空整体高度参数和视线方向数据,由几何相似关系对云朵纹理贴图的归一化后的纹理贴图坐标进行对应校正,完成对所述云朵透视校正的处理,其中,所述天空平面为一个竖直放置的平面。
    23.可选的,所述云朵运动的处理过程包括:
    24.应用了透视校正后的纹理坐标,采用分型布朗运动算法对云朵法线贴图的采样结果以及对云朵高度贴图的采样结果,按等比参数进行分型叠加得到法线采样序列和高度序列;
    25.累加所述法线采样序列,并将累加值除以等比序列和得到均值确定法线采样结果值;
    26.累加所述高度序列,并将累加值除以等比序列和得到的均值确定为云朵的高度值,并对云朵的高度值继续通过云朵形态控制算法,计算云朵的疏密度和柔和度,得到带形态计算后的高度值,完成对所述云朵运动的处理。
    27.可选的,所述云朵光照的处理过程包括:
    28.将所述云朵光照的效果分为散射光照和部分高光区域;
    29.所述散射光照的计算公式如下:
    30.col=lightcolor*pow(1-disuv2lightpos,lightattentionpow)*height;
    31.式中,col为所述散射光照的结果值,lightcolor为灯光颜色参数,pow 为幂次方函数,disuv2lightpos为归一化后的纹理贴图坐标到灯光位置参数的欧式距离,lightattentionpow为散射光幂指数参数,height为采用分型布朗运动算法得到的所述高度值;
    32.采用标准的lambert光照模型确定所述部分高光区域。
    33.可选的,所述云朵高度色的处理过程包括:
    34.采用所述目标高度值对所述云朵高度色中的顶部颜色和底部颜色进行线性插值,并对插值结果乘以高度值,完成对所述云朵高度色的处理。
    35.可选的,所述对所述水体模型的水体材质参数采用预设水体渲染方案,在所述天空场景渲染图像的基础上继续渲染水体图像,得到游戏场景渲染图像,包括:
    36.获取水底相关数据,并对所述水底相关数据进行采样渲染,得到带波动的水底渲染图像;
    37.获取远近景物体相关数据,并对所述远近景物体相关数据进行采样渲染,得到远近景物体渲染图像;
    38.获取倒影相关数据,并对所述倒影相关数据进行坐标变换和贴图采样,得到倒影渲染图像;
    39.将所述水底渲染图像、所述远近景物体渲染图像和所述倒影渲染图像进行叠加处理,得到第一水体渲染图像;
    40.获取水面相关数据,并对所述水面相关数据采用分型布朗运动算法得到具有波动信息的水面相关纹理坐标数据,其中,所述水面相关数据包括:法线贴图纹理坐标;
    41.基于水面远近颜色变化和所述水面相关纹理坐标数据,得到包含远近颜色和波动的第二水体渲染图像;
    42.获取虚拟摄像机的空间信息,并基于所述空间信息和所述水面相关纹理坐标数据,在所述第二水体渲染图像的基础上进行光照处理,得到同时包含波动、光照和远近颜色变化的第三水体渲染图像;
    43.对所述第一水体渲染图像和所述第三水体渲染图像进行空间遮挡关系处理,并进行透明混合计算,得到所述游戏场景渲染图像。
    44.可选的,所述水底相关数据进行采样渲染的过程包括:
    45.水底纹理贴图的计算公式如下:
    46.uvwarp=uv0*scale time*timeparam;
    47.式中,uvwarp为水底纹理贴图值,uv0为原始水体纹理贴图值,scale 为缩放系数,time为当前时间,timeparam是时间系数。
    48.可选的,倒影渲染的过程包括:
    49.上下镜像原始素材图片,并对下半部分的素材图片进行拉伸处理、透明渐变和高斯模糊处理。
    50.一种游戏场景的渲染装置,包括:
    51.游戏场景获取单元,用于获取待渲染的原始游戏场景;
    52.天空模型获取单元,用于获取所述原始游戏场景中的天空模型;
    53.天空渲染单元,用于对所述天空模型使用天空材质参数并采用预设天空渲染方案进行渲染,得到天空场景渲染图像,其中,所述预设天空渲染方案为:采用分型布朗运动算法对云朵图像进行分层叠加,并使用形态控制算法处理,得到动态云朵形态效果;
    54.水体模型获取单元,用于获取所述原始游戏场景中的水体模型;
    55.水体渲染单元,用于对所述水体模型使用水体材质参数并采用预设水体渲染方案,在所述天空场景渲染图像的基础上继续渲染水体图像,得到游戏场景渲染图像,其中,所述预设水体渲染方案为:采用所述分型布朗运动算法对水面图像进行处理,并将处理后的水面图像与进行波动效果处理后的水底图像进行叠加。
    56.从上述的技术方案可知,本发明公开了一种游戏场景的渲染方法及装置,获取待渲染的原始游戏场景,对原始游戏场景中的天空模型使用天空材质参数并采用预设天空渲染方案进行渲染,得到天空场景渲染图像,预设天空渲染方案为采用分型布朗运动算法对云朵图像进行分层叠加,并使用形态控制算法处理,得到动态云朵形态效果,对原始游戏场景中的水体模型使用水体材质参数并采用预设水体渲染方案,在天空场景渲染图像的基础
    上继续渲染水体图像得到游戏场景渲染图像,预设水体渲染方案为采用分型布朗运动算法对水面图像进行处理,并将处理后的水面图像与进行波动效果处理后的水底图进行叠加。本发明采用分型布朗运动算法对云朵图像进行分层叠加得到动态云朵形态效果,使得云朵的飘动更加自然;采用分型布朗运动算法对水面图像进行处理,并将处理后的水面图像与进行波动效果处理后的水底图像进行叠加,使得水体流动效果连续且细腻,更加符合自然界的水体流动效果。
    附图说明
    57.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据公开的附图获得其他的附图。
    58.图1为本发明实施例公开的一种游戏场景的渲染方法流程图;
    59.图2为本发明实施例公开的一种对游戏场景中天空模型进行渲染的方法流程图;
    60.图3为本发明实施例公开的一种对游戏场景中水体模型进行渲染的方法流程图;
    61.图4为本发明实施例公开的一种游戏场景的渲染装置的结构示意图。
    具体实施方式
    62.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
    63.本发明实施例公开了一种游戏场景的渲染方法及装置,获取待渲染的原始游戏场景,对原始游戏场景中的天空模型使用天空材质参数并采用预设天空渲染方案进行渲染,得到天空场景渲染图像,预设天空渲染方案为采用分型布朗运动算法对云朵图像进行分层叠加,并使用形态控制算法处理,得到动态云朵形态效果,对原始游戏场景中的水体模型使用水体材质参数并采用预设水体渲染方案,在天空场景渲染图像的基础上继续渲染水体图像得到游戏场景渲染图像,预设水体渲染方案为采用分型布朗运动算法对水面图像进行处理,并将处理后的水面图像与进行波动效果处理后的水底图进行叠加。本发明采用分型布朗运动算法对云朵图像进行分层叠加得到动态云朵形态效果,使得云朵的飘动更加自然;采用分型布朗运动算法对水面图像进行处理,并将处理后的水面图像与进行波动效果处理后的水底图像进行叠加,使得水体流动效果连续且细腻,更加符合自然界的水体流动效果。
    64.参见图1,本发明实施例公开的一种游戏场景的渲染方法流程图,该方法包括:
    65.步骤s101、获取待渲染的原始游戏场景;
    66.在实际应用中,可以从搭建的游戏场景中获取待渲染的原始游戏场景。
    67.其中,游戏场景的搭建过程如下:
    68.创建空的三维原始游戏场景;
    69.在三维游戏场景中按空间关系正确摆放水底模型、远近景物品模型、天空模型和水面模型等,并赋予各个模型正确的材质参数(即渲染代码、各类贴图),创建得到游戏场
    景。
    70.在实际应用中,根据正确摆放虚拟摄像机的位置和朝向,确定渲染的取景范围,也即,待渲染的原始游戏场景。
    71.步骤s102、获取原始游戏场景中的天空模型;
    72.步骤s103、对所述天空模型使用天空材质参数并采用预设天空渲染方案进行渲染,得到天空场景渲染图像;
    73.预设天空渲染方案为:采用分型布朗运动算法对云朵图像进行分层叠加,并使用形态控制算法处理,得到动态云朵形态效果。
    74.其中,云朵图像包括:云朵法线贴图和云朵高度贴图。
    75.天空材质参数包括但不限于:贴图、光照相关参数、颜色、fbm(fractalbrownian motion,分型布朗运动)算法参数和透视相关参数。
    76.贴图:云朵高度贴图、云朵法线贴图。
    77.光照相关参数:灯光颜色、灯光位置坐标、光照衰减参数和光照方向。
    78.颜色:天空颜色、云朵顶部颜色和云朵底部颜色。
    79.fbm算法参数:fbm缩放参数、fbm时间(即速度)参数和fbm频率参数。
    80.透视相关参数:天空高度和视平线位置参数。
    81.分型布朗运动(fractal brownian motion,fbm)算法的基本思想是:通过多个不同频率的噪声按照不同的振幅进行混合。
    82.本实施例采用分型布朗运动算法对云朵的法线贴图和高度贴图进行分层叠加,相当于利用云朵相关贴图,程序化叠加分型噪声得到动态的云朵飘动效果,从而可以很好的解决传统方案中云朵贴图随时间朝固定方向偏移实现飘动效果的问题。
    83.步骤s104、获取原始游戏场景中的水体模型;
    84.步骤s105、对所述水体模型使用水体材质参数并采用预设水体渲染方案,在所述天空场景渲染图像的基础上继续渲染水体图像,得到游戏场景渲染图像。
    85.在实际应用中,通过将渲染得到的游戏场景渲染图像输出至屏幕,来供用户使用。
    86.其中,所述预设水体渲染方案为:采用所述分型布朗运动算法对水面图像进行处理,并将处理后的水面图像与进行波动效果处理后的水底图像进行叠加。
    87.本实施例中的水面图像包括:水面法线图像。
    88.在实际应用中,在对水体进行渲染时,可以依次渲染水底图像、远近景物体图像、倒影图像和水面图像。
    89.其中,水体材质参数包括但不限于:贴图、光照相关参数、颜色和fbm 算法参数。
    90.贴图:水底主贴图、水底法线贴图和水面法线贴图等。
    91.光照相关参数:灯光颜色、灯光位置坐标、高光范围参数、高光强度参数和光照方向。
    92.颜色:水远景颜色、水近景颜色和云朵底部颜色。
    93.fbm算法参数:fbm缩放参数、fbm时间(即速度)参数和fbm频率参数。
    94.综上可知,本发明公开了一种游戏场景的渲染方法,获取待渲染的原始游戏场景,对原始游戏场景中的天空模型使用天空材质参数并采用预设天空渲染方案进行渲染,得到天空场景渲染图像,预设天空渲染方案为采用分型布朗运动算法对云朵图像进行分层叠
    加,并使用形态控制算法处理,得到动态云朵形态效果,对原始游戏场景中的水体模型使用水体材质参数并采用预设水体渲染方案,在天空场景渲染图像的基础上继续渲染水体图像得到游戏场景渲染图像,预设水体渲染方案为采用分型布朗运动算法对水面图像进行处理,并将处理后的水面图像与进行波动效果处理后的水底图进行叠加。本发明采用分型布朗运动算法对云朵图像进行分层叠加得到动态云朵形态效果,使得云朵的飘动更加自然;采用分型布朗运动算法对水面图像进行处理,并将处理后的水面图像与进行波动效果处理后的水底图像进行叠加,使得水体流动效果连续且细腻,更加符合自然界的水体流动效果。
    95.为进一步优化上述实施例,参见图2,本发明实施例公开的一种对游戏场景中天空模型进行渲染的方法流程图,也即步骤s103具体可以包括:
    96.步骤s201、对天空材质参数中的天空主贴图进行采样,得到天空颜色图像数据;
    97.步骤s202、对所述天空材质参数中的空间信息参数采用透视计算,并对原始云朵相关纹理坐标进行换算,得到具有透视效果的云朵相关纹理坐标;
    98.其中,原始云朵相关纹理坐标包括:云朵高度贴图的纹理坐标以及云朵法线贴图的纹理坐标。
    99.步骤s203、对所述云朵相关纹理坐标应用在法线贴图和高度贴图采样,对使用纹理坐标进行采样的法线序列和高度序列,进行分型布朗运动算法计算,得到带飘动效果后的目标云朵法线值数据及对应的目标高度值数据;
    100.步骤s204、对所述目标高度值数据,在云朵顶部颜色和底部颜色进行插值得到云朵颜色,并使用云朵形态控制算法,得到形态控制后的云朵图像数据;
    101.步骤s205、对所述目标云朵法线值数据,进行整体天空图像进行散射光照计算和兰伯特光照计算,得到天空光照图像数据;
    102.具体的,可以根据法线贴图、高度信息和光照参数等数据,对整体天空图像进行散射光照计算和兰伯特(lambert)光照计算,得到天空光照图像数据。
    103.步骤s206、将所述天空颜色图像数据、所述云朵图像数据和所述天空光照图像数据进行叠加,得到天空和云朵均渲染后的所述天空场景渲染图像。
    104.本发明中云朵的渲染主要包括:云朵透视校正、云朵高度色、云朵运动和云朵光照。
    105.为便于理解云朵的渲染过程,下面针对云朵透视校正、云朵运动、云朵光照和云朵高度色四个处理部分详细说明如下:
    106.(1)云朵透视校正的处理过程包括:
    107.通过虚拟相机的姿态,计算渲染视线的方向;
    108.将天空平面上点的世界坐标位置在竖直方向上的坐标值,通过使用天空整体高度参数和视线方向数据,由几何相似关系对云朵纹理贴图的归一化后的纹理贴图坐标进行对应校正,完成对所述云朵透视校正的处理。
    109.在实际应用中,天空设计为一个竖直放置的平面,云朵在这个平面内进行渲染,因此,天空平面上的点的世界坐标位置,在高度方向上的坐标值表示为其高度值,该高度值再通过虚拟相机的姿态,由相机旋转矩阵得出视口内的目标高度值h0。由于高度上位于上方的点渲染效果应该距离观察位置更加靠近,因此,基于目标高度值,通过几何相似关系,可以对云朵贴图采样是的uv(归一化后的纹理贴图坐标)坐标做对应的系数校正。
    110.本发明通过透视校正充分还原3d效果,在此基础上进行光照计算,使平面的云朵贴图实现较为合理的立体感。
    111.(2)云朵运动的处理过程包括:
    112.应用透视校正后的纹理坐标,采用分型布朗运动算法对云朵法线贴图的采样结果以及对云朵高度贴图的采样结果,按等比参数进行分型叠加得到法线采样序列和高度序列;
    113.累加所述法线采样序列,并将累加值除以等比序列和得到均值确定法线采样结果值;
    114.累加所述高度序列,并将累加值除以等比序列和得到的均值确定为云朵的高度值,并对云朵的高度值继续通过云朵形态控制算法,计算云朵的疏密度和柔和度,得到带形态计算后的高度值,完成对所述云朵运动的处理。
    115.假设,振幅参数为scalefbm,则振幅序列为s[i]=scalefbm^i,等比序列求和s的计算公式如下:
    [0116]
    s=scalefbm *(1-scalefbm^n)/(1-scalefbm);
    [0117]
    式中,n为叠加次数。
    [0118]
    假设,频率参数为freqfbm,则振幅序列为f[i]=freqfbm^i。
    [0119]
    在上述参数下,法线贴图的uv坐标序列uvwarp[i]的计算公式如下:
    [0120]
    uvwarp[i]=uv0*f[i] time*timeparam;
    [0121]
    其中,uvwarp是经过计算后的uv值序列,uv0是原始的uv坐标,time 为当前时间,timeparam是时间系数,i为1~n的索引值,n为叠加次数。
    [0122]
    采样序列为:sample(tex_normal,uvwarp[i])*s[i],其中,sample表示采样,tex_normal代表法线贴图。
    [0123]
    在实际应用中,云朵的运动同样采用fbm算法。但是与水体渲染不同的是,除了对云朵法线采样的结果进行分型叠加以外,还对目标高度值进行fbm 算法运算。
    [0124]
    高度序列的表达式如下:
    [0125]
    height[i]=sample(tex_height,uvwarp[i])*s[i];
    [0126]
    式中,height[i]表示高度序列,sample表示采样,tex_height代表高度贴图,s[i]表示振幅序列。
    [0127]
    累加高度序列并除以等比序列和s,得到的均值确定为云朵的高度值 height。
    [0128]
    最后,进行形态控制算法计算:
    [0129]
    height=(height

    emptiness)/smoothness;
    [0130]
    其中,emptiness为稀疏度,smoothness为柔和度。
    [0131]
    (3)云朵光照的处理过程包括:
    [0132]
    将所述云朵光照的效果分为散射光照和部分高光区域;
    [0133]
    所述散射光照的计算公式如下:
    [0134]
    col=lightcolor*pow(1-disuv2lightpos,lightattentionpow)*height;
    [0135]
    式中,col为所述散射光照的结果值,lightcolor为灯光颜色参数,pow 为幂次方函数,disuv2lightpos为归一化后的纹理贴图坐标到灯光位置参数的欧式距离,lightattentionpow为散射光幂指数参数,height为采用分型布朗运动算法得到的所述高
    度值;
    [0136]
    采用标准的lambert光照模型确定所述部分高光区域。
    [0137]
    (4)云朵高度色的处理过程包括:
    [0138]
    采用所述目标高度值对所述云朵高度色中的顶部颜色和底部颜色进行线性差值,完成对所述云朵高度色的处理。
    [0139]
    为进一步优化上述实施例,参见图3,本发明实施例公开的一种对游戏场景中水体模型进行渲染的方法流程图,也即步骤s105具体可以包括:
    [0140]
    步骤s301、获取水底相关数据,并对所述水底相关数据进行采样渲染,得到带波动的水底渲染图像;
    [0141]
    其中,水底相关数据包括水底模型、水底主贴图、水底法线贴图和渲染参数等数据。
    [0142]
    具体的,获取水底模型、水底主贴图、水底法线贴图和渲染参数等水底相关数据,将水底法线贴图的纹理坐标根据时间参数做变换,根据水底主贴图和水底法线贴图的纹理坐标进行采样渲染,得到带波动的水底渲染图像。
    [0143]
    步骤s302、获取远近景物体相关数据,并对所述远近景物体相关数据进行采样渲染,得到远近景物体渲染图像;
    [0144]
    其中,远近景物体相关数据包括:远近景物体模型、远近景物体主贴图、远近景法线贴图和渲染参数等。
    [0145]
    步骤s303、获取倒影相关数据,并对所述倒影相关数据进行坐标变换和贴图采样,得到倒影渲染图像;
    [0146]
    其中,倒影相关数据包括:远近景物品、天空、云等需要倒影的对应的模型和贴图、渲染参数等数据。
    [0147]
    步骤s304、将所述水底渲染图像、所述远近景物体渲染图像和所述倒影渲染图像进行叠加处理,得到第一水体渲染图像;
    [0148]
    通过将水底渲染图像、远近景物体渲染图像和倒影渲染图像进行叠加处理,可以得到带水底、远近景物体和倒影的水体渲染图像,也即第一水体渲染图像。
    [0149]
    步骤s305、获取水面相关数据,并对所述水面相关数据采用分型布朗运动算法得到具有波动信息的水面相关纹理坐标数据;
    [0150]
    其中,所述水面相关数据包括:法线贴图纹理坐标。
    [0151]
    水面相关数据包括:水面模型、水面法线贴图和水面渲染参数等数据。
    [0152]
    步骤s306、基于水面远近颜色变化和所述水面相关纹理坐标数据,得到包含远近颜色和波动的第二水体渲染图像;
    [0153]
    具体的,获取水面的模型位置、旋转信息、虚拟摄像机的位置、旋转信息、水面的远处颜色和近处颜色参数,计算水面上的顶点距离相机的远近透视关系,根据远近关系对远、近颜色进行插值,得到水面颜色数据作为水面的纹理贴图数据,再根据步骤s305得到的水面相关纹理坐标数据对水面进行采样渲染,得到带远近颜色和波动的第二水体渲染图像。
    [0154]
    步骤s307、获取虚拟摄像机的空间信息,并基于所述空间信息和所述水面相关纹理坐标数据,在所述第二水体渲染图像的基础上进行光照处理,得到同时包含波动、光照和远近颜色变化的第三水体渲染图像;
    [0155]
    具体的,获取虚拟摄像机的空间信息,根据步骤s305得到的水面相关纹理坐标数据、水面法线信息、虚拟摄像机空间信息等,在第二水体渲染图像的基础上,对水面采用fresnel光照模型处理折射光和反射光,然后进行blinnphong光照模型计算处理高光部分,得到带光照的水面渲染图像,也即第三水体渲染图像。
    [0156]
    步骤s308、对所述第一水体渲染图像和所述第三水体渲染图像进行空间遮挡关系处理,并进行透明混合计算,得到游戏场景渲染图像。
    [0157]
    在实际应用中,水体渲染的过程包括:水底渲染、倒影渲染和水面渲染 (包含水面波动、水面光照和水面远近景等)。
    [0158]
    (1)水底渲染
    [0159]
    水底渲染所需的素材主要是一张尺寸较大的高清贴图及对应的法线贴图,根据虚拟摄像机的拍摄角度,水底图片倾斜摆放以营造透视效果。
    [0160]
    为了实现更加自然的水面波动的效果,水底贴图的法线贴图在采样时,uv(归一化后的纹理贴图坐标)的计算加入了缩放和时间的参数,实现了水底的法线随着时间而流动的效果。
    [0161]
    具体公式如下:
    [0162]
    uvwarp=uv0*scale time*timeparam;
    [0163]
    其中,uvwarp为水底纹理贴图值,uv0为原始水体纹理贴图值,scale 为缩放系数,time为当前时间,timeparam是时间系数。
    [0164]
    (2)倒影渲染
    [0165]
    由于屏幕空间反射的计算量在移动设备上的计算性能消耗非常高,因此本发明采用非实时镜面反射方案。近景和远景处的山体、建筑和树木都是一些在3d空间内摆放的图片或者模型。为了实现倒影,在制作素材时,上下镜像了原始素材图片,并对下半部分的素材图片进行符合现实规律的处理。
    [0166]
    可选的,上下镜像原始素材图片,并对下半部分的素材图片进行拉伸处理、透明渐变和高斯模糊处理。因此,如果这些部分的内容有动态效果,只需对上下部分的动画也进行镜像处理即可。
    [0167]
    由于水面是透明的,因此,将素材放置到正确的位置,下半部分的图片透过水面,就能够显示出逼真的倒影效果。
    [0168]
    (3)水面渲染
    [0169]
    水面渲染主要包含波动、光照、远近颜色变化三个部分。
    [0170]
    1)波动
    [0171]
    水面波动基于fbm(fractalbrownian motion,分型布朗运动)算法。分型布朗运动算法的基本思想是:通过多个不同的频率的噪声按照不同的振幅进行混合。
    [0172]
    在水体渲染中,法线贴图的uv(归一化后的纹理贴图坐标)计算采用频率参数,法线贴图采样值的计算采用振幅参数。频率参数和振幅参数两个参数都取等比序列,并且取有限次分型叠加次数(如取3次)。
    [0173]
    假设,振幅参数为scalefbm,则振幅序列为s[i]=scalefbm^i,等比序列求和s的计算公式如下:
    [0174]
    s=scalefbm*(1-scalefbm^n)/(1-scalefbm);
    [0175]
    式中,n为叠加次数。
    [0176]
    假设,频率参数为freqfbm,则振幅序列为f[i]=freqfbm^i。
    [0177]
    在上述参数下,法线贴图的uv坐标序列uvwarp[i]的计算公式如下:
    [0178]
    uvwarp[i]=uv0*f[i] time*timeparam;
    [0179]
    其中,uvwarp是经过计算后的uv值序列,uv0是原始的uv坐标,time 为当前时间,timeparam是时间系数,i为1~n的索引值,n为叠加次数。
    [0180]
    采样序列为:sample(tex_normal,uvwarp[i])*s[i],其中,sample表示采样,tex_normal代表法线贴图。
    [0181]
    最终像素点处的法线值为采样序列求和后除以s得到的均值。
    [0182]
    因此,本发明实现了水面的波动效果。
    [0183]
    2)光照
    [0184]
    水面光照在布朗分型计算出的法线方向的基础上,使用了标准的fresnel 模型处理水面的反射和折射效果,使用blinnphong模型处理高光等光照效果。
    [0185]
    3)远近颜色变化
    [0186]
    远近颜色变化使用了远景颜色和近景颜色两个参数,通过计算像素点对应的水面离虚拟摄像机位置的远近,对远景颜色和近景颜色两个颜色参数进行线性插值。
    [0187]
    综上可知,本发明采用分型布朗运动算法对云朵图像进行分层叠加得到动态云朵形态效果,使得云朵的飘动更加自然;采用分型布朗运动算法对水面图像进行处理,并将处理后的水面图像与进行波动效果处理后的水底图像进行叠加,使得水体流动效果连续且细腻,更加符合自然界的水体流动效果。镜面方案未采用实时屏幕空间渲染,从而提高了在移动设备上的渲染性能。远近景色的设计,使得渲染方案可以与任意主题的场景设计契合,在光照的基础上调整水体的色调。
    [0188]
    与上述方法实施例相对应,本发明还公开了一种游戏场景的渲染装置。
    [0189]
    参见图4,本发明实施例公开的一种游戏场景的渲染装置的结构示意图,该装置包括:
    [0190]
    游戏场景获取单元401,用于获取待渲染的原始游戏场景;
    [0191]
    在实际应用中,可以从搭建的游戏场景中获取待渲染的原始游戏场景。
    [0192]
    其中,游戏场景的搭建过程如下:
    [0193]
    创建空的三维原始游戏场景;
    [0194]
    在三维游戏场景中按空间关系正确摆放水底模型、远近景物品模型、天空模型和水面模型等,并赋予各个模型正确的材质参数(即渲染代码、各类贴图),创建得到游戏场景。
    [0195]
    在实际应用中,根据正确摆放虚拟摄像机的位置和朝向,确定渲染的取景范围,也即,待渲染的原始游戏场景。
    [0196]
    天空模型获取单元402,用于获取原始游戏场景中的天空模型;
    [0197]
    天空渲染单元403,用于对所述天空模型使用天空材质参数并采用预设天空渲染方案进行渲染,得到天空场景渲染图像,其中,所述预设天空渲染方案为:采用分型布朗运动算法对云朵图像进行分层叠加,并使用形态控制算法处理,得到动态云朵形态效果;
    [0198]
    本实施例采用分型布朗运动算法对云朵图像进行分层叠加,相当于利用云朵图
    像,程序化叠加分型噪声得到动态的云朵形态效果,从而可以很好的解决传统方案中云朵图像随时间朝固定方向偏移实现飘动效果的问题。
    [0199]
    水体模型获取单元404,用于获取原始游戏场景中的水体模型;
    [0200]
    水体渲染单元405,用于对所述水体模型使用水体材质参数并采用预设水体渲染方案,在所述天空场景渲染图像的基础上继续渲染水体图像,得到游戏场景渲染图像,其中,所述预设水体渲染方案为:采用所述分型布朗运动算法对水面图像进行处理,并将处理后的水面图像与进行波动效果处理后的水底图像进行叠加。
    [0201]
    在实际应用中,在对水体进行渲染时,可以依次渲染水底图像、远近景物体图像、倒影图像和水面图像。
    [0202]
    综上可知,本发明公开了一种游戏场景的渲染装置,获取待渲染的原始游戏场景,对原始游戏场景中的天空模型使用天空材质参数并采用预设天空渲染方案进行渲染,得到天空场景渲染图像,预设天空渲染方案为采用分型布朗运动算法对云朵图像进行分层叠加,并使用形态控制算法处理,得到动态云朵形态效果,对原始游戏场景中的水体模型使用水体材质参数并采用预设水体渲染方案,在天空场景渲染图像的基础上继续渲染水体图像得到游戏场景渲染图像,预设水体渲染方案为采用分型布朗运动算法对水面图像进行处理,并将处理后的水面图像与进行波动效果处理后的水底图进行叠加。本发明采用分型布朗运动算法对云朵图像进行分层叠加得到动态云朵形态效果,使得云朵的飘动更加自然;采用分型布朗运动算法对水面图像进行处理,并将处理后的水面图像与进行波动效果处理后的水底图像进行叠加,使得水体流动效果连续且细腻,更加符合自然界的水体流动效果。
    [0203]
    需要特别说明的是,装置实施例中各组成部分的具体工作原理,请参见方法实施例对应部分,此处不再赘述。
    [0204]
    最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
    ……”
    限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
    [0205]
    本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
    [0206]
    对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
    转载请注明原文地址:https://tc.8miu.com/read-2598.html

    最新回复(0)