SlideShare a Scribd company logo
ヒカリの球を
描く
1
仕様まとめ
Kinectで手の座標を取得し,取得した座標から雪のパーティクルを発生させる
認識する手の最大数は4つを想定
ある動作によってモードが変更
モードは2種類であり一方通行となっている
2
モードの詳細
モード1
手からパーティクルが発生
パーティクルの進行方向は手の進行方向によって変化
モード2
パーティクルはある点を中心に楕円を描くように回転
円の中心はモード変更時に用いた二つの手の中間点
手を一定範囲
よりも
近づけると…
3
プログラムの概要
ofApp
全てのシーンやkinectなどを
統括する役割
本スライドでは当演出に関す
るコード以外は省略している
A_BaseApp
当演出のプログラムを統括す
る役割
A_Particle
パーティクルの動きを制御す
る役割
このプログラムは主に3つのクラスで構成されています
各々のふるまいは以下の通りです
クラス名の頭の A_ は筆者の作品においての演出を区別するためのものです
アドオンはofxOpenNIを使用しています
4
ofAppの役割って?
• ofAppの役割はkinectからの情報を各
シーンに渡すこと
そして,各シーンを呼び出すことです
• ofApp.hはこのようになっています
ファイルの読み込みとインスタンス
の作成
さらにkinectで取得した情報を入れる
ための
変数を宣言しています
5
ofApp.cppをみてみよう
setupではkinectの各種設定とBaseAppの
setupを行っています
Kinectの設定は以下のページを参考にし
ました
https://www.ei.tohoku.ac.jp/xkozima/lab/
ofTutorial5.html
update・drawともにBaseAppを呼び出しましょう
またupdateでは手のトラッキングを行いBaseAppの
引数として手の数とその座標を使います
6
A_BaseAppでやっていること
Kinectから得た座標を画面サイズに適応させる
手が動く向きをパーティクルの向きに反映させる
モードが変わるときの判定
パーティクルのインスタンスの作成・削除
背景・パーティクルの描画
7
A_BaseApp.hの確認
• 変数の用途について説明します
• MovePos
手の進行方向を求めるのに使います
第1引数が手の区別
第2引数が1フレーム前と現在の手の座標の区別
• limit
パーティクルの移動速度の最大値・最小値を
制限するのに使います
(モード2のときは別の役割を持ちます)
• timeCount
A_Particleのインスタンスを作成する間隔を
管理するのに使います
8
setupとupdateでは…
• setupでは背景画像の読み込みとモードを1に設定します
• updateではパーティクルの数だけParticlesのupdateを呼びます
9
updateの続き
• Kinect(v1)の解像度は640×480なので,
使用するディスプレイのサイズに合わせましょう
• MovePosの座標を比較することで手の動きを
求めることができます
• 条件を timeCount > Framerate × 秒数 とすると
秒数を発生する間隔にでき,間隔ごとに
インスタンスを作成しVectorの配列に格納されます
• パーティクルのインスタンスが規定数を超えると
作成された順に削除されていきます
• mode2のときはlimitが中心点を表す変数になります
詳しくは後述…
10
updateの続き②とdraw
• Mode変更に関する部分です
任意の二つの手が一定以上近づくとmodeを2に変えパーティクルをすべて削除します
• 二つの手の中心点を計算しcenterを設定します
• drawでは背景と
パーティクルを描きます
混色法を変えていることに
注意してください
11
A_Particleのモードを確認する
• A_Particleクラスは二つのモードが描かれているので
モードごとに分けて紹介していきます
• モードの仕様について確認しておきます
• モード1
手からパーティクルが発生
パーティクルの進行方向は手の進行方向によって変化
• モード2
パーティクルはある点を中心に楕円を描くように回転
円の中心はモード変更時に用いた二つの手の中間点
12
A_Particle.hの確認
• 一つのパーティクルのために二つの画像を使っています
img snow
• Imgがsnowの周りを高速で回転することによって
snowが輝いているようにみえます
13
モード1から紹介します
• setupでは
• 画像をロードします
これは両モード共通です
• X方向,y方向の速さを手の進む向きを
もとにランダムに決定します
• updateでは
• posにvelを加えて移動させていきます
14
続いてdrawへ
• 座標を画像の半分のサイズ減らすことで画像の中心を座標の位
置にすることができます
• Imgは座標を中心に円を描いています
三角関数の前の値が半径で角度を表している値が回転速度です
15
相対座標の説明
• ofPushMatrix()
現在の座標系の保存
• ofTranslate(x, y)
x,yを基準とした座標に変更する
• ofRotate(angle)
座標系をangleだけ回転させる
• ofPopMatrix()
保存した座標系に戻る
16
相対座標の説明②
• ofDrawCircle(0,0,50)で円を描いたとき
画面の中心を
座標の基準に
変更
画面中央に描かれました!
17
相対座標の説明③
• この画像を使って試してみましょう
• 左が座標系の基準を変更せずに回転させたもので
右が画面中央に基準に変更して回転させたものです
• 座標系を変更することでその場で回転させることができます
18
モード2について
• setupでは
パーティクルの位置を距離と
角度で表すための計算をしている
• 極形式に変形することで
容易に円運動を表現できる
degree
gap.x
gap.y
distance
pos
center
ofDistを使えば二点間の距離を容易に求めることができる
しかも,3次元にも対応している
19
updateでは
• setupで極形式に変換したので
偏角を変化させていき
そこから座標を計算する
• 距離を楕円の長軸に近づけていく
短軸は長軸の半分とした
20
drawはほぼ同じ…?
• drawはモード1とほとんど同じです
• 違う点はcenterを中心に座標系を変えていることと
degreeだけ回転していることの二点です
21
閲覧ありがとうございました
• 以上で当演出の説明は終わりです
まとめ
• 筆者はプログラムの基礎の確認もかねて計算等を自分で行って
いましたが、二点間の距離を求める ofDist など
openFrameworksには便利なメソッドが多くあるので煩雑な計算
をすることなく値を求めることができます
• 座標を変更することで容易に複雑な動作をすることができます
• 他の演出についても投稿していますので参考にしてください
22

