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

  • 1
    いいね
  • 0
    コメント

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