fixed timings so everything is on the second-basis, fixed David's flags so that each section in the classes terminates on RUN_DONE

This commit is contained in:
Jamie Allen 2012-02-20 19:48:43 +01:00
parent 12d210327b
commit b514c12a53
19 changed files with 220 additions and 172 deletions

View File

@ -8,6 +8,9 @@
~ contact: dviid@labs.ciid.dk ~ contact: dviid@labs.ciid.dk
*/ */
////also the new shit////
#include "RefractiveIndex.h" #include "RefractiveIndex.h"
#include "ShadowScapesAnalysis.h" #include "ShadowScapesAnalysis.h"
@ -94,13 +97,14 @@ void RefractiveIndex::setup()
//getting a warning from the OFlog that the pixels aren't allocated //getting a warning from the OFlog that the pixels aren't allocated
//void ofPixels::allocate(int w, int h, ofImageType type) //void ofPixels::allocate(int w, int h, ofImageType type)
_pixels.allocate(_vid_w, _vid_h, OF_IMAGE_COLOR);
//TODO: whichever one of these is first - it always runs twice ? //TODO: whichever one of these is first - it always runs twice ?
// _analysisVector.push_back(new ShadowScapesAnalysis(V)); _analysisVector.push_back(new ShadowScapesAnalysis(V));
// _analysisVector.push_back(new ShadowScapesAnalysis(H)); _analysisVector.push_back(new ShadowScapesAnalysis(H));
// _analysisVector.push_back(new ShadowScapesAnalysis(D)); _analysisVector.push_back(new ShadowScapesAnalysis(D));
_analysisVector.push_back(new RelaxRateAnalysis()); _analysisVector.push_back(new RelaxRateAnalysis());
@ -209,6 +213,7 @@ void RefractiveIndex::setup_camera()
ofLog(OF_LOG_ERROR) << "RefractiveIndex::setup_camera - could not initialise grabber"; ofLog(OF_LOG_ERROR) << "RefractiveIndex::setup_camera - could not initialise grabber";
return; return;
} }
_vidGrabber.listDevices(); _vidGrabber.listDevices();
_vidGrabber.setVerbose(true); _vidGrabber.setVerbose(true);
_vid_stream_open = true; _vid_stream_open = true;

View File

@ -1,8 +1,3 @@
/*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ author: dviid
~ contact: dviid@labs.ciid.dk
*/
#pragma once #pragma once

View File

