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 サンプル
  1. import peasy.*; //ライブラリを取込  
  2.   
  3. PeasyCam cam;   //カメラワーク操作のためのオブジェクトを格納する変数を定義  
  4.   
  5. void setup() { //初期化  
  6.   size(200,200,P3D); // スクリーンのサイズ x, y とP3D(高速3次元描画ライブラリ)を指定  
  7.   cam = new PeasyCam(this100); // カメラワーク操作オブジェクト。親オブジェクトと距離?を指定  
  8.   cam.setMinimumDistance(50); // カメラの最小距離定義  
  9.   cam.setMaximumDistance(500); // カメラの最大距離定義  
  10. }  
  11. void draw() { // loopするメソッド  
  12.   rotateX(-.5); // X軸 回転する  
  13.   rotateY(-.5); // Y軸 回転する  
  14.   background(0); // 背景色 0は?  
  15.   fill(255,0,0); // (背景を)塗りつぶす  
  16.   box(30); // キューブを用意  
  17.   pushMatrix(); // キューブ配置(Push)  
  18.   translate(0,0,20); // 座標を移動  
  19.   fill(0,0,255); // (キューブを)塗りつぶす  
  20.   box(5); // 小さなキューブを用意  
  21.   popMatrix(); // 小さなキューブを配置  
  22. }  

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

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

0 件のコメント:

コメントを投稿