openFrameworks Workshop in Kanazawa v001

99
openFrameworks Workshop in Kanazawa v001 2012/06/02(SAT)

description

2012年6月2日に金沢で行われたopenFrameworksワークショップで使用したスライドです。

Transcript of openFrameworks Workshop in Kanazawa v001

Page 1: openFrameworks Workshop in Kanazawa v001

openFrameworks�

Workshop�in Kanazawa v001�

2012/06/02(SAT) �

Page 2: openFrameworks Workshop in Kanazawa v001

本日の流れ�

1.openFrameworksって何? �

2.開発環境の構築�

3.openFrameworksの中身の解説�

4.作ってみよう�

5.アドオンって何?�

6.ハッカソン!�

7.成果発表会�

Page 3: openFrameworks Workshop in Kanazawa v001

1.openFrameworksって何? �

Page 4: openFrameworks Workshop in Kanazawa v001

■公式サイトより openFrameworksは、シンプルで先端的なフレームワークによっ

て創作活動を支援するためのオープンソースのC++ツールキット

です。   •  グラフィクス:OpenGL,  GLEW,  GLUT,  libtess2,  cairo •  オーディオの入出力と分析:rtAudio,  PortAudio  or  FMOD,  

Kiss  FFT •  フォント:FreeType •  イメージの読込と保存:FreeImage •  動画の再生と取込:Quicktime,  videoInput •  様々なユーティリティー:Poco �

1.openFrameworksって何? �

Page 5: openFrameworks Workshop in Kanazawa v001

つまりこういう事。�

Page 6: openFrameworks Workshop in Kanazawa v001

様々なメディアを駆使した  メディアアートを作りたい!�

Page 7: openFrameworks Workshop in Kanazawa v001

YOU�

Page 8: openFrameworks Workshop in Kanazawa v001

画像解析�

グラフィックス�Webカメラ�

ムービー�

3DCG �

TwiKer �

Wiiリモコン�

Kinect �

サウンド� モーター�

LED �ネットワーク�YOU�

Page 9: openFrameworks Workshop in Kanazawa v001

画像解析�

グラフィックス�Webカメラ�

ムービー�

3DCG �

TwiKer �

Wiiリモコン�

Kinect �

サウンド� モーター�

LED �ネットワーク�YOU�

Page 10: openFrameworks Workshop in Kanazawa v001

覚えること多すぎ…�

Page 11: openFrameworks Workshop in Kanazawa v001

openFrameworks  を使うと、�

Page 12: openFrameworks Workshop in Kanazawa v001

YOU�

Page 13: openFrameworks Workshop in Kanazawa v001

openFrameworks�

YOU�

Page 14: openFrameworks Workshop in Kanazawa v001

openFrameworks�

YOU�

画像解析� グラフィックス�

Webカメラ�

ムービー�

3DCG �

TwiKer �Wiiリモコン�

サウンド�

モーター�LED �

ネットワーク�

Page 15: openFrameworks Workshop in Kanazawa v001

openFrameworks�

YOU�

画像解析� グラフィックス�

Webカメラ�

ムービー�

3DCG �

TwiKer �Wiiリモコン�

サウンド�

モーター�LED �

ネットワーク�

様々な機能を繋ぎあわせてくれる

「糊」のようなもの�

Page 16: openFrameworks Workshop in Kanazawa v001

openFrameworks�

YOU�

画像解析� グラフィックス�

Webカメラ�

ムービー�

3DCG �

TwiKer �Wiiリモコン�

サウンド�

モーター�LED �

ネットワーク�

様々な機能を繋ぎあわせてくれる

「糊」のようなもの�

しかもクロスプラットフォームで様々な環境で動作可能! Mac  OSX  /  Linux  /  Windows  /  iOS  /  Android

Page 17: openFrameworks Workshop in Kanazawa v001

•  まずはどんなものがopenFrameworksで作られているか見てみましょう!

–  公式動画 •  hKp://www.openframeworks.jp/

Page 18: openFrameworks Workshop in Kanazawa v001

•  Snake the Planet!�–  http://www.youtube.com/watch?v=fbHZ57lfYeo �

–  実世界でスネークゲーム�

•  Starry Night�–  http://www.youtube.com/watch?v=R856Uo1SAnE �

