Posted at

cinder::CameraUiでマウスぐりぐりカメラ操作

More than 3 years have passed since last update.

oFでいうところのofEasyCam

cameraui.gif

(gifアニメはCameraPerspサンプルを動かしたやつ)


かんたん3ステップ


CameraPerspCameraUiを用意します

#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_)
{}

どこでやってもいい.


mouseDownmouseDragのイベントを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


References