More Related Content

More from Atelier Frameworks

unity sprite animation・prefab (ハルフル)
unity sprite animation・prefab (ハルフル)unity sprite animation・prefab (ハルフル)
unity sprite animation・prefab (ハルフル)
Atelier Frameworks
 
unityでNuitrackを使う 
unityでNuitrackを使う unityでNuitrackを使う 
unityでNuitrackを使う 
Atelier Frameworks
 
unity sprite animation (ハルフル)
unity sprite animation (ハルフル)unity sprite animation (ハルフル)
unity sprite animation (ハルフル)
Atelier Frameworks
 
unity 画像の移動 (ハルフル)
unity  画像の移動 (ハルフル)unity  画像の移動 (ハルフル)
unity 画像の移動 (ハルフル)
Atelier Frameworks
 
カラフルゴーストバスターズ「kinectでのモーション検出」
カラフルゴーストバスターズ「kinectでのモーション検出」カラフルゴーストバスターズ「kinectでのモーション検出」
カラフルゴーストバスターズ「kinectでのモーション検出」
Atelier Frameworks
 
カラフルゴーストバスターズ「得点の計算」
カラフルゴーストバスターズ「得点の計算」カラフルゴーストバスターズ「得点の計算」
カラフルゴーストバスターズ「得点の計算」
Atelier Frameworks
 
カラフルゴーストバスターズの演出「ゴースト」
カラフルゴーストバスターズの演出「ゴースト」カラフルゴーストバスターズの演出「ゴースト」
カラフルゴーストバスターズの演出「ゴースト」
Atelier Frameworks
 
カラフルゴーストバスターズの演出「バルーン」
カラフルゴーストバスターズの演出「バルーン」カラフルゴーストバスターズの演出「バルーン」
カラフルゴーストバスターズの演出「バルーン」
Atelier Frameworks
 
海さんぽ演出「波」
海さんぽ演出「波」海さんぽ演出「波」
海さんぽ演出「波」
Atelier Frameworks
 
海さんぽ演出「サメ」
海さんぽ演出「サメ」海さんぽ演出「サメ」
海さんぽ演出「サメ」
Atelier Frameworks
 
海さんぽ演出「サカナが寄ってくる」
海さんぽ演出「サカナが寄ってくる」海さんぽ演出「サカナが寄ってくる」
海さんぽ演出「サカナが寄ってくる」
Atelier Frameworks
 
海さんぽ演出「光道と動画再生」
海さんぽ演出「光道と動画再生」海さんぽ演出「光道と動画再生」
海さんぽ演出「光道と動画再生」
Atelier Frameworks
 
海さんぽ演出「メッセージボトル」
海さんぽ演出「メッセージボトル」海さんぽ演出「メッセージボトル」
海さんぽ演出「メッセージボトル」
Atelier Frameworks
 