–  インタラクティブゴッホ�

•  Night Lights �–  http://www.youtube.com/watch?v=2-1_ibDB3Y4 �

–  参加型プロジェクションマッピング�

•  resolution of memory�–  http://www.youtube.com/watch?v=g2G6O8VJ4uc �

–  舞台表現として使う�

Page 19: openFrameworks Workshop in Kanazawa v001

•  EELS �–  https://vimeo.com/29694207�

–  スマフォから参加できるプロジェクションマッピングゲーム�

•  EDEN�–  https://vimeo.com/31940579�

–  実世界大陸シミュレーション�

•  最近話題になったPerfume Global �

–  公式サイト�

•  http://www.perfume-global.com/�

–  openFrameworksサンプル�

•  https://vimeo.com/39433322�

Page 20: openFrameworks Workshop in Kanazawa v001

凄すぎ�

Page 21: openFrameworks Workshop in Kanazawa v001

ここからは凄くないやつ�

Page 22: openFrameworks Workshop in Kanazawa v001

の制作物�

Page 23: openFrameworks Workshop in Kanazawa v001

石畳燈籠 U - m o a P r e s e n t s

Page 24: openFrameworks Workshop in Kanazawa v001

【動画】hKp://www.youtube.com/watch?v=uOKt8ioa614 �

Page 25: openFrameworks Workshop in Kanazawa v001

石畳燈籠 U - m o a P r e s e n t s

Projection Mapping   + Kinect PC 2台 プロジェクター 2台 Kinectセンサー 2台 ・人の位置を取得してその周りの石畳を光らせる。

Page 26: openFrameworks Workshop in Kanazawa v001

石畳燈籠 U - m o a P r e s e n t s

・実際の石畳を利用することで 石畳本来の良さを引き出す。 ・デジタルだから出来る表現で 魔法の様な空間を作り出す。

Page 27: openFrameworks Workshop in Kanazawa v001

設置場所

Page 28: openFrameworks Workshop in Kanazawa v001
Page 29: openFrameworks Workshop in Kanazawa v001

スチールラック

PC

プロジェクタ

Page 30: openFrameworks Workshop in Kanazawa v001

ハンガー プロジェクタ

Page 31: openFrameworks Workshop in Kanazawa v001

Kinect

Page 32: openFrameworks Workshop in Kanazawa v001

「AffinBeatBox」�

サウンドビジュアライザ�

オブジェクト�

PC 1台�

プロジェクター 1台�

•  ASOBITARINIGHT�

•  dotFes2011京都�

で展示しました。�

Page 33: openFrameworks Workshop in Kanazawa v001

「AffinBeatVJ」�

VJ用プロジェクションマッピングソフト 金沢Manierでのイベント「Lowpich」にてVJ支援ツールとして使用 現在、一般販売に向けて準備中

Page 34: openFrameworks Workshop in Kanazawa v001

openFrameworks    

超凄い�

Page 35: openFrameworks Workshop in Kanazawa v001

心の声(こんなの作れるわけねぇよ…)�

Page 36: openFrameworks Workshop in Kanazawa v001

今日は入門編ということで、  「あ、私でも作れるんだ」  

という感覚を掴んで頂きたいです�

Page 37: openFrameworks Workshop in Kanazawa v001

2.開発環境の構築 �

Page 38: openFrameworks Workshop in Kanazawa v001

2.開発環境の構築 �

•  [Mac]  Xcode  のインストール –  Lionの人  →  App  Storeから Xcode  4.3.2  for  Lion

–  SnowLeopardの人  →  Apple  Developerから  Xcode  3.2.x

•  [Windows]  Visual  C++  2010  Expressのインストール�

Page 39: openFrameworks Workshop in Kanazawa v001

2.開発環境の構築 �

•  openFrameworks_v007 –  hKp://openframeworks.jp/download/  それぞれの環境に対応したものをダウンロード&解凍して下さい。�

Page 40: openFrameworks Workshop in Kanazawa v001

2.開発環境の構築 �

•  解凍してできたファイルは好きな場所に設置�

Page 41: openFrameworks Workshop in Kanazawa v001

3.openFrameworksの中身の解説 �

Page 42: openFrameworks Workshop in Kanazawa v001

