一种基于Cesium三维渲染引擎的积雪效果生成方法

文档序号:31784862发布日期:2022-10-12 12:39阅读:695来源:国知局
一种基于Cesium三维渲染引擎的积雪效果生成方法
一种基于cesium三维渲染引擎的积雪效果生成方法
技术领域
1.本发明涉及图像渲染的技术领域,具体涉及一种基于cesium三维渲染引擎的积雪效果生成方法。


背景技术:

2.现有的三维渲染引擎主要致力于地理信息的渲染,在基于地理信息的环境仿真方面研究较少,仅支持简单的基于粒子系统的天气效果,逼真度较差;然而在游戏引擎中,关于积雪的渲染效果有较高的逼真度,并能高度还原真实世界的积雪场景;然而基于地理信息的三维渲染引擎,在场景积雪渲染方面几乎没有涉及。
3.cesium是一个基于javascript编写的使用webgl的地图引擎,能基于遥感影像实现三维地理信息的渲染,然而在场景积雪渲染方面,cesium框架没有完善的仿真系统,只有简单的基于粒子系统的下雪效果,而且效果逼真度很低,对积雪环境的仿真效果没有涉及。


技术实现要素:

4.本发明的目的在于:针对目前cesium是一个基于javascript编写的使用webgl的地图引擎,能基于遥感影像实现三维地理信息的渲染,然而在场景积雪渲染方面,cesium框架没有完善的仿真系统,只有简单的基于粒子系统的下雪效果,而且效果逼真度很低,对积雪环境的仿真效果没有涉及的问题,提出了一种基于cesium三维渲染引擎的积雪效果生成方法,能依据积雪厚度生成相应的积雪效果,覆盖环境中的物体,在植物建筑的覆盖方面有较高的逼真度,解决了上述问题。
5.本发明的技术方案如下:
6.一种基于cesium三维渲染引擎的积雪效果生成方法,包括如下步骤:
7.步骤s1:对模型的纹理图进行采样,获取纹理图中每个纹理坐标点的纹理坐标向量;
8.步骤s2:将纹理坐标向量转换到相机空间中,并根据转换结果判断是否进行积雪覆盖渲染;
9.步骤s3:根据判断结果,对需要进行积雪覆盖渲染的纹理坐标点进行积雪渲染,并将渲染结果与纹理图进行融合,达到最终渲染效果。
10.进一步地,所述模型为:cesium现有着色模型。
11.进一步地,所述模型为:基于cesium接口加载的地理影象高程数据绘制的场景模型。
12.进一步地,所述步骤s1,包括:
13.步骤s11:通过采样函数texture2d对彩色纹理图和深度纹理图进行采样,获取每个纹理坐标点的彩色向量和深度向量;
14.步骤s12:对深度向量进行解析,得到每个纹理坐标点的深度值depth。
15.进一步地,所述步骤s2,包括:
16.步骤s21:通过深度值depth将纹理坐标点转换到相机空间中,得到纹理坐标点在相机空间坐标系下的坐标向量posec;
17.步骤s22:采用纹理图视图转置矩阵inverseview乘以坐标向量posec得到纹理坐标点在模型坐标系或场景坐标系中的位置坐标向量poswc;
18.步骤s23:利用位置坐标向量poswc计算纹理坐标点在场景坐标系中的法向量normalwc;通过法向量normalwc与位置坐标向量poswc的坐标分量poswc.xyz的点乘结果计算纹理坐标点的朝向角度;
19.步骤s24:根据朝向角度判断是否需要进行积雪覆盖渲染。
20.进一步地,所述步骤s24,包括:
21.朝向角度的取值范围为0
°
至90
°

