title.gif (2982 Byte)

Create spectacular 3D images with your bubble jet printer!

1. What are Colograms?

Colograms look at the first glance like good colourful holograms. They show astereoscopic image. As with real holograms you can look behind an object by looking at theimage from another angle. Normally they are created using ray tracing, but in principle itis possible to use real photos. Good colograms can be as big as 1 meter square and arereally impressive. But even with a simple bubble jet printer it is possible to createquite amazing colograms. Probably you have already seen simple colograms, for exampleon the front cover of Perry Rodan books. The method described here produces much betterresults.

2. How does it work?

To produce a stereoscopic image you have to supply your eyes with two independentimages, one for the left eye, one for the right. If you want to go around the image andlook behind an object, the images have to change accordingly. All this is done by thefollowing trick, which uses only geometrical optics. You calculate images of your sceneseen from different viewpoints. Take for example these three pictures here. (This picturewas created by Mike Miller)

dragonl.jpg (4531 Byte)  dragonm.jpg (4513 Byte)  dragonr.jpg (4394 Byte)

As you can see the first (last) image is calculated with a viewpoint far left (right).The second image is in between. Now we divide each picture into its columns and create anew picture in arranging the columns as follows:

Column Number of Output picture 1 2 3 4 5 6 7 8 9 10
Input picture l=left m=middle r=right r m l r m l r m l r
Column Number of Input picture 1 1 1 2 2 2 3 3 3 4

Here is what this looks like:

dragon.jpg (30437 Byte)

To preserve the aspect ratio I have tripled each line. Now we have to reconstruct theimages. To do this we use a mask with black and white lines. Each line as thick as onecolumn in the above picture. The sequence of black and white columns goes as follows:bwbbwbbwbbwbbwb... Here is what this looks like:

mask.gif (1486 Byte)

Now there comes the essential trick. We print these images on transparencies and putthe mask onto the front of a thin glass plate (2mm) and the mixed image onto the back.Then we illuminate the whole cologram from the back. If we look on it from the left(right/middle) we see the left (right/middle) picture:

principle.gif (5375 Byte)

Now we have the desired result. Each eye gets its own picture and if we go around thepicture it is changing accordingly. In reality we will use more than three pictures. Inthe download section you will find colograms ready for printouton a bubble jet printer with a resolution of 720dpi like the Canon BJC-610. If you want tocreate your own colograms or want to know more about what to do else with them youshould read the next section.

3. How to create your own Colograms

To create your own colograms you need:

In the following I will assume that you use PovRay and Corel Photo Paint 7.0.

First we have to decide at which resolution we have to render the scene. Assume thatyou use a 720dpi (600dpi) printer.  Since we want to create photorealistic images andthe printer uses dithering to mix the colours, we have to put 4x4 of these dots togetherto get a pixel which can have up to 16^4=65536 different colours. (16 dots in each pixel,each of which can be coloured or transparent. Four colours: black, cyan, magenta,yellows). This reduces our effective resolution to 180dpi (150dpi). On a horizontal DIN A4page you have 29,6cm*180dpi/(2,57cm/inch) =2000dots (1600dots) horizontally and 1400dots(1100dots) vertically. Now we have to decide how many pictures we want to put into thecologram. The more the better is the stereoscopic effect, but at the same time the blackstripes get broader and broader and the number of columns of each picture gets less andless. A good choice is 10 pictures (frames). So we have to calculate each picture with aresolution of 200x1400 (160x1100) pixels. We can reduce the time of calculation if we render only at200x700 (160x550) pixels and double each line.

Now you create a PovRay scene for your cologram. You will get a nice cologram ifyou put an interesting object big in the foreground and put something behind the object tomake the 3D effect more visible. The scene should not have objects too far in thebackground. These objects would "jump" from one frame to the other. Now we haveto tell PovRay to calculate 10 frames from different positions. For this one can use thePovRay animation feature. This is done by this sniped of code which has to replace thenormal camera definition. The clock variable counts from 0.0 to 1.0 in steps of1/(numberofframes-1).

#version 3.0#declare numberofframes=10#declare deltax=3#declare middlexposition=10#declare position = middlexposition-deltax*(numberofframes-1)*(clock-0.5)camera {  location <position 50 -100>   up <0 1 0>  right <1.43 0 0>  //aspect ratio 2000/1400  look_at <0 0 0>}

The animation feature is activated by using the following sequence in the .ini file:

[200x700, AA]Width=200Height=700Antialias=OnOutput_to_File=OnOutput_File_Type=SOutput_File_Name=dragon.bmpInitial_Frame = 1Final_Frame = 10Subset_Start_Frame = 1Subset_End_Frame = 10

The parameter deltax has to be chosen carefully. It should not be too big to avoidjumps between the frames and not too small to get a good 3D effect. Experiment with it.You can try it out by rendering two subsequent frames with a resolution of 200x140 andlooking at them with the help of LCD-Shutter glasses using NuVisions 3DPix. See Christoph Bungerts place formore information on this.

Once you have rendered your frames you have to convert them into the 8bit .BMP format,so that COLOGRAM can merge them. This can easily be achieved by using Corel Photo Paint7.0. Load all the frames you have rendered into Photo paint. Use "Picture/changecolour format.../Palette (8bit).../optimised" on one picture. Store the colourtableusing "Picture/colourtable". Close and save the selected frame. Open the macrorecorder using "Ansicht/Rollups/Recorder" (sorry, I have only the Germanversion). Select another frame. Start recording. Use "Picture/change colourformat.../Palette (8bit)/Anpassen..." with your colourtable (load it). Stoprecording. Close and save frame. Now use the recorded sequence on each frame and saveeverything.

Now you are ready to merge the pictures with COLOGRAM using:

COLOGRAM -P dragon -O dragon -M mask

You can get a more detailed description of the command line parameters by usingCOLOGRAM without parameters. The merged picture is stored in the file dragon.bmp and themask is in mask.bmp. Now you load these pictures into Photo Paint. Change the resolutionto 180dpi horizontally and 90dpi vertically using "picture/probebild...". 90dpivertically are necessary because we have calculated only 700pixel in the verticaldirection. Don't forget to use "Pixels" as scaling unit and to switch of"Seitenverhältnisse beibehalten". Now you are ready to print your cologram ontwo transparencies. Fix the transparencies on the two sides of a thin (2mm) DIN A4 glassplate using scotch. You will find this sort of glass plates in frames for pictures. If youchoose non antireflection coated glasses they are cheap (3,50DM). Adjust the position ofthe mask relative to the merged picture carefully. The fifth picture should be below thetransparent column.

Use a dark room and put the  Cologram in front of a uniformly bright illuminatedbackground. You should look at from a distance of about 1,5 meters at your cologram. 

4. Tips and Tricks

#version 3.0#declare xpictures=10#declare ypictures=5#declare pictures=xpictures*ypictures#declare picturenumber=floor(clock*(1-1/pictures)*pictures+0.5) //Bildnummer von 0 bis pictures-1#declare xclock=mod(picturenumber,xpictures) //xclock von 0 bis xpictures-1#declare yclock=div(picturenumber,xpictures) //yclock von 0 bis ypictures-1#declare xposition = 10-3*xclock#declare yposition = 42-3*yclockcamera {  location <xposition yposition -145>  up <0 1 0>  right <1.42 0 0>  look_at <10 25 0>}

5. Download

The program COLOGRAM with source (written quick and dirty with Borland C++ 4.52;-)  (cologram.zip 14k).

dragonm.jpg (4513 Byte)  The merged picture and the mask for the dragon picture (180x90dpi) (dragon.zip 611k) (150x75dpi) (dragon300dpi.zip 490k) PovRay Source (author: Mike Miller) (dragons.zip16k)

palace.jpg (6543 Byte)  The merged picture and the mask for the palace picture (180x90dpi) (palace.zip 985k) PovRay Source (author: Mike Miller) (palaces.zip40k)

fish.jpg (5019 Byte)  The merged picture and the mask for the fish picture (180x90 dpi)(fish.zip 914k) PovRay Source (author: Mike Miller) (fishs.zip 139k)

3dbec.jpg (4284 Byte)  The merged picture and the mask for the BEC picture (180x90 dpi)(3dbec.zip 698k) PovRay Source (author: Florian Schreck) (3dbecs.zip 6k)


6. References

The first really good cologram I saw was at the Technoramaat Winterthur (Switzerland).

My homepage: Florian Schreck

Our homepage in Constance: AG Rempe

Our homepage in Paris: ENS