Particle 'turbulence' (imitating a fire effect)

Started by
4 comments, last by ddn3 14 years, 11 months ago
I've written a scrip table particle system (particles are scripted using C# while the engine itself is C++). This is the effect I am trying to imitate in my C# particle script: http://www.euqahuba.com/tips_fire.html Between the second and third image there is a problem with the "pTurbulence". I've tried using a 2D perlin map, picking 2 random x values (one for the x velocity, one for the particle's y velocity), and the y value being a scalar that moves over the lifetime of the particle. This results in all the particles flying off doing their own thing like ants. Where as in the screenshot (under where it says "(This is how your image should look like at frame 100)") it shows the particles are clusted together and and reacting to each other. What exactly would the "pTurbulence" node mean? Are they interacting with each other using physics? This is my fire so far: http://img145.imageshack.us/img145/5856/fireqdn.jpg This is what I am aiming for: http://www.euqahuba.com/images/fire_image_3_low_.jpg Thanks!
Advertisement
My guess would be the Turbulence node creates a 3d density field which affects particle velocity moving through it. Kinda like what this algorithm does in 2d.

http://freespace.virgin.net/hugo.elias/graphics/x_warp.htm

That's a great site you should explore it.

As the particles move through the field they accelerate in the direction of the field, its alot simpler to calculate than simulating true fluid dynamics, in trade of memory.

Good Luck!

-ddn
I understand how to create the grid, but given a particles inside a square/cube where it's corners are offset, how do I calculate the particle's acceleration?
Im thinking you can do a linear interpolation of each dimension and that will give you an instantaneous acceleration force for that given point in space, then you take that force and multiple it by the time delta for that frame and add that into the velocity of the particle.

As the particle moves through the grid it gains energy and unless you compensate for that somehow ( perhaps with some sort of viscosity ), all the particles will fly apart eventually. Or perhaps each cube actually defines the velocity of the particle and not the acceleration? It seems like the original effect it actually defines the particles velocity and not acceleration.

Give both a try and see how it works out?

Good Luck!

-ddn
Here is the effect so far:
http://img254.imageshack.us/img254/618/fireqyd.jpg

I'm using 2 warp maps, no vertices are offset by more than 0.5x the distance between vertices.

The warp map isn't changing so far, so the particles are following a set path. When I'm finished the warp map will morph over time so hopefully (with some experimentation) it'll simulate flames against the wind.

I'm following that site and it recommends using gel simulation over time. However my warp map is 2D, so I'd used cloth simulation. But, wouldn't the cloth eventually reach an equilibrium over time and stop moving?

Edit: I added some random forces that every once in a while to keep it stimulated.

I present to you my fire:
http://img6.imageshack.us/img6/1291/firet.png
http://img4.imageshack.us/img4/7668/firem.png

[Edited by - MessiahAndrw on May 3, 2009 8:12:45 AM]
Wow that looks great! If you have the time you can do volumetric rendering for the particles, using ray marching algorithm.

See this page for example :

http://www.gamasutra.com/view/feature/3680/a_more_accurate_volumetric_.php

It should give you more correct volume rendering for the particles as a gas and perhaps reduce the discrete nature of the particles.

It's look great!

Good Work!

-ddn

This topic is closed to new replies.

Advertisement