22.是否进行积雪覆盖渲染与朝向角度为正相关;当朝向角度为90
°
,进行积雪覆盖渲染,其他朝向角度不进行积雪覆盖渲染。
23.进一步地,所述步骤s3,包括:
24.步骤s31:根据积雪厚度计算需要进行积雪覆盖渲染的纹理坐标点的白色比例值;
25.步骤s32:对彩色向量进行解析,得到每个纹理坐标点的原颜色值;
26.步骤s33:将需要进行积雪覆盖渲染的纹理坐标点的白色比例值与每个纹理坐标点的原颜色值进行融合达到了最终的渲染效果。
27.进一步地,所述步骤s33,包括:
28.将需要进行积雪覆盖渲染的纹理坐标点的白色比例值与其原颜色值按比例进行融合得到待渲染颜色值;
29.不需要进行积雪覆盖渲染的纹理坐标点采用其原颜色值作为待渲染颜色值;
30.着色器按照需要进行积雪覆盖渲染的纹理坐标点的待渲染颜色值和不需要进行积雪覆盖渲染的纹理坐标点待渲染颜色值进行最终渲染。
31.进一步地,所述融合得到待渲染颜色值,包括:
32.vec4(1.0,1.0,1.0,1.0)*alpha+color*(1-alpha)=color’33.其中:
34.vec4(1.0,1.0,1.0,1.0)为着色器中白色的颜色值;
35.alpha为着色器中预设的比例值,alpha的取值范围为0-1,积雪越厚alpha越接近1;
36.color为纹理坐标点的原颜色值;
37.color’为纹理坐标点的待渲染颜色值。
38.与现有的技术相比本发明的有益效果是:
39.一种基于cesium三维渲染引擎的积雪效果生成方法,包括如下步骤:步骤s1:对模型的纹理图进行采样,获取纹理图中每个纹理坐标点的纹理坐标向量;步骤s2:将纹理坐标向量转换到相机空间中,并根据转换结果判断是否进行积雪覆盖渲染;步骤s3:根据判断结果,对需要进行积雪覆盖渲染的纹理坐标点进行积雪渲染,并将渲染结果与纹理图进行融合,达到最终渲染效果;其能依据积雪厚度生成相应的积雪效果,覆盖环境中的物体,在植物建筑的覆盖方面有较高的逼真度,并且可以指定具体的覆盖目标,达到精确覆盖目标区域及物体的效果。
附图说明
40.图1为一种基于cesium三维渲染引擎的积雪效果生成方法的流程图;
41.图2为一种基于cesium三维渲染引擎的积雪效果生成方法的渲染前后对比图。
具体实施方式
42.需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
43.下面结合实施例对本发明的特征和性能作进一步的详细描述。
44.实施例一
45.现有的三维渲染引擎主要致力于地理信息的渲染,在基于地理信息的环境仿真方面研究较少,仅支持简单的基于粒子系统的天气效果,逼真度较差;然而在游戏引擎中,积雪的渲染效果有较高的逼真度,能高度还原真实世界的积雪场景;游戏引擎在场景积雪渲染方面,采用着色器与模型结合的方式实现了使积雪效果更接近真实物理规律;然而基于地理信息的三维渲染引擎,在场景积雪渲染方面几乎没有涉及。
46.cesium是一个基于javascript编写的使用webgl的地图引擎,能基于遥感影像实现三维地理信息的渲染,然而在场景积雪渲染方面,cesium框架没有完善的仿真系统,只有简单的基于粒子系统的下雪效果,而且效果逼真度很低,对积雪环境的仿真效果没有涉及。
47.本实施例针对于上述问题,提出了一种基于cesium三维渲染引擎的积雪效果生成方法,能依据积雪厚度生成相应的积雪效果,覆盖环境中的物体,在植物建筑的覆盖方面有较高的逼真度。
48.请参阅图1-图2,一种基于cesium三维渲染引擎的积雪效果生成方法,需要说明的是,该生成方法既可以针对场景后处理方式,也可以修改cesium现有着色模型方式,直接实现在现有模型上的积雪效果渲染。
49.本实施例中,一种基于cesium三维渲染引擎的积雪效果生成方法,针对场景后处理方式,具体包括如下步骤:
50.步骤s1:对模型的纹理图进行采样,获取纹理图中每个纹理坐标点的纹理坐标向量;优选地,所述模型为:基于cesium接口加载的地理影象高程数据绘制的场景模型;
51.步骤s2:将纹理坐标向量转换到相机空间中,并根据转换结果判断是否进行积雪覆盖渲染;
52.步骤s3:根据判断结果,对需要进行积雪覆盖渲染的纹理坐标点进行积雪渲染,并将渲染结果与纹理图进行融合,达到最终渲染效果。
53.在本实施例中,具体的,所述步骤s1,包括:
54.步骤s11:通过采样函数texture2d对彩色纹理图和深度纹理图进行采样,获取每个纹理坐标点的彩色向量和深度向量;需要说明的是,所述彩色纹理图和深度纹理图均为
四维向量,所述纹理坐标点为二维向量,所有纹理坐标点构成纹理坐标点的点集;采样结果为彩色向量和深度向量,所述彩色向量和深度向量均为四维向量;优选地,所述步骤s11即是对所搭建的场景的彩色纹理图和深度纹理图进行采样;
55.步骤s12:对深度向量进行解析,得到每个纹理坐标点的深度值depth。
56.在本实施例中,具体的,所述步骤s2,包括:
57.步骤s21:通过深度值depth将纹理坐标点转换到相机空间中,得到纹理坐标点在相机空间坐标系下的坐标向量posec;需要说明的是,所述坐标向量posec为四维向量;
58.步骤s22:采用纹理图视图转置矩阵inverseview乘以坐标向量posec得到纹理坐标点在场景坐标系中的位置坐标向量poswc;需要说明的是,所述纹理图视图转置矩阵inverseview为cesium内置;所述位置坐标向量poswc为四维向量;
59.步骤s23:利用位置坐标向量poswc计算纹理坐标点在场景坐标系中的法向量normalwc;通过法向量normalwc与位置坐标向量poswc的坐标分量poswc.xyz的点乘结果计算纹理坐标点的朝向角度;需要说明的是,所述法向量normalwc为三维向量;
60.步骤s24:根据朝向角度判断是否需要进行积雪覆盖渲染。
61.在本实施例中,具体的,所述步骤s24,包括:
62.朝向角度的取值范围为0
°
至90
°

