注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

太阳神上的博客

青青子衿,悠悠我心,但为君故,沉吟至今。

 
 
 

日志

 
 
 
 

用Irrlicht开发音乐喷泉有感  

2008-03-23 22:57:37|  分类: 学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  这是我上学期差不多结束时从姚老师那里弄到的一个项目,当时我就想到用Irrlicht。OpenGL和Direct3D都是比较底层的引擎,如果做一个实用的项目,如果有更高层的引擎可能更方便些。
  我从网上搜了一些资料,发现Irrlicht还算比较有名的,再说Dev-C++就有它相应的开发包,而另外一个叫Ogre感觉比较烦,而且动态库极多。而Irrlicht就一个简单的Irrlicht.dll。
  做个喷泉,具体来说需要一个粒子系统,因为一个喷泉可以看成是一大堆水粒子在喷啊喷。Irrlicht自带了一些例子,里面就有从.irr(就是一个xml文件)中读取信息,然后生成场景的例子。不过音乐喷泉需要灵活控制,因此还得了解到具体的调用方法。我花了一些时间研究Irrlicht的例子,终于了解了Irrlicht的粒子系统的一些机制,具体的过程如下:
  先增加一个粒子系统的结点,然后在这个粒子系统里设置一个粒子发射器,也就是喷泉的喷嘴,然后再添加两个影响器(affector),一个是淡出影响器(fader affector),因为水珠一部分会随风消失,另外一个是重力影响器(gravity affector),这个当然是用来让水往下掉。
  说起来并不难,但是实际操作上有很多问题。首先是水粒子的纹理问题,我到现在仍然没有找到合适的纹理,暂时就用一个白圆代替,这样远景还行,近景一看就不知道是什么东西了。原来的粒子系统例子里是喷火,用的是一个黄色的光球,效果很好。但水粒子我总是没想到用什么样的纹理比较合理。
  第二是粒子的大小问题,如果粒子太大,则显得模糊,像火而不似水,而太小则水不连贯。这个问题也还是没彻底解决。
  还有就是影响器的选项设置。原来我的重力就是按照默认的参数,结果水喷得极高,如果让水斜着喷,就会发现水也是直线喷射,完全没有泻下来。于是我调整了一下参数,水可以像一般的喷泉一样了。这个问题基本得到了解决。
  总的来说Irrlicht是一个很不错的3D游戏库,用C++写的,而且用到了C++的很多特性,不像FLTK,而且用得可以说是泛滥。里面所有的数据都是封装在irr命名空间里,而irr下又根据逻辑关系又细分了好几个子命名空间。里面继承和虚拟函数用得非常好,而且命名非常规范,风格很统一。对于很多开发,的确是一个很不错的选择。

  评论这张
 
阅读(689)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017