Как запустить генеративный портрет в p5.js - PullRequest
0 голосов
/ 23 июня 2019

Мне нужна помощь с кодом, над которым я работаю для проекта.

Что мне нужно сделать, так это показать пользователям картинку по очереди и запомнить время, затраченное на каждую. В конце он должен открыть веб-камеру и начать рисовать портрет пользователя с частицами, цвета которых соответствуют цветам изображений. У меня проблемы с последней частью кода: я не могу открыть веб-камеру и не знаю, как начать портрет.

Это код на данный момент

var faseCorrente = "intro"; // altri valori: "test" e "risultato"
var c = 0;
var sfondo = new Array(6);
var intro;

var classifica = [];

var tempi = [];
var tempoInizio;


//VAR WEBCAM
var video;
var vScale = 16;
var particles = [];
var slider;
//end var webcam 


function preload() {

  sfondo[0] = loadImage('colore0.jpg');
  sfondo[1] = loadImage('colore1.jpg');
  sfondo[2] = loadImage('colore2.jpg');
  sfondo[3] = loadImage('colore3.jpg');
  sfondo[4] = loadImage('colore4.jpg');
  sfondo[5] = loadImage('colore5.jpg');

  intro = loadImage('Introduzione.jpg');

} //close preload


function setup() {
  createCanvas(700, 550);

  noStroke();
  cursor(HAND);


} //close setup 


function draw() {
  if (faseCorrente == 'intro') {
    background(intro);
  } else if (faseCorrente == 'test') {
    background(sfondo[c]);
  } else if (faseCorrente == 'risultato') {
    //background(255);
    var durataTotale = 0;
    for (t = 0; t < tempi.length; t++) {
      durataTotale += tempi[t];
    }
    var x = 0;
    for (var pos = 0; pos < classifica.length; pos++) {
      var col = classifica[pos];
      fill(col);
      var perc = tempi[col] / durataTotale;
      var larghezza = round(perc * width);
      rect(x, 0, larghezza, height);
      x += larghezza;
    }
  }
}

//calcolo del tempo 
function keyPressed() {

  if (key == ' ') {

    if (faseCorrente == 'intro') {
      tempoInizio = millis();
      coloreCorrente = 0;
      faseCorrente = 'test';
    } else if (faseCorrente == 'test') {
      c++
      //end if
      var tempoFine = millis();
      tempi[coloreCorrente] = tempoFine - tempoInizio;
      coloreCorrente++;
      if (coloreCorrente < 6) {
        tempoInizio = millis();
      } else {
        print(tempi);
        classifica = [];
        for (pos = 0; pos < sfondo.length; pos++) {
          var tempoMax = 0;
          var coloreMax;
          for (var i = 0; i < tempi.length; i++) {
            if (!classifica.includes(i) && tempi[i] > tempoMax) {
              tempoMax = tempi[i];
              coloreMax = i;
            }
          }
          classifica[pos] = coloreMax;
        }
        print(classifica);
        faseCorrente = "risultato";
      }
    } else if (faseCorrente == 'risultato') {

     //WEBCAM
      createCanvas(640, 480);
      pixelDensity(1);
      video = createCapture(VIDEO);
      video.size(width / vScale, height / vScale);
      for (var w = 0; w < 200; w++) {
        particles[w] = new Particle(random(width), random(height));
      }
      slider = createSlider(0, 255, 127);
      background(51);
      //end webcam 

      //GRAFICA WEBCAM
      faseCorrente = video.loadPixels();
      for (var k = 0; k < particles.length; k++) {
        particles[k].update();
        particles[k].show();
      } //end grafica

      //faseCorrente = 'intro';
    }
  }
}

Спасибо всем, кто может помочь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...