Augmented Reality

This seems to be the new buzz word on the web.

After seeing a couple of examples from Boffswana and Toyota I wasn’t that convinced. The response usually isn’t too good and the quality seems to lack a lot.

I printed out the markers on A4 and gave it a try. Since A4 isn’t that sturdy the marker got distorted and both examples had a lot of trouble picking it up. Also I tried it at night in the study with a single light on. This resulted in a glare on the marker and of course this interfered with the recognition. The low light conditions didn’t help much either, it seems a low(er) contrast really throws the marker recognition off. All in all AR software seems to be quite sensitive to imperfections.

Of course this could stop me from trying something myself and see why exactly it is so sensitive.
So what I did is combine the FLARToolkit with Flint particles.

Augmented Reality test

[Click the image above to run the example, I’ve used the same marker as the Boffswana example.]

If you run my test, you’ll see that it’s quite sluggish as well, you’re lucky if you get 6+ frames per second. This is due to the marker detection method ( FLARSingleMarkerDetector.detectMarkerLite() ). Sometimes this method takes up to 1300 ms to detect the marker, on average it takes about 150 ms.

The Flash community has always been really fast on picking new technolgy up, but I’m afraid this is a little bit too high end for Flash at the moment.

Some possible solutions:

  • Glue the printed marker to a piece of cardboard to get it a bit more steady so it won’t be bent as much and is easier to pick up by the AR software.
  • Marker detection doesn’t work that well with low light conditions. When I was at FlashCamp Seb (from PV3D) had a good idea. Just process the camera image, make it black and white and crank up the brightness and contrast.
  • As for processing speed, maybe something clever with pixel bender? Could Alchemy help?

7 thoughts on “Augmented Reality

  1. Hello !

    Can you tell me how you managed to combine flint and flartoolkit ?
    I am currently trying to do this, but I don’t know how to link the particles emitter to the FlarBaseNode …

    Thanx.

  2. Hello Morphy,

    The way I got Flint and the FlarToolkit working is by extracting the x,y,z position and rotation from the FLARTransMatResult class.
    The position can be taken directly from the FLARTransMatResult class by using FLARTransMatResult.m03 (x), FLARTransMatResult.m13 (y) and FLARTransMatResult.m23 (z).
    To get the rotation is a bit more difficult, I use the following code stub:
    var rotMat:FLARRotMatrix = new FLARRotMatrix( new FLARPerspectiveProjectionMatrix() );
    // transres is the current FLARTransMatResult
    rotMat.initRotByPrevResult(transRes);
    var rot:FLARDoublePoint3d = new FLARDoublePoint3d();
    rotMat.getAngle(rot);

    To get the x,y,z rotation I use
    rot.x;
    rot.y;
    rot.z;

    Once I had all this information extracted from FLAR I passed it to the class that handled displaying the Flint particles.

    I feel the position / rotation are are bit off after I’ve done this, so let me know if you’ve found a better solution.

  3. Great job… been trying to use Flint particles in FlarToolkit project… with no luck !
    Any chance to get a grab on your code ?…

    best Regards
    Marco

  4. Hi Marco,

    My comment above explains how I get the x,y,z position and rotation from the FlarToolkit. Once you have that data you can use that to update the position and rotation of your (Flint) emitter.

    Hope this helps,

    Wijnand

  5. Pingback: AS3 – Realidad Aumentada y Rotación | ¿y por qué no?

Leave a Reply to morphy Cancel reply

Your email address will not be published. Required fields are marked *