Outils pour utilisateurs

Outils du site


wiki:projets:reincarnation-numerique:accueil

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

AFFICHE FINAL

ÉLÉMENTS NÉCESSAIRES

Processing, librairies à télécharger Librairie ControlP5 Librairie Opencv

PROGRAMME

<code> /*

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<eye.length; i++) {
  eye[i]=new eye();
  eye[i].eyesetup();
}
img1 = loadImage("t-shirt.png");
img2 = loadImage("pipille.png");
}
void draw() {
 background(#030000);
image(img1, 0, 120,width,height/1.5);//image contour oeil et ça position et ça taille
opencv.loadImage(video);
// déplacement de la pupille
Rectangle[] faces = opencv.detect();
for (int i = 0; i < faces.length; i++) {
  mx = (((faces[i].x+faces[i].width/2)))*5;
  my = ((faces[i].y+faces[i].height/2))*5;
}
for (int i=0; i< nb; i++) {
//faire les metodes pour la classe eye
  eye[i].update();
  eye[i].display();
}
}
//repositionne l'oeil permet a la terre de ce déplacer
void captureEvent(Capture c) {
c.read();
}
class eye {
float x;
float y;
float midx;
float midy;
float langle;
float ldist;
float lx;
float ly;
int time = 9;
int size;
eye() {
}
void update() {
  langle = atan2(mx-x, my-y);
  ldist = dist(mx, my, x, y);
  lx = sin(langle)*ldist/30;
  ly = cos(langle)*ldist/70;
}
void display() {
  pushMatrix();
  scale(-1, 1);
  translate(-width, 0);
  noStroke();
  fill(0);
  ellipse(x, y, 160, size);
  fill(0);
  // dimention terre
  image(img2, x+lx-90, y+ly-80,width/3.9,height/5);
  //ellipse(x+lx, y+ly, 5, 60);
  popMatrix();
}
// position x et y de la terre
void eyesetup() {
  x=floor((width/2.11));
  y=floor((height/2.2));
  }
}

Programme permettant de lancer 4 vidéo à l'aide de boutons déclancheurs + couplé avec le programme de l'oeil central qui suis l'observateur /** Affiche tactile interactive - * Quand on appuie sur une touche, cela lance une image, une vidéo, une anim, un son, etc… */ / librairies

import gab.opencv.*;
import processing.video.*;
import java.awt.*;
import processing.sound.*;
import processing.video.*;
Capture video;
OpenCV opencv;
// variables globales
// bouton son image active ?
boolean image_active = false;
// bouton son actif ?
boolean son_actif = false;
float tempsDebutSon = 0; 
// bouton video active ?
boolean video_active = false;
float tempsDebutVideo = 0; 
// bouton video active ?
boolean video_active2 = false; 
float tempsDebutVideo2 = 0; 
// bouton video active ?
boolean video_active3 = false;
float tempsDebutVideo3 = 0; 
// bouton video active ?
boolean video_active4 = false;//
float tempsDebutVideo4 = 0; 
PImage img1;
PImage img2;
float x;
float y;
float midx;
float midy;
float langle;
float ldist;
float lx;
float ly;
int time = 9;
int size;
float mx;
float my;
Movie vid; 
Movie vid2; 
Movie vid3; 
Movie vid4;
void setup() {
size(670, 900);
noStroke();
background(0);
img1 = loadImage("t-shirt.png");
img2 = loadImage("pipille.png");
// initiaisation des variables globales
// chargement du son
//println(son.duration());
// chargement vidéo 1
vid = new Movie(this, "taureau.mp4"); 
// chargement video 2
vid2 = new Movie(this, "scorpion.mp4");
// chargement vid 3
vid3 = new Movie(this, "lion.mp4");
// chargement vid 4
vid4 = new Movie(this, "cancer.mp4");
//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();
eyesetup();
}
void draw() { 
// image contour oeil
background(0);
//image contour oeil et ça position et ça taille
// déplacement de la pupille
opencv.loadImage(video);
Rectangle[] faces = opencv.detect();
for (int i = 0; i < faces.length; i++) {
  mx = (((faces[i].x+faces[i].width/6)))*5;
  my = ((faces[i].y+faces[i].height/6))*5;
}
update();
if (video_active) {
  float tempsVideo = millis() - tempsDebutVideo;
  if (tempsVideo >= 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;
  }
  }
} 
wiki/projets/reincarnation-numerique/accueil.txt · Dernière modification: 2019/01/24 11:40 (modification externe)