oFでいうところのofEasyCam.
(gifアニメはCameraPerspサンプルを動かしたやつ)
かんたん3ステップ
CameraPersp
とCameraUi
を用意します
#include "cinder/CameraUi.h"
class AwesomeApp : public App {
public:
// snip.
CameraPersp camera_;
CameraUi camera_ui_;
}
CameraPersp
のインスタンスをCameraUi
に喰わせます
void AwesomeApp::setup() {
// snip.
camera_ui_ = CameraUi(&camera_);
}
コンストラクタでやってもいい.
AwesomeApp::AwesomeApp()
: // snip.
, camera_ui_(camera_)
{}
どこでやってもいい.
mouseDown
とmouseDrag
のイベントをCameraUi
に喰わせます
void AwesomeApp::mouseMove(MouseEvent event) {
camera_ui_.mouseDown(event);
}
void AwesomeApp::mouseDrag(MouseEvent event) {
camera_ui_.mouseDrag(event);
}
mouseWheel
もある.カメラの距離をぐりぐり変えることができるよ.
void AwesomeApp::mouseWheel(MouseEvent event) {
camera_ui_.mouseWheel(event);
}
APIドキュメントによるともうちょいいろいろ喰わせることができるらしい.
CameraPersp
のインスタンスをsetMatrices()
します
void AwesomeApp::draw() {
gl::setMatrices(camera_);
}
CameraUi
はなにやってんの
CameraPersp
をラップして,MouseEvent
見ていい感じにCameraPersp
のパラメータをいじれるようなメソッド持たせただけ.
https://github.com/cinder/Cinder/blob/v0.9.0/src/cinder/CameraUi.cpp