a. Faites un nouveau projet, ajoutez donc le jar que vous venez de faire, créez une
classe comprenant le même code que JavaSimpleLite
b. Recopiez "Data"
c. Modifier pour que cela reconnaisse un autre pattern (kanji)
d. Testez différentes valeurs de seuil avec this._nya.getConfidence() pour voir
si les patterns sont bien reconnus.
e. Modifier quelques paramètres :
Le paramètre 80 (taille du pattern) dans la construction du
détecteur : this._nya = new NyARSingleDetectMarker(this._ar_param,
i_ar_code, 80.0, this._cap_image.getBufferType());
Le seuil dans
this._nya.detectMarkerLite(this._cap_image, 110);
5) Faites en sorte que le programme reconnaisse plusieurs patterns
Notez qu'un détecteur ne peut reconnaitre qu'un pattern
Il faudra passer plusieurs variables sous forme de tableau
Il faudra insérer des boucles pour le traitement de ces variables…
A ce stade, on rencontre des difficultés entre autre à cause de l'opengl…
6) Appropriation - 3 - Modifier le dessin
a. Créez une fonction pour afficher trois sphères qui tournent autour d'un pattern
b. Pour dessiner une sphère : avec glutSolidSphere et donc un objet GLUT
c. Par décalage du repère : glTranslatef
N'oubliez pas les glPushMatrix et les glPopMatrix pour sauvegarder et
restaurer le repère courant.
d. Ajouter trois sphères de couleurs différentes qui forment un triangle
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_flash);
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
où mat_fash et mat_ambient sont des tableaux de float de dimension 4.
e. Faire tourner ces sphères avec une rotation générale par glRotatef
7) En utilisant un TextRenderer (c.f. ci-dessous), affichez un texte (particulier) centré sur
un pattern.
class TextPanel {
private TextRenderer _tr;
public TextPanel(int i_size) {
this._tr=new TextRenderer(new Font("SansSerif", Font.BOLD, i_size));
}
public void draw(String i_str,float i_scale) {
this._tr.begin3DRendering();
this._tr.setColor(1.0f, 1.0f, 0.2f, 0.8f);
this._tr.draw3D(i_str, 0f,0f,0f,i_scale);
this._tr.end3DRendering();
return;
}
}
8) Affichez (System.out.println) les coordonnées du centre du pattern à l'écran
NyARDoublePoint2d o_out = new NyARDoublePoint2d();
detector.refSquare().getCenter2d(o_out);
System.out.println(o_out.x +" / "+ o_out.y);
Puis dessinez un triangle dont l'un des sommets est le centre du pattern :
Le repère 2D par défaut est centré au milieu de la fenêtre, les coordonnées sont
comprises entre -1 et 1, l'axe des x est horizontal et orienté vers la droite, l'axe des y est
horizontal est orienté vers le haut.
// changement de "contexte" d'affichage opengl…