The part about the harmonic oscillation frequency in the flame flicker is most interesting:<p>"<i>The frequency of these oscillations seems to be around 5 Hz, drifting up, and seems to be a fundamental parameter of the flame since it appears to be relatively constant in all observations.</i>"<p>It appears that some (optical) flame detectors work by obtaining the frequency of this flicker: [1]<p>"<i>This flame scanner also monitors the rate of combustion by analysing the flicker frequency, or the fingerprint, of the flame... Since the flame is always burning back to the fuel source, the flame is always in motion. This motion allows the intensity of the flame to vary across a flame flicker frequency spectrum.</i>"<p>From that link, it appears that the "flicker frequency" would be related to the exact fuel source and possible fuel/air mixture ratio, as the "flame is always burning back to the fuel source".<p>Some other information about flame frequency-flicker: [2]<p>"<i>Under normal gravity conditions, the flames have a well defined oscillation frequency which is inversely proportional to the square root of the burner diameter, D, and to a good approximation can be written as f » 1.5/D½, with D given in meters.</i>"<p>So, it would indeed seem that the flicker frequency is related to the particulars of the candle, its wick, etc.<p>Very interesting article!<p>1. <a href="http://www.coen.com/wp-content/uploads/2010/05/HydrocarbonWorld.pdf" rel="nofollow">http://www.coen.com/wp-content/uploads/2010/05/HydrocarbonWo...</a><p>2. <a href="http://www.dantecdynamics.com/flow-characterization-of-flickering-methane-air-laminar-diffusion-flames-using-piv" rel="nofollow">http://www.dantecdynamics.com/flow-characterization-of-flick...</a>
This is awesome! Finally empirical evidence to back up what I've felt all along -- that those fake LED candles don't look anything like a real candle and are actually kind of distracting.<p>That animation at the end really sums it up nicely.
Great breakdown. The animation at the end is more convincing than any fake candle I've seen. I'll make sure to use your model if I ever need to simulate flame lighting in a game.<p>Nitpicking, but I think this is technically data modeling and not reverse engineering.
I wonder how you could apply something like this to transition animations. The simulated flicker ended up looking much better than the LED flicker.<p>Sometimes I see animations in UI. Some look completely natural, and some are horribly jarring. I know there are all sorts of curves that tweening uses to time its path. I wonder if reversed engineered curves would look better.
FWIW, the initial loss of brightness is almost certainly due to a reduction in temperature a the fuel/air mixing piont. Blowing on a fire actually increases the oxygen available.
Very interesting take on the subject. Of course, I think to simulate a real candle, one would have to have some way of measuring air current. If I see a fake candle flickering, and feel no air current, I'm going to be less likely to think it's a real candle.<p>An LED candle the responds to its environment, could be "blown out" for instance would make a great little hack project.
This is cool. Is the candle-flicker gif based on the algorithm, or the actual output from the LED? Because I assume the LED will smooth out some features. Vice versa, the LED probably needs to be driven with different data to produce the equivalent brightness variation.
The article[0] linked as an example of constrained random walk has a video that's creepy and pretty unsettling. It's interesting how sprinkling some randomness on things we're used to can make our brains go weird on us.<p>[0] - <a href="http://cnr.lwlss.net/ConstrainedRandomWalk/" rel="nofollow">http://cnr.lwlss.net/ConstrainedRandomWalk/</a>
I've had breadboards like his react to air flow. Those cheap ones especially have such horrible connections that the slightest motion of flimsy part like a resistor or LED wagging in the breeze will cause a significant change in impedance where the leads meet the contacts.<p>Since this signal is dependent upon the series resistance, the output could vary as a result.