3.openFrameworksの中身の解説 �

•  ファイル構成の解説

Page 43: openFrameworks Workshop in Kanazawa v001

3.openFrameworksの中身の解説 �

•  ファイル構成の解説

ルートフォルダ� ワークスペース� プロジェクト群� プロジェクト� ソースコード�

Page 44: openFrameworks Workshop in Kanazawa v001

3.openFrameworksの中身の解説 �

•  ファイル構成の解説

触るのはこの3つだけ!

Page 45: openFrameworks Workshop in Kanazawa v001

まずはサンプルを実行してみよう�

Page 46: openFrameworks Workshop in Kanazawa v001

•  apps  >  examples  >  graphicsExample  >    

graphicsExample.xcodeproj  を開く

ルートフォルダ� ワークスペース� プロジェクト群� プロジェクト� ソースコード�

Page 47: openFrameworks Workshop in Kanazawa v001

•  ターゲットがgraphicsExampleになっているのを確認

•  Run  を押す

Page 48: openFrameworks Workshop in Kanazawa v001

動いた?

Page 49: openFrameworks Workshop in Kanazawa v001

Windowsの方はこちら(Visual  C++)

Page 50: openFrameworks Workshop in Kanazawa v001

動いた?

Page 51: openFrameworks Workshop in Kanazawa v001

これで動作環境が整いました

Page 52: openFrameworks Workshop in Kanazawa v001

4.作ってみよう �

Page 53: openFrameworks Workshop in Kanazawa v001

4.作ってみよう �

•  こんにちは世界

•  基本図形を描画してみる

•  アニメーションさせる

•  インタラクションを取り入れる

•  「数」に強いよoF

•  画像を使う

•  カメラ映像を使ってみる

Page 54: openFrameworks Workshop in Kanazawa v001

•  いわゆる「HelloWorld」 –  openFrameworksを使って初めてのプログラムを作成してみよう。

こんにちは世界

Page 55: openFrameworks Workshop in Kanazawa v001

•  ワークスペース「myApps」を作成

ルートフォルダ� ワークスペース� プロジェクト群� プロジェクト�

こんにちは世界�

Page 56: openFrameworks Workshop in Kanazawa v001

こんにちは世界�

•  プロジェクトの作成 –  emptyExampleをmyAppsにコピーする

Page 57: openFrameworks Workshop in Kanazawa v001

こんにちは世界�

•  プロジェクトの作成 –  emptyExampleをmyAppsにコピーする –  emptyExample.xcodeprojを開く

Page 58: openFrameworks Workshop in Kanazawa v001

こんにちは世界�

•  ソースコードの中を覗いてみる –  main.cpp

ウィンドウを作ってサイズ指定してるだけ

Page 59: openFrameworks Workshop in Kanazawa v001

こんにちは世界�

•  ソースコードの中を覗いてみる –  testApp.h

関数・変数の定義部分

Page 60: openFrameworks Workshop in Kanazawa v001

•  testApp.cpp

重要なのはココだけ!

Page 61: openFrameworks Workshop in Kanazawa v001

•  testApp.cpp

–  setup() •  はじめに一度だけ実行される

•  主に初期化を行う

–  update() •  毎フレーム実行される

•  アニメーション等の更新処理はここに書く。

–  draw() •  毎フレーム実行される。

•  画面表示に関わる処理を書く。

Page 62: openFrameworks Workshop in Kanazawa v001

基本図形を表示してみる�

•  testApp.cpp �

ofRect(  X座標  ,  Y座標  ,  横幅W  ,  縦幅H  );

→  (  X座標  ,  Y座標  )の位置に横幅W・縦幅Hの四角形を描画

する。

入力したらRun(実行)

Page 63: openFrameworks Workshop in Kanazawa v001

X�Y�

W�

H �

ofRect(  X  ,  Y  ,  W  ,  H  ); �(  0  ,  0  ) �

(  0  ,  768  ) �

(  1024  ,  0  ) �

(  1024  ,  768  ) �

Page 64: openFrameworks Workshop in Kanazawa v001

基本図形を表示してみる�

