これを導入すると、視点の移動や拡大、縮小、回転といった操作を実現できる。操作方法は
left-drag to rotate以前、OpenGLで回転、縮小、視点移動のプログラム課題をこなしたことがあるが、随分と面倒だったことを記憶している。
mouse wheel, or right-drag up and down to zoom
middle-drag (cmd-left-drag on mac) to pan
double-click to reset
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 件のコメント:
コメントを投稿