@ -4,21 +4,15 @@
#define SCREEN_WIDTH 800 #define SCREEN_WIDTH 800
#define SCREEN_HEIGHT 600 #define SCREEN_HEIGHT 600
/////////////////////////dis is the new shit///////////
/////////////////////////dis is the new shit///////////
/////////////////////////dis is the new shit///////////
/////////////////////////dis is the new shit///////////
////also the new shit////
int main() { int main() {
ofAppGlutWindow window; ofAppGlutWindow window;
ofxXmlSettings XML; ofxXmlSettings XML;
XML.loadFile("../data/config.refindx"); XML.loadFile("../data/config.refindx");
bool fullscreen = (XML.getValue("config:display:fullscreen", "false") == "true" ? true : false); bool fullscreen = (XML.getValue("config:display:fullscreen", "true") == "true" ? true : false);
int screen_w = XML.getValue("config:display:width", SCREEN_WIDTH); int screen_w = XML.getValue("config:display:width", SCREEN_WIDTH);
int screen_h = XML.getValue("config:display:height", SCREEN_HEIGHT); int screen_h = XML.getValue("config:display:height", SCREEN_HEIGHT);

View File

@ -41,6 +41,9 @@ void AbstractAnalysis::do_synthesize() {
_state = STATE_SYNTHESISING; _state = STATE_SYNTHESISING;
synthesise(); synthesise();
_state = STATE_DISPLAY_RESULTS; _state = STATE_DISPLAY_RESULTS;
//displayresults();
ofNotifyEvent(_synthesize_cb, _name); ofNotifyEvent(_synthesize_cb, _name);
} }

View File

@ -13,20 +13,26 @@ using Poco::Thread;
void CamNoiseAnalysis::setup(int camWidth, int camHeight) void CamNoiseAnalysis::setup(int camWidth, int camHeight)
{ {
DELTA_T_SAVE = 200;
NUM_PHASE = 1;
NUM_RUN = 1; NUM_RUN = 1;
NUM_SAVE_PER_RUN = 100;
int acq_run_time = 20; // 20 seconds of acquiring per run
DELTA_T_SAVE = 10*acq_run_time/2; // for 20 seconds, we want this to be around 200 files
// or 10 times per second = every 100 ms
_frame_cnt_max = acq_run_time*ofGetFrameRate(); // e.g.: 30 frames per second * 20 seconds = 600 frames
create_dir(); create_dir();
_frame_cnt = 0; _frame_cnt = 0;
_frame_cnt_max = ofGetFrameRate() * ((DELTA_T_SAVE * NUM_SAVE_PER_RUN) / 1000);
c = 0; c = 0;
int anim_time = 10; // 10 seconds int anim_time = 5; // 10 seconds
_anim_cnt_max = anim_time*ofGetFrameRate(); // e.g.: 30 frames per second = 150 frames _anim_cnt_max = anim_time*ofGetFrameRate(); // e.g.: 30 frames per second = 150 frames
create_dir();
} }
@ -54,12 +60,17 @@ void CamNoiseAnalysis::acquire()
Thread::sleep(3); Thread::sleep(3);
save_timer->stop(); save_timer->stop();
_RUN_DONE = false;
} }
} }
void CamNoiseAnalysis::synthesise() void CamNoiseAnalysis::synthesise()
{ {
// _saved_filenames has all the file names of all the saved images // _saved_filenames has all the file names of all the saved images
while(!_RUN_DONE)
Thread::sleep(3);
} }
@ -81,7 +92,7 @@ void CamNoiseAnalysis::draw()
ofColor aColour; ofColor aColour;
int _fade_in_frames = _frame_cnt_max/10; int _fade_in_frames = _frame_cnt_max/10;
float _number_of_grey_levels=10; float _number_of_grey_levels=5;
float _frames_per_level = _frame_cnt_max / _number_of_grey_levels; float _frames_per_level = _frame_cnt_max / _number_of_grey_levels;
ofColor someColor; ofColor someColor;
@ -119,8 +130,8 @@ void CamNoiseAnalysis::draw()
} else { } else {
_state = STATE_SYNTHESISING; // _state = STATE_SYNTHESISING;
// _RUN_DONE = true; _RUN_DONE = true;
} }
_frame_cnt++; _frame_cnt++;
@ -200,7 +211,8 @@ void CamNoiseAnalysis::draw()
_anim_cnt++; _anim_cnt++;
} else { } else {
_state = STATE_DISPLAY_RESULTS; _RUN_DONE = true;
//_state = STATE_DISPLAY_RESULTS;
_anim_cnt=0; _anim_cnt=0;
} }
ofPopMatrix(); ofPopMatrix();
@ -214,7 +226,6 @@ void CamNoiseAnalysis::draw()
{ {
// display results of the synthesis // display results of the synthesis
_RUN_DONE = true; _RUN_DONE = true;
break; break;
} }

View File

@ -28,6 +28,6 @@ protected:
bool _RUN_DONE; bool _RUN_DONE;
int _run_cnt, _save_cnt, _fade_cnt, _anim_cnt; int _run_cnt, _save_cnt, _anim_cnt;
float c, _frame_cnt, _frame_cnt_max, _anim_cnt_max; float c, _frame_cnt, _frame_cnt_max, _anim_cnt_max;
}; };

View File

