RaspberryPiでopenFrameworksを使う~第2章



  • インストール編
  • 簡単なアプリを作ってみる ←いまここ
  • RaspberryPiのGPIOも使ってみる(次回執筆予定)

簡単なアプリを作ってみる

前章でインストールしたopenFrameworksを使って、早速、簡単なアプリを作って見ましょう。

プロジェクトを作る

openFrameworksのプロジェクトを生成するために、projectGeneratorというツールが作られたのですが、残念ながらRaspberryPiの環境ではうまく動かないようなので、レガシーな方法でいきます。

プロジェクトは、openFrameworksの中のapps/myApps/に置きます。

cd ~/openFrameworks/apps/myApps
cp -r emptyExample hello_of
cd hello_of

これで、hello_ofという名前のプロジェクトができました。早速、プロジェクトディレクトリの中身を見てみましょう。

config.make ・・・・ビルドに必要な諸々の追加設定
emptyExample.png・・不要
Makefile・・・・・・所謂makeファイル
README.md ・・・・・不要
src ・・・・・・・・ソースファイルを置く場所
┣ main.cpp ・・・・main関数
┣ ofApp.cpp・・・・アプリの実装
┗ ofApp.h・・・・・ヘッダファイル

ソースファイルの類はすべてsrcディレクトリに入れれば、自動的に、コンパイル、リンクが行われます。

openFrameworksの基本

基本となるのはofApp.cppの中にあるたった三つのメソッドです。

アプリ起動直後にofApp::setupが呼び出され、その後、ofApp::updateとofApp::drawが、画面の垂直同期のタイミングに合わせて繰り返し呼び出されます。

丸を描いてみる

src/ofApp.cppの中には、空のメソッドがすべて用意されているので、ここに書き足して、画面に丸を描いてみます。

src/ofApp.cpp
void ofApp::draw(){
    // 画面全体を黒く塗りつぶす
    ofClear(0, 0, 0);
    // 水色
    ofSetColor(0, 255, 255);
    // 塗りつぶし
    ofFill();
    // 円を描く
    ofDrawCircle(300, 300, 100);
}

ビルドして実行してみます。

make
cd bin
./hello_of

はい、できました。終了するにはCtrl+Cを押します。

インタラクションな感じにしてみる

丸を描いただけではつまらないので、ちょっとインタラクションな感じにしてみましょう。

マウスやキーボードのイベントは、それぞれのコールバック関数で受け取ります。

ofApp::keyPressed ・・・キーボードが押された時
ofApp::keyReleased・・・キーボードが離された時
ofApp::mouseMoved ・・・マウスが動いた時
ofApp::mouseDragged ・・マウスがドラッグされた時
ofApp::mousePressed ・・マウスのボタンが押された時
ofApp::mouseReleased・・マウスのボタンが離された時

では実際にちょっと書いてみましょう。

src/ofApp.h
    private:
        float v, y;
src/ofApp.cpp
void ofApp::setup(){
    // 初期位置
    y = 100;
    v = 0;
}

void ofApp::update(){
    // 座標を更新
    v += 1;
    y += v;
    // 着地したら止まる
    int bottom = ofGetHeight()-100;
    if (y > bottom) {
        y = bottom;
        v = 0;
    }
}

void ofApp::draw(){
    ofClear(0, 0, 0);
    // 円を描く
    ofSetColor(0, 255, 255);
    ofFill();
    ofDrawCircle(300, y, 100);
}

void ofApp::keyPressed(int key){
    // スペースキーが押されたら跳ねる
    if (key == ' ') {
        v -= 50;
    }
}

スペースキーを押すと水色の丸がぴょんぴょんします。