Skip to content

Issue to add particle system to my facemeshΒ #1455

Open
@Ganzi1995

Description

@Ganzi1995

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...

  • Web browser & version:
  • Operating System:
  • ml5 version you're using:
  • Any additional notes

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions