Depuis quelques mois je m'échine à explorer la réalité augmentée avec tout ce que je peux exploiter (applications dédiées, flash et artoolkit etc...). Je précise que je suis une vraie bille en programmation, juste quelques notions AS2, html. Les softs de création graphiques me sont toutefois très familiers, je suis enseignant en Communication Visuelle. Nous avons d'ailleurs monté un petit atelier AR qui a produit quelques bricolages sympathiques.
Donc Grosso modo en ce qui concerne mes expériences, le bilan est plutôt mitigé:
- Des logiciels propriétaires (payants donc ^^!) aux possibilités réduites et très souvent instables.
- Des solutions en Flash avec Flarmanager par exemple. Pas franchement très souples et aux résultats plutôt
médiocres avec l'avantage toutefois de pouvoir mettre en ligne certains dispositifs.
Je découvre depuis quelques semaines Processing qui propose une librairie AR: Simple ARToolKit Library for Processing de Bryan Chung:
http://www.bryanchung.net/?page_id=415
Je fouille encore un peu sur le net Den Ivanov propose une solution multimarqueur / multiobjet:
http://www.cleoag.ru/2009/04/14/process … est-video/
http://www.cleoag.ru/category/processing/
Hors ligne
Bonjour Tomaok,
Est ce que tu as eu l'occasion d'essayer directement ARToolkit ? C'est une bibliothèque de fonctions pour la réalité augmentée. La version processing est un "binding" qui permet d'utiliser les fonctions de la bibliothèque en java.
Comme applications d'exemples, ils citent le "Black Magic Book", un bouquin sur la coupe de l'America, la vidéo devrait t'intéresser si tu ne la connais pas :
Hors ligne
Salut,
J'ai essayé cette lib de réalitée augmentée sur P5 :
http://nyatla.jp/nyartoolkit/wiki/index … ontPage.en
Elle marche bien pour moi sous ubuntu 10.04. et elle supporte plusieurs marqueurs, je sais pas si elle est plus developpée que simpleartoolkit...a voir.
Tu peux trouver un exemple et de quoi t'en sortir ici:
https://github.com/Cdriko/interact/tree … Rtoolkit_1
+++
Dernière modification par oyster_twiter (2011-02-23 17:12:57)
Hors ligne
Je vais regarder tout ça de plus près... Merci pour les infos!!
En attendant voici une vidéo plutôt bluffante qui expose bien ce vers quoi je veux me diriger...
- Un support imprimé (ici un carton d'invitation)
- des objets texturés
- animés
- et interactifs (certains motifs faisant office de bouton)
Hors ligne
Je vous propose quelques pages qui permettront à ceux qui le souhaitent de se documenter sur l'AR (Augmented Reality). Et surtout de mettre en oeuvre rapidement un petit projet.
- Artoolkit, la librairie qui a ouvert le filon, même si certains dispositifs existaient déjà...
http://www.hitl.washington.edu/artoolkit/
- Le site du Hitlab de Nouvelle Zélande (qui bugue depuis quelques jours, tentez une visite un peu + tard?? !) et le logiciel Buildar
> Buildar (PC)
Buildar est un soft qui existe en version pro et en démo, la version démo permet de lier les marqueurs et les ojets avec beaucoup de facilité sans aucunes connaissances en programmation. Seuls inconvenients la version pro est payante et la démo flanche pas mal si l'on est trop gourmand.
http://www.hitlabnz.org/BuildAR
Hors ligne
Quelques tests maison... Buildar + Flartoolkit, un marqueur vaguement scotché quelques objets 3D / 2D, opaques ou transparents...
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Hors ligne
J'avance, J'avance, un peu seul sur le forum mais je compte sur vous ^^!
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Donc 2 tests l'un avec la librairie AR de Bryan Chung (http://www.bryanchung.net/?page_id=415).
L'autre avec la librairie 3D de Saito, Matt Ditton, Ekene Ijeoma (http://thequietvoid.com/client/objloader/#download)
Ma question comment coupler les deux!!!
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Voici le code AR légèrement modifié >>
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Voici le code 3D, merci à Martin pour son modèle >>
import saito.objloader.*; // declare that we need a OBJModel and we'll be calling it "model" OBJModel model; float rotX; float rotY; // these booleans will be used to turn on and off bits of the OBJModel boolean bTexture = true; boolean bStroke = false; boolean bMaterial = true; void setup() { size(800, 800, P3D); // making an object called "model" that is a new instance of OBJModel model = new OBJModel(this, "aliencouleur.obj", "relative", TRIANGLES); // turning on the debug output (it's all the stuff that spews out in the black box down the bottom) model.enableDebug(); model.scale(1); noStroke(); } void draw() { background(32); lights(); //this will do nothing until the model material is turned off fill(255,0,255); pushMatrix(); translate(width/2, height/2, 0); rotateX(rotY); rotateY(rotX); model.draw(); popMatrix(); } void keyPressed() { // turns on and off the texture listed in .mtl file if(key == 't') { if(!bTexture) { model.enableTexture(); bTexture = true; } else { model.disableTexture(); bTexture = false; } } else if(key == 'm') { // turns on and off the material listed in .mtl file if(!bMaterial) { model.enableMaterial(); bMaterial = true; } else { model.disableMaterial(); bMaterial = false; } } else if(key == 's') { if(!bStroke) { stroke(10, 10, 10); bStroke = true; } else { noStroke(); bStroke = false; } } // the follwing changes the render modes // POINTS mode is a little flakey in OPENGL (known processing bug) // the best one to use is the one you exported the obj as // when in doubt try TRIANGLES or POLYGON else if(key=='1') { stroke(10, 10, 10); bStroke = true; model.shapeMode(POINTS); } else if(key=='2') { stroke(10, 10, 10); bStroke = true; model.shapeMode(LINES); } else if(key=='3') { model.shapeMode(TRIANGLES); } else if(key=='4') { model.shapeMode(POLYGON); } else if(key=='5') { model.shapeMode(TRIANGLE_STRIP); } else if(key=='6') { model.shapeMode(QUADS); } else if(key=='7') { model.shapeMode(QUAD_STRIP); } } void mouseDragged() { rotX += (mouseX - pmouseX) * 0.01; rotY -= (mouseY - pmouseY) * 0.01; }
Dernière modification par tomaok (2011-02-25 20:54:21)
Hors ligne
Tu n'es pas seul... on t'observe on t'observe
Pour ton mélange de code, as tu réussi à bien situer la partie ou l'image 3D est affichée (ton vampire) ?
c'est cette méthode 'model.draw()' que tu dois replacer au bon endroit dans ta version ARToolkit.
peut-être ici par exemple :
void displayCube(MultiARToolKit _a) { fill(0,255,0); translate(0,0,40); box(80,80,80); }
insérer cette partie aussi dans ton displayCube():
pushMatrix(); translate(width/2, height/2, 0); popMatrix();
essayes déjà ça puis voyons voir ce que ça donne.
+++
Dernière modification par oyster_twiter (2011-02-25 18:50:36)
Hors ligne
Au passage je signale la sortie de cet ouvrage dont je viens de faire l'acquisition.
Vraiment clair, simple et impeccable pour les débutants comme moi!
http://www.pearson.fr/livre/?GCOI=27440100060660
Hors ligne
J'ai tenté ceci mais il y'a un conflit... ??
Duplicate method setup() in type MultiARToolKit_simple
Je patauge gentiment ^^!
Hors ligne
Tout juste Rep ! tout juste !
C'est bien ça, Processing ne fonctionne qu'avec une seule méthode setup(), celle qui permet d'initialiser ton appli. Là il y en a 2, donc problème...c'est ce que dit ton message d'erreur :
citation :
Duplicate method setup()
@Tomaok : je t'invite à prendre en main processing avec 2 ou 3 exemples plus simple, pour te sentir plus à l'aise avec son fonctionnement, et après tu pourras envisager le mix de tes 2 programmes. Donnes toi du temps, t'es pas à 3 semaines près...
Le bouquin dont tu parles à l'air très bien pour cette prise en main de P5 (chapitre 5 pour le problème rencontré ici), n'hésites pas à "t'appuyer" dessus.
+++
Dernière modification par oyster_twiter (2011-02-26 11:36:55)
Hors ligne
J'avais compris le conflit avec le doublon setup()... Mais effectivement je suis franchement dépassé... ^^!
Un petit retour aux fondamentaux est indispensable! Aller au boulot!
Hors ligne
C'est bon j'ai enfin réussi à coupler les deux librairies... C'est un peu chaotique au niveau de l'ancrage du modèle 3D, mais tout y est: objet 3D + texture. Manque toutefois à l'appel une gestion de la lumière en temps réel.
En revanche l'affichage de l'objet est très gourmand, dès que le marqueur est reconnu on sent que la machine rame pour afficher l'objet! Cela vient sans doute du mode d'affichage OPENGL qui sollicite la carte graphique.
Donc il faut que je creuse la question des coordonnées de l'objet par rapport au marqueur (peut être depuis mon soft 3D) et que j'optimise l'affichage (???) ! De plus ce bricolage accepte plusieurs objets.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Voici le code ^^! J'attends vos observations pour améliorer tout ça!
Dernière modification par tomaok (2011-03-01 18:54:44)
Hors ligne
Bravo, ça avance bien!
tomaok a écrit:
En revanche l'affichage de l'objet est très gourmand, dès que le marqueur est reconnu on sent que la machine rame pour afficher l'objet! Cela vient sans doute du mode d'affichage OPENGL qui sollicite la carte graphique.
Normalement, l'opengl allège la tache du processeur principal puisqu'il prend en charge les calculs pour l'affichage graphique, et les gpu ont pas mal de ressources en réserve, à moins que tu aies une carte graphique très ancienne ?
Un truc qui me semble étrange, c'est que l'objet model est recréé à chaque appel de displayCube, à chaque fois il est rechargé à partir du fichier, ce qui veut probablement dire plusieurs dizaines de fois par seconde, tu devrais sortir ce passage de displayCube, il suffit de le charger une fois. D'ailleurs, quand cette fonction est elle appelée ? (on ne voit pas l'appel dans la boucle draw() )
edit: je viens de comprendre, cette fonction est liée à un marqueur dans le setup...
Dernière modification par emoc (2011-03-01 11:32:14)
Hors ligne