Processing: 動画上を3次元に動き回る四角形

Processing(2.2.1)で、カメラから取り込んだ動画上を四角形がマウスの動きに合わせて3次元に動き回る。

import processing.video.*;

Capture camera;

void setup() {
  size(640, 480, P3D);
  
  String[] cameras = Capture.list(); //利用可能な動画入力の配列を取得
  if (cameras.length == 0) {
    println("There are no cameras available for capture.");
    exit();
  } else {
    println("Available cameras:");
    camera = new Capture(this, cameras[0]); //MacのFaceTimeカメラの場合0番目
    camera.start();
  }
  
  noStroke(); //枠線なし
  fill(128, 128); //グレー、半透明
}

void draw() {
  if (camera.available()) {
    camera.read();
  }
  image(camera, 0, 0); //カメラ画像を表示
  
  translate(width/2, height/2, 0); //描画原点を中心に移動
  rotateX(mouseY / 200.0); //マウスの縦位置に応じてX軸を中心に回転
  rotateY(mouseX / 100.0); //マウスの横位置に応じてY軸を中心に回転

  int i = 100;
  int j = 100;
  int dim = 100;
  //正方形を頂点の集合として描く
  beginShape();
  vertex(i, j, 0);
  vertex(i+dim, j, 0);
  vertex(i+dim, j+dim, 0);
  vertex(i, j+dim, 0);
  endShape();
}