1. In order to produce the end result of kaleidoscopic animations, I had start by rendering frames individually for each mirror setup. To do this, I used the Persistence of Vision Raytracer (POV-Ray). I consulted Mark Newbold’s code as a base for writing my first POV-Ray scene files (for 30-60-90 spherical/planar kaleidoscopes) and then coded the other scene files myself. To represent mirrors, I used three fully reflective planes, whose surface normals faced inward, to facilitate continuous reflection. I used constructive solid geometry (CSG) to define each kaleidoscope as an object made from three fully reflective planes  (mirrors) and a fourth plane/sphere surface with an image mapped onto it. The resulting object was translated so that the camera would be looking into the triangular hollow body created by the trio of mirrors. In the case of the spherical kaleidoscopes, this trio of mirrors formed a cone which came to a point at the origin (center of the sphere).
  2. Once I was satisfied with the single frames I was rendering, I had to automate the process. I added code to my POV-Ray files so that with each incremental clock advancement, the image would rotate a small amount. I also wrote a custom QUICKRES.INI file, specifying clock and cyclic animation settings so that POV-Ray could render batches of 100 frames per 360 degree rotation of the image map.
  3. After rendering a series of 100 frames for each pairing of an image and a mirror configuration, these frames needed to be animated. To combine the frames into a single animation, I used Rostrum Camera’s Bitmap to AVI utility with an Xvid MPEG-4 codec at 20 frames per second. (If animated without compression, the resulting video file sizes were 200mb+ for just a few seconds of video).
Process Results
Render and animate several kaleidoscopes, falling into two main categories: planar and spherical. In this context, a planar kaleidoscopes consists of three mirrors arranged into a triangular body which the viewer can peer into. The image on the other end of the body is reflected off of the mirrors repeatedly and will generate a moving reflective pattern if rotated. A spherical kaleidoscope is similar, except that the image seen by the viewer is reflected and then projected onto a three-dimensional sphere instead of a two-dimensional plane.
Emily Lovell (elovell@ucsc.edu) - Scientific Visualization and Animation - Winter 2008
Virtual Kaleidoscopes
There are three mirror-angle configurations that I rendered as planar kaleidoscopes. Planar kaleidoscopes can be generated for any combination of angles whose sum is 180 degrees. Below, for comparison value, is the same image map rendered with each one. (Click image to download full-size version.)
30-60-90 (scalene)
45-45-90 (isosceles)
60-60-60 (equilateral)
For each mirror-angle configuration, I produced a short animation encapsulating the visual changes that occur over one full rotation of the input image map. Click the image on the right to view the animation.
image map - blue/green satin
resulting 30-60-90 planar kaleidoscope
image map - sports balls
resulting 60-60-60  planar kaleidoscope
image map - ornaments
resulting 45-45-90 planar kaleidoscope
  1. Kaleidoscope Symmetry Groups (for information on spherical kaleidoscope angles)
  2. Rostrum Camera (for converting frames to video)
  3. Paul Bourke’s Texture Library (for satin, blue satin, and sports balls image maps)
  4. Webshots Blog (for ornaments image map)
  5. Thomas Hawk’s Digital Connection (for random letters image map)
  1. 30-60-90 Planar Kaleidoscope
  1. 45-45-90 Planar Kaleidoscope
- POV-Ray scene file: 30-60-90 Planar.pov
- image map: Satin.gif
- full-size video: 30-60-90 Planar.avi
- POV-Ray scene file: 45-45-90 Planar.pov
- image map: Ornaments.gif
- full-size video: 45-45-90 Planar.avi
  1. 60-60-60 Planar Kaleidoscope
- POV-Ray scene file: 60-60-60 Planar.pov
- image map: SportsBalls.gif
- full-size video: 60-60-60 Planar.avi
  1. QUICKRES.INI (must be added to your /POV-Ray/Renderer directory)
  1. 30-60-90 Spherical Kaleidoscope
- POV-Ray scene file: 30-60-90 Spherical.pov
- image map: SatinBlue.gif
- image map background: SphereSatinMap.gif
- full-size video: 30-60-90 Spherical.avi
image map - blue satin
resulting 30-60-90 spherical kaleidoscope
Note: When rendering the spherical kaleidoscopes, the image map must be placed in the middle of a much larger solid-colored background image. When this image is projected onto the sphere, only the image map itself will be visible, as it falls within the spherical triangle to be tessellated. Because a spherical triangle bulges out at each side (if flattened), spherical kaleidoscopes rely upon trios of angles whose sum is greater than 180 degrees.
  1. 45-60-90 Spherical Kaleidoscope
- POV-Ray scene file: 45-60-90 Spherical.pov
- image map: RandomLetters.gif
- image map background: SphereLetterMap.gif
- full-size video:  45-60-90 Spherical.avi
image map - random letters
resulting 45-60-90 spherical kaleidoscope