本发明涉及计算机图形学图形渲染领域,尤其涉及一种基于图形学的自然现象构建及渲染优化的方法及系统。
背景技术:
1、基于真实自然场景进行实时建模和绘制是基于数字孪生技术构建高仿真场景的热点和难点之一。在各种虚拟自然景物中,自然现象的孪生映射对于数字世界场景的真实再现起着不可或缺的作用。
2、目前已公开的实现自然现象构建及渲染的技术方案主要有两种,一种是通过更换天空盒(静态)来实现,通过渐变过渡的动态效果,实现白天天空盒和黑夜天空盒的切换,只是单一地实现了黑夜白天的切换,缺少真实世界昼夜变化等自然现象的动态效果变化;另一种是公开号为cn115861502a、发明名称为虚拟环境中的天气渲染方法及装置、存储介质、电子设备所披露的的技术方案,但其公开的实时改变虚拟场景的天气效果,仅仅通过数据修改了光源数据和背景贴图的相关数据,而不能进一步地模拟日出日落地平线的曝光、太阳和月亮在天空的运动轨迹、星空闪烁等效果。虽然相对第一种技术方案有了一定的进步,但整体天空背景还是静态的背景贴图,且只实现了光源颜色和强弱的动态控制,不能孪生映射当前场景的实时变化,不符合真实模拟的预期。
技术实现思路
1、本发明的目的在于提供一种基于图形学的自然现象构建及渲染优化的方法及系统,以解决现有技术中数字世界中自然现象构建及渲染映射效果僵硬、仿真效果不真实,无法达到数字孪生场景实时高仿真还原的要求的问题。
2、第一方面,本发明提供一种基于图形学的自然现象构建及渲染优化的方法,包括以下步骤:
3、s1:在三维引擎中创建一个球体,作为天空纹理的载体;
4、s2:读取虚拟场景对应真实地理区域的自然现象变化数据并存储,所述自然现象变化数据包括日出日落时刻、月相变化及光照强度;
5、s3:创建平行光1和平行光2分别作为太阳光源和月亮光源,基于s2中的数据控制平行光1和平行光2的旋转,以及平行光1的光照强度,以实现昼夜的光源模拟;
6、s4:基于s3中平行光1旋转的实时位置数据判定是否对太阳进行绘制,绘制太阳时,先确定太阳中心点,再基于太阳中心点、太阳颜色及太阳大小进行太阳绘制;
7、s5:基于s3中平行光2旋转的实时位置数据判定是否对月亮进行绘制,绘制月亮时,先确定月亮在球体的绘制位置,再基于月相变化纹理进行月亮绘制;
8、s6:基于s3中平行光2旋转的实时位置数据判定是否对星星进行绘制,绘制星星时,基于uv偏移计算对星星纹理进行采样,将采样的星星纹理rgb值与初始星星颜色进行乘积,实现星空闪烁效果;
9、s7:基于s1中球体顶点的世界坐标与s3中平行光1旋转的实时位置数据构建天空色彩模拟的数学模型,根据太阳与地平线的距离绘制出色彩动态渐变的天空颜色;
10、s8:将s4~s7渲染绘制的图像进行效果叠加绘制,实现真实场景自然现象的孪生映射效果。
11、进一步地,所述s1中,创建的球体模型顶点坐标y值等于0的位置绘制为地平线,顶点模型坐标y值大于0的位置绘制为天空,顶点模型坐标y值小于0的位置绘制为地面。
12、进一步地,所述s3中:
13、s31:创建平行光1和平行光2,分别作为太阳光和月光;
14、s32:获取系统当前时间,基于系统当前时间获取s2中当前地区当前时间的日出日落时刻、月相变化及光照强度;
15、s33:分别创建平行光1和平行光2的旋转动画以及平行光1光照强度动画,当时间为日出时间时,开始播放平行光1的旋转动画及光照强度动画,用于模拟太阳的旋转及太阳光照强度;当时间为日落时间时,开始播放平行光2的旋转动画,用于模拟月亮的旋转。
16、进一步地,所述s4的具体步骤如下:
17、s41:当平行光1旋转的实时位置数据显示平行光1的y值大于0,即白天时绘制太阳;
18、s42:获取平行光1位置;
19、s43:将s42中获取的平行光1位置与球体顶点的世界坐标进行点乘,获取两个向量夹角的余弦值;当余弦值为1时,代表两个向量的方向相同,即确定该点为太阳中心点;
20、s44:设定太阳颜色和太阳大小;
21、s45:根据s44设定的太阳颜色和太阳大小,从s43确定的太阳中心点开始绘制太阳;具体计算的数学模型为:太阳颜色*余弦值的幂次方(幂为太阳大小)*太阳大小,其中,加入余弦值的幂次方计算是为了实现太阳光由中心向四周的明暗渐变过渡效果。
22、进一步地,所述s5具体包括:
23、s51:当平行光2旋转的实时位置数据显示平行光2的y值大于0,即黑夜时绘制月亮;
24、s52:获取平行光2位置;
25、s53:将s52中获取的平行光2位置与球体的天空纹理像素的世界空间位置进行点乘,获取两个向量夹角的余弦值,当余弦值为1时,代表两个向量的方向相同,即确定该点为月亮中心点;
26、s54:设定月亮大小;
27、s55:根据系统时间获取当前日期,根据日期在月亮纹理库里获取相应日期对应的月亮纹理编号,以确定月亮纹理的颜色;
28、s56:根据s54设定的月亮大小、s55获取的月亮纹理的颜色,从s53确定的月亮中心点开始绘制月亮;具体计算的数学模型为:月亮纹理的颜色*余弦值的幂次方(幂为月亮大小)*月亮大小。
29、进一步地,所述s6的具体步骤如下:
30、s61:当平行光2旋转的实时位置数据显示平行光2的y值大于0,即黑夜时进行星空的绘制;
31、s62:对星星纹理的uv进行u方向偏移获得uv1,从而实现星星纹理的u方面周期性的偏移;具体u方向偏移的计算方式为:u方向初始偏移值*sin(系统运行时间*调整系数)+uv,其中u方向初始偏移值和调整系数都是自定义参数,用于控制偏移幅度和偏移速度;
32、s63:基于s62获得的uv1,对星星纹理进行第一次采样,获取第一采样纹理的rgb值;
33、s64:对星星纹理的uv进行v方向偏移获得uv2,从而实现星星纹理的v方面周期性的偏移;具体u方向偏移的计算方式为:v方向初始偏移值+cos(系统运行时间*调整系数)+uv,其中v方向初始偏移值和调整系数都是自定义参数,用于控制偏移幅度和偏移速度;
34、s65:基于s64获得的uv2,对星星纹理进行第二次采样,获取第二采样纹理的rgb值;
35、s66:将s63的第一采样纹理的rgb值与s65的第二采样纹理的rgb值进行乘积,实现星星在星空闪烁的效果。
36、进一步地,所述s7具体包括以下步骤:
37、s71:将s1中的球体坐标通过世界矩阵转换为世界坐标,并将球体世界坐标范围转换为0~1,得到球体世界坐标2;
38、s72:根据s71中获取的球体世界坐标2与s3中平行光1旋转的实时位置数据构建数学模型,从而计算出球体不同顶点相对不同太阳位置对天空颜色的影响系数;具体数学模型的计算过程为:(mix(平行光1实时位置,球体顶点最高位置,球体世界坐标2))/球体世界坐标2;
39、s73:将s72中获取的影响系数与基础天空颜色求积,从而绘制出天空动态渐变的颜色效果。
40、另一方面,本发明还提供一种基于图形学的自然现象构建及渲染优化的系统,包括:
41、三维场景模块,用以在三维引擎中创建一个球体,作为天空纹理的载体;
42、数据处理模块,读取虚拟场景对应真实地理区域的自然现象变化数据并存储,所述自然现象变化数据包括日出日落时刻、月相变化及光照强度;
43、光源旋转模块,创建平行光1和平行光2分别作为太阳光源和月亮光源,基于s2中的数据控制平行光1和平行光2的旋转,以及平行光1的光照强度,以实现昼夜的光源模拟;
44、太阳绘制模块,用以基于平行光1旋转的实时位置数据判定是否对太阳进行绘制,绘制太阳时,先确定太阳中心点,再基于太阳中心点、太阳颜色及太阳大小进行太阳绘制;
45、月亮绘制模块,用以基于平行光2旋转的实时位置数据判定是否对月亮进行绘制,绘制月亮时,先确定月亮在球体的绘制位置,再基于月相变化纹理进行月亮绘制;
46、星星绘制模块,用以基于平行光2旋转的实时位置数据判定是否对星星进行绘制,绘制星星时,基于uv偏移计算对星星纹理进行采样,将采样的星星纹理rgb值与初始星星颜色进行乘积,实现星空闪烁效果;
47、天空色彩绘制模块,用以基于球体顶点的世界坐标与平行光1旋转的实时位置数据构建天空色彩模拟的数学模型,根据太阳与地平线的距离绘制出色彩动态渐变的天空颜色;
48、实时渲染模块,用以将渲染绘制的图像进行效果叠加绘制,实现真实场景自然现象的孪生映射效果。
49、与现有技术相比,本发明具有以下有益效果:
50、1、利用计算机图形学实现了地球公转、地球自转、月球绕地球公转下的多种自然现象,包括日出日落、月升月降、闪烁星空、天空颜色动态渐变等绚丽多彩的自然现象的效果模拟,整体表现真实流畅,克服了现有模拟自然现象中渲染效果单一、真实度低的问题,提高了虚拟世界对自然现象的真实表现力。
51、2、对真实场景进行孪生,能够根据真实地点的当前时刻以及日出日落时刻表在虚拟场景真实呈现当地昼夜更替等自然现象效果,同时能够让人在虚拟世界即可以通过视觉真实感受当地的自然现象更迭,真实度高,增加虚拟场景的表现力和代入感。