Marc Breisinger

Matthias Schicker

Raphael Wimmer

The Mirror

hAiR is a virtual mirror that augments a haircut directly on the users head. The new hairstyle can be live-previewed this way before the irrevocable real cut. Go here for a more extensive description:

Virtual hairstyles - Brainstorming

  • Different haircuts

In front of the user a journal with pictures of different haircuts is placed. It is tracked by an extra camera and the pages have markers on it. So the machine knows which cut is currently examined and augments it on the users head. Their will also be a page with a bold head and the user will be able to create a custom hairstyle.

  • Haircolor
hAiR examines the users haircolor and colors the vitual hairstyle according to that.

  • Strands
When the user touches the head with the designated brush and turns it, a strand comes out of the head and he can pull it longer till he releases. Another option would be to let it grow to a definite or random length.


  • Brushes are used as general controllers. The user can choose from a couple of them, each controlling different attributes, like color, form and strands.
  • To have something like a mouseclick, a rotation of the brush in one direction will do the job and turning it into the other direction is like releasing. The rotation is only seen as a click to start a strand, if the brush is near the head and only seen as a strand release, if a strand is opened and a little way from the head.

Scribble Fake

Current Screenshots:


-- MatthiasSchicker - 06 Jul 2005

Technical Implementation

  • two cameras: see example twoView from ARToolkit. Change the video sources to /dev/video0 and /dev/video1, resolution to 640x480. update: Since two cameras are not supported by the ARToolikt-Libraries on the Windows-platform (the main development-platform), the two-camera-feature is left out for the moment - at least until the linux-portation is done.

-- MatthiasSchicker - 08 Jul 2005

  • the application should be working with one camera, too. Then you will have to hold up the specific marker from the journals current page to show the machine the chosen haircut.

-- RaphaelWimmer - 15 Jun 2005

  • The brushes are similar to those of the kind you can curl your hair with and suggest the user the gesture of turning it. They have of course markers stuck around it and are tracked as a multimarker. Realization: 5-6 markers form a multimarker that goes round the brush and is used for the modification of the specific value. Another single marker is placed over every one of the multimarker patterns for identification of the specific brush. This way we need one marker per brush plus 5-6 markers for the rotation, but they are the same for every brush.
  • A flexible device (some kind of cap) is placed thight on the head. Eight (hard) markers are placed along the edge and two along the middle line over the head. This is used to track the position and calculate the size of the head and so the scaling of the virtual haircut.
Realization: First the machine expects a default multimarker and then tries to correct the position values till the recognition is best. Then it can calculate and correct the size of the haircut. (Though: For a start we will implement this with a standart size without recalibration).
  • The journal has a designated marker on the outside. When this marker is found the haircut will be reset.

  • First draft of the spatial relations between virtual and real objects (scene graph):


-- MatthiasSchicker - 21 Jun 2005

  • Classdiagram:

hAiR Classdiagram

-- MarcBreisinger - 24 Jun 2005

Competences (at the moment):

  • Marc: Transition to the use of ARToolkitPlus-Marker (Software & Devices)
  • Matthias: Improvement robustness of marker-recognition and interaction; new drawing-methods for strands
  • Raphael: Portation to Linux; Creation of new 3D-haircut-model


  • Choose haircut
  • Change Color
  • Add strands. Strands grow out in a standard animation / Strands are "painted" with a brush.
  • standard head size
  • reset of all strands by specific marker on outside of journal
  • Overblending between different (escalation-)states of a particular haircut (e.g. small to large)

-- MatthiasSchicker - 08 Jul 2005


  • Settings GUI
  • Two-(or multi-)camera-setup
  • Automatic camera selection
  • headsize computed dynamically
  • specific removal of particular strands, maybe with a right-turn near the head
  • idea for "no haircut" at startup or reset. Hide multimarker, hide head, show brain, ... wink


  • VirtualHead must always be painted before the other stuff, as it is transparent.
  • The main manager classes "Head" and "BrushManager" assign their own patterns and know what they have to look for.
  • BrushManager has seperated methods for update and paint.


Deadlines for June 30th

  • System design finalizing -- [done]
  • Features prioritized -- [done]
  • Implementation: Overall structure implemented (main loop etc.)
  • Marker design finished, markers constructed, -- [done] -- RaphaelWimmer - 29 Jun 2005
  • All code checked into SVN
  • Calibration steps well documented -- [no calibration needed]

Deadlines for July 7th

  • System design well documented
  • Implementation of core functionality done
  • All code checked into SVN

Deadlines for July 14th

  • Application finished and tested
  • All code checked into SVN
  • Final presentation prepared
  • Screenshots, Manuals and design docs online

