diff --git a/zoneb/addons.make b/zoneb/addons.make
index 87ad7a9..e634f29 100644
--- a/zoneb/addons.make
+++ b/zoneb/addons.make
@@ -1,4 +1,5 @@
ofxAzureKinect
ofxGpuParticles
+ofxGui
ofxV4L2
ofxShader
diff --git a/zoneb/bin/data/settings.xml b/zoneb/bin/data/settings.xml
new file mode 100644
index 0000000..4e77d2a
--- /dev/null
+++ b/zoneb/bin/data/settings.xml
@@ -0,0 +1,6 @@
+
+
+ -208, -257
+ 2
+ video3
+
diff --git a/zoneb/src/ofApp.cpp b/zoneb/src/ofApp.cpp
index d3092d2..6def3fc 100644
--- a/zoneb/src/ofApp.cpp
+++ b/zoneb/src/ofApp.cpp
@@ -39,7 +39,8 @@ void ofApp::setupThermal()
v4l2Cam.setDesiredFramerate(60);
// use this to set appropriate device and capture method
- v4l2Cam.initGrabber("/dev/video2", IO_METHOD_MMAP, camWidth, camHeight);
+ std::string dev = captureDeviceName;
+ v4l2Cam.initGrabber((std::string("/dev/") + dev).c_str(), IO_METHOD_MMAP, camWidth, camHeight);
// some initial settings
int set_gain = 2.0;
@@ -63,23 +64,8 @@ void ofApp::setupThermal()
}
}
-void ofApp::setup()
+void ofApp::setupParticles()
{
- // ofDisableArbTex();
- // ofSetVerticalSync(false);
- //ofSetLogLevel(OF_LOG_VERBOSE);
-
- setupKinect();
- setupThermal();
-
- boundShader.allocate(ofGetWidth(), ofGetHeight());
- boundShader.load("shaders/bound.frag");
-
- fbos.insert({"ofcam", ofFbo()});
- fbos.at("ofcam").allocate(ofGetWidth(), ofGetHeight(), GL_RGBA32F_ARB);
-
- gradient.load("gradient.jpg");
-
// 1,000,000 particles
unsigned w = 512;
unsigned h = 512;
@@ -130,6 +116,36 @@ void ofApp::setup()
ofAddListener(particles.drawEvent, this, &ofApp::onParticlesDraw);
}
+void ofApp::setupGui()
+{
+ gui.setup("ZONE B", "settings.xml"); // most of the time you don't need a name
+ gui.add(registrationXY.setup("XY", {-208, -257}, {-400, -400}, {400, 400}));
+ gui.add(registrationScale.setup("scale", 2.0, 0.1, 3));
+ gui.add(captureDeviceName.setup("device", "video3"));
+ gui.loadFromFile("settings.xml");
+}
+
+void ofApp::setup()
+{
+ // ofDisableArbTex();
+ // ofSetVerticalSync(false);
+ //ofSetLogLevel(OF_LOG_VERBOSE);
+
+ setupGui();
+ setupKinect();
+ setupThermal();
+
+ boundShader.allocate(ofGetWidth(), ofGetHeight());
+ boundShader.load("shaders/bound.frag");
+
+ fbos.insert({"ofcam", ofFbo()});
+ fbos.at("ofcam").allocate(ofGetWidth(), ofGetHeight(), GL_RGBA32F_ARB);
+
+ gradient.load("gradient.jpg");
+
+ setupParticles();
+}
+
void ofApp::exit()
{
kinectDevice.close();
@@ -150,8 +166,8 @@ void ofApp::updateThermal()
{
for (int j = 0; j < 512; j++)
{
- int x = j * 1.65 - 115;
- int y = i * 1.65 - 170;
+ int x = j * registrationScale + registrationXY->x;
+ int y = i * registrationScale + registrationXY->y;
if (ofInRange(x, 0, camWidth - 1) == false || ofInRange(y, 0, camHeight - 1) == false)
{
continue;
@@ -251,6 +267,7 @@ void ofApp::drawMain()
void ofApp::drawDebug()
{
+ gui.draw();
ofDrawBitmapStringHighlight(ofToString(ofGetFrameRate(), 2) + " FPS", 10, 20);
}
diff --git a/zoneb/src/ofApp.h b/zoneb/src/ofApp.h
index de4670c..6deda36 100644
--- a/zoneb/src/ofApp.h
+++ b/zoneb/src/ofApp.h
@@ -2,6 +2,8 @@
#include "ofMain.h"
+#include "ofxGui.h"
+
#include "ofxAzureKinect.h"
#include "ofxShaderFilter.h"
@@ -16,6 +18,8 @@ class ofApp
public:
void setupKinect();
void setupThermal();
+ void setupParticles();
+ void setupGui();
void setup();
void exit();
@@ -55,4 +59,9 @@ private:
ofxGpuParticles particles;
std::vector> hotspots;
+
+ ofxVec2Slider registrationXY;
+ ofxFloatSlider registrationScale;
+ ofxInputField captureDeviceName;
+ ofxPanel gui;
};