diff options
Diffstat (limited to 'offsetProject')
| -rw-r--r-- | offsetProject/src/main.cpp | 2 | ||||
| -rw-r--r-- | offsetProject/src/ofApp.cpp | 71 | ||||
| -rw-r--r-- | offsetProject/src/ofApp.h | 9 |
3 files changed, 63 insertions, 19 deletions
diff --git a/offsetProject/src/main.cpp b/offsetProject/src/main.cpp index d134fc9..bce5f94 100644 --- a/offsetProject/src/main.cpp +++ b/offsetProject/src/main.cpp @@ -1,6 +1,6 @@ #include "ofApp.h" int main() { - ofSetupOpenGL(1024, 768, OF_WINDOW); + ofSetupOpenGL(1280, 960, OF_WINDOW); ofRunApp(new ofApp()); } diff --git a/offsetProject/src/ofApp.cpp b/offsetProject/src/ofApp.cpp index ab02ea2..1f73212 100644 --- a/offsetProject/src/ofApp.cpp +++ b/offsetProject/src/ofApp.cpp @@ -68,12 +68,13 @@ void ofApp::setup() { cerr<<"level "<<l<<" mipmap: "<<colourTiles[l].getWidth()<<"x"<<colourTiles[l].getHeight()<<endl; } + mode=MODE_COLOURTILES; } //-------------------------------------------------------------- void ofApp::update() { - ofBackground(100, 100, 100); + ofSetWindowTitle(ofToString(ofGetFrameRate())); kinect.update(); @@ -112,8 +113,8 @@ void ofApp::update() { } void ofApp::checktile(int level,int x,int y,int size){ - int levels_factor=255/levels; - if (depthTiles[level].getPixels()[y*((int)depthTiles[level].getWidth())+x]>level*levels_factor&&level>0){ + int levels_factor=128/levels; + if (level>0&&max(0,depthTiles[level].getPixels()[y*((int)depthTiles[level].getWidth())+x]-128)>level*levels_factor){ for (int i=0;i<2;i++){ for (int j=0;j<2;j++){ checktile(level-1,x*2+i,y*2+j,size/2); @@ -131,30 +132,53 @@ void ofApp::checktile(int level,int x,int y,int size){ //-------------------------------------------------------------- void ofApp::draw() { - ofSetColor(255, 255, 255); + ofBackground(0,0,0); - //recursively draw pixels + ofSetColor(255, 255, 255); int pixelsize=ofGetWidth()/colourTiles[levels-1].getWidth(); - //int yoffset= - for (int i=0;i<colourTiles[levels-1].getWidth();i++){ - for (int j=0;j<colourTiles[levels-1].getHeight();j++){ - checktile(levels-1,i,j,pixelsize); - } + + switch(mode){ + case MODE_COLOURTILES: + + //recursively draw pixels + + //int yoffset= + + for (int i=0;i<colourTiles[levels-1].getWidth();i++){ + for (int j=0;j<colourTiles[levels-1].getHeight();j++){ + checktile(levels-1,i,j,pixelsize); + } + } + break; + + case MODE_DEPTH: + + depthImage.draw(0,0,ofGetWidth(),ofGetHeight()); + break; + + case MODE_COMPONENTS: + + depthImage.draw(0,0, 640,480); + colourImage.draw(640,0, 640,480); + + int xoffs=10; + for (int i=0;i<depthTiles.size();i++){ + depthTiles[i].draw(xoffs,500,depthTiles[i].getWidth(),depthTiles[i].getHeight()); + colourTiles[i].draw(xoffs+640,500,colourTiles[i].getWidth(),colourTiles[i].getHeight()); + xoffs+=(colourTiles[i].getWidth()+10); + } + break; + } + /* - depthImage.draw(10, 10, 640, 480); - colourImage.draw(10, 500, 640, 480); + - int xoffs=660; - for (int i=0;i<depthTiles.size();i++){ - depthTiles[i].draw(xoffs,10,depthTiles[i].getWidth(),depthTiles[i].getHeight()); - colourTiles[i].draw(xoffs,500,colourTiles[i].getWidth(),colourTiles[i].getHeight()); - xoffs+=(colourTiles[i].getWidth()+10); - } + */ @@ -263,6 +287,17 @@ void ofApp::keyPressed (int key) { if(angle<-30) angle=-30; kinect.setCameraTiltAngle(angle); break; + + case OF_KEY_LEFT: + mode--; + if (mode<0) mode==NUM_MODES-1; + break; + + case OF_KEY_RIGHT: + mode=(mode+1)%NUM_MODES; + break; + + } } diff --git a/offsetProject/src/ofApp.h b/offsetProject/src/ofApp.h index 6188611..9406a0f 100644 --- a/offsetProject/src/ofApp.h +++ b/offsetProject/src/ofApp.h @@ -7,6 +7,13 @@ #define MIN_TILE_SIZE 4 //has to be a divisor of 320 and 240 as the tiles are centred #define MAX_TILE_SIZE 32 //has to be a power of 2 * MIN_TILE_SIZE +#define MODE_COLOURTILES 0 +#define MODE_DEPTH 1 +#define MODE_COMPONENTS 2 + +#define NUM_MODES 3 + + class offsetCvColorImage : public ofxCvColorImage { public: void extend( int w, int h ) { @@ -58,4 +65,6 @@ public: int angle; int levels; int extend_w,extend_h; + + int mode; }; |
