【技术实现步骤摘要】
一种基于WebGL的动态水体渲染方法
[0001]本专利技术属于数字孪生
,涉及一种基于
WebGL
的动态水体渲染方法
。
技术介绍
[0002]随着
WebGL
的快速发展,基于
WebGL
建立的数字地球
、
数字园区
、
数字流域等三维虚拟仿真应用处于井喷式状态
。
而水利实体对象具有明显的时空分布特征,水体渲染是三维仿真应用中的重要部分
。
[0003]传统的水面渲染技术可实现水面流动效果,多以面作为水面效果渲染,无法准确的展现水面的波动效果和与物体碰撞的浪花效果,并且水流向也是一个方向,无法真实的模拟水多方向流动的效果
。
技术实现思路
[0004]本专利技术解决的技术问题是:克服现有技术的不足,提出一种基于
WebGL
的动态水体渲染方法,解决了如何基于地理信息系统,使用
WebGL
实现动态水体的三维仿真效果的问题
。
[0005]本专利技术解决技术的方案是:一种基于
WebGL
的动态水体渲染方法,包括:
[0006]步骤一
、
基于卫星拍摄获得的地形数据创建地形高度图与水面高度图,获取现有的水波纹理图与水面法线图;
[0007]步骤二
、
根据地形高度图确定水面范围:判断任一屏幕坐标是否在地形高度图的四个角点坐标范围内,若是,进入步骤三,否 ...
【技术保护点】
【技术特征摘要】
1.
一种基于
WebGL
的动态水体渲染方法,其特征在于,包括以下步骤:步骤一
、
基于卫星拍摄获得的地形数据创建地形高度图与水面高度图,获取现有的水波纹理图与水面法线图;步骤二
、
根据地形高度图确定水面范围:判断任一屏幕坐标是否在地形高度图的四个角点坐标范围内,若是,进入步骤三,否则重复步骤二;步骤三
、
根据地形高度图和水面高度图计算视点坐标位置处真实的水面地理高度,并与视点坐标中的高度值进行比较,判断视点与水面的位置关系,当视点位于水面上,进入步骤四,否则方法结束;步骤四
、
根据视点坐标和任一屏幕坐标确定视点方向矢量,计算视点方向矢量与水面交点坐标,基于水波纹理图对所述交点坐标进行波浪添加,得到交点波浪坐标,基于水面法线图计算交点波浪坐标的法向量;步骤五
、
将交点波浪坐标的法向量
、
视点方向矢量代入
Cook
‑
Torrance
光照模型计算水面反射强度,将水面反射强度代入
Blinn
‑
phong
光照模型计算水面反射颜色;根据水面深度
、
地面颜色
、
光照颜色以及水面颜色计算水面折射颜色,将水面反射颜色与水面折射颜色进行比例相加,得到水面渲染颜色赋值给
WebGL
内置颜色输出变量;步骤六
、
利用
WebGL
开源框架
Cesium
的后处理对象,根据步骤二~步骤五的处理流程定义片元着色器,进行水面渲染
。2.
根据权利要求1所述的一种基于
WebGL
的动态水体渲染方法,其特征在于,步骤一所述地形数据包括地形真实高度,在创建的地形高度图中,地形真实高度通过以下方法进行表示:
height1
=
‑
10000+((R*256*256+G*256+B)*0.1)
其中,
height1
为地形真实高度,
R、G、B
分别对应了图片的红
、
绿
、
蓝三个波段,创建出来的地形高度图为
RGB
彩色图片;在创建的水面高度图中,真实水面高度通过以下方法进行表示:
height2
=
R/10
其中
height2
是真实水面高度,
R
对应图片的红
R
波段,创建出来的水面高度图是单波段的灰度图
。3.
根据权利要求1所述的一种基于
WebGL
的动态水体渲染方法,其特征在于,步骤三所述计算视点坐标位置处真实的水面地理高度,具体为:对于视点坐标
cameraPosition
,获取地形高度图中与所述视点坐标对应位置处的地形真实高度
height1
,获取水面高度图中与所述视点坐标对应位置处的真实水面高度
height2
,将获取的
height1
与
height2
相加,得到所述视点坐标位置处真实的水面地理高度
currentHeight。4.
根据权利要求1所述的一种基于
WebGL
的动态水体渲染方法,其特征在于,步骤四所述计算视点方向矢量与水面交点坐标,具体为:步骤
401、
首先,将任一屏幕坐标
position
与视点坐标
cameraPosition
分别转换为相对地形高度图中心的相对模型坐标,分别记为
m_position
与
m_CameraPosition
;
m_position
减
m_CameraPosition
得到视点方向矢量
eyeVec
,并对视点方向矢量
eyeVec
进行归一化处理,得到
eyeVecNorm
;
步骤
402、
定义高度比例
t1
为:
t1
=
(currentHeight
‑
m_CameraPostion_z)/eyeVecNorm_z
;根据高度比例
t1
计算视点方向矢量与水面交点坐标
surfacePoint1
为:
surfacePoint1
=
m_CameraPostion+eyeVecNorm*t1
;其中,
currentHeight
为该视点坐标位置处真实的水面地理高度,
m_CameraPosition_z
为
m_CameraPosition
的高度值,
eyeVecNorm_z
为
eyeVecNorm
的高度值
。5.
根据权利要求4所述的一种基于
WebGL
的动态水体渲染方法,其特征在于,步骤四所述基于水波纹理图对所述交点坐标进行波浪添加,得到交点波浪坐标,具体为:定义偏移材质坐标
texC
如下:
texC
=
[(surfacePoint1_x,surfacePoint1_y)+(eyeVecNorm_x,eyeVecNorm_y)*biasFactor]+czm_frameNumber*0.01*0.03*m_windDirection
其中,
surfacePoint1_x,surfacePoint1_y
为所述交点坐标
surfacePoint1
的平面坐标;
eyeVecNorm_x,eyeVecNorm_y
为
eyeVecNorm
的平面坐标;
biasFactor
为偏执因子;
czm_frameNumbe...
【专利技术属性】
技术研发人员:魏浩,吴曦,章维鑫,龚婷婷,冷红伟,贺一桐,李建平,
申请(专利权)人:中国四维测绘技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。