游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3932|回复: 6

火焰的燃烧过程有那些特征啊?

[复制链接]

18

主题

21

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2007-5-29 23:16:00 | 显示全部楼层 |阅读模式
谁能告诉我火焰的燃烧过程有那些特征啊,谢谢...

1

主题

102

帖子

108

积分

注册会员

Rank: 2

积分
108
QQ
发表于 2007-6-2 00:22:00 | 显示全部楼层

Re:火焰的燃烧过程有那些特征啊?

lz你就用冲量模拟每个粒子就挺好的,又不难,而且符合物理定律。也不用考虑这些特征什么的……
碰到你以前说的那个平面就给它们冲量。

注意粒子发射器发射的方向是四面八方的,出去的粒子马上受连续浮力和阻力上升
(速度应该近似对数函数,其实你不用管这些具体速度,数值积分着了)。
最后调试好发射速度,使其看起来效果好

由于粒子有相对平面斜线速度,他们遇到平面会散开到平面两侧(动摩擦别太大,恢复系数取0)。

27

主题

1289

帖子

1374

积分

金牌会员

Rank: 6Rank: 6

积分
1374
QQ
发表于 2007-6-11 16:47:00 | 显示全部楼层

Re:火焰的燃烧过程有那些特征啊?

wo  我感觉游戏中的粒子不一定真实,只要效果满足大家就可以了

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2007-6-11 18:41:00 | 显示全部楼层

Re:火焰的燃烧过程有那些特征啊?

吸收热量--
空气流动---冷空气流动和热空气流动
火焰上升-
火焰冷却。

1

主题

11

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2007-8-16 21:25:00 | 显示全部楼层

Re: 火焰的燃烧过程有那些特征啊?

可以考虑通过r,g,b的渐变来实现火焰色彩的平整过渡..粒子系统可以模拟较逼真的火焰.

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2007-10-11 19:08:00 | 显示全部楼层

Re:火焰的燃烧过程有那些特征啊?

en ~~~~~~~~~~~

0

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2007-10-15 14:50:00 | 显示全部楼层

Re:火焰的燃烧过程有那些特征啊?



我自已的代码如下.(用jogl写的!)

public class Particle {
   
    private Vector3f pos;
    private Vector3f velocity;
    private float[] color = { 1.0f, 0.5f, 0.3f, 1.0f };
    private float size = 0.75f;
    private float angle = 30;
    private float delt = 0.08f;
    private float life;
   
    public Particle(){
        pos = new Vector3f (0f, 0f, 0f);
        velocity = new Vector3f(rand(-0.5f, 0.5f), rand(0.5f, 2.0f), 0f);
        life = rand(1f, 1.5f);
    }
   
    public void calculate () {
        
        pos.x += velocity.x*delt;
        pos.y += velocity.y*delt;
        pos.y -= 0.98f*delt;
        
        angle += angle*delt;
        
        life -= delt;
        
        if ( life < 0 ) {
            pos.x = pos.y = pos.z = 0f;
            life = rand (1f, 1.5f);
            velocity = new Vector3f(rand(-0.5f, 0.5f), rand(0.5f, 2.0f), 0f);
            angle = 30;
        }
    }
   
    public void renderParticle (GL gl, Texture tex) {
        if ( life < 0 )
            return;
        
        gl.glDepthMask(false);
        
      
        tex.bind();
        TextureCoords tc = tex.getImageTexCoords();
            
        gl.glPushMatrix();
        gl.glTranslatef(pos.x, pos.y, pos.z);
        gl.glPushMatrix();
        gl.glRotatef(angle/2.0f, 0f, 1f, 0f);
            
        float halfsize = size*0.5f;
        
        gl.glColor4fv(color, 0);
        gl.glBegin( GL.GL_QUADS );
        gl.glTexCoord2f( tc.left(), tc.bottom() );
        gl.glVertex3f(-halfsize, -halfsize, 0f);
        gl.glTexCoord2f( tc.right(), tc.bottom() );
        gl.glVertex3f(halfsize, -halfsize, 0f);
        gl.glTexCoord2f( tc.right(), tc.top() );
        gl.glVertex3f(halfsize, halfsize, 0f);
        gl.glTexCoord2f( tc.left(), tc.top() );
        gl.glVertex3f(-halfsize, halfsize, 0f);
        gl.glEnd();
        
        gl.glPopMatrix();
        gl.glPopMatrix();
        
        gl.glDepthMask(true);
            
    }
   
    private float rand(float min, float max) {
        return (float)(min + (max - min)*Math.random());
    }


public class Vector3f {
    float x;
    float y;
    float z;
   
    public Vector3f(float x, float y, float z) {
        this.x = x;
        this.y = y;
        this.z = z;
   
    }
}


关键是参数要选得合适,请指教!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-14 09:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表