====== Réincarnation numérique ====== * Porteur(s) du projet : Nicolas Jacoutot * Date : 14/01/2019 * Licence : libre ! * Contexte : Cours de Processing avec Damien Muti ===== INTENTIONS ===== Avez-vous déjà rêvé que votre rêve était réel? Et si vous ne pouviez pas vous réveiller?Si l'ont ne mourrai jamais? Comment sauriez-vous la différence entre le rêve et la réalité? J'ai souhaité créer un programme qui nous plonge dans un monde où chaque individu est un programme, une intelligence artificiel notre ADN est un code et lorsque l'ont meure nous réapparaissons sous une nouvelle forme qui résultera de votre vécu en tant qu'humain sous le principe de la réincarnation. Ce programme permet grâce à un bouton une vidéo définissant votre réincarnation. 4 boutons déclenche chacun une vidéo différente. Un second programme permet à un oeil de suivre votre visage grasse à une caméra. ===== RECHERCHES & EXPÉRIMENTATIONS ===== {{ :wiki:projets:reincarnation-numerique-nicolas-jacoutot:recherche_ref.png?direct |}} ===== AFFICHE FINAL ===== {{ :wiki:projets:reincarnation-numerique-nicolas-jacoutot:type-2.png |}} ===== ÉLÉMENTS NÉCESSAIRES ===== Processing, librairies à télécharger Librairie ControlP5 Librairie Opencv ===== PROGRAMME ===== /* Nicolas Jacoutot Programme de l'oeil central qui suis l'observateur //initialisation des variables globals int nb = 1; float mx; float my; PImage img1; PImage img2; eye [] eye = new eye[nb]; import gab.opencv.*; import processing.video.*; import java.awt.*; Capture video; OpenCV opencv; //oeil caractère void setup() { //fullScreen(); size(670,900); //taille du cercle dans laquelle la terre peut ce déplacer video = new Capture(this, 640/2, 480/2); opencv = new OpenCV(this, 640/2, 480/2); opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE); video.start(); //importer la terre comme image et les coutour de l'oeil for (int i=0; i= vid.duration()/1000) { // si le son est fini son_actif = false; // bouton son_actif off } } else son_actif = false; // gestion de la vidéo //////////////////////////////////////// if (video_active) { image(vid, 0, 0, width/2, height/2.5); } else if (video_active2) { image(vid2, 340, 6, width/2, height/2.5); } else if (video_active3) { image(vid3, 10, 300, width/2, height/2.5); } else if (video_active4) { image(vid4, 340, 310, width/2, height/2.5); } image(img1, 110, 110, width/1.5, height/2.5); display(); } void movieEvent(Movie movie) { if (movie == vid) { tempsDebutVideo = millis(); vid.read(); } else if (movie == vid2) vid2.read(); vid3.read(); vid4.read(); } void captureEvent(Capture c) { c.read(); } // permet a l'image terre de ce déplacer void update() { langle = atan2(mx-x, my-y); ldist = dist(mx, my, x, y); lx = sin(langle)*ldist/70; ly = cos(langle)*ldist/180; } void display() { pushMatrix(); scale(-1, 1); translate(-width, 0); noStroke(); fill(0); ellipse(x, y, 160, size); fill(0); // dimention objet mouvant (terre) image(img2, x+lx-90, y+ly-80, width/6.4, height/8.4); //ellipse(x+lx, y+ly, 5, 60); popMatrix(); } // position x et y de l'objet mouvant void eyesetup() { x=floor((width/1.8)); y=floor((height/2.85)); } void keyPressed() { if (key == CODED) { if (keyCode == RIGHT) { vid.play(); vid2.stop(); vid3.stop(); vid4.stop(); clear(); video_active = true; video_active3 = false; video_active2 = false; video_active4 = false; } if (keyCode == UP) { // video vid2.play(); vid.stop (); vid3.stop (); vid4.stop (); clear(); video_active2 = true; video_active3 = false; video_active = false; video_active4 = false; } if (keyCode == LEFT) { // video vid3.play(); video_active3 = true; vid.stop (); vid2.stop (); vid4.stop (); video_active = false; video_active2 = false; video_active4 = false; } if (keyCode == DOWN) { // animation //stop all possible videos playing vid4.play(); vid.stop(); vid2.stop(); vid3.stop(); clear(); video_active4 = true; video_active = false; video_active2 = false; video_active3 = false; } } }