@ -13,20 +13,27 @@ using Poco::Thread;
void ColorMultiAnalysis::setup(int camWidth, int camHeight) void ColorMultiAnalysis::setup(int camWidth, int camHeight)
{ {
DELTA_T_SAVE = 150; // the right number is about 300
NUM_PHASE = 1;
NUM_RUN = 1; NUM_RUN = 1;
NUM_SAVE_PER_RUN = 300;
int acq_run_time = 35;
DELTA_T_SAVE = 10*acq_run_time/2; // for 20 seconds, we want this to be around 200 files
// or 10 times per second = every 100 ms
_frame_cnt_max = acq_run_time*ofGetFrameRate(); // e.g.: 30 frames per second * 20 seconds = 600 frames
create_dir(); create_dir();
_frame_cnt = 0; _frame_cnt = 0;
_fade_cnt=0;
_frame_cnt_max = ofGetFrameRate() * ((DELTA_T_SAVE * NUM_SAVE_PER_RUN) / 1000);
c = 0; c = 0;
int anim_time = 10; // 10 seconds int anim_time = 5; // 10 seconds
_anim_cnt_max = anim_time*ofGetFrameRate(); // e.g.: 30 frames per second = 150 frames _anim_cnt_max = anim_time*ofGetFrameRate(); // e.g.: 30 frames per second = 150 frames
create_dir();
} }
void ColorMultiAnalysis::acquire() void ColorMultiAnalysis::acquire()
@ -53,9 +60,10 @@ void ColorMultiAnalysis::acquire()
Thread::sleep(3); Thread::sleep(3);
save_timer->stop(); save_timer->stop();
} _RUN_DONE = false;
} }
}
void ColorMultiAnalysis::synthesise() void ColorMultiAnalysis::synthesise()
{ {
@ -69,15 +77,16 @@ void ColorMultiAnalysis::draw()
switch (_state) { switch (_state) {
case STATE_ACQUIRING: case STATE_ACQUIRING:
{ {
ofEnableAlphaBlending();
if (_frame_cnt < _frame_cnt_max) if (_frame_cnt < _frame_cnt_max)
{ {
int _fade_in_frames = _frame_cnt_max/50; int _fade_in_frames = _frame_cnt_max/50;
ofColor aColor;
if (_frame_cnt < _fade_in_frames) { if (_frame_cnt < _fade_in_frames) {
ofColor aColor;
aColor.setHsb(c, ofMap(_frame_cnt, 0, _fade_in_frames, 0, 255), ofMap(_frame_cnt, 0, _fade_in_frames, 0, 255)); aColor.setHsb(c, ofMap(_frame_cnt, 0, _fade_in_frames, 0, 255), ofMap(_frame_cnt, 0, _fade_in_frames, 0, 255));
@ -87,9 +96,10 @@ void ColorMultiAnalysis::draw()
cout << "FADING IN..." << endl; cout << "FADING IN..." << endl;
} }
if (_frame_cnt >= _fade_in_frames && _frame_cnt < _frame_cnt_max-_fade_in_frames){ if (_frame_cnt >= _fade_in_frames && _frame_cnt < _frame_cnt_max-_fade_in_frames){
ofColor aColor;
aColor.setHsb(c, 255, 255); aColor.setHsb(c, 255, 255);
ofSetColor(aColor); ofSetColor(aColor);
@ -99,29 +109,26 @@ void ColorMultiAnalysis::draw()
ofRect(0, 0, ofGetWidth(), ofGetHeight()); ofRect(0, 0, ofGetWidth(), ofGetHeight());
} }
if (_frame_cnt >= (_frame_cnt_max-_fade_in_frames) && _frame_cnt < _frame_cnt_max) { if (_frame_cnt >= (_frame_cnt_max-_fade_in_frames) && _frame_cnt <= _frame_cnt_max) {
ofColor aColor; aColor.set(c, c, c, 255-int(ofMap(_frame_cnt-(_frame_cnt_max-_fade_in_frames), 0, _fade_in_frames, 0, 255)));
aColor.setHsb(c, 255-ofMap(_fade_cnt, 0, _fade_in_frames, 0, 255), 255-ofMap(_fade_cnt, 0, _fade_in_frames, 0, 255)); //aColor.setHsb(c, 255-ofMap(_fade_cnt- (_frame_cnt_max-_fade_in_frames), 0, _fade_in_frames, 0, 255), 255-(ofMap(_fade_cnt-(_frame_cnt_max-_fade_in_frames), 0, _fade_in_frames, 0, 255)));
ofSetColor(aColor); ofSetColor(aColor);
ofRect(0, 0, ofGetWidth(), ofGetHeight()); ofRect(0, 0, ofGetWidth(), ofGetHeight());
_fade_cnt++;
cout << "FADING OUT..." << endl; cout << "FADING OUT..." << endl;
} }
} else { } else {
_state = STATE_SYNTHESISING; //_state = STATE_SYNTHESISING;
_RUN_DONE = true;
//_RUN_DONE = true;
} }
_frame_cnt++; _frame_cnt++;
ofDisableAlphaBlending();
break; break;
} }

View File

@ -13,25 +13,35 @@ using Poco::Thread;
void ColorSingleAnalysis::setup(int camWidth, int camHeight) void ColorSingleAnalysis::setup(int camWidth, int camHeight)
{ {
DELTA_T_SAVE = 100; //300 is the right number here
NUM_PHASE = 1;
NUM_RUN = 1; NUM_RUN = 1;
NUM_SAVE_PER_RUN = 100;
int acq_run_time = 20; // 20 seconds of acquiring per run
DELTA_T_SAVE = 10*acq_run_time/2; // for 20 seconds, we want this to be around 200 files
// or 10 times per second = every 100 ms
_frame_cnt_max = acq_run_time*ofGetFrameRate(); // e.g.: 30 frames per second * 20 seconds = 600 frames
create_dir(); create_dir();
_frame_cnt = 0; _frame_cnt = 0;
_frame_cnt_max = ofGetFrameRate() * ((DELTA_T_SAVE * NUM_SAVE_PER_RUN) / 1000); c = 0;
int anim_time = 5; // 10 seconds
_anim_cnt_max = anim_time*ofGetFrameRate(); // e.g.: 30 frames per second = 150 frames
create_dir();
NUM_RUN = 1;
r = 0; r = 0;
g = 0; g = 0;
b = 0; b = 0;
_fade_cnt=0;
fileNameTag = ""; fileNameTag = "";
int anim_time = 10; // 10 seconds
_anim_cnt_max = anim_time*ofGetFrameRate(); // e.g.: 30 frames per second = 150 frames
} }
@ -59,12 +69,15 @@ void ColorSingleAnalysis::acquire()
Thread::sleep(3); Thread::sleep(3);
save_timer->stop(); save_timer->stop();
_RUN_DONE = false;
} }
} }
void ColorSingleAnalysis::synthesise() void ColorSingleAnalysis::synthesise()
{ {
// _saved_filenames has all the file names of all the saved images // _saved_filenames has all the file names of all the saved images
while(!_RUN_DONE)
Thread::sleep(3);
} }
@ -126,8 +139,8 @@ void ColorSingleAnalysis::draw()
} }
} else { } else {
_state = STATE_SYNTHESISING; //_state = STATE_SYNTHESISING;
//_RUN_DONE = true; _RUN_DONE = true;
} }
_frame_cnt++; _frame_cnt++;
@ -207,7 +220,8 @@ void ColorSingleAnalysis::draw()
_anim_cnt++; _anim_cnt++;
} else { } else {
_state = STATE_DISPLAY_RESULTS; _RUN_DONE = true;
//_state = STATE_DISPLAY_RESULTS;
_anim_cnt=0; _anim_cnt=0;
} }
ofPopMatrix(); ofPopMatrix();

