Category Archives: NextGen experimentation

Phil 5.29.14

8:00 – 6:00 SR

  • DB Backups
  • Deploy
  • JavaScript
    • Add dClock clamp so physics doesn’t go crazy (0.5?).
    • Change emmisive properties and add point light source for selected items. Done
    • Worked on tootips a bunch
    • Added brushing
    • Need to add global lights back in as an option

Phil 5.27.14

8:00 – 5:00

  • DB Backups
  • Deploying new RQ and FA
  • Working on the hours spreadsheet
  • JavaScript
    • Adding connecting lines that track target objects.
    • Added in forces. Everything appears to be working and the math is fast. Need to add anchor math. Nicely, if all the objects are in the same (z, in this case) plane, they form a saddle point that keeps everything in the plane.
    • Need to add anchor math tomorrow.

Phil 5.23.14

8:00 – 4:30 SR

  • Dong’s off today
  • DB Backups
  • JavaScript
    • Try adding object3d config argument to WebGLComponent that allows for custom objects and prevents the creation of the default cube. Done. Much cleaner, actually. Deleting a bunch of configurations. Done
    • Cleaned out the entire initModel() function from WebGLNetworkComponent.
    • Trying reflection maps in Ortho2 – works!
    • In the ortho2 view I am having some performance bottlenecking due to garbage collection I think. Looking at the chrome tools as a way of determining a good way to fix that. StackOverflow suggests this article: http://zetafleet.com/blog/google-chromes-heap-profiler-and-memory-timeline
    • Started to add physics capability to WebGLNetworkComponent from PhysicsShape.

Phil 5.22.14

8:00 – 5:00 SR

  • Traffic was terrible today. Wonder what happened.
  • DB Backups
  • Updated viztool hours.
  • JavaScript
    • Moving dprint entirely to the WebGLCanvas
    • Extending WebGLCanvas to WebGLNetworkCanvas. Interesting. It turns out that you have to have the path to the module declared in the YUI({/*declare path to parent info here*/}).use(/*but parent doesn’t have to be here*/, function(Y){});  section of the root page. Done.
    • Extending WebGLComponent to WebGLNetworkComponent – done!
    • Changed the typestring to be a read-only attribute.
    • After changing the shapes in the extended WebGLNetworkComponent to spheres, I discovered that the reflections had been getting rendered wrong. I went back to the source material and found this example, and reworked the canvas and component base classes. THis means that we don’t get intra-object reflections, but that should speed up performance anyway. Since the skybox is actually rendered now in another THREE.Scene, I can now render reflections independently of the skybox.
    • Needed to get rid of the “skinnable” part of the WebGLNetworkCanvas and the associated css files to make it so that the 3D scene could be rendered over the HTML image background.

Phil 5.21.14

8:00 – 5:00 SR

  • get a new libeay32.dll for the servers. Actually, I fixed it from a newer version of xampp that failed to install correctly. Since we’re not using Apache anyway, this is kind of pro-forma.
  • Deployed new FA
  • Worked up the viztool task hours. So far with 3 of the 16 tasks complete, we spend 20% on-site, 35% directed to tasks not on the list, and 45% on listed tasks. No hours from don on several days though (and no log on 5-15), so this is tentative.
  • WebGL
    • Integrating lines into WebGLComponent – done. Can’t make dashed lines though…
    • Looking at the YUI ShapeManager module from before, and I just realized that things would probably be better if it could extend the current WebGLCanvas. So I’m adding the private local variables to the prototype. Done

Phil 5.15.14

8:00 – 4:00 SR

  • DB backups
  • Saving queries in query builder should be managed in roles. Publishing should only be Admin
  • Monthly status report dropdown should be disabled
  • financial status data in role management isn’t allowing people to open projects from “Project Management” panel
  • Wrote up a SR justification for Brad.
  • JavaScript
    • Add optional font, color and size for canvas2d labels, since they seem to be *way* faster. Done.
    • Fix registration on tooltips/html labels WRT parent div – done
    • Next is to do some varying lines so that we can connect the shapes. Come to think of it, it’s kind of nice that we have world position for everything….

Phil 5.14.14

8:00 – 4:30 SR

  • DB Backups
  • JavaScript/WebGL
    • Starting on tooltips.
    • Extended draw2D for each WebGLComponent that calculates the screenXY for the 3D object origin. Added a behavior2D to handle things like HUDS.
    • Got HTML overlays tracking as well, though they are not taking into accordance the parent’s position.
    • Overlay labels really chew up CPU. Use the Canvas2D labels by default, I think….

Phil 5.13.14

8:00 – 5:00 SR

  • site 8:00 –
  • DB backups
  • Fixed a post-process query by changing null to zero
  • re-ran the charts. 2014 data looks much better.
  • Fix Querybuilder –
    • obligation_goal_percent
    • dropdown is not showing current month.
  • Add RQ(?) rule to ignore obligations where the only difference is the date. Add appropriations to missing columns or data or so, um. we can map it later.
  • Javascript
    • Adding matrix (or maybe a whole object3d?) for the local geometric frame. Object would be easier if you don’t have to add it to the scene to get the correct matrix information structure.

Phil 5.12.14

