Есть ли способ масштабирования живого видео в соответствии с размером 3D-фигуры? - PullRequest
0 голосов
/ 19 апреля 2020

Я использую p5. js Веб-редактор, и я новичок в кодировании! Мне нужна помощь!

Я создал код, который применяет некоторые эффекты к моей веб-камере, делая его похожим на The Coding Trains Brightness Mirror . Это все отлично работает! Теперь я взял этот фрагмент кода и сделал его собственной функцией "Video_graphi c". В разделе рисования я сделал это текстурой "texture (Video_graphi c);" - это похоже на работу. Однако, я поставил «box (100)», который технически должен работать, но там написано, что width не определена в консоли .... Я добавил «box (100,100)» и без разницы.

Я думаю, что это может быть связано с проблемами масштабирования. Я думаю, что должно быть простое решение, но не знаю, как к нему подойти! ниже приведен код кода, в котором, по-моему, проблема возникает, посмотрите на ссылки для контекста - СПАСИБО В ADVANCE оригинальном зеркале -> https://editor.p5js.org/beth_osullivan/sketches/sGpke6LIF Попытка сделать зеркало текстурой -> https://editor.p5js.org/beth_osullivan/sketches/awvhSwcbt

function draw (){ // start draw

 texture (video_graphic);
  box (200);  // this is where it says the issue is  - with the width of the Box


}// End Draw


/////////////////////////////////////////////////////////////////////////
 // video_graphic Function
/////////////////////////////////////////////////////////

function video_graphic (scale){

  // 5. Use of External Code - Daniel Shiffman (referenced above) 
// 1. Iterations --> nested loop accessing pixels by array


  for(let y = 0; y < cam.height; y++){ 
    for(let x = 0; x < cam.width; x++){
     var index = (cam.width - x +1 + (y * cam.width)) * 4;
      var r = cam.pixels[index+0]; 
      var g = cam.pixels[index+1];
      var b = cam.pixels[index+2];

      var bright = (r+g+b) / 3; // making grayscale by averaging

      var threshold = slider.value();
      //var threshold = 135;

      // changing colours based brightness values
      if (bright > threshold) {
        fill (r1,g1,b1); // this makes the white blocks change colour every click - see mousePressed
        //fill(255)
        } else {
          fill (0);
        } 

      noStroke();
      //stroke ();
      //rectMode(CENTER); // makes the sqaures grow from center rather than top left corner

      rect(x*vScale, y*vScale, vScale, vScale); 


    } // end for loop x
  } // end for loop y

}


...