View File

@ -13,20 +13,26 @@ using Poco::Thread;
void DiffNoiseAnalysis::setup(int camWidth, int camHeight) void DiffNoiseAnalysis::setup(int camWidth, int camHeight)
{ {
DELTA_T_SAVE = 100; // right number is about 600
NUM_PHASE = 1;
NUM_RUN = 1; NUM_RUN = 1;
NUM_SAVE_PER_RUN = 50;
int acq_run_time = 20; // 20 seconds of acquiring per run
DELTA_T_SAVE = 10*acq_run_time/2; // for 20 seconds, we want this to be around 200 files
// or 10 times per second = every 100 ms
_frame_cnt_max = acq_run_time*ofGetFrameRate(); // e.g.: 30 frames per second * 20 seconds = 600 frames
create_dir(); create_dir();
//_fade_cnt=0;
_frame_cnt = 0; _frame_cnt = 0;
_frame_cnt_max = ofGetFrameRate() * ((DELTA_T_SAVE * NUM_SAVE_PER_RUN) / 1000);
c = 0; c = 0;
int anim_time = 10; // 10 seconds int anim_time = 5; // 10 seconds
_anim_cnt_max = anim_time*ofGetFrameRate(); // e.g.: 30 frames per second = 150 frames _anim_cnt_max = anim_time*ofGetFrameRate(); // e.g.: 30 frames per second = 150 frames
create_dir();
} }
@ -60,6 +66,9 @@ void DiffNoiseAnalysis::acquire()
void DiffNoiseAnalysis::synthesise() void DiffNoiseAnalysis::synthesise()
{ {
// _saved_filenames has all the file names of all the saved images // _saved_filenames has all the file names of all the saved images
while(!_RUN_DONE)
Thread::sleep(3);
} }
@ -133,7 +142,7 @@ void DiffNoiseAnalysis::draw()
ofDisableAlphaBlending(); ofDisableAlphaBlending();
} else { } else {
_state = STATE_SYNTHESISING; // _state = STATE_SYNTHESISING;
_RUN_DONE = true; _RUN_DONE = true;
} }
@ -215,7 +224,9 @@ void DiffNoiseAnalysis::draw()
_anim_cnt++; _anim_cnt++;
} else { } else {
_state = STATE_DISPLAY_RESULTS;
_RUN_DONE = true;
//_state = STATE_DISPLAY_RESULTS;
_anim_cnt=0; _anim_cnt=0;
} }
ofPopMatrix(); ofPopMatrix();
@ -232,7 +243,6 @@ void DiffNoiseAnalysis::draw()
break; break;
} }
default: default:
break; break;
} }
@ -242,7 +252,6 @@ void DiffNoiseAnalysis::draw()
// this runs at save_cb timer rate = DELTA_T_SAVE // this runs at save_cb timer rate = DELTA_T_SAVE
void DiffNoiseAnalysis::save_cb(Timer& timer) void DiffNoiseAnalysis::save_cb(Timer& timer)
{ {
_save_cnt++; _save_cnt++;
cout << "DiffNoiseAnalysis::saving...\n"; cout << "DiffNoiseAnalysis::saving...\n";

View File

@ -12,14 +12,19 @@ using Poco::Thread;
void IResponseAnalysis::setup(int camWidth, int camHeight) void IResponseAnalysis::setup(int camWidth, int camHeight)
{ {
DELTA_T_SAVE = 50; //150 is about right
NUM_PHASE = 1;
NUM_RUN = 1; NUM_RUN = 1;
NUM_SAVE_PER_RUN = 100;
int acq_run_time = 20; // 20 seconds of acquiring per run
DELTA_T_SAVE = 10*acq_run_time/2; // for 20 seconds, we want this to be around 200 files
// or 10 times per second = every 100 ms
_frame_cnt_max = acq_run_time*ofGetFrameRate(); // e.g.: 30 frames per second * 20 seconds = 600 frames
create_dir(); create_dir();
_frame_cnt = 0; _frame_cnt = 0;
_frame_cnt_max = ofGetFrameRate() * ((DELTA_T_SAVE * NUM_SAVE_PER_RUN) / 1000);
c = 0; c = 0;
int anim_time = 5; // 10 seconds int anim_time = 5; // 10 seconds
@ -51,12 +56,17 @@ void IResponseAnalysis::acquire()
Thread::sleep(3); Thread::sleep(3);
save_timer->stop(); save_timer->stop();
_RUN_DONE = false;
} }
} }
void IResponseAnalysis::synthesise() void IResponseAnalysis::synthesise()
{ {
// _saved_filenames has all the file names of all the saved images // _saved_filenames has all the file names of all the saved images
while(!_RUN_DONE)
Thread::sleep(3);
} }
@ -79,9 +89,8 @@ void IResponseAnalysis::draw()
ofRect(0, 0, ofGetWidth(), ofGetHeight()); ofRect(0, 0, ofGetWidth(), ofGetHeight());
c = 255.0 * (_frame_cnt_max*_frame_cnt_max - _frame_cnt*_frame_cnt)/(_frame_cnt_max*_frame_cnt_max); c = 255.0 * (_frame_cnt_max*_frame_cnt_max - _frame_cnt*_frame_cnt)/(_frame_cnt_max*_frame_cnt_max);
} else { } else {
_state = STATE_SYNTHESISING;
//_RUN_DONE = true;
_RUN_DONE = true;
} }
_frame_cnt++; _frame_cnt++;
@ -161,7 +170,8 @@ void IResponseAnalysis::draw()
_anim_cnt++; _anim_cnt++;
} else { } else {
_state = STATE_DISPLAY_RESULTS;
_RUN_DONE = true;
_anim_cnt=0; _anim_cnt=0;
} }
ofPopMatrix(); ofPopMatrix();
@ -171,6 +181,7 @@ void IResponseAnalysis::draw()
break; break;
} }
case STATE_DISPLAY_RESULTS: case STATE_DISPLAY_RESULTS:
{ {
// display results of the synthesis // display results of the synthesis
@ -178,7 +189,6 @@ void IResponseAnalysis::draw()
break; break;
} }
default: default:
break; break;
} }

