diff options
| author | Comment <tim@gray.(none)> | 2013-04-28 00:49:39 +0100 |
|---|---|---|
| committer | Comment <tim@gray.(none)> | 2013-04-28 00:49:39 +0100 |
| commit | 29a366df4f1492a5974db87a215f1a310fc853a2 (patch) | |
| tree | c7e3ed0f0d5827c6a2d9072220a914b40134093b /TRRSS_01_rec/src | |
initial
Diffstat (limited to 'TRRSS_01_rec/src')
| -rwxr-xr-x | TRRSS_01_rec/src/main.cpp | 19 | ||||
| -rwxr-xr-x | TRRSS_01_rec/src/testApp.cpp | 164 | ||||
| -rwxr-xr-x | TRRSS_01_rec/src/testApp.h | 75 |
3 files changed, 258 insertions, 0 deletions
diff --git a/TRRSS_01_rec/src/main.cpp b/TRRSS_01_rec/src/main.cpp new file mode 100755 index 0000000..1f1c3a1 --- /dev/null +++ b/TRRSS_01_rec/src/main.cpp @@ -0,0 +1,19 @@ +#include "ofMain.h" +#include "testApp.h" +#include "ofAppGlutWindow.h" + +//======================================================================== +int main( ){ + + ofAppGlutWindow window; + ofSetupOpenGL(ofxFensterManager::get(),1024,768, OF_WINDOW); //2048,768 + //ofSetupOpenGL(&window, 1024,768, OF_WINDOW); // <-------- setup the GL context + //ofSetupOpenGL(&window, 1024,768, OF_WINDOW); + + // this kicks off the running of my app + // can be OF_WINDOW or OF_FULLSCREEN + // pass in width and height too: + //ofRunApp( new testApp()); + ofRunFensterApp( new testApp()); + +} diff --git a/TRRSS_01_rec/src/testApp.cpp b/TRRSS_01_rec/src/testApp.cpp new file mode 100755 index 0000000..1c333bf --- /dev/null +++ b/TRRSS_01_rec/src/testApp.cpp @@ -0,0 +1,164 @@ +#include "testApp.h" +//texture binding with normalised coords +void bindTexture(ofBaseHasTexture &t) { + ofTexture &tex = t.getTextureReference(); + tex.bind(); + + glMatrixMode(GL_TEXTURE); + glPushMatrix(); + glLoadIdentity(); + + ofTextureData texData = tex.getTextureData(); + if(texData.textureTarget == GL_TEXTURE_RECTANGLE_ARB) { + glScalef(tex.getWidth(), tex.getHeight(), 1.0f); + } else { + glScalef(tex.getWidth() / texData.tex_w, tex.getHeight() / texData.tex_h, 1.0f); + } + + glMatrixMode(GL_MODELVIEW); +} +void unbindTexture(ofBaseHasTexture &t) { + t.getTextureReference().unbind(); + + glMatrixMode(GL_TEXTURE); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); +} +void bindTex(ofTexture &tex) { + tex.bind(); + + glMatrixMode(GL_TEXTURE); + glPushMatrix(); + glLoadIdentity(); + + ofTextureData texData = tex.getTextureData(); + if(texData.textureTarget == GL_TEXTURE_RECTANGLE_ARB) { + glScalef(tex.getWidth(), tex.getHeight(), 1.0f); + } else { + glScalef(tex.getWidth() / texData.tex_w, tex.getHeight() / texData.tex_h, 1.0f); + } + + glMatrixMode(GL_MODELVIEW); +} +void unbindTex(ofTexture &tex) { + tex.unbind(); + + glMatrixMode(GL_TEXTURE); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); +} +//-------------------------------------------------------------- +void testApp::setup(){ + recordContext.setup(); + recordDepth.setup(&recordContext); + recordImage.setup(&recordContext); + recordUser.setup(&recordContext); + recordUser.setUseCloudPoints(true); + recordContext.toggleRegisterViewport(); + + guiWin=new guiWindow(); + ofxFenster* win=ofxFensterManager::get()->createFenster(0, 0, 200, 400, OF_WINDOW); + win->setWindowTitle("config"); + win->addListener(guiWin); + guiWin->setup(); +} + +//-------------------------------------------------------------- +void testApp::update(){ + recordContext.update(); + recordDepth.update(); + recordImage.update(); + recordUser.update(); +} + +//-------------------------------------------------------------- +void testApp::draw(){ + cam.begin(); + //bind texture recordImage + //get point data from recordDepth + //draw textured polys and allow manipulation + ofPushMatrix(); + ofTranslate(320,240,-1000); + //ofRotate(0,0,1,180); + bindTex(recordImage.getTexture()); + int step = 1; + for(int y = step; y < 480; y += step) { + glBegin(GL_QUADS); + for(int x = step; x < 640; x += step) { + ofPoint pos1 = recordUser.getWorldCoordinateAt(x-step, y-step, 0); //userID); + ofPoint pos2 = recordUser.getWorldCoordinateAt(x, y-step, 0); //userID); + ofPoint pos3 = recordUser.getWorldCoordinateAt(x-step, y, 0); //userID); + ofPoint pos4 = recordUser.getWorldCoordinateAt(x, y, 0); //userID); + + if ((guiWin->distMin<pos1.z&&pos1.z<guiWin->distMax)&& + (guiWin->distMin<pos2.z&&pos2.z<guiWin->distMax)&& + (guiWin->distMin<pos3.z&&pos3.z<guiWin->distMax)&& + (guiWin->distMin<pos4.z&&pos4.z<guiWin->distMax)) { + + glTexCoord2f(((float)x-step)/640.0f,((float)y-step)/480.0f); + glVertex3f(pos1.x, -pos1.y,pos1.z); + glTexCoord2f(((float)x)/640.0f,((float)y-step)/480.0f); + glVertex3f(pos2.x, -pos2.y,pos2.z); + glTexCoord2f(((float)x)/640.0f,((float)y)/480.0f); + glVertex3f(pos4.x, -pos4.y,pos4.z); + glTexCoord2f(((float)x-step)/640.0f,((float)y)/480.0f); + glVertex3f(pos3.x, -pos3.y,pos3.z); + } + } + glEnd(); + } + ofPopMatrix(); + + unbindTex(recordImage.getTexture()); + + //recordImage.draw(0, 0, ofGetWidth(),ofGetHeight()); + + cam.end(); + + +} + +//-------------------------------------------------------------- +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){ + +} + +//-------------------------------------------------------------- +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){ + +} diff --git a/TRRSS_01_rec/src/testApp.h b/TRRSS_01_rec/src/testApp.h new file mode 100755 index 0000000..1da9c6e --- /dev/null +++ b/TRRSS_01_rec/src/testApp.h @@ -0,0 +1,75 @@ +#pragma once + +//for tomorrow: drawing interface & screengrab + +//thursday: +//2 camera calibration +//recording - whats the best format - in memeory + save at end? +//movie + pixels? + +#include "ofMain.h" +#include "ofxOpenNI.h" + +#include "ofxFensterManager.h" +#include "ofxGui.h" + +#include "ofxMayaCam.h" + +class guiWindow; + +class testApp : public ofxFensterListener{ + + 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); + + ofxOpenNIContext recordContext; + ofxDepthGenerator recordDepth; + ofxImageGenerator recordImage; + ofxUserGenerator recordUser; + + guiWindow *guiWin; + + ofxMayaCam cam; + +}; + +class guiWindow: public ofxFensterListener{ + public: + ofxPanel gui; + ofxFloatSlider dMin; + ofxParameter<float> distMin; + ofxFloatSlider dMax; + ofxParameter<float> distMax; + ofxToggle dPoints; + ofxParameter<bool> drawPoints; + ofxFloatSlider pSize; + ofxParameter<float> pointSize; + + + void setup(){ + gui.setup("","panel.xml",0,0); + distMin=400; + gui.add(dMin.setup("min distance",distMin,0,5000,255)); + distMax=2000; + gui.add(dMax.setup("max distance",distMax,0,5000,255)); + drawPoints=false; + gui.add(dPoints.setup("draw points",drawPoints)); + pointSize=2.0; + gui.add(pSize.setup("point size",pointSize,1.0,20.0,255)); + } + void draw() { gui.draw(); } + + +}; |
