MakeWaves.ifx -- An automated Wave Propagator. v.1.5 copyright c.1993 by Magic Bullet Communications, Incorporated. All rights reserved. MakeWaves.ifx may be freely distributed, but it is neither public domain nor freeware. It is SHAREWARE. For a modest cost-of-development abatement fee of $15.00 u.s., you may use it freely to your heart's content. Consider the value. Consider the results. SHAREWARE registration fees made payable to: Gary L. Gehman 32 E. Coulter St. Philadelphia, PA 19144 DESCRIPTION You can use Image/FX's Wave Distortion Effect to create interesting still image wave effects. However, it is tedious to animate those waves. This program: MakeWaves.ifx is designed specifically to create moving sequences that approximate the annular wave propagation phenomenon that can be observed any time you drop a pebble into a pool of water. MakeWaves.ifx is an AREXX batch program that recursively calls the Wave Distortion operation according to a set formula. There are a number of ways that it can be used to assist in the creation of special effects animations. Provision is made for adding waves into an existing sequence or animation by specifying a particular frame number at which to start. A wave can be added into an existing Animation or sequence of frames without disturbing the frames that precede or follow it. In MakeWaves.ifx, a wave has three components: * A fade-in, where the wave appears * A central loop, where the wave is propagated for a fixed duration * A fade-out, where the wave disappears Provision is made for the inclusion or omission of each component; i.e. you can generate just the central looping portion to achieve a smooth-running looping animation that ripples forever. INPUTS MakeWaves.ifx accepts the following input imagery: * A still image * A numbered sequence of images * A collection of files individually listed in a File list * A rendered animation (ANIM format) MakeWaves.ifx will accept both JPEG and ILBM file types (It may load others, as long as they do not require load-time parameters that I have not provided for.) OUTPUTS MakeWaves.ifx will produce output as: * Sequentially numbered IFF ILBM files * Sequentially numbered JPEG files (you can specify what quality level) * Sequentially numbered Rendered IFF ILBM files * A Rendered IFF Animation (ANIM format) PROMPTS MakeWaves.ifx is fairly self-explanatory simply by running it. The user is prompted at each step to enter the appropriate parameters. An overview of the sequence of prompts follows: 1) Render settings. If you are producing either rendered animation or rendered sequential IFF stills, you must be sure that Image/FX is properly configured before beginning MakeWaves. This prompt provides a smooth exit, if you have forgotten to make these settings. 2) Get Source. This prompt allows you specify what type of input imagery will be used. A file requester appears allowing you to select the path and *ROOTNAME* for the source. NOTE: When waving into a sequence, you must supply only the ROOT portion of the sequence. Example: The sequence Cindy.001 Cindy.002 Cindy.003 Cindy.004 ... would be specified by the ROOTname "Cindy." If you are waving into a sequence or anim, a second requester will appear, allowing you to specify which frame to begin waving into. 3) Scale the image? This provision allows you to specify whether to scale the source image before waving. If your output is Rendered you may need to scale an image to accommodate Amiga display modes. Or, you may simply want to control the final dimensions of the wave sequence. I decided to do the scaling at the top end, since wave distortion is a fairly calculation intensive process and it takes considerably less time to wave-distort a small image than a large one. Thus, the scale is done first. You can scale as follows: * Scale 50% horizontal * Scale 50% horizontal and vertical * Scale Other If you say Scale Other, you can choose to enter scale factors by Percentage of the original image or as fixed pixel dimensions. 4) Get Destination. Produces a file requester that accepts a Path and output filename. A secondary requester appears, allowing you to specify an output fileType. If you are saving output images as a sequence, they will be sequentially numbered. If you specify JPEG as your filetype, then a requester will appear prompting for a Quality value. If you specify a Rendered Animation filetype, a requester will appear offering Animation save options. 5) Wave Parameters. Next you are presented with a complex requester. It includes string gadgets for X and Y coordinates and wavelength and toggle buttons for the wave components. It also has a cycle gadget that determines the length of the wave's central loop. * Center X: The horizontal screen coordinate to start the wave. * Center Y: The vertical screen coordinate to start the wave. NOTE: Remember to account for scaling when providing Center X and Center Y coordinates. It is also possible to offset the center of the wave outside the visible screen area. Both positive and negative offsets are possible. * Wavelength: The number of pixels between annular rings. * Toggles: Start: include Fade-In portion? Loop: include Loop portion? Stop: include Fade-Wout portion? * Loops: This cycle gadget allows you to specify different loop lengths. The more frames, the slower the wave will appear to ripple. Loop lengths are fixed at: 6 frames - Very Fast 9 frames - Fast 12 frames - Medium 15 frames - Slow 20 frames - Very Slow Finally, a slider appears to permit entry of a Distortion value. The higher this number, the more pixels will be affected by the wave distortion. Generally, low numbers (25 - 40) produce the best results. 6) Turn off Redraw. The first time you run MakeWaves, you may wish to watch the process. When your interest in in most efficiently producing the desired result, however, you will find that disabling Redraw will speed things up by a factor of 5 or more. ERROR HANDLING MakeWaves.ifx tries to handle most error conditions intelligently. If you are waving into a pre-existing sequence, it is often the case that you will run out of source frames before the wave is completed. MakeWaves.ifx will always produce a new requester when it cannot find a picture to load. This requester will allow you to specify any new file and filetype, reset the scale factors, and resume work. Or, if you choose, you can abort the program. TUTORIAL ------------------------------------------------------------------- NOTE: It helps to read the Image/FX manual section on Alpha Channel Creation/Wave Generator. Example: Do a simple multi-wave anim. 1) Set Render settings to Amiga HAM-Laced 16 colors. 2) Click AREXX button on IFX tool panel and select MakeWaves.ifx 3) Select "Wave into a picture" 4) Select a picture file using the requester. (* use a small picture for speed *) 5) Depending on the source picture's dimensions, choose a scaling factor. 6) Provide a destination file root name. 7) Select IFF as an output file type. 8) Accept default Wave parameters. 9) Specify 2 loops 10) Accept default distortion factor. 11) Leave Redraw ON so you can watch what happens. The program will automatically generate 7 lead-in frames, 2 consecutive 6-frame loops and 7 trail-out frames. These are saved as a numbered series: OutPic.001 OutPic.002 OutPic.003 ... 12) Now, run MakeWaves.ifx again. 13) This time, select "Wave into a sequence" 14) Select your sequence Root filename -- be sure to delete the numbered suffix: Source> OutPic. 15) Choose 6 as the frame to enter on. 16) If you scaled before, be sure to pick "Do Not Scale" this time. 17) Provide a new Destination ROOT file name. (* We will be saving an ANIM this time around. However, you specify an Output file ROOT, anyway. MakeWaves.ifx will append the ANIM suffix *) 18) This time, choose "Rendered" as the output type. 19) Pick "Single Palette" 20) Pick "ANIM" 21) Pick "Include prev. Seq. frames" (* this will start the Anim on your first wave while the second wave mixes in at frame 6 *) 22) Set new parameters for this second wave. 23) Set number of loops and distortion 24) Since you already know what happens, turn Redraw OFF. 25) Since you are inserting waves into a sequence with an offset from the first frame, you will eventually run out of source frames before the second wave is done. No matter: MakeWaves.ifx will prompt you to specify a new source picture file. Choose "Still picture" and specify Source.001 from your original sequence (after the first wave fades out, that's what the source looks like to the second waver!) 25) On exiting, you will find a Dpaint compatible ANIM file at destination! GLG