View File

@ -27,7 +27,7 @@ public:
protected: protected:
bool _RUN_DONE; bool _RUN_DONE;
int _run_cnt, _save_cnt, _fade_cnt, _anim_cnt; int _run_cnt, _save_cnt, _anim_cnt;
float c, _frame_cnt, _frame_cnt_max, _anim_cnt_max; float c, _frame_cnt, _frame_cnt_max, _anim_cnt_max;
}; };

View File

@ -13,17 +13,20 @@ using Poco::Thread;
void RelaxRateAnalysis::setup(int camWidth, int camHeight) void RelaxRateAnalysis::setup(int camWidth, int camHeight)
{ {
DELTA_T_SAVE = 50; //300 is the correct number
NUM_PHASE = 1;
NUM_RUN = 1; NUM_RUN = 1;
NUM_SAVE_PER_RUN = 100;
int acq_run_time = 20; // 20 seconds of acquiring per run
DELTA_T_SAVE = 10*acq_run_time/2; // for 20 seconds, we want this to be around 200 files
// or 10 times per second = every 100 ms
_frame_cnt_max = acq_run_time*ofGetFrameRate(); // e.g.: 30 frames per second * 20 seconds = 600 frames
create_dir(); create_dir();
_level = 0; _level = 0;
_flip = 1; _flip = 1;
_frame_cnt = 0; _frame_cnt = 0;
_frame_cnt_max = ofGetFrameRate() * ((DELTA_T_SAVE * NUM_SAVE_PER_RUN) / 1000);
c = 0; c = 0;
int anim_time = 5; // 10 seconds int anim_time = 5; // 10 seconds
@ -55,12 +58,17 @@ void RelaxRateAnalysis::acquire()
Thread::sleep(3); Thread::sleep(3);
save_timer->stop(); save_timer->stop();
_RUN_DONE = false;
} }
} }
void RelaxRateAnalysis::synthesise() void RelaxRateAnalysis::synthesise()
{ {
// _saved_filenames has all the file names of all the saved images // _saved_filenames has all the file names of all the saved images
while(!_RUN_DONE)
Thread::sleep(3);
} }
// this runs at frame rate = 33 ms for 30 FPS // this runs at frame rate = 33 ms for 30 FPS
@ -92,9 +100,7 @@ void RelaxRateAnalysis::draw()
} else { } else {
_state = STATE_SYNTHESISING; _RUN_DONE = true;
//_RUN_DONE = true;
} }
_frame_cnt++; _frame_cnt++;
@ -182,7 +188,7 @@ void RelaxRateAnalysis::draw()
_anim_cnt++; _anim_cnt++;
} else { } else {
_state = STATE_DISPLAY_RESULTS; _RUN_DONE = true;
_anim_cnt=0; _anim_cnt=0;
} }
ofPopMatrix(); ofPopMatrix();

