OFでつまづいたのでメモ【 Beyond Interaction 3-4-a ofxBox2d 】

26.01.14

/

ws02

こんにちわFLIGHTGRAFです。

OFを始めていきなりつまづいたのでメモ。

おそらく書籍購入者相当数の人がここでつまづいてるんじゃないかと思って、ここに書いときます。

田所氏著の「Beyond Interaction-2版」で、【3−4−a】アドオンの利用において、この書籍が出てしばらくというか、一年もたってないうちにいろんな環境が変わってしまった様で、「ofxBox2d」が参考コードでは利用できなくなっていたのでつまづきました。

自分は以下環境+コードで利用できるようになったので参考にしてください。

Xcode5.0.2/ofxbox2d(2014現在)/OFv8.0.2(書籍ではv0.7.4ですが、これだとofxbox2dが動かない。他のサイトにあるようなエラーは無く、いろいろ調べたら既に8.0に最適化されてる模様)

ofxBox2dをダウンロードし、「ofxBox2d-master」が展開されるので、フォルダを「ofxBox2d」にrenameしてaddonの中に入れます。

書籍を参考にprojectorGeneratorで新規プロジェクトを生成し、”testApp.h”から書いていきます”

testApp.h

#pragma once

#include "ofMain.h"
#include "ofxBox2d.h"



class testApp : public ofBaseApp{

	public:
		void setup();
		void update();
		void draw();

		void keyPressed(int key);
		void keyReleased(int key);
		void mouseMoved(int x, int y );
		void mouseDragged(int x, int y, int button);
		void mousePressed(int x, int y, int button);
		void mouseReleased(int x, int y, int button);
		void windowResized(int w, int h);
		void dragEvent(ofDragInfo dragInfo);
		void gotMessage(ofMessage msg);
    
    ofxBox2d box2d;
    vector <ofPtr<ofxBox2dCircle> > circles;
    //beyondでは vector <ofxBox2dCircle> > circles;

};

testApp.cpp

#include "testApp.h"

//--------------------------------------------------------------
void testApp::setup(){
    ofSetFrameRate(60);
    ofSetVerticalSync(true);
    ofBackground(0, 0, 0);

    box2d.init();
    box2d.setGravity(0, 5);
    box2d.createBounds(0,0,ofGetWidth(),ofGetHeight());
    box2d.setFPS(30);

//Beyondには無い宣言
	box2d.registerGrabbing();
    //ofSetLogLevel(OF_LOG_NOTICE);//無くてもいい

}

//--------------------------------------------------------------
void testApp::update(){
    box2d.update();

}

//--------------------------------------------------------------
void testApp::draw(){

    for (int i=0; i<circles.size(); i++) {
        ofFill();
        ofSetColor(0, 127, 255);
        //circles[i].draw();//Beyondではこう宣言している
        circles[i].get()->draw();
    }

    box2d.drawGround();//宣言しなくてもいい(一応)

}

//--------------------------------------------------------------
void testApp::keyPressed(int key){

}

//--------------------------------------------------------------
void testApp::keyReleased(int key){

}

//--------------------------------------------------------------
void testApp::mouseMoved(int x, int y ){

}

//--------------------------------------------------------------
void testApp::mouseDragged(int x, int y, int button){

}

//--------------------------------------------------------------
void testApp::mousePressed(int x, int y, int button){
    float r =ofRandom(10,40);
    //ofxBox2dCircle circle;//Beyondではインスタンスを生成しているが、そうするとうまくいかなかった。なので下記に変更
    circles.push_back(ofPtr(new ofxBox2dCircle));//push_backは始めにに宣言しないと以下のものが動かない
    circles.back().get()->setPhysics(1.0, 0.8, 0.5);
    circles.back().get()->setup(box2d.getWorld(), mouseX, mouseY, r);

}

//--------------------------------------------------------------
void testApp::mouseReleased(int x, int y, int button){

}

//--------------------------------------------------------------
void testApp::windowResized(int w, int h){

}

//--------------------------------------------------------------
void testApp::gotMessage(ofMessage msg){

}

//--------------------------------------------------------------
void testApp::dragEvent(ofDragInfo dragInfo){ 

}

こうするとうまく動くようになりました。

ofxBoxtest

『真夜中の博物館』- ZUSHI Media Art Festival 2013

09.10.13

/ / / /

Role
Concept, sound,design and animation

12時の鐘と同時に環境が変化し、1分間だけ本当の姿を見せる博物館を題材にしたプロジェクションマッピング。

『ZUSHI Media Art Festival 2013 1 minute projection mapping show』にてグランプリを獲得。

Kyary Pamyu Pamyu 【Fashion Monster】× (Cinema 4D+After Effects)

14.05.13

/ /

Example Render

CINEMA 4DとAfter Effectsでキーフレームを使わずに制御した動画を作ってみました。
参考まで

SOUND BY :itunes.apple.com/jp/album/fasshonmonsuta-single/id564657809