您的位置:首页 > 其它

三维水面可视化技术的原理

2015-05-25 00:08 267 查看
水面具有起伏、流动、反射、折射等效果。在计算机图形学中,水面的波动通常采用两种思路实现,第一种是把水的表面剖分成均匀的网格,然后通过GPU中的顶面着色器控制每个网格顶点按照特定规律运动。第二种是通过控制GPU中的片元着色器,使得水面的凹凸纹理随时间平移来实现。在三维GIS中的数据量大,所以渲染性能尤为关键。而第二种思路中由于不用计算大量顶点的位置,其渲染性能更高,所以本文所实现的系统中采用第二种思路。

水面的反射的基本实现思路是纹理渲染。在每一帧中对场景进行两次渲染,第一次渲染时,将场景中水面对象设置为不可见,然后把相机移动到关于反射面对称的位置,渲染场景到一张纹理上;第二次渲染时将整个场景设置为可见,把刚才得到的反射纹理作为水面的纹理进行渲染。当相机距水面位置较远时,其反射效果很不显著,为了渲染性能,此时不进行第一次渲染,而采用一种静态纹理来代表反射面。

折射效果通常用来表现水底情况。本文采用多重纹理方式实现折射效果,采用第一层纹理存储水面表面法向量,第二层纹理表现反射物体,第三层纹理存储水底折射物体。当光到达材质的交界面时,一部分光被反射,而另一部分将发生折射,这个现象称为菲涅尔效应。菲涅尔效应混合了反射和折射,使得物体更真实。理论物理汇总的菲涅尔公式是非常复杂的,而在实时图形学中只要在最终效果上满足人们的视觉感受就可以了,因此本文采用了以下简化公式来计算水面的折射和反射混合参数,然后根据该参数混合折射和反射纹理的颜色作为水面像元的颜色。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: