Specular Hologram Clock



I recently fell into the rabbit hole of making specular holograms aka scratch or abrasion holograms. I am not sure anymore where it started but it probably was this video by Steve Mould explaining the concept.
A specular hologram consists of glints created by the reflection of light from arc shaped surface scratches. The motion of these glints with the viewing angle creates the impression of a 3D image. There is some debate whether holography is the correct term because the effect is purely based on geometrical optics and has nothing to do with imaging wavefronts as conventional holograms. However, the effect on the observer is similar in the sense that a 3D image is created that can be viewed from different angles.
In the process of making these myself I went through a bunch of literature and instructional videos, tried out various softwares, codes, materials and fabrication methods before finally arriving at the shown specular holograms. These were created on aluminum plates with a modified 3D printer and used to make a pretty wall clock.
Unfortunately, the 3D nature of the holograms cannot be conveyed by the pictures above.
Supplies
- aluminum sheets with protective foil on one side (mine were 180mm diameter, 2mm thickness)
- 3D printer (my engraving adapter fits the Prusa MK4S)
- spring loaded engraving bit (I used this conical shaped tungsten carbide bit with 20-30° angle and an ~0.1mm tip)
- electric drill
- clock kit
- Nd magnets (to hold the aluminum sheet in place)
All files are available on my github
Research

There are many good resources on how to make scratch holograms that helped me during this project. I put some of the most helpful links below
Videos
- Handmade holograms are really weird - Steve Mould
- Drawing lightfields: handdrawn approaches to abrasion holography - Tristan Duke
- YouTube playlist on scratch holograms
Websites
- Abrasion Holography - William J. Beaty
- Specular Holography - Matt Brand
- Kratz-Hologramme - FabLab Würzburg (in German)
Scientific Papers
Turn Your 3D Printer Into an Engraver


I started trying to make scratch holograms with my vinyl plotter. Generally this works and the advantage is that you do not need to convert the vector graphic files to gcode. Using my plotter I was able to create scratch holograms on reflective foil and even on 1.5mm thick aluminum sheets. On the reflective foil the challenge is to reduce the pressure so that the knife does not penetrate through the entire foil. On the aluminium sheets the scratches are sometimes a little bit distorted. Also not surprisingly, the cutting knife quickly turns dull. I tried to replace the cutting knife with a single flute engraving bit mounted into a 3D printed holder but this also did not significantly improve the quality of the scratches.
In the end, I decided to convert my Prusa MK4S 3D printer into an engraving machine. At first, I tried my punch tool for engraving which generally worked but later I bought a spring loaded engraving bit which had a much smaller tip. I also replaced the spring of the engraving bit with a much softer spring from a ballpoint pen. To mount the engraving bit, I removed the print and hotend fan and fixed the engraver into a 3D printed holder that attaches onto the extruder.
3D Model


At first, I designed two different clockfaces in Fusion360. The first consist of a trefoil knot in the center and three dimensional numbers placed around. The second design features a spiral that was adapted from my polarizer clock. The designs were then exported as a stl files. When exporting it is important to choose a low detail setting in order to reduce the number of facets.
Generate SVG File

There are several codes out there to generate scratch holograms from a 3D model
- Holocraft by Deftware (no freeware)
- Abrasion Hologram Printer by Mike Miller (freeware)
- HoloZens by Aza (freeware)
- Code by Vladislav Yaroshchuk (freeware)
Even though it is not freeware, I ended up using Holocraft because it offers the most comprehending features. The software allows to configure the density of generated arcs, the light angle and perceived depth as well as direct svg export. I got the best results when setting the light angle to 30° but it will depend on the tip angle of the tool used for fabrication.
I also wrote my own python code let copilot write some python code that generates circular scratches from an stl model because I wanted to create rotating animations as those shown on the Star Wars LPs.
Convert to GCode






The svg file was turned into gcode using the included gcode plugin within inkscape. The workflow is the following
- copy the "header" and "footer" files (see my github) to a directory of your choice
- start inkscape and set the document size equal to the size of your printbed (250x210mm for Prusa MK4S)
- draw a circle with the size of your workpiece; since the y-position of the cutting tool is shifted downward compared to the print nozzle, the workpiece should be shifted upward
- draw a triangle with the first edge located at the center of the workpiece; this will later allow correct alignment of the workpiece; the triangle should be the first path in the layer
- import the svg file, scale and place it as desired; there should be some clearance to the edges to allow fixing of the workpiece with magnets
- delete the circle which marks the workpiece
- go to "extensions->gcodetools->orientation points", set "z depth: -1.0" and hit "apply"
- go to "extensions->gcodetools->tools library", choose "tools type: default" and hit "apply"
- use the text tool to change the following settings in the green box
- diameter: 0.1
- feed: 2400
- penetration feed: 720
- passing feed: 18000
- go to "extensions->gcodetools->path to gcode" and enter the following settings in the tabs:
- cutting order: pass by pass
- offset along Z axis: 10.0
- Z safe height: 1.0
- File: "desired output filename"
- Directory: choose the directory where the "header" and "footer" files are located
- go back to the "path to gcode" tab and hit "apply"
- open the generated gcode file in an editor
- insert the lines "G01 Z10.000000 F720.0" and "M0" into the first cutting path (i.e. the triangle) after the gcode command that moves to the start position of the path ("G0 Z11, G0 X... Y..."), see screenshot above. The "M0" parameter inserts a pause in order to mount the engraving tool and place the workpiece.
- delete the rest of the first cutting path (see screenshot) so that the triangle will not be engraved into the workpiece
- save the modified gcode file
Engraving Process


Before engraving I marked the center position of the workpiece and removed the engraving bit from my 3D printer. After uploading the gcode file and starting the "print" it first completes the mesh bed levelling and then moves to the center postion (the one that was marked with the triangle in the svg file). The engraving bit is then mounted onto the extruder and the workpiece is aligned below. The height of the engraving bit is adjusted by hand so that it just touches the workpiece. In the gcode the bit will move 1mm down from this position when engraving and 1mm up inbetween. Finally, the workpiece is fixed with magnets. I used the textured steel sheet underneath the workpiece to increase friction. Be sure to have enough clearance for the magnets otherwise your workpiece may slide away and you start to engrave the steel sheet. The force during engraving can be optimized using the grub screw on top of the negraving bit that pushes onto the spring.
Choice of Materials
.gif)
.gif)




I tried to engrave aluminum and black acrylic. Engraving acrylic is more delicate because if the force of the engraving bit is too large you do not produce glints but deep scratches that appear white. Also the hologram is less bright than those produced on aluminum.
Buffing the surface of the aluminum with very fine 3000 grit sand paper reduced the interfering glare from the specular surface but also decreased the brightness of the hologram.
I also engraved some transparent plastic pieces I had lying around which worked rather well. I used these to experiment with kind of nixie tube like assembly but then abandoned this idea again.
I also experimented with circular scratches generated from my own python code in order to create animations of rotating bodies.
Assemble the Clock Kit


The clock was completed by simply drilling an 8mm hole into the center and attaching the parts of the clock kit. I also 3D printed a wall hanger that was attached to the back of the clock with double-sided adhesive tape.
Ideally, the clock is placed a few meters from a bright point like illumation source like an LED spotlight.