ml5js / ml5-library

Friendly machine learning for the web! πŸ€–
https://ml5js.org
Other
6.45k stars 905 forks source link

Issue to add particle system to my facemesh #1455

Open Ganzi1995 opened 1 year ago

Ganzi1995 commented 1 year ago

Dear ml5 community,

I'm submitting a new issue. Please see the details below.

β†’ Step 1: Describe the issue πŸ“

Did you find a bug? Want to suggest an idea for feature?

I am new to P5js and I am trying to understand why I can not let the particle system move simultaniosly with my facemesh.

β†’ Step 2: Screenshots or Relevant Documentation πŸ–Ό

Here's some helpful screenshots and/or documentation of the new feature

β†’ Step 3: Share an example of the issue πŸ¦„

Here's some example code or a demonstration of my feature in this issue, separate GitHub repo, or in the https://editor.p5js.org or codepen/jsfiddle/Glitch/etc...

let facemesh; let video; let predictions = []; let emitter; let particle;

function setup() { createCanvas(640, 480); video = createCapture(VIDEO); video.size(width, height); emitter = new Emitter(width / 2, height / 2);

facemesh = ml5.facemesh(video, modelReady);

// This sets up an event that fills the global variable "predictions" // with an array every time new predictions are made facemesh.on("predict", results => { predictions = results; });

// Hide the video element, and just show the canvas video.hide(); }

function modelReady() { console.log("Model ready!"); }

function draw() { //image(video, 0, 0, width, height); drawSelectKeypoints() emitter.show(); emitter.update(); blendMode(ADD);

}

function drawSelectKeypoints() { for (let i = 0; i < predictions.length; i += 1) {

//for (let i = 0; i < predictions.length; i += 1) { //const keypoints = predictions[i].scaledMesh;

if (random (1) < 1){
    emitter.updatePosition (mouseX, mouseY) //(leftInnerEyeX,leftInnerEyeY);
  emitter.emit(0.1)
  }   

const keypoints = predictions[i].scaledMesh;

// an arbitrary selection of keypoints, using their indices in the array
// for detailed diagram of array indices, see:
// https://raw.githubusercontent.com/tensorflow/tfjs-models/master/face-landmarks-detection/mesh_map.jpg

// corners of left eye
const [leftInnerEyeX, leftInnerEyeY] = keypoints[362];
const [leftOuterEyeX, leftOuterEyeY] = keypoints[263];
ellipse(leftInnerEyeX, leftInnerEyeY, 5, );
ellipse(leftOuterEyeX, leftOuterEyeY, 5);

// corners of right eye
const [rightInnerEyeX, rightInnerEyeY] = keypoints[133];
const [rightOuterEyeX, rightOuterEyeY] = keypoints[33];
ellipse(rightInnerEyeX, rightInnerEyeY, 5);
ellipse(rightOuterEyeX, rightOuterEyeY, 5);

// tip of nose
const [noseX, noseY] = keypoints[4];
ellipse(noseX, noseY, 5);

// corners of mouth
const [rightMouthX, rightMouthY] = keypoints[78];
const [leftMouthX, leftMouthY] = keypoints[308];
ellipse(leftMouthX, leftMouthY, 5);
ellipse(rightMouthX, rightMouthY, 5);

} }

Other relevant information, if applicable

β†’ Describe your setup πŸ¦„

Here's some helpful information about my setup...

sproutleaf commented 1 year ago

Hi @Ganzi1995 ,

Thank you for opening an issue with us! I'm wondering if this is happening because of something that has to do with the emitter class?

Could you link the p5.js sketch you're using so that I can debug in a more comprehensive way? Thank you!

Miaoye