Integrating ARToolkitPlus

  • The switch to ARToolkitPlus has worked out fine (thanks to the Coffee-Shop for standing my annoying questions). The new markers seem to improve the performance. The following markers will be used:

NOTE: These markers are just scaled to the size we use! They are not mirrored! So, if you want to use hAiR in a mirror-like style, you have to mirror these markers before!


ID: 000 - 006, 020 - 026, 030 - 036, Size:4x4 cm, xx0 is always on top








ID: 099 - 109, Size:6x6 cm

099 "Reset"

100 "Haircut 1"

101 "Haircut 2"

102 "Haircut 3"

103 "Haircut 4"



ID: 010 - 014, Size:4x4 cm


  • As the use of a "organic" Multimarker is hard to calibrate we have produced a tool that can measure the relations between markers. It can be downloaded here. For support ask me. Documentation will follow.

-- MarcBreisinger - 08 Jul 2005


Finally we have a small video (12.7 MB) of the system. Enjoy!

-- MarcBreisinger - 02 Nov 2005
Topic attachments
I Attachment Action Size Date Who Comment
000.gifgif 000.gif manage 0.3 K 08 Jul 2005 - 23:12 MarcBreisinger  
001.gifgif 001.gif manage 0.3 K 08 Jul 2005 - 23:12 MarcBreisinger  
002.gifgif 002.gif manage 0.3 K 08 Jul 2005 - 23:12 MarcBreisinger  
003.gifgif 003.gif manage 0.2 K 08 Jul 2005 - 23:12 MarcBreisinger  
004.gifgif 004.gif manage 0.3 K 08 Jul 2005 - 23:13 MarcBreisinger  
005.gifgif 005.gif manage 0.3 K 08 Jul 2005 - 23:13 MarcBreisinger  
006.gifgif 006.gif manage 0.2 K 08 Jul 2005 - 23:13 MarcBreisinger  
10_14.gifgif 10_14.gif manage 2.3 K 11 Jul 2005 - 11:46 MarcBreisinger  
10_14_spiegelverkehrt.gifgif 10_14_spiegelverkehrt.gif manage 2.3 K 08 Jul 2005 - 23:15 MarcBreisinger  
509.gifgif 509.gif manage 0.3 K 08 Jul 2005 - 23:11 MarcBreisinger  
510.gifgif 510.gif manage 0.3 K 08 Jul 2005 - 23:11 MarcBreisinger  
511.gifgif 511.gif manage 0.2 K 08 Jul 2005 - 23:12 MarcBreisinger  
Brush_1_seitenrichtig4x4.gifgif Brush_1_seitenrichtig4x4.gif manage 4.1 K 11 Jul 2005 - 12:43 MarcBreisinger  
Brush_2_seitenrichtig4x4.gifgif Brush_2_seitenrichtig4x4.gif manage 4.1 K 11 Jul 2005 - 12:43 MarcBreisinger  
Brush_3_seitenrichtig4x4.gifgif Brush_3_seitenrichtig4x4.gif manage 4.1 K 11 Jul 2005 - 12:43 MarcBreisinger  
Screenshot_Marc.pngpng Screenshot_Marc.png manage 161.5 K 07 Jul 2005 - 11:34 MarcBreisinger  
hAiR.movmov manage 13009.4 K 02 Nov 2005 - 19:10 MarcBreisinger  
marker_099.gifgif marker_099.gif manage 0.6 K 11 Jul 2005 - 12:32 MarcBreisinger  
marker_100.gifgif marker_100.gif manage 0.6 K 11 Jul 2005 - 12:32 MarcBreisinger  
marker_101.gifgif marker_101.gif manage 0.6 K 11 Jul 2005 - 12:32 MarcBreisinger  
marker_102.gifgif marker_102.gif manage 0.6 K 11 Jul 2005 - 12:33 MarcBreisinger  
marker_103.gifgif marker_103.gif manage 0.6 K 11 Jul 2005 - 12:33 MarcBreisinger  
marker_104.gifgif marker_104.gif manage 0.6 K 11 Jul 2005 - 12:33 MarcBreisinger  
marker_105.gifgif marker_105.gif manage 0.6 K 11 Jul 2005 - 12:33 MarcBreisinger  
marker_106.gifgif marker_106.gif manage 0.6 K 11 Jul 2005 - 12:33 MarcBreisinger  
marker_107.gifgif marker_107.gif manage 0.6 K 11 Jul 2005 - 12:33 MarcBreisinger  
marker_108.gifgif marker_108.gif manage 0.6 K 11 Jul 2005 - 12:34 MarcBreisinger  
marker_109.gifgif marker_109.gif manage 0.6 K 11 Jul 2005 - 12:34 MarcBreisinger  
Topic revision: r23 - 04 Jul 2007, MatthiasSchicker
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Medieninformatik-Wiki? Send feedback