Monthly Archives: February 2012

Mike 2.29.2011

  • Usual server and database back up in the morning
  • Reproduced the server environment on my local machine at site, ended up getting the same errors, so I will at least have a better working environment than on the ‘production’ system
  • Attempted installing a working version of Visibility from Jeff’s sever, same issue
  • Contacted Jim and Tangie regarding internal testing of our tool, waiting to hear back
  • Contacted the software people regarding my request for Flash Builder, would be very handy right now
  • Went back to the office to rebuild my connection tester using different libraries
  • Also packing up other parts of my Tomcat Install to bring: crossdomain.xml, etc.
  • ISP PMO Symposium, 1300-1500

Phil 2.29.12

8:30 – 11:00, 12:30 – 3:00 VISIBILITY

  • Worked on getting Data Visualization working
  • ISR/PMO meeting from 1:00 – 3:00

11:00 – 12:30, 3:00 – 5:00 FP

  • Working on multiple rendering surfaces. For the trivial case, I’m going to try to take the blurred image and invert the colors.
  • Added definition of the vertex and fragment shaders in the ScreenRepaint class, since it’s pretty generic.
  • Took screen rendering out of the Gl_ShaderWindow base class and added two instances to the GeoTestShaderWindow. Everything works just as it should.
  • Meeting at UMBC on surface displays, journals and other things. Looks like I’m on a team to build a “Surface-style” interface for the visually impaired. Meetings are every Wednesday at 4:30

Phil 2.28.12

10:00 – 4:30 FP

  • The surgeon has declared me healed, and bid me to go forth and play hard.
  • And now that I’ve gotten the screen aligned rendering working, I can get back to the book.
  • Working on adding multiple, sequential rendering surfaces.

Tom DeVito 2.28.2012

Start: 10:00

  • Took inventory of what slots I will need to make the circuit boards.

end 12:30

Dentist Appointment : 12:30 – 2:00

Start: 2:00

  • Finished all the methods for sound control in the controller class
  • Started working on the command execution method.

end: 6:00

 

Mike 2.28.2012

  • Did the normal database backup this morning
  • Deployed a test client application to test remote object connectivity for Visibility on the client server
    • It reads all properties for the properties file just fine
    • It does NOT produce any errors while attempting to connect to the remote object, however it does not succeed either
    • There no errors indicating anything went wrong in any log files anywhere
  • Responded to several emails concerning the server going down yesterday
    • Apparently as soon as I submitted a ticket it was restarted which is what fixed the issue
    • The tech sent me an email at 9:40 when the server came up, my email server received the email two hours later…
  • Back at the office I tried debugging several items to figure out why Visibility is failing on the inside
  • Dong built a version of visibility which I will take back to try and debug
  • I will also try stopping and restarting the Tomcat server
  • Went back to site and tested the fixes, they did not help

Mike 2.27.2011

  • Imported a fresh build of Visibility
  • The server was down when I got to the customer site this morning.  I contacted someone who Phil suggested as well as the EDC support center.  The system came back up around 9:40 AM without word from anyone.
  • Deployed the new visibility, still not able to log in with the data navigator or the account managers tools.
  • Reviewed required server updates from Denise.  Tried to apply several but got errors.  Asked Denise who to contact.
  • Tried to listen to the FGM all hands meeting recording, doesn’t appear to be uploaded correctly
  • Created a debugging application to try and figure out why visibility isn’t working at site
  • Working on a “Home” page for the vis tool which will act as a launchpad for PPM, PPA, and the data visualizations

Phil 2.27.12

8:30 – 5:30 FP

  • Try moving the screenDraw code to a DrawableObject class
  • 10:00 – 1:00 Seminar
  • Got the ScreenRepaint class (extending DrawableObject) working. The Gl_ShaderWindow class is now back to being manageably small.

Tom DeVito 2.24.2012

Start: 10:00

  • Working on the controllers for gathering sensor data and sound controls
  • Made some changes to the base classes for sound control so that they accepted value between 0-255
  • Made some more minor changes to the the Amp and Midi classes to make execution of commands easier.
  • Decided on a naming scheme for variables in the DataDiction.  The finger name underscore property(ex. thumb_vol is thumb volume)
  • My friend Chris came by to make a car which turns and travels north.  He was using a compass IC which communicated to the Arduino using I2c.
  • I found out that it is a good thing I have not updated the arduino IDE yet.  There were changes made which would break my code.  I will have to update this eventually but I want to get everything working first.
  • atan2(y, x) will find the angle in radians from the origin.  This method automatically fixes it to work past 90 degrees.
  • I used my com classes and console to print out the data to help him test the compass.  Simply dropped it in and set a toString on his class.
  • We were able to get his robot to work.  I’ll show you the video tomorrow.

End: 6:00

Phil 2.24.12

