LoginSignup
1
1

More than 5 years have passed since last update.

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

Posted at

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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1