Pages

2011年4月29日金曜日

PeasyCamのサンプルを試してみた

PeasyCamは、カメラワークを実現するためのライブラリのようだ。
これを導入すると、視点の移動や拡大、縮小、回転といった操作を実現できる。操作方法は
left-drag to rotate
mouse wheel, or right-drag up and down to zoom
middle-drag (cmd-left-drag on mac) to pan
double-click to reset
以前、OpenGLで回転、縮小、視点移動のプログラム課題をこなしたことがあるが、随分と面倒だったことを記憶している。

OSXのProcessing環境で、このライブラリのインストールに手間がかかった。マニュアルによれば、librariesの中にダウンロードし解凍したものをセットすれば良いと書かれていたが、うまく動作しない。「ライブラリが見つかりません」と警告がでる。
Processingのapp(OSXの場合、実はディレクトリ)を開き、その中のLibrariesディレクトリ、標準ライブラリと一緒の場所に入れた。

PeasyCamのサイトに掲載されているサンプルを動かしてみました。
PeasyCam サンプル
import peasy.*; //ライブラリを取込

PeasyCam cam;   //カメラワーク操作のためのオブジェクトを格納する変数を定義

void setup() { //初期化
  size(200,200,P3D); // スクリーンのサイズ x, y とP3D(高速3次元描画ライブラリ)を指定
  cam = new PeasyCam(this, 100); // カメラワーク操作オブジェクト。親オブジェクトと距離?を指定
  cam.setMinimumDistance(50); // カメラの最小距離定義
  cam.setMaximumDistance(500); // カメラの最大距離定義
}
void draw() { // loopするメソッド
  rotateX(-.5); // X軸 回転する
  rotateY(-.5); // Y軸 回転する
  background(0); // 背景色 0は?
  fill(255,0,0); // (背景を)塗りつぶす
  box(30); // キューブを用意
  pushMatrix(); // キューブ配置(Push)
  translate(0,0,20); // 座標を移動
  fill(0,0,255); // (キューブを)塗りつぶす
  box(5); // 小さなキューブを用意
  popMatrix(); // 小さなキューブを配置
}

絶対座標、相対座標 あるいは現在座標

popMatrix(), pushMatrix()が使われているが、その使い方についてのメモ。Push()とPop()
現在の変換マトリクスをマトリックススタックへポップする。push()とpop()を理解するには、まずマトリックススタック理論を理解しなければいけない。push() 機能は、今の座標をスタックに保存して、pop()は前の座標を復元する。 push() とpop()は、その他の移動メソッドとの組み合わせにおいて使われる。また、移動する領域をコントロールするのに組み込まれる。

0 件のコメント:

コメントを投稿