FLAR + PV3D = ?

Pour l’instant, à la vue de ce que je voudrais, FLAR n’est pas encore assez avancé ; il l’est bien assez pour déconner avec, c’est certain… MAIS, il apporte son lot de bug et de contrainte, et même si ce ne sont que des contraintes “mineures”, quand meme…

1/ Il est impossible de récupérer la position et l’inclinaison du marqueur dans l’espace 3D

Je viens de trouver un petit snippet qui le permet :

private var transformation:FLARTransMatResult = new FLARTransMatResult();

public function get position():Array
{
try
{
detector.getTransformMatrix(transformation);

var tmp:Matrix3D = new Matrix3D();
tmp.n11 =  transformation.m01; tmp.n12 =  transformation.m00; tmp.n13 =  transformation.m02; tmp.n14 =  transformation.m03;
tmp.n21 = -transformation.m11; tmp.n22 = -transformation.m10; tmp.n23 = -transformation.m12; tmp.n24 = -transformation.m13;
tmp.n31 =  transformation.m21; tmp.n32 =  transformation.m20; tmp.n33 =  transformation.m22; tmp.n34 =  transformation.m23;

return [new Number3D(tmp.n14, tmp.n24, tmp.n34), Matrix3D.matrix2euler(tmp)]
}
catch(e:Error) {}

return null;
}

2/ Les axes sont échangés. Par exemple, Z devient Y, et ca devient une vraie merde quand on ne faisait qu’utiliser les méthodes de déplacement fournies sur pv3d (moveForward, pitch, roll, etc…)

3/ Je viens de trouver un bug vraiment étrange en faisant mes essais, je poste une petite vidéo d’1,3Mo au format MOV qui l’illustre… Je pense que ca vient de FLAR plutot que PV3D, mais pas sur :)

4/ Ya pas de bonne doc, et les commentaires sont pour la plupart (j’ai pas regardé partout) en jap’. GRRR !

Ca enleve en rien le coté ludique de FLAR, mais ca rends le boulot avec cet lib d’autant plus fastidieux quand il est question d’utiliser des moteurs physiques avec. D’autant plus que le snippet de position (1/) est assez gourmand a placer, et que ca me limite a une fenetre de capture assez petite (320×240) pour avoir de bonne performance sur mon G5…

Il faut vraiment que cette lib murisse.

EDIT : Ma petite expérience sur FLAR m’amène de plus en plus à répondre à 2 ou 3 questions. Voici quelques tips que j’ai pu trouver/découvrir concernant FLAR :

1/ La perspective est la clé.

FLAR est une librairie basée sur la reconnaissance d’image. Qui dit reconnaissance, dit forcément calculs. L’algorithme qui détermine la vraie position dans votre moteur3d se base sur les fuyantes du pattern que FLAR détecte.
En gros, FLAR voit l’image de la caméra à plat, scanne l’image (a chaque enterframe) à la recherche du pattern. Dès qu’il le trouve, il isole le pattern dans une boundingbox. Ceci fait, il cherche les bords du carré, afin de déterminer les fuyantes, et donc le point de fuite, élément essentiel pour la suite.

Le problème qui va se trouver, c’est que si votre expérience de réalité augmentée consiste à mettre le pattern face a la caméra, FLAR (qui voit l’image de la caméra “a plat”) ne verra qu’un carré avec des fuyantes pas très parlantes. Il en résultera un calcul approximatif du point de fuite, et donc un placement “tremblant”.

Ici, FLAR ne luttera pas pour trouver les points de fuite :

Par contre, la…

Plus les fuyantes seront évidentes pour FLAR, plus la précision des points de fuite sera grande, et donc, plus le placement du pattern sera stable.

2/ Un pattern simple, c’est mieux

Dans les premiers temps du gros buzz autour de l’AR, on avait pas trop le choix, il existait pas trop de pattern et pas encore d’éditeur de pattern en ligne.

Dans les classes AS3 que l’on a pu télécharger ici ou la on peut voir qu’il est possible de déterminer la taille de la grille d’un pattern, a savoir 8×8, 16×16 etc jusqu’a 64×64.

J’ai pu constater qu’un pattern simple est plus simple (forcément :p) à analyser. Je pense que FLAR doit découper le pattern en N bitmapdata afin de tester la couleur de chaque. S’il y a plus de bmds, logiquement le calcul est plus long.

En 4×4, le pattern est découpé en 16 bmds :

En 8×8, le pattern est découpé en… 64 bmds (qui ne connait pas ses tables ?)

Pour la partie qui concerne la mise a plat du pattern, c’est a dire le passage de l’état du pattern en 1 à l’état du pattern en 2, voyez avec nicoptere et son article sur l’homographie !

Déjà cité furtivement, je soulignerai le très bon article du papa Saqoosha intitulé FLARtoolkit Startup Guide. C’est surement l’article le plus simple que j’ai pu voir, puisqu’il fait carrément l’impasse sur toute la configuration de FLAR.

Comme c’est la mode, voici mon zip de base pour toutes vos expérimentations FLAR : martian-arts-augmented-reality-snippet

C’est une base déjà reprise à laquelle j’ai ajouté quelques getters/setters, et 1 ou 2 dispatchers d’evenements. Je vous laisse fouiller dedans ;)

Comment (1)

  1. ptitshou wrote::

    parfois tu me fais peur…

    en tout cas j’espère de tout coeur que ca va marcher :)

    Saturday, May 2, 2009 at 5:40 pm #