How is this product box with windows / hologram effect created?

I’m trying to replicate the visual effect of this product box:

enter image description here

enter image description here

enter image description here

How is this created? What type of materials should I use?


This is a simple application of the moiré effect. Here’s one way to recreate it:

  1. Create a pattern consisting of regular black stripes. For an optimal result, the stripes should be a little bit wider than the transparent gaps between them; here, I used 6px stripes with 4px gaps:

    Stripe mask (60% width black on transparent)

    This pattern will be what you’ll print on the transparent screen in front of the package.

  2. Make a copy of the mask, shifted by 50% of the stripe + gap width, and stretch it very slightly. Here, I stretched the mask horizontally by 2px.

    Stretched stripe mask

    When you overlay the two masks, they should be fully opaque, but shifting one of them slightly should cause the gaps to align and the background to show through. The slight stretching ensures that the gaps will align sooner at one end of the mask than at the other, creating the “wave” effect in your examples.

  3. Make some white text on a black background, and overlay the stretched mask on it:

    White text on black background

    Masked text

    This will be what you’ll print on the card behind the screen.

  4. With the masked text and the foreground screen aligned, the black stripes in the screen cover the white stripes in the text, causing it to be hidden. Moving the text (or the screen) slightly, however, the white stripes will show through the gaps; because the stripe spacing is slightly different, this will not happen at the same time everywhere:


Ps. For this quick online demo, I used GIMP, but for an actual printed product you’ll almost certainly want to use a vector graphics editor, which will give you more precise control over the mask width and placement.

You can also experiment with variations of this technique, such as varying the stripe / gap widths, or with shifting the text mask slightly for each letter in the text instead of just scaling it, which should cause each letter to appear at a different time (and may well be what’s actually done in the examples you show above).

Of course, the tricky part, if you want to make this into an actual physical product, will be getting the card and screen properly aligned, so that the text will be initially hidden.

Source : Link , Question Author : cemetarywind , Answer Author : Ilmari Karonen

Leave a Comment