任程的博客

计算机图形、动画、虚拟现实 / 3D Computer Graphics, Computer Animation, Virtual Reality / uStep禹步信息科技
  首页  :: 联系 :: 订阅 订阅  :: 管理

利用billboard实现云的仿真

Posted on 2008-03-25 21:57  任程  阅读(2495)  评论(3编辑  收藏  举报

仿照微软模拟飞行2004,利用Billboard实现的云。这里是一小段俺们的飞机在空中的视频。

利用gmax建模,然后写个插件将其导出为xml格式,再将其读入到程序中。

利用gmax建立billborad集而不是3ds max,是因为微软FS2004提供了gmax的工具。

微软这个工具导出的格式只能用在FS2004中,要想在自己的程序中利用这个Billboard集,需要自己写插件程序导出;另一种折中办法是将其导出为通用的obj文件,但后一种方法的缺陷是导出信息很少(只包括顶点信息、索引信息、UV坐标信息),无法为你专门导出Billboard的位置、大小、Shader属性信息。

为了防止穿云过程中跨过一个Billboard时产生的云块突变现象,在Billborad的顶点程序中根据顶点离视点的远近来调整透明alpha值,使得穿出云层时Billboard慢慢消失。

这个实现比起FS2004还差一些,还需要加入云彩24小时随太阳光照颜色的变化和云顶部底部光线的差异;另外目前的云只在16km*16km范围内,下一步还要利用Impostor将远处的云实时渲染到纹理中,来扩展云彩的范围。

Ps: 感谢宋给我提供了Virtools中的Shader程序作为参考。