xxxxxxxxxx
250
let w1;
let w2;
walkers = [];
let run = false;
let takeCapture = false;
let sizeX = 100;
let sizeY = 100;
let sizeZ = 100;
let gap = 300;
let xNumber= 5;
let yNumber= 5;
let growthLimitation = 0.8;
let t =0;
let life = 1.0;
stepping01 = [] ;
greenSizeList01 = [] ;
stepping02= [] ;
greenSizeList02= [] ;
cleanup= [] ;
let clean = false;
var cam;
function preload() {
createVRCanvas();
}
function setup(){
//createCanvas(1200, 1200, WEBGL);
//directionalLight(255,0,0,-1,-1,1);
/*
easycam = createEasyCam();
let centralX= (((xNumber-1)*sizeX*2)+((xNumber-1)*(gap-sizeX*2)))*0.5
let centralY= (((yNumber-1)*sizeY*2)+((yNumber-1)*(gap-sizeY*2)))*0.5
easycam = new Dw.EasyCam(this._renderer, {distance:1500, center:[centralX,centralY,0]});
//easycam = new Dw.EasyCam(this._renderer, {distance:620, center:[0,0,0]});
*/
textSize(10);
w1 = new Walker(0,0, 0, 0);
//w2 = new Walker(300,0, 300,0);
for(let i = 0 ; i < xNumber; i++){
for(let j =0; j< yNumber; j++){
walkerStepping = [];
walkerGreenSize = [];
skyWalker = new Walker (gap*i, gap*j, gap*i, gap*j, walkerStepping, walkerGreenSize);
walkers.push(skyWalker);
}
}
setVRBackgroundColor(0);
}
function draw(){
//background(0);
//directionalLight(255,255,255,1,1,-1);
//directionalLight(255,255,255,-1,1,-1);
//directionalLight(255,255,255,-1,1,1);
noFill();
stroke(255);
strokeWeight(1);
//box(sizeX*2, sizeY*2, sizeZ*2);
if(run){
/*
w1.steps();
//PVector storeSteps01 = new PVector(w1.x, w1.y,t*200+100*sin(frameCount*0.01));
PVector storeSteps01 = new PVector(w1.x, w1.y,t*200);
// PVector storeSteps01 = new PVector(w1.x*sin(frameCount*0.1), w1.y,t*200); control the shape
PVector greenSize01 = new PVector(random(20, 30),random(20 ,30), 20);//original
//PVector greenSize = new PVector(random(10, 10),random(10 ,10), 10);
stepping01.push(storeSteps01);
greenSizeList01.push(greenSize01);
w2.steps();
//PVector storeSteps01 = new PVector(w1.x, w1.y,t*200+100*sin(frameCount*0.01));
PVector storeSteps02 = new PVector(w2.x, w2.y,t*200);
// PVector storeSteps01 = new PVector(w1.x*sin(frameCount*0.1), w1.y,t*200); control the shape
PVector greenSize02 = new PVector(random(20, 30),random(20 ,30), 20);//original
//PVector greenSize = new PVector(random(10, 10),random(10 ,10), 10);
stepping02.push(storeSteps02);
greenSizeList02.push(greenSize02);
*/
for(let i =0; i<walkers.length; i++){
nowWalker = walkers[i];
nowWalker.steps();
nowWalker.collect();
//PVector nowStoreWalkerSteps = new PVector(nowWalker.x, nowWalker.y,t*200);
//PVector nowGreenWalkerSize = new PVector(random(20, 30),random(20 ,30), 20);//original
//walkerStepping.push(nowStoreWalkerSteps);
//walkerGreenSize.push(nowGreenWalkerSize);
}
t=t+0.001;
}
if(t>life) run = false;
for(let i =0; i<walkers.length; i++){
displayWalker = walkers[i];
displayWalker.displayBon();
displayWalker.displayDrone();
displayWalker.treeGrow();
}
/*
w1.displayBon();
w2.displayBon();
w1.displayDrone();
w2.displayDrone();
treeGrow(w1,stepping01, greenSizeList01);
treeGrow(w2, stepping02, greenSizeList02);
cleanup.push(stepping01);
cleanup.push(stepping02);
*/
if(takeCapture){
saveFrame("outputCapture/frame####.jpg"); // will save each frame\
takeCapture = false;
}
//saveFrame("outputVideo/frame####.jpg"); // will save each frame
if(t >growthLimitation){
run = false;
}
}
/*
function treeGrow(let walk, let stepCluster, let greenSizeCluster){
for(let i=0; i<stepCluster.length;i++){
nLoc01 = stepCluster[i];
nowGreenSize = greenSizeCluster[i];
//branches
if(i%50 == 0){
stroke(200,150,0);
strokeWeight(2);
line(walk.baseX,walk.baseY,0,nLoc01.x, nLoc01.y,nLoc01.z);
}
//if bloom
if(i%50 == 0){
pushMatrix();
translate(nLoc01.x, nLoc01.y,nLoc01.z+10);
fill(255, 0, 255, 200);
noStroke();
sphereDetail(10);
//sphere(5);
//box(10);
popMatrix();
}
pushMatrix();
translate(nLoc01.x, nLoc01.y,nLoc01.z);
//fill(0, 255, 0, 200);
fill(0, map(i,0,stepping01.length,50,255), 0, 200); //green
//fill(map(i,0,stepCluster.length,100,255), map(i,0,stepCluster.length,50,255), 0, 200); //yellow
//Color Transition
//color from = color(0, 102, 153);
////color from = color(0, 255, 0, 200);
////color to = color(204, 102, 0, 200);
color from = color(0, 50, 0, 200); //dark green
color to = color(0, 255, 0, 200); //light green
let colorValue = map(i,0,stepping01.length,0.0, 1.0);
color transColor = lerpColor(from, to, colorValue);
fill(transColor); //green
noStroke();
sphereDetail(10);
//rect(0,0, 20,20);
//sphere(50);
box(nowGreenSize.x,nowGreenSize.y,nowGreenSize.z);
popMatrix();
}
}
*/
function treeClear(){
for(let i=0; i<cleanup.length; i++){
insideList = cleanup[i];
insideList.clear();
}
}
function keyPressed(){
if(key == ' '){
run = !run;
//stepping01.clear();
//t=0;
}
if(key == 'c'){
//run = !run;
//stepping01.clear();
//stepping02.clear();
//clean = true;
walkers = [];
for(let i = 0 ; i < xNumber; i++){
for(let j =0; j< yNumber; j++){
walkerStepping = [];
walkerGreenSize = [];
skyWalker = new Walker (gap*i, gap*j, gap*i, gap*j, walkerStepping, walkerGreenSize);
walkers.push(skyWalker);
}
}
t=0;
}
if(key == 't'){
takeCapture = true;
}
}