Contenu connexe Similaire à ARコンテンツ作成勉強会 はじめてのKinect openFrameworks編 (20) ARコンテンツ作成勉強会 はじめてのKinect openFrameworks編33. 演習1
33
ofApp.h
class ofApp : public ofBaseApp{
public:
void setup();
void update();
void draw();
};
変更なし
setup() 初期設定
update() 更新
draw() 描画
円の数1個
34. 演習1
34
ofApp.cpp
void ofApp::setup(){
}
void ofApp::draw(){
}
//ofBackground(R, G, B)
ofSetColor(255, 255, 255, 100);
ofCircle(30, 30, 20);
ofBackground(0, 0, 0);
//ofSetColor(R, G, B, ALPHA)
//ofCircle(x, y, radius)
円の数1個
35. 演習1
35
X軸(0, 0)
Y軸
1,024 px
768 px
ofCircle(30, 30, 20);
30px
30px
radius 20px
円の数1個
(ofGetWidth(), ofGetHeight())
(ofGetWidth(), 0)
(0, ofGetHeight())
39. 演習2
39
ofApp.h
class ofApp : public ofBaseApp{
public:
void setup();
void update();
void draw();
};
円の数101個
大きさ、位置が違う
static const int NUM = 100;
float loc_x[NUM];
float loc_y[NUM];
float radius[NUM];
//X軸の位置情報
//Y軸の位置情報
//半径の情報
40. 演習2
40
配列 NUM = 100
円の数101個
大きさ、位置が違う
static const int NUM = 100;
float loc_x[NUM];
float loc_y[NUM];
float radius[NUM];
NUM=0 NUM=1 NUM=2 NUM=3 NUM=4 NUM=100
loc_x[0]
loc_y[0]
radius[0]
loc_x[1]
loc_y[1]
radius[1]
loc_x[2]
loc_y[2]
radius[2]
loc_x[3]
loc_y[3]
radius[3]
loc_x[4]
loc_y[4]
radius[4]
loc_x[99]
loc_y[99]
radius[99]
46. 演習3
46
ofApp.h
class ofApp : public ofBaseApp{
・・・
static const int NUM = 100;
float radius[NUM];
float loc_x[NUM];
float loc_y[NUM];
};
int red[NUM];
int green[NUM];
int blue[NUM];
int alpha[NUM];
円の数101個
大きさ、位置がう
円に色を塗る
47. 演習3
47
ofApp.cpp
void ofApp::setup(){
・・・
for (int i = 0; i < NUM; i++) {
loc_x[i] = ofRandom(0, ofGetWidth());
loc_y[i] = ofRandom(0, ofGetHeight());
radius[i] = ofRandom(4, 40);
}
}
red[i] = ofRandom(0, 255);
green[i] = ofRandom(0, 255);
blue[i] = ofRandom(0, 255);
alpha[i] = ofRandom(100, 200);
円の数101個
大きさ、位置がう
円に色を塗る
69. Kinect 演習2
69
ofApp.cpp
void ofApp::draw(){
// RGBカメラから撮影した映像を取得
kinect.draw(0, 0, kinect.width, kinect.height);
}
// 赤外線カメラで撮影した深度カメラ映像を取得
kinect.drawDepth(kinect.width, 0, kinect.width, kinect.height);
ウィンドウサイズ
設定
初期化
接続開始
取得
更新
接続終了
74. Kinect 演習3
74
ofApp.cpp
void ofApp::draw(){
// RGBカメラから撮影した映像を取得
kinect.draw(0, 0, kinect.width, kinect.height);
}
// 赤外線カメラで撮影した深度カメラ映像を取得
kinect.drawDepth(kinect.width, 0, kinect.width, kinect.height);
ウィンドウサイズ
設定
初期化
接続開始
取得
更新
接続終了
//kinect.draw(0, 0, kinect.width, kinect.height);
kinect.drawDepth(0, 0, kinect.width, kinect.height);
91. 91
ofApp.h
#include “ofxKinect.h”
class ofApp : public ofBaseApp{
public:
void exit();
・・・
ofxKinect kinect;
}
Mac/ofxSyphon
#include "ofxSyphon.h"
//syphon set
ofxSyphonServer mainOutputSyphonServer;
ofxSyphonClient client;
VJツール連携演習
109. 109
ofApp.cpp
void ofApp::drawPointCloud(){
int w = 640;
int h = 480;
ofMesh mesh;
mesh.setMode(OF_PRIMITIVE_POINTS);
int step = 2; //ポイントの間隔
for(int y = 0; y < h; y += step) {
for(int x = 0; x < w; x += step) {
if(kinect.getDistanceAt(x, y) > 0) {
mesh.addColor(kinect.getColorAt(x,y));
mesh.addVertex(kinect.getWorldCoordinateAt(x, y));
}
}
}
延長戦