JavaME 3D游戏开发之雾气和粒子

zhang108 2011-01-21 02:36:15
加精
通过前面几文的学习,我们已经能够使用JSR239开发包来构建各种游戏场景了,但是总是觉得场景中比较单调,这需要通过一些特效来修饰,本文将要讲述的粒子系统可以用来完成一部分特效。
粒子系统表示三维计算机图形学中模拟一些特定的模糊现象的技术,而这些现象用其它传统的渲染技术难以实现的真实感的 game physics。经常使用粒子系统模拟的现象有火、爆炸、烟、水流、火花、落叶、云、雾、雪、尘、流星尾迹或者象发光轨迹这样的抽象视觉效果等等。
首先来说说雾气吧,因为雾气会比较简单,也是Opengl种提供了现成的api,不用我们自己去实现,首先比较一下下图中左边是没有使用雾气的效果,右边是使用了雾气的效果。

Opengl中一共提供了三种雾气模式,他们分别是:GL10.GL_EXP, GL10.GL_EXP2, GL10.GL_LINEAR,下面我们将介绍着三种雾气模式的使用,以及他们的不同地方。使用雾气的代码如下:
public void fogTest() {
// 雾气的模式
int fogMode[] = { GL10.GL_EXP, GL10.GL_EXP2, GL10.GL_LINEAR };
// 雾的颜色设为白色
float fogColor[] = { 0.5f, 0.5f, 0.5f, 1.0f };
// 设置雾气的模式
gl.glFogx(GL10.GL_FOG_MODE, fogMode[1]);
// 设置雾的颜色
gl.glFogfv(GL10.GL_FOG_COLOR, fogColor,0);
// 设置雾的密度
gl.glFogf(GL10.GL_FOG_DENSITY, 0.35f);
// 设置系统如何计算雾气
gl.glHint(GL10.GL_FOG_HINT, GL10.GL_DONT_CARE);
// 雾气的开始位置
gl.glFogf(GL10.GL_FOG_START, 0.1f);
// 雾气的结束位置
gl.glFogf(GL10.GL_FOG_END, 5.0f);
// 启用
gl.glEnable(GL10.GL_FOG);
}
对雾气的设置可以使用glFogx(或者glFogfv\glFogf)函数,根据不同的参数有不同的功能,其中glFogfv(GL_FOG_COLOR, fogcolor);设置雾的颜色。之前我们已将变量fogcolor设为(0.5f,0.5f,0.5f,1.0f),所以这里我们就直接使用fogColor了。glFogf(GL_FOG_DENSITY, 0.35f);这行设置雾的密度。增加数字会让雾更密,减少它则雾更稀。glHint (GL_FOG_HINT, GL_DONT_CARE); 设置修正。我使用了GL_DONT_CARE因为我不关心它的值。glFogf(GL_FOG_START, 1.0f);设定雾效距屏幕多近开始。你可以根据你的需要随意改变这个值。glFogf(GL_FOG_END, 5.0f);告诉OpenGL程序雾效持续到距屏幕多远。
glFogi(GL_FOG_MODE, fogMode[fogfilter]);建立雾的过滤模式。下面是3中雾气模式之间的区别:
Ø GL_EXP :充满整个屏幕的基本渲染的雾。它能在较老的PC上工作,因此并不是特别像雾。
Ø GL_EXP2:比GL_EXP更进一步。它也是充满整个屏幕,但它使屏幕看起来更有深度。
Ø GL_LINEAR:最好的渲染模式。物体淡入淡出的效果更自然。
对于每一种雾气模式的效果,大家可以自己测试,这里我们就不在贴图了。雾气的效果是Opengl本身提供的,但是如果我们要使用其他的特效,就需要我们自己来实现了,下面我们分析如何实现一个粒子系统。
粒子系统实际上就是采用大量的、具有一定生命和属性的微小粒子图元作为基本元素来描述不规则的模糊物体。在粒子系统中,每一个粒子图元均具有:形状、大小、颜色、透明度、运动速度和运动方向、生命周期等属性。而一个粒子究竟有什么样的属性,主要取决于粒子系统用来模拟什么。粒子系统是动态变化的,粒子系统的所有属性都是时间t的函数,随着时间的推移,系统中不断有新粒子的加入,旧的粒子死亡,系统中“存活”的粒子其位置及生命值亦随时间变化而变化。随着虚拟世界时间的流逝,每个粒子都要在虚拟世界经历“产生”、“活动”和“消亡”三个阶段。因此我们就需要用程序语言来模拟这每个粒子的生命周期变换,从而形成一个粒子效果。

详细内容:http://g.csdn.net/5168983

其他内容:
JavaME 3D游戏开发框架(一)
JavaME 3D游戏开发框架(二)
JavaME 3D游戏开发——基本图形渲染
JavaME 3D游戏开发——3D图形渲染
JavaME 3D游戏开发——光效
JavaME 3D游戏开发——材质
JavaME 3D游戏开发——纹理
JavaME 3D游戏开发——纹理映射
JavaME 3D游戏开发——模型
...全文
3384 46 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
46 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯布灬Cob 2013-08-12
  • 打赏
  • 举报
