diff --git a/zoneb/bin/data/settings.xml b/zoneb/bin/data/settings.xml index 7b3eb0d..2f2ccc1 100644 --- a/zoneb/bin/data/settings.xml +++ b/zoneb/bin/data/settings.xml @@ -1,6 +1,6 @@ - -195.918, -220.408 + 36.7347, 8.16327 1.869 video3 diff --git a/zoneb/bin/data/shaders/bound.frag b/zoneb/bin/data/shaders/bound.frag index 00bd4e3..79c4db8 100644 --- a/zoneb/bin/data/shaders/bound.frag +++ b/zoneb/bin/data/shaders/bound.frag @@ -8,6 +8,10 @@ uniform sampler2DRect u_v4l2cam; uniform sampler2DRect u_buffer0; uniform sampler2DRect u_buffer1; +uniform bool u_calib; +uniform vec2 u_calibXY; +uniform float u_calibScale; + uniform vec2 u_resolution; uniform vec2 u_mouse; uniform float u_time; @@ -172,25 +176,17 @@ void main() { gl_FragColor = texture(u_buffer0, st); #else // Main Buffer - vec2 st2 = st + vec2(simplex3d_fractal(vec3(st/200,u_time/4)), simplex3d_fractal(vec3(u_time/4,st.ts/200))) * 40; - vec3 dispColor = vec3(0, 0, 0); - vec4 pointCloudColor = texture(u_ofcam, st); - - // float maxVal = 0; - // float minVal = 1; - // for (int i=0; i < 9; i++){ - // float tmp = texture(u_buffer1, st2 + offset[i]/2).r > 0.5 ? 1 : 0; - // maxVal = max(maxVal, tmp); - // minVal = min(minVal, tmp); - // } - - // if(maxVal - minVal >= 0.5) { - // dispColor.rgb = vec3(1); - // } - - // gl_FragColor = vec4(dispColor, 1.0); - // gl_FragColor.rgb += pointCloudColor.rgb; // not good - gl_FragColor = vec4(mix(vec3(0), pointCloudColor.rgb, pointCloudColor.a), 1.0); + if (u_calib) { + vec4 depth = texture(u_depth, st); + depth.r *= 100; + depth.a = 0; + vec4 v4l2 = texture(u_v4l2cam, st); + gl_FragColor = depth + v4l2; + } + else { + vec4 pointCloudColor = texture(u_ofcam, st); + gl_FragColor = vec4(mix(vec3(0), pointCloudColor.rgb, pointCloudColor.a), 1.0); + } #endif diff --git a/zoneb/bin/data/shaders/particles/draw.frag b/zoneb/bin/data/shaders/particles/draw.frag index 346fc48..9caabf1 100755 --- a/zoneb/bin/data/shaders/particles/draw.frag +++ b/zoneb/bin/data/shaders/particles/draw.frag @@ -102,7 +102,8 @@ void main() vec3 remapedColorW = texture(warm1, palette).xyz; vec3 remapedColorC = texture(cold2, palette).xyz; float d = 50; - float rate = smoothstep(500 - d, 500 + d, length(vPos.x - uHottest3d1.x) + simplex3d(vPos * vec3(0.001, 0.001, 0.1)) * 100); + float D = 400; + float rate = smoothstep(D - d, D + d, length(vPos.x - uHottest3d1.x) + simplex3d(vPos * vec3(0.001, 0.001, 0.1)) * 100); vec3 remapedColor = mix(remapedColorW, remapedColorC, rate); float alpha = max(0, 1 - pow(vAge,4)); diff --git a/zoneb/src/ofApp.cpp b/zoneb/src/ofApp.cpp index c979eec..732befa 100644 --- a/zoneb/src/ofApp.cpp +++ b/zoneb/src/ofApp.cpp @@ -130,6 +130,7 @@ void ofApp::setupGui() gui.setPosition(10, 10); debugGui.setup("DEBUG"); + debugGui.add(calibMode.setup("calib", false)); debugGui.add(dummyMode.setup("dummy", true)); // should be false debugGui.add(dummyXY.setup("XY", {256, 256}, {0, 0}, {511, 511})); // should be false debugGui.add(debugFps.setup("FPS", "0")); @@ -191,8 +192,8 @@ void ofApp::updateThermal() { for (int j = 0; j < 512; j++) { - int x = j * registrationScale + registrationXY->x; - int y = i * registrationScale + registrationXY->y; + int x = (j - 256) * registrationScale + 256 + registrationXY->x; + int y = (i - 256) * registrationScale + 256 + registrationXY->y; if (ofInRange(x, 0, camWidth - 1) == false || ofInRange(y, 0, camHeight - 1) == false) { continue; @@ -288,6 +289,9 @@ void ofApp::drawMain() boundShader.setUniformTexture("u_depth", tex); boundShader.setUniformTexture("u_ofcam", fbos.at("ofcam")); boundShader.setUniformTexture("u_v4l2cam", v4l2Tex); + boundShader.setUniform1i("u_calib", calibMode == true ? 1 : 0); + boundShader.setUniform2f("u_calibXY", registrationXY); + boundShader.setUniform1f("u_calibScale", registrationScale); boundShader.setUniform1i("u_init", 1); boundShader.render(); boundShader.setUniform1i("u_init", 0); diff --git a/zoneb/src/ofApp.h b/zoneb/src/ofApp.h index 0109791..c71f059 100644 --- a/zoneb/src/ofApp.h +++ b/zoneb/src/ofApp.h @@ -68,6 +68,7 @@ private: ofxInputField captureDeviceName; ofxPanel gui; + ofxToggle calibMode; ofxToggle dummyMode; ofxVec2Slider dummyXY; ofxLabel debugFps;