2. 座標の移動、回転(processing 3D入門)

すでに例題としては触れていますが、座標の移動や回転について説明していきます。

移動(translate)

さて次は、以下のグラフィックを描画してみましょう。

sample2_1

translateという関数を使って移動させるのですが、ここで注意する必要があるのは、translateはオブジェクト単体を移動するのではなく、空間全体を移動するということなのです。ですから、複数のオブジェクトが画面上にある場合は、すべて移動します。

また、以下のサンプルのように、translateを繰り返すと、その結果は蓄積されます。
描画されるたびに基準点が変わります。

1
2
3
4
5
6
7
8
9
10
11
12
13
void setup(){
  size(400, 400, P3D);
}
 
void draw(){
  background(0);
 
  translate(width/2, height/2);    //立体の中心を画面中央に移動 
  for(int i = 0; i < 5; i ++){    //立方体を、30ピクセルごとに5個生成
    translate(30, 0);
    box(20, 20, 20);    //150 x 150 x 150pxの立方体を描
  }
}

回転

次は回転です。
回転はrotateを使います。
rotateも、translateと同じように空間全体を回転します。

sample2_2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Y軸を中心に回転する立方体
 
int angle;    //角度を設定するための変数
 
void setup(){
  size(400, 400, P3D);
  angle = 0;    //60度を設定
}
 
void draw(){
  background(0);
  angle += 1;    //角度を1ずつ足していく
  if(angle > 360) angle = 0;    //360度を超えたら0に戻す
 
  translate(width/2, height/2);    //立体の中心を画面中央に移動 
  rotateY(radians(angle));    //Y軸に対してangleの数値分だけ回転
  box(150, 150, 150);    //150 x 150 x 150pxの立方体を描
}

上記のサンプルはY軸を中心に回転しています。
rotateX, rotateZを使って、他の軸を基準にした回転も加えてみましょう。