1 of 22

flam3: a history

erik reckase

2 of 22

discussion topics

  • ifs basics
  • history
  • future
  • animation demo

3 of 22

about me

  • Dual B.S. Math-Electrical Engineering from New Mexico Tech, 1995
  • 1995 ~ 2013 : Aerospace defense contractor
    • Hughes ⧫ Scitor ⧫ Sandia National Labs ⧫ Lockheed Martin ⧫ Northrop Grumman
    • Remote sensing projects, sensor calibration, target tracking and prediction
  • 2006 - 2008 : Red Shift Company LLC
    • Novel signal processing concept breaking speech into individual glottal pulses
  • 2013 - Now : Archer DX
    • Chemistry plus custom software for precise cancerous tumor characterization
    • Accurate tumor ID -> in vitro diagnostic tests for drug trials
    • Individualized treatment

4 of 22

ifs basics & vocabulary

5 of 22

ifs basics

  • Consider points A,B,C
  • Choose a random starting point within the triangle
  • Roll a die.
  • 1 or 2: Make a new dot halfway between the old dot and A
  • 3 or 4: between old dot and B
  • 5 or 6: between old dot and C
  • Repeat until you get tired

Sierpinski triangle!

‘Chaos Game’, Michael Barnsley, 1988

A

B

C

6 of 22

barnsley’s fern

7 of 22

flam3: non-linear ifs

  • This ‘chaos game’ was specifically generalized to selecting a random affine transformation from a weighted set
  • flam3 added a non-linear component to this game:
    • Apply a set of weighted functions to the output of the affine transform to map into a new coordinate system
    • In flam3 parlance, these functions are called ‘variations’ (Vj below), and the combined set of weighted variants and the affine are called ‘xforms’ (Fi below)
    • Built-in variations can be simple, parametric, or dependent

8 of 22

simple variation - sinusoidal

9 of 22

dependent variation - popcorn

10 of 22

parametric variation - blob

11 of 22

the electric sheep screensaver

  • An exercise in distributed computing, inspired by SETI@Home
  • Render frames of flam3 animation using a ‘robot army’ of volunteer machines
  • Server sends out render jobs, in XML, to machines that are running the screensaver
  • Clients return the results of the render as image files
  • In return for their work, the clients receive short pieces of video that play while the machine is idle
  • Note: excess computing power is used to render higher resolution content for galleries and museums, and sales pay for bandwidth�(theoretically)

12 of 22

the electric sheep screensaver

  • Free screensaver clips are approximately 7 seconds @ 800x600
  • Gold (subscription) sheep are 14 seconds @ 1280x720
  • Two types of clips: loops and edges
    • Loops animate a single flame by rotating the affine transformations about their origins 360 degrees over the course of the animation
    • Edges connect loops together, interpolating between the two endpoints while they rotate
    • Iterations are distributed across a time range to provide motion blur
  • Animations are designed to be C1 continuous - no gaps, with random path�

13 of 22

dreams in high fidelity

  • Dreams clips are 30 seconds @ 720p
  • Playback on a mini-PC with HD display
  • 60GB/100GB of video clips
    • 200 loops, 800 edges
  • Two limited editions of 4, a few remain
  • Dreams 1 (2005) $20,000
  • Dreams 2 (2006) $30,000

14 of 22

development history

15 of 22

flam3 origins

  • Scott Draves invented the core algorithm in 1991
  • Released as GPL in 1992
  • Incorporated into many free/commercial software products (After Effects, GIMP, Kai’s Power Tools)
  • One of the original UNIX screensavers (flame)
  • The Electric Sheep screensaver started in 1999

16 of 22

early history: 1999-2002

  • Security clearance did not transition properly when starting at SNL in 1999, took 18 months to resolve with little work assigned
  • Found both flam3/electricsheep and UltraFractal while searching for interesting background wallpapers
  • Started converting hundreds of old Fractint formulas into UF format to achieve true layer transparency and increase rendering speed through algebraic simplification
  • UltraFractal built for escape time fractals, while flam3 is a modified IFS

17 of 22

early history: 1999-2002

  • Started to keep images generated by Ronald Hordijk’s Windows screensaver for high resolution re-renders
  • Suggested to the artist community that mixing flam3 with standard UF fractals might be interesting
  • In 2000, Mark Townsend wrote a basic IFS formula for UF
  • I converted this formula to an implementation of the flam3 approach with basic variants in 2001
  • Mark released Apophysis in 2002, allowing artists to easily design flame fractals for the first time

18 of 22

apophysis revolution: 2002+

  • No longer need to rely on random parameters, can manipulate and design xforms directly via GUI
  • Apophysis creations could be submitted to the Electric Sheep screensaver queue for animation
  • Plugin architecture encouraged artists to create new variations
  • flam3, lacking plugins, needed to reimplement the variants in the C source code and release frequently

19 of 22

flam3 code updates: 2003-2010

  • Massive increase in supported variations
  • ‘Final’ xforms
  • Density estimation
  • Rendering improvements
  • Properly threaded rendering
  • Motion elements
  • Stagger interpolation
  • Highlight power
  • ‘Chaos’ coefs
  • OS agnostic RNG
  • Moved back to Colorado in 2005
  • Wrote new density estimation code 2005-2006
  • 2007 implemented ISAAC random number generation when Windows machines were not random enough
  • 2008 flam3 paper update
  • January 2009 Mindshare, LA
  • 2009 major refactor upgrade, split code out of single monolithic file into modules
  • New ideas about animations

20 of 22

all good things...: 2011-2017

  • Scott and I parted ways, started working on faster fork of flam3 (smoulder)
  • Completed draft edge interpolation strategy for sheep
  • 2012-2013 divorced with split custody of three sons, no more time to code
  • 2013-2015, a few folks tried to do GPU accelerated flame rendering, with some success: Cuburn, Fractron 9000, Flam4CUDA
  • 2013 major job change (defense -> bioinformatics)
  • 2016 small contract with Scott to get flam3 compiled
  • 2017 fractal meetup in Amsterdam

21 of 22

is now the time?

  • Recent media exposure (Annihilation) and Chaotica render quality have got me thinking about flames again, with flam3 no longer a required element
  • Goal is to bring the these periodic, hypnotic animations to the masses, via new hardware or a streaming solution
  • Keep the random path animation strategy, but improve the content
  • If designs are used from specific artists in a saleable product, ensure that some portion of the proceeds return to the creator
  • Lots of existing genetic material for use

22 of 22

questions?