8:00 – 5:30 SR

  • 8:00 – 11:00 on site
  • DB backups
  • Deployed new RQ
  • Went over the time estimates with Lenny. The upshot is that we will track actual hours worked on the line items.
  • Fix the requisition_id AS funded_budget in __view_monthly_obligations_by_req_id error.
  • I think I may have found the issue that’s keeping the new object from setting the values that are actually used to draw?
    • It’s possible that the matrix is being reset after the update function, with the setPosition calls overriding the matrix.
    • This thread shows how to get position and orientation from the 4×4: http://stackoverflow.com/questions/15079294/inverse-of-object3d-updatematrix-in-three-js
    • Finally figured out the problem. I have the matrix that is in GLOBAL space. I need a matrix that is in local space that I can then multiply by the parent’s matrix. That should work. And it did! Need to verify that stacked objects will behave.
    • They do – after a fashion. The scale information is embedded in the matrix and is applies to all children. Somehow, this is messing with the scale if it is mixed with a rotation. Is it possible matrix.decompose is broken?
    • Well, kind of. From Euler.js setFromRotationMatrix(): // assumes the upper 3×3 of m is a pure rotation matrix (i.e, unscaled). So don’t scale on the transform matrix. Instead, scale the position of the points that make up the object in the local space. This means I may have to look at immediate mode or at least see how the geometry is stored in the object. Or only scale the objects that are the leaf nodes in a tree. That should actually be OK for charts.
  • Starting tooltips and text overlays: http://stackoverflow.com/questions/11586527/converting-world-coordinates-to-screen-coordinates-in-three-js-using-projection. Also example 6-3 from the webgl book (pg 115).
  • Got Hello, World rendered over the two canvases, styled and everything :-).

Phil 5.9.14

7:30 – 5:00 SR

  • DB backups
  • Deploying new Reqonciler
  • Created svn-based stats on development for productivity discussions with Chris. Also generated stats for 2013 for review.
  • Look into picking and reflection map issues. I think the picking problem is that the search does not recurse down the sub-model branch, though the THREE model info is there (Also need to make sure that the model reference is added to user data and that it’s accessible). The reflection is hopefully tied to the recalculation of the reflection camera position that was commented out in the draw function while I was still chasing down the “too much recursion” error.
  • Nope, neither solution worked. I’m thinking that I can have parents/child relations based on just WebGLComponenets. Update sets the positions based on the parent’s model matrix, but the actual object3D hierarchy is flat. That should fix both problems.
    • WebGLCanvas.addModel will also set a WebGLCanvas reference attribute in the WebGLComponent. The component will then look to see if it has any children and also set their canvas if it’s not null. If the canvas is null, then the child will add its object3d to the canvas’ scene
    • Calling addModel on a WebGLComponent will cause the child to add its object3d to the canvas’ scene if the scene is not null.

Phil 5.8.14

8:00 – 2:00 SR

  • DB backups
  • Walked through the outlay problem with Dong and Lenny
  • Worked out estimates for new VizTool requirements. It comes up to 500-1,000 hours of work.
  • Showed dong the new YUI architecture. The switch to direct function declaration seems to have had a good effect on how I expect closure to work, so I’m happy.
  • Adding hierarchical model capability to WebGLComponent. Nope, picking isn’t working in 2D. Need to fix that first. Ok, fixed.
  • Added hierarchy. There is some funny stuff that’s going on WRT data being shared across instances. Local variables (inside the  YUI.add({}) scope are definitely shared. I was expecting that. But it also appears that variables created in the Y.Base.create() scope are also shared. I ran into this problem when I was adding the models array to WebGLComponent. The way around it was to add to the ATTRS: {} object. That’s ok, but I’m still confused…
  • Also, picking and reflection maps don’t work on sub-objects.
  • Oh yeah, and for reference, this is the kind of charts I want to start trying to draw next week:

Phil 5.7.14

8:00 – 5:00 SR

  • DB Backups
  • Fix __view_monthly_obligations_by_contract so that requisition_id’s with different po_reference show up in “unclaimed”
  • Fix funded_budget to requisition id on two views.
  • Refactoring!
  • Change the this.set() functions (or at least the strings) to variables (i.e _ATTR_FOO = ‘foo’); possibly using a factory pattern? (from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures). Yep, that worked just fine.
function makeAdder(x) {
  return function(y) {
    return x + y;
  };
}

var add5 = makeAdder(5);
var add10 = makeAdder(10);

console.log(add5(2));  // 7
console.log(add10(2)); // 12
  • Try moving function declarations below prototype and removing predefinitions.
  • Add skybox argument
  • Everything is pretty much completely refactored. I think this is more clear and less error-prone. It looks exactly the same, but is remarkably different under the skin.
  • Next is hierarchical models.

Phil 5.6.14

9:00 – 5:00 SR

  • Db backups
  • Updated Java on the servers
  • Installed Dong’s new views. Lenny’s testing. There are some issues that he’s noting in an email. It appears that all the old data that were deleted are back, but none of the new data is visible.
  • Edit task list to provide hours.
  • More picking
    • Unitizing the mouse position worked
    • Changing userData to a pointer to the model and using the name field.
    • Done. That was not too bad!
  • Adding reflection maps
    • Added skybox to canvas
    • Added reflections. Going to try for a shiny textured earth tomorrow, then maybe some dragging?

yuiWebGl

Today’s progress.

Phil 5.1.14

8:00 – 5:00 SR

  • DB backups
  • Deployed the rest of RQ
  • Status Report!
  • Some weird problem where Dong’s code is (possibly) throwing an exception while reading properties. Maybe put some command-line diagnostics in the main?
  • JavaScript
    • Show/hide stage – done
    • Ortho2 – done
    • Reflection maps
    • Simple physics
    • Model loading

yuiWebGl

Today’s fun