8:30 – FP

  • I think I found GLSL documentation! http://www.opengl.org/sdk/docs/manglsl/
  • A working convolution filter that blurs anything above a certain luminance:
  • #version 150
    // glow.fs
    // outputs the color negative of a texture
    //
    
    in vec2 vTexCoord;
    
    uniform int screenWidth;
    uniform int screenHeight;
    
    uniform sampler2D textureUnit0;
    
    vec4 getTexOffset(const sampler2D texUnit, const vec2 texCoord, const float dx, const float dy){
    	vec2 offset = texCoord + vec2(dx, dy);
    	return texture(textureUnit0, offset);
    }
    
    void main(void)
    {
    	float dx = 1.0 / float(screenWidth);
    	float dy = 1.0 / float (screenHeight);
    
    	float x;
    	float y;
    	vec4 blurSum = vec4(0, 0, 0, 0);
    	float patchSize = 4.0;
    	float xmin = -patchSize*dx;
    	float xmax = patchSize*dx+dx*0.5;
    	float ymin = -patchSize*dy;
    	float ymax = patchSize*dy+dx*0.5;
    	float count = 0;
    
    	for(x = xmin; x < xmax; x += dx){
    		for(y = ymin; y < ymax; y += dy){
     			blurSum += getTexOffset(textureUnit1, vTexCoord, x, y);
     			if(count > 1000){
    				discard;
    			}
    			count += 1.0;
    		}
    	}
    	float weight = 1.0/count;
    	vec4 blured = vec4(blurSum.r*weight, blurSum.g*weight, blurSum.b*weight, 1.0);
    	vec4 sharp = texture(textureUnit0, vTexCoord);
    
    	float luminance = blured.r + blured.g + blured.b;
    	if(luminance > 1.0){
    		gl_FragColor = blured;
    	}else{
    		gl_FragColor = sharp;
    	}
    }
  • And here’s the picture it produces. Note the sharp moon and gridlines with the blurry sun 🙂
  • Next on the hit parade, add a test to see if the corners of the convolution filter touch anything above the luminance threshold and discard if it doesn’t. My guess is that should speed up things a lot. Done. Discovered that there are some odd problems that crop up as the screen gets made quite large. This could have something to do with the fact that I’m not checking to see that the convolution patch’s coordinates can run off the texture (i.e not clamped between 0.0 and 1.0)?
  • Migrate the screen drawing to a DrawableObject class. I’m pretty sure it should work there, as long as it’s called after postDraw3D(). In fact, it should be possible to have multiple screen drawing classes, though I’m not sure why.
  • Add shader directory to svn repo – done
  • And it appears that after a while, something is clogging the graphics pipeline, because the drawing slows way done. This does look like it’s due to the shader, as the neg.fs doesn’t seem to be slowing things down. Yep,  adding clamping to the glow.fs shader fixed that problem. Still have the problem where the screen texture gets messed up if the window gets too big…
  • So here’s the better version of the fragment shader
  • #version 150
    // glow.fs
    // outputs the color negative of a texture
    //
    
    in vec2 vTexCoord;
    
    uniform int screenWidth;
    uniform int screenHeight;
    
    uniform sampler2D textureUnit0;
    
    void luminanceTest(const sampler2D texUnit, const vec2 texCoord, const float xmin, const float xmax, const float ymin, const float ymax, const float luminance){
    	vec2 ll = clamp(texCoord + vec2(xmin, ymin), 0.0, 1.0);
    	vec2 lr = clamp(texCoord + vec2(xmax, ymin), 0.0, 1.0);
    	vec2 ur = clamp(texCoord + vec2(xmax, ymax), 0.0, 1.0);
    	vec2 ul = clamp(texCoord + vec2(xmin, ymax), 0.0, 1.0);
    
    	vec4 total = texture(texUnit, ll);
    	total += texture(texUnit, lr);
    	total += texture(texUnit, ur);
    	total += texture(texUnit, ul);
    
    	float weight = 1.0/4.0;
    	float val = (total.r + total.g + total.b)*weight;
    	if(val < luminance){
    		discard;
    	}
    }
    
    vec4 getTexOffset(const sampler2D texUnit, const vec2 texCoord, const float dx, const float dy){
    	vec2 offset = texCoord + vec2(dx, dy);
    	clamp(offset, 0.0, 1.0);
    	return texture(texUnit, offset);
    }
    
    void main(void)
    {
    	float dx = 1.0 / float(screenWidth);
    	float dy = 1.0 / float (screenHeight);
    
    	float x;
    	float y;
    	vec4 blurSum = vec4(0, 0, 0, 0);
    	float patchSize = 4.0;
    	float xmin = -patchSize*dx;
    	float xmax = patchSize*dx+dx*0.5;
    	float ymin = -patchSize*dy;
    	float ymax = patchSize*dy+dx*0.5;
    	float count = 0;
    
    	luminanceTest(textureUnit0, vTexCoord, xmin, xmax, ymin, ymax, 1.0);
    
    	for(x = xmin; x < xmax; x += dx){
    		for(y = ymin; y < ymax; y += dy){
     			blurSum += getTexOffset(textureUnit0, vTexCoord, x, y);
     			if(count > 1000){
    				discard;
    			}
    			count += 1.0;
    		}
    	}
    	vec4 sharp = texture(textureUnit0, vTexCoord);
    	float weight = 1.0/count;
    	vec4 blured = vec4(blurSum.r*weight, blurSum.g*weight, blurSum.b*weight, sharp.a);
    
    	float luminance = blured.r + blured.g + blured.b;
    	if(luminance > 1.0){
    		gl_FragColor = blured;
    	}else{
    		gl_FragColor = sharp;
    	}
    }

Mike 2.24.2012

  • Normal database backup and connectivity testing
  • Brought in a version of Visibility and Visibility Scripting
  • Reviewed some of the required updates from Denise
  • Worked with Dong to try and deploy Visibility and Visibility Scripting
    • Visibility Scripting is working after fixing some errors in the properties file
    • Visibility doesn’t seem to be correctly reading the properties file, not sure what they error is but the swf is from July 2011 so I will try building a new one and bringing that one in
  • Rebuilt IngestManager and AccountManagers
  • Attempting to Build PPM and PA:
    • Project Assistant built fine and I imported Dong’s database of fake data
    • PPM is having remote object problems