Changeset 19729


Ignore:
Timestamp:
11/17/15 08:45:56 (9 years ago)
Author:
dlcheng
Message:

CHG:Fixing drawing methods and zoom behavior for test101.html

Location:
issm/trunk-jpl/src/m/plot
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/plot/plot_unit.js

    r19728 r19729  
    2121                loadShaders(gl);
    2222                var node=loadModel(gl,x,y,z,elements,data);
    23                 drawSceneGraphNode(gl,node);
    24         }
     23                draw(gl,canvas,node);}
    2524
    2625        switch(datatype){
  • issm/trunk-jpl/src/m/plot/webgl.js

    r19728 r19729  
    3232
    3333        // Add context state variables
    34         //gl.zoomFactor = 1.0;
    35         //gl.cameraMatrix = mat4.create();
     34        canvas.zoomFactor = -1.0;
     35        canvas.cameraMatrix = mat4.create();
    3636
    3737        // Add event listeners for canvas
    3838        if (canvas.addEventListener) {
    3939                // IE9, Chrome, Safari, Opera
    40                 canvas.addEventListener("mousewheel", function (e) {MouseWheelHandler(e,gl)}, false);
     40                canvas.addEventListener("mousewheel", function (e) {MouseWheelHandler(e,canvas)}, false);
    4141                // Firefox
    42                 canvas.addEventListener("DOMMouseScroll", function (e) {MouseWheelHandler(e,gl)}, false);
     42                canvas.addEventListener("DOMMouseScroll", function (e) {MouseWheelHandler(e,canvas)}, false);
    4343                // Mobile
    4444                //canvas.addEventListener("gesturechange", MousePinchHandler, false);
     
    286286//}}}
    287287//{{{ Interface Functions
    288 function MouseWheelHandler(e,gl) { //{{{
     288function MouseWheelHandler(e,canvas) { //{{{
    289289        // prevent scrolling when over canvas
    290290        e.preventDefault();
    291         var delta = clamp((e.wheelDelta || -e.detail), -1, 1);
    292         //gl.zoomFactor = gl.zoomFactor + delta;
    293         updateCameraMatrix(gl);
     291        var delta = 1/10 * clamp((e.wheelDelta || -e.detail), -1, 1);
     292        canvas.zoomFactor = canvas.zoomFactor + -delta * canvas.zoomFactor;
    294293} //}}}
    295294//}}}
    296295//{{{ Drawing Functions
    297 function updateCameraMatrix(gl) { //{{{
     296function updateCameraMatrix(canvas) { //{{{
    298297        //Update view matrix and multiply with projection matrix to get the view-projection (camera) matrix.
    299298        var vMatrix = mat4.create();
    300299        var pMatrix = mat4.create();
    301300
    302         mat4.perspective(pMatrix, 45 * Math.PI / 180, gl.canvas.width / gl.canvas.height, 0.001, 10000.0);
    303 
    304         var scaleMatrix= mat4.create();
    305         mat4.scale(scaleMatrix, scaleMatrix, [1/100000000000000, 1/100000000000000, 1/100000000000000]);       
    306         mat4.multiply(vMatrix, scaleMatrix, vMatrix);
     301        mat4.perspective(pMatrix, 90 * Math.PI / 180, canvas.width / canvas.height, 0.001, 10000.0);
    307302
    308303        //Apply screenspace relative translation
    309304        var translateMatrix = mat4.create();
    310         mat4.translate(translateMatrix, translateMatrix, [0.0, 0.0, gl.zoomFactor]);
     305        mat4.translate(translateMatrix, translateMatrix, [0.0, 0.0, canvas.zoomFactor]);
    311306        mat4.multiply(vMatrix, translateMatrix, vMatrix);
    312307
    313308        //Apply projection matrix to get camera matrix
    314         mat4.multiply(gl.cameraMatrix, pMatrix, vMatrix);
     309        mat4.multiply(canvas.cameraMatrix, pMatrix, vMatrix);
     310//      canvas.cameraMatrix = mat4.create();
    315311}//}}}
    316 function drawSceneGraphNode(gl,node) { //{{{
     312function drawSceneGraphNode(gl,canvas,node) { //{{{
    317313        bindAttributes(gl, node["shader"], node["buffers"]);
    318314        var mvpMatrix = mat4.create();
    319         var cameraMatrix = mat4.create();
    320         //var cameraMatrix = gl.cameraMatrix;
    321315        if (node["useOrthographic"] == true) {
    322316                mat4.ortho(mvpMatrix, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
    323317        }
    324318        else {
    325                 mat4.multiply(mvpMatrix, cameraMatrix, node["modelMatrix"]);
     319                mat4.multiply(mvpMatrix, canvas.cameraMatrix, node["modelMatrix"]);
    326320        }
    327321        gl.uniformMatrix4fv(node["shader"]["uMVPMatrix"], false, mvpMatrix);
     
    334328                gl.drawArrays(node["drawMode"], 0, node["buffers"][0].numItems);
    335329        }       
    336         gl.enable(gl.DEPTH_TEST);
    337         gl.disable(gl.CULL_FACE);
    338330} //}}}
    339331function bindAttributes(gl,shaderProgram,bufferArray) { //{{{
     
    350342        }
    351343} //}}}
     344function draw(gl,canvas,node) { //{{{
     345        window.requestAnimationFrame(function(time) {draw(gl,canvas,node)});
     346        gl.viewport(0, 0, canvas.width, canvas.height);
     347        gl.clearColor(0.0, 0.0, 0.0, 1.0);     
     348        gl.clear(gl.COLOR_BUFFER_BIT);
     349        updateCameraMatrix(canvas);
     350       
     351        drawSceneGraphNode(gl, canvas, node);
     352} //}}}
    352353//}}}
Note: See TracChangeset for help on using the changeset viewer.