海さんぽ演出「長靴」
海さんぽ演出「長靴」海さんぽ演出「長靴」
海さんぽ演出「長靴」
Atelier Frameworks
 
海さんぽ演出「氷」
海さんぽ演出「氷」海さんぽ演出「氷」
海さんぽ演出「氷」
Atelier Frameworks
 
海さんぽ演出「サーフィンとカメ」
海さんぽ演出「サーフィンとカメ」海さんぽ演出「サーフィンとカメ」
海さんぽ演出「サーフィンとカメ」
Atelier Frameworks
 
個人制作「球をよけるゲーム」
個人制作「球をよけるゲーム」個人制作「球をよけるゲーム」
個人制作「球をよけるゲーム」
Atelier Frameworks
 
Find the ball
Find the ballFind the ball
Find the ball
Atelier Frameworks
 
えさやり
えさやりえさやり
えさやり
Atelier Frameworks
 
個人制作「もぐらたたき」
個人制作「もぐらたたき」個人制作「もぐらたたき」
個人制作「もぐらたたき」
Atelier Frameworks
 

More from Atelier Frameworks (20)

unity sprite animation・prefab (ハルフル)
unity sprite animation・prefab (ハルフル)unity sprite animation・prefab (ハルフル)
unity sprite animation・prefab (ハルフル)
 
unityでNuitrackを使う 
unityでNuitrackを使う unityでNuitrackを使う 
unityでNuitrackを使う 
 
unity sprite animation (ハルフル)
unity sprite animation (ハルフル)unity sprite animation (ハルフル)
unity sprite animation (ハルフル)
 
unity 画像の移動 (ハルフル)
unity  画像の移動 (ハルフル)unity  画像の移動 (ハルフル)
unity 画像の移動 (ハルフル)
 
カラフルゴーストバスターズ「kinectでのモーション検出」
カラフルゴーストバスターズ「kinectでのモーション検出」カラフルゴーストバスターズ「kinectでのモーション検出」
カラフルゴーストバスターズ「kinectでのモーション検出」
 
カラフルゴーストバスターズ「得点の計算」
カラフルゴーストバスターズ「得点の計算」カラフルゴーストバスターズ「得点の計算」
カラフルゴーストバスターズ「得点の計算」
 
カラフルゴーストバスターズの演出「ゴースト」
カラフルゴーストバスターズの演出「ゴースト」カラフルゴーストバスターズの演出「ゴースト」
カラフルゴーストバスターズの演出「ゴースト」
 
カラフルゴーストバスターズの演出「バルーン」
カラフルゴーストバスターズの演出「バルーン」カラフルゴーストバスターズの演出「バルーン」
カラフルゴーストバスターズの演出「バルーン」
 
海さんぽ演出「波」
海さんぽ演出「波」海さんぽ演出「波」
海さんぽ演出「波」
 
海さんぽ演出「サメ」
海さんぽ演出「サメ」海さんぽ演出「サメ」
海さんぽ演出「サメ」
 
海さんぽ演出「サカナが寄ってくる」
海さんぽ演出「サカナが寄ってくる」海さんぽ演出「サカナが寄ってくる」
海さんぽ演出「サカナが寄ってくる」
 
海さんぽ演出「光道と動画再生」
海さんぽ演出「光道と動画再生」海さんぽ演出「光道と動画再生」
海さんぽ演出「光道と動画再生」
 
海さんぽ演出「メッセージボトル」
海さんぽ演出「メッセージボトル」海さんぽ演出「メッセージボトル」
海さんぽ演出「メッセージボトル」
 
海さんぽ演出「長靴」
海さんぽ演出「長靴」海さんぽ演出「長靴」
海さんぽ演出「長靴」
 
海さんぽ演出「氷」
海さんぽ演出「氷」海さんぽ演出「氷」
海さんぽ演出「氷」
 
海さんぽ演出「サーフィンとカメ」
海さんぽ演出「サーフィンとカメ」海さんぽ演出「サーフィンとカメ」
海さんぽ演出「サーフィンとカメ」
 
個人制作「球をよけるゲーム」
個人制作「球をよけるゲーム」個人制作「球をよけるゲーム」
個人制作「球をよけるゲーム」
 
Find the ball
Find the ballFind the ball
Find the ball
 
えさやり
えさやりえさやり
えさやり
 
個人制作「もぐらたたき」
個人制作「もぐらたたき」個人制作「もぐらたたき」
個人制作「もぐらたたき」
 

ヒカリノアトリエ演出「ヒカリの球を描く」