ofRect(  X  ,  Y  ,  W  ,  H  );   ofTriangle(  X1  ,  Y1  ,  X2  ,  Y2  ,  X3  ,  Y3  ); ofCircle(  X  ,  Y  ,  R  ); ofLine(  X1  ,  Y1  ,  X2  ,  Y2); ofDrawBitmapString(“文字列”  ,  X  ,  Y  );

→四角形 →三角形 →円 →線 →文字列

Page 65: openFrameworks Workshop in Kanazawa v001
Page 66: openFrameworks Workshop in Kanazawa v001

描画色を変える�

•  ofSetColor(  R  ,  G  ,  B  ); –  色を赤・緑・青の順で

0~255の範囲で指定。

•  ofSetHexColor(); –  16進数で指定したい人

はこちら。

Page 67: openFrameworks Workshop in Kanazawa v001
Page 68: openFrameworks Workshop in Kanazawa v001

背景色を変える�

•  ofBackground(  R  ,  G  ,  B  ); –  R(red)  G(green)  B(blue)を0~255の間で指定

Page 69: openFrameworks Workshop in Kanazawa v001
Page 70: openFrameworks Workshop in Kanazawa v001

アニメーションさせる �

•  アニメーションの基礎知識�

(  0  ,  0  ) � (  500  ,  0  ) �

(  0  ,  0  ) � (  500  ,  0  ) �(  250  ,  0  ) �

+250� +250�

2フレームで移動�

+500�

(  0  ,  0  ) � (  500  ,  0  ) �(  200  ,  0  ) �(  100  ,  0  ) � (  300  ,  0  ) � (  400  ,  0  ) �

+100� +100� +100� +100� +100�

5フレームで移動�

1フレームで移動�

Page 71: openFrameworks Workshop in Kanazawa v001

アニメーションさせる �

•  アニメーションの基礎知識

–  毎フレーム座標を変化させる

–  移動量が少ないほどゆっくりアニメーション

–  移動量が多いほど早くアニメーション�

Page 72: openFrameworks Workshop in Kanazawa v001

アニメーションさせる �

•  testApp.cpp �

–  座標を保存する変数を定義

–  初期設定で背景を黒に

–  毎フレームX座標に+1していく

–  色を緑に設定

–  10pxの円を描く

Page 73: openFrameworks Workshop in Kanazawa v001

動いた!

Page 74: openFrameworks Workshop in Kanazawa v001

次は…�

•  Y座標  (  縦方向  )も移動させてみよう!�

Page 75: openFrameworks Workshop in Kanazawa v001
Page 76: openFrameworks Workshop in Kanazawa v001

フレームレート設定�

•  ofSetFrameRate(  60  ); –  フレームレートを  60  FPSに設定(1秒間に60回画面を更新する)

フレームレートを設定していないと、速度が一定にならないので設定しておく。

Page 77: openFrameworks Workshop in Kanazawa v001

加速・減速させる �

•  加速・減速の基礎知識�

(  0  ,  0  ) � (  5  ,  0  ) �(  2  ,  0  ) �(  1  ,  0  ) � (  3  ,  0  ) � (  4  ,  0  ) �

+1� +1� +1� +1� +1�

移動量は一定�

(  6  ,  0  ) �

+1�

(  7  ,  0  ) �

+1�

(  0  ,  0  ) � (  3  ,  0  ) � (  6  ,  0  ) � (  10  ,  0  ) �

+2� +3� +4�

毎フレーム移動量を増加させる�

(  1  ,  0  ) �

+1�

(  15  ,  0  ) �

+5�

Page 78: openFrameworks Workshop in Kanazawa v001

落下運動 �

•  testApp.cpp �

–  変数型がfloatになったよ(小数点も使える)

–  XY軸それぞれの加速度の変数を追加

–  毎フレームX座標にaccelXを加算

–  毎フレームY座標にaccelYを加算

–  毎フレームaccelYを0.1増やす

Page 79: openFrameworks Workshop in Kanazawa v001
Page 80: openFrameworks Workshop in Kanazawa v001

バウンドさせよう�

•  ボールが画面外に出てしまうので、バウンドさせよう

–  もし、ボールのY座標が画面下の枠より下なら、加速度を反転 [  if  ] [  posY  ] [  ofGetHeight  ] [  accelY  =  -­‐‑accelY;  ]

■条件式  [  if  ] �if  (  posY  >  ofGetHeight()  )  {  accelY  =  -­‐‑accelY;  }

