boundary on point cloud (weirdly chopped from last commit)
This commit is contained in:
parent
8adda60cab
commit
6de7bb89a2
3 changed files with 29 additions and 16 deletions
|
@ -3,6 +3,7 @@ precision mediump float;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D u_depth;
|
uniform sampler2D u_depth;
|
||||||
|
uniform sampler2D u_ofcam;
|
||||||
uniform sampler2D u_buffer0;
|
uniform sampler2D u_buffer0;
|
||||||
uniform sampler2D u_buffer1;
|
uniform sampler2D u_buffer1;
|
||||||
|
|
||||||
|
@ -16,7 +17,7 @@ varying vec2 v_texcoord;
|
||||||
|
|
||||||
float depthToSilhouette(float depth) {
|
float depthToSilhouette(float depth) {
|
||||||
if(depth < 0.005) return 0;
|
if(depth < 0.005) return 0;
|
||||||
if(depth > 0.1) return 0;
|
// if(depth > 0.1) return 0;
|
||||||
else return 1;
|
else return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +48,8 @@ void main() {
|
||||||
// BUFFER_1 (u_buffer1)
|
// BUFFER_1 (u_buffer1)
|
||||||
vec4 color = vec4(0,0,0,1);
|
vec4 color = vec4(0,0,0,1);
|
||||||
if(u_init) {
|
if(u_init) {
|
||||||
float tmp = texture2D(u_depth, st).r;
|
vec3 tmpc = texture2D(u_ofcam, st).rgb;
|
||||||
|
float tmp = tmpc.r + tmpc.g + tmpc.b;
|
||||||
color.rgb = vec3(depthToSilhouette(tmp));
|
color.rgb = vec3(depthToSilhouette(tmp));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -84,9 +86,9 @@ void main() {
|
||||||
#else
|
#else
|
||||||
// Main Buffer
|
// Main Buffer
|
||||||
float buf1 = texture2D(u_buffer1, st).r;
|
float buf1 = texture2D(u_buffer1, st).r;
|
||||||
vec3 dispColor = vec3(0, 0, 1);
|
vec3 dispColor = vec3(0, 0, 0);
|
||||||
dispColor.rgb = vec3(depthToSilhouette(texture2D(u_depth, st).r));
|
vec4 pointCloudColor = texture2D(u_ofcam, st);
|
||||||
|
|
||||||
float maxVal = buf1;
|
float maxVal = buf1;
|
||||||
float minVal = buf1;
|
float minVal = buf1;
|
||||||
for (int i=0; i < 9; i++){
|
for (int i=0; i < 9; i++){
|
||||||
|
@ -101,6 +103,8 @@ void main() {
|
||||||
|
|
||||||
// dispColor.rgb = vec3(depthToSilhouette(texture2D(u_depth, st/u_resolution).r));
|
// dispColor.rgb = vec3(depthToSilhouette(texture2D(u_depth, st/u_resolution).r));
|
||||||
gl_FragColor = vec4(dispColor, 1.0);
|
gl_FragColor = vec4(dispColor, 1.0);
|
||||||
|
gl_FragColor += pointCloudColor; // not good
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
|
@ -40,6 +40,9 @@ void ofApp::setup()
|
||||||
|
|
||||||
boundShader.allocate(ofGetWidth(), ofGetHeight());
|
boundShader.allocate(ofGetWidth(), ofGetHeight());
|
||||||
boundShader.load("shaders/bound.frag");
|
boundShader.load("shaders/bound.frag");
|
||||||
|
|
||||||
|
fbos.insert({"ofcam", ofFbo()});
|
||||||
|
fbos.at("ofcam").allocate(ofGetWidth(), ofGetHeight(), GL_RGB32F_ARB);
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
|
@ -60,17 +63,8 @@ void ofApp::draw()
|
||||||
|
|
||||||
if (kinectDevice.isStreaming())
|
if (kinectDevice.isStreaming())
|
||||||
{
|
{
|
||||||
ofDisableDepthTest();
|
fbos.at("ofcam").begin();
|
||||||
auto tex = kinectDevice.getDepthTex();
|
ofClear(0);
|
||||||
boundShader.setUniformTexture("u_depth", tex);
|
|
||||||
boundShader.setUniform1i("u_init", 1);
|
|
||||||
boundShader.render();
|
|
||||||
boundShader.setUniform1i("u_init", 0);
|
|
||||||
for (int i = 0; i < 60; i++) {
|
|
||||||
boundShader.render();
|
|
||||||
}
|
|
||||||
boundShader.draw(0, 0);
|
|
||||||
|
|
||||||
cam.begin();
|
cam.begin();
|
||||||
ofEnableDepthTest();
|
ofEnableDepthTest();
|
||||||
|
|
||||||
|
@ -107,6 +101,19 @@ void ofApp::draw()
|
||||||
shader.end();
|
shader.end();
|
||||||
ofPopMatrix();
|
ofPopMatrix();
|
||||||
cam.end();
|
cam.end();
|
||||||
|
fbos.at("ofcam").end();
|
||||||
|
|
||||||
|
ofDisableDepthTest();
|
||||||
|
auto tex = kinectDevice.getDepthTex();
|
||||||
|
boundShader.setUniformTexture("u_depth", tex);
|
||||||
|
boundShader.setUniformTexture("u_ofcam", fbos.at("ofcam"));
|
||||||
|
boundShader.setUniform1i("u_init", 1);
|
||||||
|
boundShader.render();
|
||||||
|
boundShader.setUniform1i("u_init", 0);
|
||||||
|
for (int i = 0; i < 60; i++) {
|
||||||
|
boundShader.render();
|
||||||
|
}
|
||||||
|
boundShader.draw(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
ofDrawBitmapStringHighlight(ofToString(ofGetFrameRate(), 2) + " FPS", 10, 20);
|
ofDrawBitmapStringHighlight(ofToString(ofGetFrameRate(), 2) + " FPS", 10, 20);
|
||||||
|
|
|
@ -34,6 +34,8 @@ private:
|
||||||
ofxShader shader;
|
ofxShader shader;
|
||||||
ofxShaderFilter boundShader;
|
ofxShaderFilter boundShader;
|
||||||
|
|
||||||
|
std::map<string, ofFbo> fbos;
|
||||||
|
|
||||||
float pointSize;
|
float pointSize;
|
||||||
bool useColorSpace;
|
bool useColorSpace;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue