xxxxxxxxxx
let gravity = 1;
let timeUnit = 0.5;
let windy = false;
let landScape = null;
let mySound;
let dingdong;
// for PoseNet
let video;
let poseNet;
let aPose;
let aSkeleton;
// callbacks for PoseNet
function modelLoaded() {
console.log("postNet ready");
}
function getPoses(poses) {
//console.log(poses);
if (poses.length > 0) {
aPose = poses[0].pose;
aSkeleton = poses[0].skeleton;
}
}
function setup() {
createCanvas(windowWidth, windowHeight);
frameRate(20);
landScape = new LandScape([], []);
// for PoseNet
video = createCapture(VIDEO);
video.hide();
// loading PostNet pre-trained model
poseNet = ml5.poseNet(video, modelLoaded);
poseNet.on("pose", getPoses);
}
function draw() {
let wind = createVector(0, 0);
if (windy) {
wind = createVector(random(5, 30), 2);
}
landScape.update(wind);
landScape.checkUp();
landScape.display();
}
function mousePressed() {
if (!landScape.checkBloom(mouseX)) {
createTree();
}
}
function keyPressed() {
if (key == '1') {
windy = !windy;
} else {
removeAll();
}
}
function createTree() {
let strength = floor(random(8, 10));
landScape.addTree(new Tree(
rootPos = createVector(mouseX, windowHeight * 5 / 6),
totalHeight = windowHeight / 15 * strength,
depth = strength,
angleMean = -PI / 2,
angleRange = PI / 3,
asymmetry = 0.2,
divergence = 0.8,
precocity = 0.25,
limit = 0.2,
rubust = 0.2,
damping = 0.5,
lineColor = [96, 96, 72, ],
bloomDepth = 0,
flowerRubust = 0.5,
flowerMass = () => {
return random(12, 24);
},
flowerColor = () => {
return [
random(200, 216),
random(0, 144),
random(0, 96),
192,
];
},
flowerShape = () => {
ellipse(0, 0, random(1, 2), random(1, 2));
}
));
}
function removeAll() {
landScape.removeAll();
}
function outOfScreen(pos) {
return pos.x < 0 || pos.y < 0 || pos.x > windowWidth || pos.y > windowHeight;
}