Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF :...
Transcript of Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF :...
![Page 1: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/1.jpg)
OpenframeworksCrasLab - Mains d’Œuvres
28/02/2009 - 01/03/2009
![Page 2: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/2.jpg)
OF : Introduction
• http://www.openframeworks.cc
• http://www.openframeworks.cc/download
• http://www.openframeworks.cc/forum
• http://wiki.openframeworks.cc
![Page 3: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/3.jpg)
OF : Introduction
• Zachary Lieberman ( http://www.thesystemis.com )
• Theo Watson ( http://muonics.net )
• Communauté de développeurs
![Page 4: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/4.jpg)
OF : Introduction
• Langage : C++
• Open-source
• Ensemble de librairies
• création d’images dynamiques (OpenGL comme API graphique)
• manipulation de sons, de fontes, de données diverses
• Input / Output
![Page 5: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/5.jpg)
OF vs Processing
• Java ( Processing )
• compilation en code intermédiaire, identique pour chaque type de processeur / machines ( “write once, run everywhere” )
• éxécution par une “machine virtuelle”
• fichier .java seulement pour décrire une classe
• éditeur simple pour créer des programmes
![Page 6: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/6.jpg)
OF vs Processing
• C++
• langage “bas-niveau” (vs langage de script)
• compilation en langage machine, dépend de l’architecture du processeur (intel, powerpc, ...)
• 2 fichiers pour une classe :
• entête ou header (.h ou .hpp)
• source (.cpp)
![Page 7: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/7.jpg)
OF vs Processing
• OF
• pas de possibilités d’export pour le web
• pas multi-platerforme (ou moins facilement qu’avec Processing)
• langage c++ plus difficile à apprendre mais plus puissant
![Page 8: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/8.jpg)
OF : Dossiers• addons
Dossier contenant les librairies additionnelles (sources, exemples, doc)
• appsDossier contenant les exemples et où l’on stockera nos propres applications (code source, data, fichiers de projet)
• libsDossier contenant les entêtes (définitions de classe) + librairies/bibliothèques compilées.
![Page 9: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/9.jpg)
OF : add-ons
• Librairies de base
• Possibilités d’extensions des fonctionnalités (add-ons)
• http://addons.openframeworks.cc
![Page 10: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/10.jpg)
OF : add-ons
• OSC
• protocole de communication.
• Thread
• gestion de taches en parallèle.
• OpenCV
• détection de contour, de visages, de mouvements.
![Page 11: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/11.jpg)
OF : add-ons et plus!
• Compilation et utilisation d’autres librairies écrites en C++ (ou C)
• Exemples :
• Opensteer ( http://opensteer.sourceforge.net )
• Box2D ( http://www.box2d.org )
• ODE ( http://www.ode.org )
• ... et d’autres !
![Page 12: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/12.jpg)
OF : IDE
• Installation
• XCode sur Mac (Tiger / Leopard)
• CodeBlocks sur Windows (XP / Vista)
![Page 13: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/13.jpg)
OF : IDE (XCode)
![Page 14: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/14.jpg)
OF : IDE (CodeBlocks)
![Page 15: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/15.jpg)
OF : IDE
• Integrated development environment
• Gestion des fichiers sources :
• Edition (coloration syntaxique, complétion)
• Création (à partir de templates)
• Exploration des définitions de classes
![Page 16: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/16.jpg)
OF : IDE
• Compilation
• “traduction” des fichiers sources en code machine.
• Editions de liens
• liens avec les librairies externes, regroupement des fichiers compilé en un seul fichier (binary). Cela peut-être une librairie dynamique, statique ou bien un exécutable.
![Page 17: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/17.jpg)
OF : IDE - Compilation
![Page 18: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/18.jpg)
OF : IDE
• Debugging
• permet de suivre pas à pas l'exécution d’un programme
• breakpoint : point d’arrêt du debugger, permet de scruter l’état du
programme (notamment les valeurs de variables par exemple)
![Page 19: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/19.jpg)
OF : première compil’
• ouverture d’un projet (apps/examples/)
• fichier “.xcodeproj” sur Mac
• fichier “.cbp” sur PC
• compile and run
• console
![Page 20: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/20.jpg)
OF : nouveau projet
• Création d’un dossier “propre” pour la durée de l’atelier (ex : apps/workshopCraslab/ )
• copie du dossier apps/examples/_emptyExample/ dans notre dossier apps/workshopCraslab/
• Renommer le nom du dossier _emptyExample en NomDeMonNouveauProjet
![Page 21: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/21.jpg)
OF : nouveau projet
![Page 22: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/22.jpg)
OF : point d’entrée
• fichier principal : main.cpp
• fonction main()
• appelée par le système au démarrage de l’application
• set-up OpenGL,création de la fenêtre
• instance d’application (testApp)
![Page 23: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/23.jpg)
OF : instance d’appli
• testApp.h et testApp.cpp
• interface d’évènements (souris + clavier)
• interface de la classe
• setup()
• update()
• draw()
![Page 24: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/24.jpg)
OF : app.setup()
• fonction appelée une seule fois lors de la création de l’instance de l’application
• lieu d’initialisation de nos variables
• définir le framerate (nombre d’images dessinées par seconde) : ofSetFrameRate()
![Page 25: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/25.jpg)
OF : app.update()
• mise à jour des variables, si celles-ci dépendent du temps (ex : pour animer un objet dans l’espace)
• appelée juste avant app.draw()
![Page 26: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/26.jpg)
OF : app.draw()
• fonction principale de dessin
• les commandes de dessin sont placées ici, les variables viennent d’être mises à jour dans le update() et peuvent être utilisées.
![Page 27: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/27.jpg)
OF : app.draw()Repère 2D : pixels, coordonnées
![Page 28: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/28.jpg)
OF : app.draw()Repère 2D : pixels, coordonnées
![Page 29: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/29.jpg)
OF : app.draw()Repère 2D
![Page 30: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/30.jpg)
OF : C++Les variables
• Type
• Nom de la variable
• ne doit pas commencer par un caractère spécial ( ‘?’, ’_’, espace, chiffres,... )
• Valeur
• affection avec l’opérateur =
![Page 31: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/31.jpg)
OF : C++Variables : types de base
• Type des variables de base
• int, boolean,float,char
• Librairie standard
• std::string (ou string)
![Page 32: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/32.jpg)
OF : C++Les fonctions
![Page 33: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/33.jpg)
OF : C++Les fonctions
![Page 34: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/34.jpg)
OF : C++Les fonctions
![Page 35: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/35.jpg)
OF : C++Les fonctions : syntaxe
![Page 36: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/36.jpg)
OF : C++Les boucles : for
![Page 37: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/37.jpg)
OF : C++Les conditions : if
![Page 38: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/38.jpg)
OF : C++Les conditions : if / else
![Page 39: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/39.jpg)
OF : C++Classe : déclaration .h
![Page 40: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/40.jpg)
OF : C++Classe : déclaration
• “public”
• accessibilité des membres depuis d’autres instances classes.
• “private”
• accessibilité des membres seulement depuis des instances de la classe.
• “protected”
• accessibilité des membres seulement depuis des instances de la classe.
![Page 41: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/41.jpg)
OF : C++Classe : implémentation .cpp
![Page 42: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/42.jpg)
OF : C++Impression sur la console
• printf(“n=%d”, nombreEntier);
• printf(“f=%3.2f”, nombreAVirgule);
• printf(“s=%s”, chaineChars.c_str());
![Page 43: Openframeworks - v3gav3ga.net/blog/wp-images/openframeworks/010309_Openframeworks_slides.pdfOF : Introduction • Langage : C++ • Open-source • Ensemble de librairies • création](https://reader033.fdocuments.us/reader033/viewer/2022041519/5e2d08b1200c602a86070246/html5/thumbnails/43.jpg)
Quelques liens connexes
• Demandez le programmehttp://interstices.info/jcms/c_42286/demandez-le-programme
• Algorithmes, mode d’emploihttp://interstices.info/jcms/c_42224/algorithmes-mode-demploi
• Chronologie des langages de programmationhttp://fr.wikipedia.org/wiki/Chronologie_des_langages_de_programmation
• Cours de Christian Casteyde sur le C++http://casteyde.christian.free.fr/cpp/cours/index.html