Daily Creative Coding

元「30 min. Processing」。毎日、Creative Codingします。

3D空間でカメラを動かす

/**
* cameara movement
*
* @author aa_debdeb
* @date 2016/05/04
*/

PVector center;
float cameraZ;

void setup(){
  size(500, 500, P3D); 
  center = new PVector(width / 2, height / 2, height / 2); 
  cameraZ = -500;
}

void draw(){
  background(255);
  float cameraX = map(mouseX, 0, width, - 200, 200);
  float cameraY = map(mouseY, 0, height, -200, 200);
  cameraZ += mousePressed ? 2: -2;
  if(cameraZ < -500){cameraZ = -500;}
  if(cameraZ > 0){cameraZ = 0;}
  camera(center.x + cameraX, center.y + cameraY, center.z + cameraZ, center.x, center.y, center.z, 0, 1, 0);
  pushMatrix();
  translate(center.x - 50, center.y, center.z);
  box(50);
  popMatrix();
  pushMatrix();
  translate(center.x + 50, center.y, center.z);
  sphere(50);
  popMatrix();
}