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(); //枠線なし
}

void draw() {
  if (camera.available()) {
    camera.read();
  }
  
  background(255, 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;
  //正方形を頂点の集合として描く
  textureMode(IMAGE);
  beginShape();
  texture(camera); //カメラ入力をテクスチャとする。500x500の領域を使用
  vertex(i, j, 0, 0, 0);
  vertex(i+dim, j, 0, 500, 0);
  vertex(i+dim, j+dim, 0, 500, 500);
  vertex(i, j+dim, 0, 0, 500);
  endShape();
}