63.是否进行积雪覆盖渲染与朝向角度为正相关;当朝向角度为90
°
,进行积雪覆盖渲染,其他朝向角度不进行积雪覆盖渲染。
64.在本实施例中,具体的,所述步骤s3,包括:
65.步骤s31:根据积雪厚度计算需要进行积雪覆盖渲染的纹理坐标点的白色比例值;
66.步骤s32:对彩色向量进行解析,得到每个纹理坐标点的原颜色值;
67.步骤s33:将需要进行积雪覆盖渲染的纹理坐标点的白色比例值与每个纹理坐标点的原颜色值进行融合达到了最终的渲染效果。
68.在本实施例中,具体的,所述步骤s33,包括:
69.将需要进行积雪覆盖渲染的纹理坐标点的白色比例值与其原颜色值按比例进行融合得到待渲染颜色值;
70.不需要进行积雪覆盖渲染的纹理坐标点采用其原颜色值作为待渲染颜色值;
71.着色器按照需要进行积雪覆盖渲染的纹理坐标点的待渲染颜色值和不需要进行积雪覆盖渲染的纹理坐标点待渲染颜色值进行最终渲染。
72.进一步地,所述融合得到待渲染颜色值,包括:
73.vec4(1.0,1.0,1.0,1.0)*alpha+color*(1-alpha)=color’74.其中:
75.vec4(1.0,1.0,1.0,1.0)为着色器中白色的颜色值;
76.alpha为着色器中预设的比例值,alpha的取值范围为0-1,积雪越厚alpha越接近1;
77.color为纹理坐标点的原颜色值;
78.color’为纹理坐标点的待渲染颜色值。
79.实施例二
80.本实施例中,一种基于cesium三维渲染引擎的积雪效果生成方法,针对cesium现
有着色模型,具体包括如下步骤:
81.步骤s1:对模型的纹理图进行采样,获取纹理图中每个纹理坐标点的纹理坐标向量;优选地,所述模型为:cesium现有着色模型;
82.步骤s2:将纹理坐标向量转换到相机空间中,并根据转换结果判断是否进行积雪覆盖渲染;
83.步骤s3:根据判断结果,对需要进行积雪覆盖渲染的纹理坐标点进行积雪渲染,并将渲染结果与纹理图进行融合,达到最终渲染效果。
84.在本实施例中,具体的,所述步骤s1,包括:
85.步骤s11:通过采样函数texture2d对彩色纹理图和深度纹理图进行采样,获取每个纹理坐标点的彩色向量和深度向量;需要说明的是,所述彩色纹理图和深度纹理图均为四维向量,所述纹理坐标点为二维向量,所有纹理坐标点构成纹理坐标点的点集;采样结果为彩色向量和深度向量,所述彩色向量和深度向量均为四维向量;优选地,所述步骤s11即是对cesium现有着色模型的彩色纹理图和深度纹理图进行采样;
86.步骤s12:对深度向量进行解析,得到每个纹理坐标点的深度值depth。
87.在本实施例中,具体的,所述步骤s2,包括:
88.步骤s21:通过深度值depth将纹理坐标点转换到相机空间中,得到纹理坐标点在相机空间坐标系下的坐标向量posec;需要说明的是,所述坐标向量posec为四维向量;
89.步骤s22:采用纹理图视图转置矩阵inverseview乘以坐标向量posec得到纹理坐标点在模型坐标系中的位置坐标向量poswc;需要说明的是,所述纹理图视图转置矩阵inverseview为cesium内置;所述位置坐标向量poswc为四维向量;
90.步骤s23:利用位置坐标向量poswc计算纹理坐标点在模型坐标系中的法向量normalwc;通过法向量normalwc与位置坐标向量poswc的坐标分量poswc.xyz的点乘结果计算纹理坐标点的朝向角度;需要说明的是,所述法向量normalwc为三维向量;
91.步骤s24:根据朝向角度判断是否需要进行积雪覆盖渲染。
92.在本实施例中,具体的,所述步骤s24,包括:
93.朝向角度的取值范围为0
°
至90
°

