三维水面可视化技术的原理
2015-05-25 00:08
267 查看
水面具有起伏、流动、反射、折射等效果。在计算机图形学中,水面的波动通常采用两种思路实现,第一种是把水的表面剖分成均匀的网格,然后通过GPU中的顶面着色器控制每个网格顶点按照特定规律运动。第二种是通过控制GPU中的片元着色器,使得水面的凹凸纹理随时间平移来实现。在三维GIS中的数据量大,所以渲染性能尤为关键。而第二种思路中由于不用计算大量顶点的位置,其渲染性能更高,所以本文所实现的系统中采用第二种思路。
水面的反射的基本实现思路是纹理渲染。在每一帧中对场景进行两次渲染,第一次渲染时,将场景中水面对象设置为不可见,然后把相机移动到关于反射面对称的位置,渲染场景到一张纹理上;第二次渲染时将整个场景设置为可见,把刚才得到的反射纹理作为水面的纹理进行渲染。当相机距水面位置较远时,其反射效果很不显著,为了渲染性能,此时不进行第一次渲染,而采用一种静态纹理来代表反射面。
折射效果通常用来表现水底情况。本文采用多重纹理方式实现折射效果,采用第一层纹理存储水面表面法向量,第二层纹理表现反射物体,第三层纹理存储水底折射物体。当光到达材质的交界面时,一部分光被反射,而另一部分将发生折射,这个现象称为菲涅尔效应。菲涅尔效应混合了反射和折射,使得物体更真实。理论物理汇总的菲涅尔公式是非常复杂的,而在实时图形学中只要在最终效果上满足人们的视觉感受就可以了,因此本文采用了以下简化公式来计算水面的折射和反射混合参数,然后根据该参数混合折射和反射纹理的颜色作为水面像元的颜色。
水面的反射的基本实现思路是纹理渲染。在每一帧中对场景进行两次渲染,第一次渲染时,将场景中水面对象设置为不可见,然后把相机移动到关于反射面对称的位置,渲染场景到一张纹理上;第二次渲染时将整个场景设置为可见,把刚才得到的反射纹理作为水面的纹理进行渲染。当相机距水面位置较远时,其反射效果很不显著,为了渲染性能,此时不进行第一次渲染,而采用一种静态纹理来代表反射面。
折射效果通常用来表现水底情况。本文采用多重纹理方式实现折射效果,采用第一层纹理存储水面表面法向量,第二层纹理表现反射物体,第三层纹理存储水底折射物体。当光到达材质的交界面时,一部分光被反射,而另一部分将发生折射,这个现象称为菲涅尔效应。菲涅尔效应混合了反射和折射,使得物体更真实。理论物理汇总的菲涅尔公式是非常复杂的,而在实时图形学中只要在最终效果上满足人们的视觉感受就可以了,因此本文采用了以下简化公式来计算水面的折射和反射混合参数,然后根据该参数混合折射和反射纹理的颜色作为水面像元的颜色。
相关文章推荐
- 三维可视化仿真遇到虚拟现实技术
- 三维立体电影制作 技术原理
- 当机器人系统与三维可视化仿真遇到虚拟现实技术
- 当机器人系统与三维可视化仿真遇到虚拟现实技术
- 当机器人系统与三维可视化仿真遇到虚拟现实技术
- 数字城市三维可视化技术路线
- (原创) 三维地形可视化快速实现技术方法研究 ——以江西庐山为例
- 借助WebGL三维可视化技术检索3D动态图像
- 借助WebGL三维可视化技术检索3D动态图像
- GIS+=地理信息+大数据技术——GIS大数据可视化分析工具
- CDN(内容分发网络)技术原理
- 大型网站技术架构-核心原理与案例分析-阅读笔记4
- 地图二三维联动原理
- Spring核心技术原理-(2)-通过Web开发演进过程了解一下为什么要有Spring AOP?
- 中文分词技术(中文分词原理)
- 音频重采样原理及技术实现
- Java对象池技术的原理及其实现
- CDN(内容分发网络)技术原理