diff options
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 | 407 | ||||
| -rwxr-xr-x | TRRSS_01_rec/src/testApp.h | 106 |
3 files changed, 0 insertions, 532 deletions
diff --git a/TRRSS_01_rec/src/main.cpp b/TRRSS_01_rec/src/main.cpp deleted file mode 100755 index de63c21..0000000 --- a/TRRSS_01_rec/src/main.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include "ofMain.h" -#include "testApp.h" -#include "ofAppGlutWindow.h" - -//======================================================================== -int main( ){ - - ofAppGlutWindow window; - ofSetupOpenGL(ofxFensterManager::get(),800,600, 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 deleted file mode 100755 index 82affcb..0000000 --- a/TRRSS_01_rec/src/testApp.cpp +++ /dev/null @@ -1,407 +0,0 @@ -#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(){ - isLive = true; - isRecording = false; - -#ifdef NEWAPI - openNIDevice.setup(false);//FromXML("openni/config/ofxopenni_config.xml"); - openNIDevice.setLogLevel(OF_LOG_VERBOSE); - openNIDevice.addDepthGenerator(); - openNIDevice.addImageGenerator(); // comment this out - openNIDevice.addUserGenerator(); - openNIDevice.setRegister(true); - openNIDevice.setMirror(true); - openNIDevice.start(); - - openNIDevice.setUseDepthRawPixels(true); - - //openNIDevice.setSafeThreading(true); ?slower and still crashes? - - openNIDevice.setMaxNumUsers(1); - ofAddListener(openNIDevice.userEvent, this, &testApp::userEvent); - - ofxOpenNIUser user; - user.setUseMaskTexture(true); - user.setUsePointCloud(true); - user.setPointCloudDrawSize(1); // this is the size of the glPoint that will be drawn for the point cloud - user.setPointCloudResolution(1); // this is the step size between points for the cloud -> eg., this sets it to every second point - openNIDevice.setBaseUserClass(user); - - -#else - /* - recordContext.setup(); - recordDepth.setup(&recordContext); - recordImage.setup(&recordContext); - recordUser.setup(&recordContext); - recordUser.setUseCloudPoints(true); - recordUser.setSmoothing(10.0f); - recordContext.toggleRegisterViewport(); - */ -#endif - - setupRecording(); - whichUser=&recordUser; - whichImage=&recordImage; - - guiWin=new guiWindow(); - ofxFenster* win=ofxFensterManager::get()->createFenster(0, 0, 200, 400, OF_WINDOW); - win->setWindowTitle("config"); - win->addListener(guiWin); - guiWin->setup(); -} - -void testApp::setupRecording(string _filename) { - - bool isCloud=true; - -#if defined (TARGET_OSX) //|| defined(TARGET_LINUX) // only working on Mac/Linux at the moment (but on Linux you need to run as sudo...) - hardware.setup(); // libusb direct control of motor, LED and accelerometers - hardware.setLedOption(LED_OFF); // turn off the led just for yacks (or for live installation/performances ;-) -#endif - - recordContext.setup(); // all nodes created by code -> NOT using the xml config file at all - //recordContext.setupUsingXMLFile(); - recordDepth.setup(&recordContext); - recordImage.setup(&recordContext); - - recordUser.setup(&recordContext); - //recordUser.setSmoothing(filterFactor); // built in openni skeleton smoothing... - //recordUser.setUseMaskPixels(isMasking); - recordUser.setUseCloudPoints(isCloud); - recordUser.setMaxNumberOfUsers(2); // use this to set dynamic max number of users (NB: that a hard upper limit is defined by MAX_NUMBER_USERS in ofxUserGenerator) - - recordContext.toggleRegisterViewport(); - recordContext.toggleMirror(); - - oniRecorder.setup(&recordContext, ONI_STREAMING); - //oniRecorder.setup(&recordContext, ONI_CYCLIC, 60); - //read the warning in ofxOpenNIRecorder about memory usage with ONI_CYCLIC recording!!! - -} - -void testApp::setupPlayback(string _filename) { - - bool isCloud=true; - - playContext.shutdown(); - playContext.setupUsingRecording(ofToDataPath(_filename)); - playDepth.setup(&playContext); - playImage.setup(&playContext); - - playUser.setup(&playContext); - //playUser.setSmoothing(filterFactor); // built in openni skeleton smoothing... - //playUser.setUseMaskPixels(isMasking); - playUser.setUseCloudPoints(isCloud); - - playContext.toggleRegisterViewport(); - playContext.toggleMirror(); - -} - -//-------------------------------------------------------------- -void testApp::update(){ - if (isLive) { -#ifdef NEWAPI - openNIDevice.update(); -#else - recordContext.update(); - recordDepth.update(); - recordImage.update(); - recordUser.update(); -#endif - } - else { - - playContext.update(); - playDepth.update(); - playImage.update(); - playUser.update(); - } - if (isRecording) oniRecorder.update(); -} - -//-------------------------------------------------------------- -void testApp::draw(){ -#ifdef NEWAPI - ofSetColor(255, 255, 255); - - - - //openNIDevice.drawDebug(); // draws all generators - //openNIDevice.drawDepth(0, 0); - - if (guiWin->drawPoints) { - -/* - glEnable( GL_POINT_SMOOTH ); - glEnable( GL_BLEND ); - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); - glPointSize( guiWin->pointSize ); - - glBegin(GL_POINTS); - glColor3f( 1.0f, 1.0f, 1.0f ); - - - //uint16_t *depth=openNIDevice.getDepthRawPixels().getPixels(); - ofPoint p; - for (int i=0;i<640;i+=guiWin->drawStep){ - for (int j=0;j<480;j+=guiWin->drawStep){ - p=openNIDevice.cameraToWorld(ofVec2f(i,j)); - glVertex3f(p.x,p.y,p.z); - } - } -*/ - - - ofPushMatrix(); - ofEnableBlendMode(OF_BLENDMODE_ALPHA); - int numUsers = openNIDevice.getNumTrackedUsers(); - for (int nID = 0; nID < numUsers; nID++){ - ofxOpenNIUser & user = openNIDevice.getTrackedUser(nID); - user.drawMask(); - ofPushMatrix(); - ofTranslate((1024/2)-(640/2),(768/2)-(480/2),-500); - user.drawPointCloud(); - ofPopMatrix(); - - } - ofDisableBlendMode(); - ofPopMatrix(); - - - } - else { - openNIDevice.drawImage(0, 0,ofGetWidth(),ofGetHeight()); - } -#else - - //cam.begin(); - //bind texture recordImage - //get point data from recordDepth - //draw textured polys and allow manipulation - float cloudWidth=ofGetWidth(); - float cloudHeight=ofGetHeight(); - - ofPushMatrix(); - ofTranslate((ofGetWidth()/2)-(640/2),(ofGetHeight()/2)-(480/2),800); - ofRotate(0.1,1,0.05,30); - //ofRotate(0,0,1,180); - - int step = 1; - - if (guiWin->drawPoints) { - // http://stackoverflow.com/questions/1513811/getting-smooth-big-points-in-opengl - glEnable( GL_POINT_SMOOTH ); - glEnable( GL_BLEND ); - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); - glPointSize( guiWin->pointSize ); - - glBegin(GL_POINTS); - glColor3f( 1.0f, 1.0f, 1.0f ); - - float spread=guiWin->distMax-guiWin->distMin; - - for(int y = step; y < 480; y += guiWin->drawStep) { - - for(int x = step; x < 640; x += guiWin->drawStep) { - ofPoint pos4 = whichUser->getWorldCoordinateAt(x, y, 0); //userID); - - if (guiWin->distMin<pos4.z&&pos4.z<guiWin->distMax) { - float l=(pos4.z-guiWin->distMin)/spread; - glColor3f( l, l, l ); - - glVertex3f(pos4.x, pos4.y,-pos4.z); - } - } - - } - glEnd(); - } - else { - bindTex(whichImage->getTexture()); - for(int y = step; y < 480; y += guiWin->drawStep) { - glBegin(GL_QUADS); - for(int x = step; x < 640; x += guiWin->drawStep) { - ofPoint pos1 = whichUser->getWorldCoordinateAt(x-step, y-step, 0); //userID); - ofPoint pos2 = whichUser->getWorldCoordinateAt(x, y-step, 0); //userID); - ofPoint pos3 = whichUser->getWorldCoordinateAt(x-step, y, 0); //userID); - ofPoint pos4 = whichUser->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(); - } - - unbindTex(whichImage->getTexture()); - } - ofPopMatrix(); - - - - //recordImage.draw(0, 0, ofGetWidth(),ofGetHeight()); - - //cam.end(); -#endif - -} -#ifdef NEWAPI -void testApp::userEvent(ofxOpenNIUserEvent & event){ - ofLogNotice() << getUserStatusAsString(event.userStatus) << "for user" << event.id << "from device" << event.deviceID; -} -#endif -void testApp::exit(){ -#ifdef NEWAPI - openNIDevice.stop(); -#endif -} - -string testApp::generateFileName() { - - string _root = "kinectRecord"; - - string _timestamp = ofToString(ofGetDay()) + - ofToString(ofGetMonth()) + - ofToString(ofGetYear()) + - ofToString(ofGetHours()) + - ofToString(ofGetMinutes()) + - ofToString(ofGetSeconds()); - - string _filename = (_root + _timestamp + ".oni"); - - return _filename; - -} - -//-------------------------------------------------------------- -void testApp::keyPressed(int key){ - switch (key) { - case 's': - case 'S': - if (isRecording) { - oniRecorder.stopRecord(); - isRecording = false; - break; - } else { - oniRecorder.startRecord(generateFileName()); - isRecording = true; - break; - } - break; - case 'p': - case 'P': - if (oniRecorder.getCurrentFileName() != "" && !isRecording && isLive) { - setupPlayback(oniRecorder.getCurrentFileName()); - isLive = false; - whichUser=&playUser; - whichImage=&playImage; - } else { - isLive = true; - whichUser=&recordUser; - whichImage=&recordImage; - } - break; - } -} - -//-------------------------------------------------------------- -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 deleted file mode 100755 index 225abc8..0000000 --- a/TRRSS_01_rec/src/testApp.h +++ /dev/null @@ -1,106 +0,0 @@ -#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" - -//#define NEWAPI - -class guiWindow; - -class testApp : public ofxFensterListener{ - - public: - void setup(); - void update(); - void draw(); - void exit(); - - 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); - - string generateFileName(); - void setupRecording(string _filename = ""); - void setupPlayback(string _filename); - - ofxOpenNIRecorder oniRecorder; - - bool isLive, isRecording; - -#ifdef NEWAPI - ofxOpenNI openNIDevice; - void userEvent(ofxOpenNIUserEvent & event); - -#else - - - ofxOpenNIContext recordContext,playContext; - ofxDepthGenerator recordDepth,playDepth; - ofxImageGenerator recordImage,playImage; - ofxUserGenerator recordUser,playUser; - - ofxImageGenerator *whichImage; - ofxUserGenerator *whichUser; -#endif - - - guiWindow *guiWin; - - ofxMayaCam cam; - -}; - -class guiWindow: public ofxFensterListener{ - public: - ofxPanel gui; - ofxFloatSlider dMin; - ofxParameter<float> distMin; - ofxFloatSlider dMax; - ofxParameter<float> distMax; - ofxIntSlider dStep; - ofxParameter<int> drawStep; - ofxToggle dPoints; - ofxParameter<bool> drawPoints; - ofxFloatSlider pSize; - ofxParameter<float> pointSize; - ofxToggle iOut; - ofxParameter<bool> insideOut; - - - 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)); - drawStep=2; - gui.add(dStep.setup("draw step",drawStep,1,32,255)); - drawPoints=false; - gui.add(dPoints.setup("draw points",drawPoints)); - pointSize=2.0; - gui.add(pSize.setup("point size",pointSize,0.0,20.0,255)); - insideOut=false; - gui.add(iOut.setup("inside out",insideOut)); - } - void draw() { gui.draw(); } - - -}; |