Page 81: openFrameworks Workshop in Kanazawa v001

バウンドした?

Page 82: openFrameworks Workshop in Kanazawa v001

左右もバウンド�

•  このままでは左右にもボールがはみ出るのでバウンド�

–  下のバウンド

–  右のバウンド�

–  左のバウンド

Page 83: openFrameworks Workshop in Kanazawa v001
Page 84: openFrameworks Workshop in Kanazawa v001

インタラクションを取り入れる�

•  マウスによるインタラクションを作ってみよう –  クリックでマウスカーソルに置に吸い寄せる�

Page 85: openFrameworks Workshop in Kanazawa v001

インタラクションを取り入れる�

•  いかにもマウスを使いそうな記述が…�

Page 86: openFrameworks Workshop in Kanazawa v001

マウスクリックで吸い寄せる�

•  bool  型 :真(true)・偽(false)を保持する入れ物

Page 87: openFrameworks Workshop in Kanazawa v001

マウスクリックで吸い寄せる�

•  mousePressed()

–  マウスがプレスされた時に実行される

•  mouseReleased()

–  マウスがリリースされた時に実行される

Page 88: openFrameworks Workshop in Kanazawa v001

マウスクリックで吸い寄せる�

•  もし、マウスが押下状態なら  

加速度をマウスとの距離  ×  0.05  にする。

Page 89: openFrameworks Workshop in Kanazawa v001
Page 90: openFrameworks Workshop in Kanazawa v001

「数」に強いよoF �

•  openFrameworks  は  C++  ベースなので、動作が高速! •  ボールの数を増やしてみよう�

Page 91: openFrameworks Workshop in Kanazawa v001
Page 92: openFrameworks Workshop in Kanazawa v001

5.アドオンって何? �

•  アドオンとは

–  openFrameworksの機能を拡張するライブラリ

–  機能に対しての知識が無くても簡単に扱える

–  色んな人が色んなアドオンを作って公開してくれてる

•  hKp://ofxaddons.com

–  自分で作ることも出来る

Page 93: openFrameworks Workshop in Kanazawa v001

5.アドオンって何? �

•  主なアドオン

–  ofxOpenCV

–  ofxBox2d

–  ofxOsc

–  ofxControlPanel

–  ofxXmlSeKings

–  ofxKinect

–  ofxiPhone

コンピュータビジョン(画像解析)

2D物理演算

別PC等との通信プロトコル

コントロールパネル

設定を.xml形式で保存

Kinectを使う

iPhoneでopenFrameworksを動作させる

Page 94: openFrameworks Workshop in Kanazawa v001

6.ハッカソン!(  60分間くらい  ) �

自由に作ってみよう!�

Page 95: openFrameworks Workshop in Kanazawa v001

•  制作のヒント –  速度によって円の大きさを変えてみる  →  ofCircle(  X,  Y,  速度);

–  色をランダムに変えてみる  →  ofRandom()  *  255; –  X,YだけでなくZも使ってみる(3D)→  ofTranslation(  X,  Y,  Z  );

–  円を画像に変えてみる  →  ofImage –  円を動画に変えてみる  →  ofVideoGrabber

–  マウスをクリックした時の動きを変えてみる  →  onMousePress()

–  円の透明度を変えてみる  →  ofSetColor(  0,  255,  0,  10);

–  日本語リファレンスはこちら •  hKp://sites.google.com/site/ofdocjp/

6.ハッカソン!(  60分間くらい  ) �

Page 96: openFrameworks Workshop in Kanazawa v001

7.成果発表会�

Page 97: openFrameworks Workshop in Kanazawa v001
Page 98: openFrameworks Workshop in Kanazawa v001

まとめ�

•  openFrameworks入門おめでとうございます。

•  C++の強力な処理速度やアドオン群を使って、自分のオリジナル作品を作り上げて下さい。

•  次回のワークショップv002は…未定ですが、決まったらFB上でアナウンスします。

•  「これの作り方教えて!」「こんなアドオンある?」等、  質問はこの後受け付けます。気軽にどうぞ。

Page 99: openFrameworks Workshop in Kanazawa v001

openFrameworks�

Workshop�in Kanazawa v001�

ご参加ありがとうございました!