View File

@ -1,7 +1,3 @@
/*
~ author: dviid
~ contact: dviid@labs.ciid.dk
*/
#pragma once #pragma once
@ -29,6 +25,6 @@ protected:
bool _RUN_DONE; bool _RUN_DONE;
float _flip, _level; float _flip, _level;
int _run_cnt, _save_cnt, _fade_cnt, _anim_cnt; int _run_cnt, _save_cnt, _anim_cnt;
float c, _frame_cnt, _frame_cnt_max, _anim_cnt_max; float c, _frame_cnt, _frame_cnt_max, _anim_cnt_max;
}; };

View File

@ -14,16 +14,26 @@ using Poco::Thread;
void ShadowScapesAnalysis::setup(int camWidth, int camHeight) void ShadowScapesAnalysis::setup(int camWidth, int camHeight)
{ {
DELTA_T_SAVE = 50;
NUM_PHASE = 1;
NUM_RUN = 1; NUM_RUN = 1;
NUM_SAVE_PER_RUN = 100;
int acq_run_time = 15; // 10 seconds of acquiring per run
int screenSpan;
if (_dir == V) screenSpan = ofGetHeight();
if (_dir == H) screenSpan = ofGetWidth();
if (_dir == D) screenSpan = ofGetHeight();
_step = (screenSpan/acq_run_time)/(ofGetFrameRate());
// pixel per frame = (pixels / sec) / (frame / sec)
// 40 pixels per second should give us a 20 second scan at 800 pixels wide
DELTA_T_SAVE = 10*acq_run_time/2; // for 20 seconds, we want this to be around 200 files
// or 10 times per second = every 100 ms
create_dir(); create_dir();
_speed = 100.0; // 900.0 is the correct number
_scanLineWidth = 100.0; _scanLineWidth = 100.0;
_run_cnt = 0; _run_cnt = 0;
_save_cnt = 0; _save_cnt = 0;
@ -34,15 +44,9 @@ void ShadowScapesAnalysis::setup(int camWidth, int camHeight)
void ShadowScapesAnalysis::acquire() void ShadowScapesAnalysis::acquire()
{ {
int screenSpan;
if (_dir == V) screenSpan = ofGetHeight();
if (_dir == H) screenSpan = ofGetWidth();
if (_dir == D) screenSpan = ofGetHeight();
_step = ((screenSpan/_speed) * 1000.0) / 500.0;
_line = 0; _line = 0;
// RUN ROUTINE // RUN ROUTINE
for(int i = 0; i < NUM_RUN; i++) { for(int i = 0; i < NUM_RUN; i++) {
@ -58,6 +62,8 @@ void ShadowScapesAnalysis::acquire()
Thread::sleep(3); Thread::sleep(3);
save_timer.stop(); save_timer.stop();
_RUN_DONE = false;
} }
} }
@ -65,6 +71,8 @@ void ShadowScapesAnalysis::acquire()
void ShadowScapesAnalysis::synthesise() void ShadowScapesAnalysis::synthesise()
{ {
// _saved_filenames has all the file names of all the saved images // _saved_filenames has all the file names of all the saved images
while(!_RUN_DONE)
Thread::sleep(3);
} }
@ -140,20 +148,23 @@ void ShadowScapesAnalysis::draw()
if(_dir == V && int(_line) >= (ofGetHeight()+4*_scanLineWidth)){ if(_dir == V && int(_line) >= (ofGetHeight()+4*_scanLineWidth)){
//cout << "VERTICAL IS DONE - _line >= (ofGetHeight()+4*_scanLineWidth) is TRUE" << endl; //cout << "VERTICAL IS DONE - _line >= (ofGetHeight()+4*_scanLineWidth) is TRUE" << endl;
_state = STATE_SYNTHESISING; //_state = STATE_SYNTHESISING;
_RUN_DONE = true;
} }
if(_dir == H && int(_line) >= (ofGetWidth()+4*_scanLineWidth)) { if(_dir == H && int(_line) >= (ofGetWidth()+4*_scanLineWidth)) {
//cout << "HORIZONTAL IS DONE - _line >= (ofGetWidth()+4*_scanLineWidth)) is TRUE" << endl; //cout << "HORIZONTAL IS DONE - _line >= (ofGetWidth()+4*_scanLineWidth)) is TRUE" << endl;
_state = STATE_SYNTHESISING; //_state = STATE_SYNTHESISING;
_RUN_DONE = true;
} }
if(_dir == D && int(_line) >= (1.5*ofGetHeight()+4*_scanLineWidth)) { if(_dir == D && int(_line) >= (1.5*ofGetHeight()+4*_scanLineWidth)) {
//cout << "DIAGONAL IS DONE - _line >= (1.5*ofGetHeight()+4*_scanLineWidth)) is TRUE" << endl; //cout << "DIAGONAL IS DONE - _line >= (1.5*ofGetHeight()+4*_scanLineWidth)) is TRUE" << endl;
_state = STATE_SYNTHESISING; //_state = STATE_SYNTHESISING;
_RUN_DONE = true;
} }
break; break;
@ -229,7 +240,9 @@ void ShadowScapesAnalysis::draw()
_anim_cnt++; _anim_cnt++;
} else { } else {
_state = STATE_DISPLAY_RESULTS;
_RUN_DONE = true;
//_state = STATE_DISPLAY_RESULTS;
_anim_cnt=0; _anim_cnt=0;
} }
ofPopMatrix(); ofPopMatrix();