回复
学习下 mark之。。。
other213 2013-03-15
  • 打赏
  • 举报
回复
有空再看一下
个案 2011-12-26
  • 打赏
  • 举报
回复
好牛,羡慕
蓝明乐 2011-11-06
  • 打赏
  • 举报
回复
嘻嘻!!!很好
myslmyslsss 2011-02-07
  • 打赏
  • 举报
回复
不是吧,还板车啊
zjhwrobot 2011-02-05
  • 打赏
  • 举报
回复
不错,有意思
superManXsj 2011-02-01
  • 打赏
  • 举报
回复
JAPAN
火星大能猫 2011-01-25
  • 打赏
  • 举报
回复
很有意思的东西
咿呀大河马 2011-01-24
  • 打赏
  • 举报
回复
MARK!!
xg729993292 2011-01-24
  • 打赏
  • 举报
回复
不错,去试试
ddnetplay 2011-01-24
  • 打赏
  • 举报
回复
JavaME 3D游戏开发精品教程
vampiresai 2011-01-24
  • 打赏
  • 举报
回复
先保存下,等着开发SE的时候再用
zm_hs 2011-01-24
  • 打赏
  • 举报
回复
收藏一下!
boxun123 2011-01-24
  • 打赏
  • 举报
回复
说的好!!
a541336298 2011-01-23
  • 打赏
  • 举报
回复
真的吗
talentzxf 2011-01-23
  • 打赏
  • 举报
回复
Opengl的雾气不是用粒子系统实现的!是Pixel Render的。

[Quote=引用楼主 zhang108 的回复:]
通过前面几文的学习,我们已经能够使用JSR239开发包来构建各种游戏场景了,但是总是觉得场景中比较单调,这需要通过一些特效来修饰,本文将要讲述的粒子系统可以用来完成一部分特效。
粒子系统表示三维计算机图形学中模拟一些特定的模糊现象的技术,而这些现象用其它传统的渲染技术难以实现的真实感的 game physics。经常使用粒子系统模拟的现象有火、爆炸、烟、水流、火花、落叶、云、雾、雪、尘、流星尾迹……
[/Quote]
hg2980986 2011-01-22
  • 打赏
  • 举报
回复
好东西要收藏
Sodino 2011-01-22
  • 打赏
  • 举报
回复
呵呵,为此文章顶一下。
  • 打赏
  • 举报
回复
X谢谢分享
leehun1000 2011-01-22
  • 打赏
  • 举报
回复
多谢哈! 可以试一下了
加载更多回复(5)
访问真八字排盘系统介绍: 1、八字排盘 八字排盘是将年月日时按照天干地支的形式进行排列,一个时间单位代表了一个柱。八字由年柱、月柱、日柱和时柱共四个柱组成,也被称为四柱八字。八字学中基于中国阴阳五行、天干地支与刑冲克害、以及民间盲派的神煞论等方式,进一步预测爱情顺遂、工作高低、姻缘好坏、财富高低、学业成就、身体健康等事的学问。 八字排盘由以下元素组合:年月日时四柱、大运干支、胎元 、流年干支、十神、地势、神煞等。生辰八字不只是把干支历计算出来,而还要遵守月令、节令的强弱,时辰的阴阳变化进行校正。排盘分析,就是根据出生者的性别、天干地支的阴阳五行关系、进一步推算出来的一套方法论,给预测者做人生吉凶的参考数据,在未来事业、财运、婚姻、家庭等问题时,能做出风险较低的决策。 八字排盘怎么看 八字排盘由年、月、日、时四柱组成,每柱包含一个天干和一个地支,共八个字。年柱代表出生的年份,月柱代表出生的月份,日柱代表出生的日期,时柱则代表出生的时辰。每个柱的干支组合都会对个人的命运产生影响。天干地支旁边标注的正财、偏财、偏印、正印、比肩、劫财、食神、伤官、正官、七杀等,称为十神。 2、八字排盘软件介绍 我们是腾讯云市场金牌合作伙伴,广州正规软件开发公司,开发的八字排盘系统数据最全面精准,我们八字排盘采用最精确的排盘程序,而且运用“真太阳时”,进行更精确的时间划分。大家都知道我们使用的北京时间,是统一规定的标准时间。而八字排盘需要相对于太阳方位的天文时间,即平太阳时。我们国家地大物博,北京时间19时,哈尔滨已经夜幕降临,而新疆却还是太阳高挂,这时哈尔滨的天文时间可能在20:00以后,而新疆的天文时间可能在16时以前。北京时间是东经120度经线的平太阳时,如果您出生地的经度与北京时间所处的经度差异较大,或者处于单数时间点的前后,比如6点差一刻,8点,10点15分等

13,097

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