AEFlame After Effects port of flame - cosmic recursive fractal flames Version 1.0 July 1999 Updated email/web page January 2004. flame by Scott Draves After Effects port by Drew Davidson Visit the AEFlame home page at http://www.aeflame.com/ This software is distributed under the GNU General Public License. This software has ABSOLUTELY NO WARRANTY. See the file COPYING.txt for the complete license covering this software. -------------------- WHAT IS THIS THING?? This is AEFlame, an After Effects port of flame, which is a cosmic recursive fractal flame renderer. Scott Draves wrote the original version of flame. Since Scott was kind enough to release the source code under the GNU license, I (Drew Davidson) was able to port his rendering code to After Effects. Do *NOT* email Scott with problems or bugs in this After Effects version! -------------------- WHAT CAN I DO WITH IT? You can render some simply *incredible* fractals that are unlike *any* you have ever seen before. In addition, these fractals can be animated so that they smoothly morph into each other. It is breathtakingly beautiful. -------------------- WHAT DO I NEED TO USE IT? You need Adobe After Effects for Windows. If you don't have After Effects, go to http://www.cs.cmu.edu/~spot/flame.html and see if there are other versions/ports of flame that you can use. There are (free) stand-alone versions that work under Unix and Win32. But quite frankly, the combination of AE and flame is so staggeringly awesome, you should go ahead and buy After Effects just to use AEFlame. -------------------- HOW DO I INSTALL IT?? Drag AEFlame.aex into your Adobe After Effects plugins folder and quit and restart After Effects. It will show up as a "Render" plugin called "AEFlame" that you can apply just like any other effect. If you would like access to the presets (recommended), drag the file "AEFlameSettings.txt" to your C:\ drive root. (i.e. it should be at C:\AEFlameSettings.txt ) If you save settings, this file will be created if it doesn't already exist. It's not necessary to install it, but it already has many beautiful presets that are very useful. If you would like access to many additional color maps (recommended), drag the CMAPS directory to your C:\ root. (i.e. it should be C:\CMAPS\ ) There are many built-in colormaps, but it's always nice to have more, and there are approximately 400 more in the CMAPS dir. -------------------- HOW DO I UNINSTALL IT?? Drag AEFlame.aex out of your Adobe After Effects plugins folder and quit and restart After Effects. AEFlame makes no registry entries and has no additional dlls. You can delete the file C:\AEFlameSettings.txt if you want to delete your saved settings (why would you want to do that???), and the directory C:\CMAPS\ if you no longer want the color maps. -------------------- HOW DO I USE IT?? Apply the AEFlame effect to a layer. Tweak the effect parameters to make it look different. See the section below to learn what the different parameters do. The flame uses the size of the layer to which it is applied to determine the height and width of the rendered image. -------------------- HOW DO I ANIMATE IT?? Make keyframes for the flame parameters as you would for any other effect. Then render the hell out of it. -------------------- HOW CAN I MAKE IT FASTER? To speed up the rendering: + make sample density as low as possible + make the size of the rendered image as small as possible + make the spatial filter radius as low as possible + reduce the # of scanlines (e.g. half/third/quarter settings) Depending on the effect you are trying to create, you could speed up the rendering of your final composition in After Effects considerably. Let's say that you just want to zoom in a little bit on a fractal image, or maybe rotate it, or even just translate the fractal image. You could save a lot of time by pre-composing the fractal image, and then rotating/zooming/translating the *precomposited* image. This version of AEFlame is very dumb... it will re-render every single frame even if the parameters are identical to the previous frame. This can take much longer than is necessary. Before decide you need a huge render farm, think about what you are trying to accomplish, and try to pre-compose the fractal image and then just zoom in, rotate, or translate *that image* for your final animation. Of course it doesn't have to be a static image, you could pre-compose an animation too. Regardless, pre-composing the fractal part of your scene can save you HOURS of rendering time. But i'm sure you know all this already. -------------------- HOW DO I CONTROL THE KIND OF PICTURE I GET?? By choosing good parameters. Some parameters are pretty and some aren't. There is no way to tell exactly what it will look like beforehand, although after a while you will start to recognize the flavor of the parameters. -------------------- DOES A VERSION OF AEFLAME EXIST AS A PHOTOSHOP PLUGIN? HEY, ISN'T THIS THE SAME THING AS THAT FRACTAL FILTER IN KPT 5? AEFlame is based on flame GNU source code written by Scott Draves. Scott rewrote flame for inclusion in Kai's Power Tools 5, a PhotoShop plugin set for Mac and Windows that also includes many more plugins than just flame. It is called "FraxFlame" in KPT5. The renderings in AEFlame and FraxFlame are very similar because they are based on the same core concepts. -------------------- DOES A VERSION OF AEFLAME EXIST FOR AFTER EFFECTS FOR MACINTOSH? No. But the source code is included with this release (GNU license) and it shouldn't be too hard to port. So hop to it! BEFORE YOU MODIFY THIS SOFTWARE, you must read the file COPYING.txt for the precise terms under which you are allowed modify this software. -------------------- WHERE CAN I GET MORE INFO ON AFTER EFFECTS? For more information on After Effects (and to download the full SDK) to to Adobe's site: http://www.adobe.com/ -------------------- WHERE CAN I GET MORE INFO ON FLAME? WHERE CAN I SEE SAMPLE IMAGES/MOVIES RENDERED BY (THE ORIGINAL) FLAME? For more information on flame, and several sample images and links, the original flame code, and documentation for the fractal computations: http://www.cs.cmu.edu/~spot/flame.html -------------------- WHAT CAN I DO WITH THE IMAGES/MOVIES GENERATED BY AEFLAME? Scott Draves says (about the original flame): "You are encouraged to exhibit the output of this software publicly as long as this software is credited as the source of the images." -------------------- HOLY CRAP THESE ARE COOL! BUT NOW I CAN'T GET ANY WORK DONE BECAUSE MY COMPUTER IS CONSTANTLY RENDERING ANIMATIONS!!! I hear ya pal. -------------------- HOW CAN I REPAY YOU FOR MAKING THIS AWESOME SOFTWARE? I didn't make it, Scott Draves made it. I just ported it to AE. But I'd love to see what you've done with it, so maybe you could send a videotape or something with some psychedelic animations? Please email me to get my permission before sending me packages in the mail. -------------------- ARE THE IMAGES/MOVIES THE SAME AS THE UNIX VERSION? They should be the same, EXCEPT for one important difference. After Effects interpolates the coefficients independently, which can result in degenerate matrices as Scott explains: #### The unix version uses his interpolation method. Future versions of AEFlame may use his interpolation method, however this may result in loss of full velocity/curve editing capability in AE for those parameters... -------------------- PORTING NOTES This is pretty much a straight port to AE. Very little was changed except the minimum necessary to get the code to compile under Windows not read from stdin, UI code, etc. No algorithmic changes were made to my knowledge, except for making the Windoze random number generator generate more bits of precision. The colormaps etc. remain totally unchanged from the unix version, however, new colormaps are read in and there is colormap inversion/rotation. The UI is totally different of course... -------------------- NO TECHNICAL SUPPORT There is no technical support for this program whatsoever! Do *NOT* email Scott Draves for tech support for this plugin!!! If you have comments or bugs, please email *ME* Drew Davidson . I can be quite busy so I may not respond. I *DO* read every email and if you have real bugs/suggestions please try to be as specific as possible, describe your system, etc. Do *NOT* email me any attachments/pictures/movies or anything like that!!!!! Just send a link if you want to show me something, or get my permission before you email a file. -------------------- CREDITS / COPYRIGHT flame was originally by Scott Draves After Effects port by Andrew Davidson flame Copyright (C) 1992 Scott Draves. AEFlame Copyright (C) 1999 Andrew B. Davidson. Portions of the source code (the SDK) are Copyright (C) Adobe Systems, Inc. -------------------- DISTRIBUTION / COPYING / NO WARRANTY This software is distributed under the GNU General Public License. This software has ABSOLUTELY NO WARRANTY. See the file COPYING.txt for the complete license covering this software. (Or view the license at the GNU web site at http://www.gnu.org/copyleft/gpl.html ) Some portions of the source code (specifically the After Effects SDK header files required to compile code for After Effects) are not covered under the GNU license. Please see the Adobe web site for the license that covers those files, if any. Additionally, some portions of any compiled binaries may not be covered by the GNU license. -------------------- TRADEMARKS "Adobe" is a registered trademark of Adobe Systems Incorporated. After Effects is a trademark of Adobe Systems Incorporated. Other trademarks and/or service marks are the property of their respective owners. -------------------- SOURCE CODE The source code of this program is included under the GNU license. Go nuts. BEFORE YOU MODIFY THIS SOFTWARE, you must read the file COPYING.txt for the precise terms under which you are allowed modify this software. The source code for the original flame is also included in the file flame.tar.gz. See also http://www.cs.cmu.edu/~spot/flame.html for info on the original flame. -------------------- WEB PAGE Obtain info on AEFlame from: http://www. ################################################################################### COMMAND DOCUMENTATION (very rough) ################################################################################### Using Vectors Whenever you randomize something, the random changes that happened are stored in a "vector". If you then choose "Vector Forward", those changes are re-applied (so you get "more of that type of change"). If you choose "Vector Backward" the changed are applied in the opposite direction (so you get "less of that type of change"... or actually it would be "more of the opposite of that type of change"). Thus, choosing "Vector Backward" immediately after randomizing is the same as undoing that random change completely (EXCEPTION*); then choose vector backward again to keep going in the opposite direction. Or, if you like the random change that was applied, choose "Vector Forward" to keep going in that direction. You can vector the variations and coefficients separately. The size of each change is the size that you chose (i.e. Vector Forward works as Vector Forward Slightly if you originally chose Randomize Slightly, etc.) So basically, a good way to explore is to choose Randomize (Slightly, whatever) until you like the change that just happened, then start choosing Vector Forward (adjusting the Vector length as necessary to control how much the change is applied). (EXCEPTION*): if the changes have clamped one parameter to its max or min value, choosing Vector Backward will not get the exact same picture as before. Use the "Undo" command if you really want to undo the change precisely... Similarly, sometimes when vectoring along, you will "hit the wall" of a min or max of a parameter and so you won't truly be following the same vector anymore. ################################################################################### PARAMETER DOCUMENTATION ################################################################################### Choose a percentage blend to blend the flame effect with whatever is in the layer. If blend is 100%, the flame effect is the only thing you will be able to see in the layer. If blend is 0% you won't be able to see the flame effect at all. ----------------------------------------------------------------------------------- Pixel Per Unit Can't be interpolated smoothly (thus when animated it will be noticably stepwise-jerky at lower values) ----------------------------------------------------------------------------------- Sparklying Change the sample density to make it smoother (and take longer to calculate) (set sample density to its lowest values to get really fast draft renderings). also spatial oversample should be low in ################################################################################### Things to do ################################################################################### make the version in the pipl work make sure the outflags are the same in the pipl as in the code. /* [10] */ AE_Effect_Global_OutFlags { 2 }, + perhaps have a checkbox that says "Pay Attention to AE Quality Setting" + try putting dialog box in there I_DO_DIALOG perhaps use shutter angle instead of temporal filter radius shutter_angle A value describing the motion blur shutter angle The range is 0 to 1, in fixed point. 1 corresponds to the user choosing 360 degrees. This will be zero unless motion blur is enabled and checked for the layer to which the effect is applied. If you use this field, be sure to set the PF_OutFlag_I_USE_SHUTTER_ANGLE flag during GLOBAL_SETUP. + need to tie pixels per unit to the height/width or something so if you increase the resolution of a movie, it doesn't change what you see (or can the user simply change the zoom?) + make the various calls the fprintf(stderr actually display a dialog box or something + add a checkbox "use colormaps" (or maybe separate colormap#?) for simple gray scale colormap + mark some parameters as non-interpolatable (?necessary?) + make the command menu not force us to re-render (e.g. with save settings) (possible?) + put color map popup menu back in and simply connect it to color map # slider. + make the progress bar work right + pure histogram mode (no color map) (need Scott's advice) + put the strip renderer stuff back in so that everything works regardless of memory conditions/size of final image. dynamically adjust the # of strips. + make temporal blur work right (base it on the output frame rate or something, right now I think it assumes 30 fps; or maybe put a slider in with the fps(?)) + field rendering (any changes required for this to work?) + make the rendering routines render into a standard AE image buffer, and use the subpixel sampling routines of AE to read out of that buffer. (also use the standard BLEND etc. routines) what advantages would this give us??? + try making various places in the flame code where it has "if (1)" into an checkbox that you can turn on/off + ability to save and load .template and .place files to create keys in the current frame, or take the current frame's values (even if interpolated) and save them as a .place file. + other ways to explore parameter space/UI for setting sliders + insert several random keys (ie. auto-generate random animation, not just random single frame) + make sure all the parameter min/max/default values are good. + draw the strips as a preview of the rendering + way to cancel a rendering in progress + display colormap name/change name as you are dragging the slider (?possible?) + colormap rotation/flip/compression/etc + put in proper interpolation as scott describes + put scott's pulse and wiggle code in somehow(?) + multithreading + some sort of exploration window like in the GIMP plugin (like photoshop variations) + make render every N pixels work for different N in H/V. right now pixels per unit and various other values can only be modified for H/V locked together. + when generating random parameters, instead of generating each coefficient randomly, try to avoid making degenerate matrices + it would kick ass if the parameter set parameter could be interpolated (i.e. make it a float) and then "parameter 1.5" is the interpolated version of parameter 1 and parameter 2.... that way could make an animation that interpolates in Scott's preferred manner instead of AE interpolation. (animate through presets). need some alternate way of saving/loading (instead of hard-coded preset file name) + integrate Scott's smooth palette routine to grab the color map from the current layer (or some other layer/picture) + fix up all the params from old-style and try the C++ compiler, maybe that's what's screwing up quicktime rendering?/codec + put in optimization so if transparency is 100% it doesn't try to render anything at all (also check other param combos) ---------------- things that I think are already in after effects (need to verify) + automatic handling of different settings for production and draft rendering (so things go faster while working, but look nice for the final render) + full pre-composing capability + motion blur(?) field rendering(?) ---------------- things that may not be possible in AE but would be really cool: + change name of slider dynamically + insert keys (sort of possible) ---------------- bugs to fix + can't render to quicktime (?what the hell?) + render every N pixels works right only for 1:1 ratio (e.g. half, third, quarter but not e.g. every 1 H pixels/every 3 V pixels) try taking out all code except for test image allocation code. then try rendering to quicktime etc. also try with no image buffer, just writing directly to pixels. Try compiling the example plugins and render them to quicktime. ---------------- Thanks Many thanks to Rumi and Scot for hosting the AEFlame home page on neosapien.net.