Graphics | Scripting

Amiga Boing Ball Animated GIF

Posted on by
1 Reply

While designing the theme for Amigalog.com I decided to include all the Amiga logos inside the page layout: the typeface logo, the rainbow check mark and the unofficial Boing Ball.

For the typeface logo I used the Bodoni font[a], the closest font to the one used in the original Amiga logo that I could find on the web.

I found easily the rainbow check mark (which I used as a check mark for the floppy-shaped main menu on the right side) and the boing ball, but for the boing ball I wanted an animated gif, thus I decided to create a rotating checker ball in Blender[b].

The Boing Ball logo comes from the first Amiga Demo, created for the Consumer Electronics Show of 1984, featuring a rotating checkered bouncing ball. You can read the full story of this Demo here inside the great History of the Amiga series published on Ars Technica which I linked in this post.

Contents

Creating the checkered ball with Blender

Creating a rotating checkered ball with Blender is very easy. I first created a sphere, then applied to its material a checker texture using a tube projection. I adjusted the mapping matrix by tuning the X and Y size parameters to get a correct size for the checkers. I finally added a light, positioned the camera and animated the sphere Z axis. I used a 36 degrees rotation, after which the checkers position repeats.

Designing the Boing Ball in Blender

Here is the blender project for the animated ball:
Boing Ball Blender Project

I created also a second version of the Blender project using the new blender render engine: cycles. When working with cycles, you can use a certain number of procedural textures. I used the checker texture which is perfect for the boing ball. Unfortunately the version of Blender that I’m using at the time of writing (2.64) doesn’t have the tube projection feature for the cycles engine. Thus I had to create an UV map which had some problems around the poles. Fortunately this was not a problem cause the poles are not visible in the final animation.

Designing the Boing Ball with Blender Cycles Renderer

Here’s the cycles version:
Boing Ball Blender Project (with Cycles)

Creating animated gifs with ImageMagick

Once I created the Boing Ball animation in Blender, I exported all the animation frames as png images with transparent background.

Here you can download the images:
Boing Ball animation frames

Now it’s time to pack all the frames into an animated gif. For this task I used the great ImageMagick[c] suite of tools.

I used the convert tool to join all the pngs into a single gif. I first tried using the original transparent background images but the resulting gif was awful. I don’t know if it’s a bug in the ImageMagick library or if I’m missing some parameter. So I decided to add a solid background to all the frames. For this operation I used the mogrify tool, here is an example (make sure to add the ImageMagick dir to your PATH before calling the tools):

The mogrify tool modifies the images in place, overwriting the original files. I wrote a DOS batch file to copy all the original images into a new directory and then adding the backgrounds using mogrify. Here is the batch:

After creating the solid background images, the convert tool can be used to create the animated gif, here is an example:

I created a useful batch script to call the convert tool passing to it all the parameters:

You can download all these scripts here:
Boing Ball batch files

Some renderings

Here you can see some gifs created with different number of colors (all the other parameters are fixed, delay: 10 size: 80×80):

256 Colors (277 KB) 

128 Colors (204 KB) 

64 Colors (174 KB) 

32 Colors (134 KB) 

16 Colors (108 KB) 

8 Colors (82 KB) 

References

  1. A History of the Amiga

Notes

  1. Bodoni font at Urban Fonts []
  2. Blender []
  3. ImageMagick []

1 thought on “Amiga Boing Ball Animated GIF

  1. Pingback: Xamarin Recipe Cook-off: Using SpriteKit on iOS7 with C# | Just Krumelur.

Leave a Reply

Your email address will not be published. Required fields are marked *