View File

@ -1,34 +1,4 @@
/* /* */
- copyright (c) 2011 Copenhagen Institute of Interaction Design (CIID)
- all rights reserved.
+ redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ > redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ > redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ author: dviid
~ contact: dviid@labs.ciid.dk
*/
#pragma once #pragma once
@ -64,7 +34,7 @@ protected:
float _scanLineWidth; // pix per second float _scanLineWidth; // pix per second
float _step; float _step;
shadow_type _dir; shadow_type _dir;
int _run_cnt, _save_cnt, _fade_cnt, _anim_cnt; int _run_cnt, _save_cnt, _anim_cnt;
float c, _frame_cnt, _frame_cnt_max, _anim_cnt_max; float c, _frame_cnt, _frame_cnt_max, _anim_cnt_max;
}; };

View File

@ -13,21 +13,23 @@ using Poco::Thread;
void ShapeFromShadingAnalysis::setup(int camWidth, int camHeight) void ShapeFromShadingAnalysis::setup(int camWidth, int camHeight)
{ {
DELTA_T_SAVE = 50; //300 is about the right number
NUM_PHASE = 1;
NUM_RUN = 1; NUM_RUN = 1;
NUM_SAVE_PER_RUN = 100;
int acq_run_time = 20; // 20 seconds of acquiring per run
DELTA_T_SAVE = 10*acq_run_time/2; // for 20 seconds, we want this to be around 200 files
// or 10 times per second = every 100 ms
_frame_cnt_max = acq_run_time*ofGetFrameRate(); // e.g.: 30 frames per second * 20 seconds = 600 frames
create_dir(); create_dir();
_level = 0;
_flip = 1;
_frame_cnt = 0; _frame_cnt = 0;
_frame_cnt_max = ofGetFrameRate() * ((DELTA_T_SAVE * NUM_SAVE_PER_RUN) / 1000);
c = 0; c = 0;
int anim_time = 10; // 10 seconds int anim_time = 5; // 10 seconds
_anim_cnt_max = anim_time*ofGetFrameRate(); // e.g.: 30 frames per second = 150 frames _anim_cnt_max = anim_time*ofGetFrameRate(); // e.g.: 30 frames per second = 150 frames
} }
@ -75,12 +77,17 @@ void ShapeFromShadingAnalysis::acquire()
Thread::sleep(3); Thread::sleep(3);
save_timer->stop(); save_timer->stop();
_RUN_DONE = false;
} }
} }
void ShapeFromShadingAnalysis::synthesise() void ShapeFromShadingAnalysis::synthesise()
{ {
// _saved_filenames has all the file names of all the saved images // _saved_filenames has all the file names of all the saved images
while(!_RUN_DONE)
Thread::sleep(3);
} }
// this runs at frame rate = 33 ms for 30 FPS // this runs at frame rate = 33 ms for 30 FPS
@ -308,8 +315,8 @@ void ShapeFromShadingAnalysis::draw()
ofDisableAlphaBlending(); ofDisableAlphaBlending();
} else { } else {
_state = STATE_SYNTHESISING; //_state = STATE_SYNTHESISING;
//_RUN_DONE = true; _RUN_DONE = true;
} }
_frame_cnt++; _frame_cnt++;
@ -390,7 +397,8 @@ void ShapeFromShadingAnalysis::draw()
_anim_cnt++; _anim_cnt++;
} else { } else {
_state = STATE_DISPLAY_RESULTS; _RUN_DONE = true;
//_state = STATE_DISPLAY_RESULTS;
_anim_cnt=0; _anim_cnt=0;
} }
ofPopMatrix(); ofPopMatrix();