94.是否进行积雪覆盖渲染与朝向角度为正相关;当朝向角度为90
°
,进行积雪覆盖渲染,其他朝向角度不进行积雪覆盖渲染。
95.在本实施例中,具体的,所述步骤s3,包括:
96.步骤s31:根据积雪厚度计算需要进行积雪覆盖渲染的纹理坐标点的白色比例值;
97.步骤s32:对彩色向量进行解析,得到每个纹理坐标点的原颜色值;
98.步骤s33:将需要进行积雪覆盖渲染的纹理坐标点的白色比例值与每个纹理坐标点的原颜色值进行融合达到了最终的渲染效果。
99.在本实施例中,具体的,所述步骤s33,包括:
100.将需要进行积雪覆盖渲染的纹理坐标点的白色比例值与其原颜色值按比例进行融合得到待渲染颜色值;
101.不需要进行积雪覆盖渲染的纹理坐标点采用其原颜色值作为待渲染颜色值;
102.着色器按照需要进行积雪覆盖渲染的纹理坐标点的待渲染颜色值和不需要进行积雪覆盖渲染的纹理坐标点待渲染颜色值进行最终渲染。
103.进一步地,所述融合得到待渲染颜色值,包括:
104.vec4(1.0,1.0,1.0,1.0)*alpha+color*(1-alpha)=color’105.其中:
106.vec4(1.0,1.0,1.0,1.0)为着色器中白色的颜色值;
107.alpha为着色器中预设的比例值,alpha的取值范围为0-1,积雪越厚alpha越接近1;
108.color为纹理坐标点的原颜色值;
109.color’为纹理坐标点的待渲染颜色值。
110.以上所述实施例仅表达了本技术的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术技术方案构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1