View File

@ -48,6 +48,6 @@ protected:
int _animation_cnt16; int _animation_cnt16;
int _animation_reset; // this reset part didn't get working - so using 16 different counters! yay! int _animation_reset; // this reset part didn't get working - so using 16 different counters! yay!
int _run_cnt, _save_cnt, _fade_cnt, _anim_cnt; int _run_cnt, _save_cnt, _anim_cnt;
float c, _frame_cnt, _frame_cnt_max, _anim_cnt_max; float c, _frame_cnt, _frame_cnt_max, _anim_cnt_max;
}; };

View File

@ -12,20 +12,22 @@ using Poco::Thread;
void StrobeAnalysis::setup(int camWidth, int camHeight) void StrobeAnalysis::setup(int camWidth, int camHeight)
{ {
DELTA_T_SAVE = 100;
NUM_RUN = 1; NUM_RUN = 1;
_strobe_cnt = 0; int acq_run_time = 20; // 20 seconds of acquiring per run
_strobe_cnt_max = 20; // 40 x 500 ms = 20000 ms = 20 seconds run time
_strobe_interval = 1500; //every 0.5seconds = 15 frames DELTA_T_SAVE = 10*acq_run_time/2; // for 20 seconds, we want this to be around 200 files
_frame_cnt_max = _strobe_cnt_max * _strobe_interval * ofGetFrameRate()/1000; // or 10 times per second = every 100 ms
_frame_cnt_max = acq_run_time*ofGetFrameRate(); // e.g.: 30 frames per second * 20 seconds = 600 frames
_strobe_interval = 1500; //every 1 seconds, or every thirty frames 30 frames
// The British Health and Safety Executive recommend that a net flash rate for a bank of strobe lights does not exceed 5 flashes per second, at which only 5% of photosensitive epileptics are at risk. It also recommends that no strobing effect continue for more than 30 seconds, due to the potential for discomfort and disorientation. // The British Health and Safety Executive recommend that a net flash rate for a bank of strobe lights does not exceed 5 flashes per second, at which only 5% of photosensitive epileptics are at risk. It also recommends that no strobing effect continue for more than 30 seconds, due to the potential for discomfort and disorientation.
create_dir(); create_dir();
int anim_time = 5; // 5 seconds for the animation
int anim_time = 10; // 10 seconds
_anim_cnt_max = anim_time*ofGetFrameRate(); // e.g.: 30 frames per second = 150 frames _anim_cnt_max = anim_time*ofGetFrameRate(); // e.g.: 30 frames per second = 150 frames
} }
@ -51,18 +53,22 @@ void StrobeAnalysis::acquire()
save_timer->start(save_callback); save_timer->start(save_callback);
_RUN_DONE = false; _RUN_DONE = false;
_frame_cnt = 0; _save_cnt = 0; _anim_cnt = 0; _frame_cnt = 0; _save_cnt = 0; _anim_cnt = 0; _strobe_cnt = 0;
while(!_RUN_DONE) while(!_RUN_DONE)
Thread::sleep(3); Thread::sleep(3);
save_timer->stop(); save_timer->stop();
_RUN_DONE = false;
} }
} }
void StrobeAnalysis::synthesise() void StrobeAnalysis::synthesise()
{ {
// _saved_filenames has all the file names of all the saved images // _saved_filenames has all the file names of all the saved images
while(!_RUN_DONE)
Thread::sleep(3);
} }
// this runs at frame rate = 33 ms for 30 FPS // this runs at frame rate = 33 ms for 30 FPS
@ -120,8 +126,8 @@ void StrobeAnalysis::draw()
ofDisableAlphaBlending(); ofDisableAlphaBlending();
} else { } else {
_state = STATE_SYNTHESISING; //_state = STATE_SYNTHESISING;
//_RUN_DONE = true; _RUN_DONE = true;
} }
_frame_cnt++; _frame_cnt++;
@ -201,7 +207,8 @@ void StrobeAnalysis::draw()
_anim_cnt++; _anim_cnt++;
} else { } else {
_state = STATE_DISPLAY_RESULTS; _RUN_DONE = true;
//_state = STATE_DISPLAY_RESULTS;
_anim_cnt=0; _anim_cnt=0;
} }
ofPopMatrix(); ofPopMatrix();

View File

@ -33,6 +33,6 @@ protected:
int _strobe_interval; int _strobe_interval;
bool _strobe_on; bool _strobe_on;
int _run_cnt, _save_cnt, _fade_cnt, _anim_cnt; int _run_cnt, _save_cnt, _anim_cnt;
float c, _frame_cnt, _frame_cnt_max, _anim_cnt_max; float c, _frame_cnt, _frame_cnt_max, _anim_cnt_max;
}; };