Changeset 19915
- Timestamp:
- 12/28/15 21:32:43 (9 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/plot/plot_mesh.js
r19912 r19915 44 44 node["shaderName"] = "colored"; 45 45 node["shader"] = gl["shaders"][node["shaderName"]]["program"]; 46 node["scale"] = [scale, scale, scale ];46 node["scale"] = [scale, scale, scale*options.getfieldvalue('heightscale',1)]; 47 47 node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (-2 / scale)]; 48 48 node["modelMatrix"] = recalculateModelMatrix(node); -
issm/trunk-jpl/src/m/plot/plot_overlay.js
r19914 r19915 48 48 node["shaderName"] = "unlit_textured"; 49 49 node["shader"] = gl["shaders"][node["shaderName"]]["program"]; 50 node["scale"] = [scale, scale, scale ];50 node["scale"] = [scale, scale, scale*options.getfieldvalue('heightscale',1)]; 51 51 node["rotation"] = options.getfieldvalue('view',[0,0,0]); 52 52 node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmax) / (-1 / scale)]; -
issm/trunk-jpl/src/m/plot/plot_unit.js
r19912 r19915 55 55 node["shaderName"] = "unlit_textured"; 56 56 node["shader"] = gl["shaders"][node["shaderName"]]["program"]; 57 node["scale"] = [scale, scale, scale ];57 node["scale"] = [scale, scale, scale*options.getfieldvalue('heightscale',1)]; 58 58 node["rotation"] = options.getfieldvalue('view',[0,0,0]); 59 59 node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmax) / (-1 / scale)]; -
issm/trunk-jpl/src/m/plot/webgl.js
r19912 r19915 37 37 canvas.cameraMatrix = mat4.create(); 38 38 canvas.translation = [0,0]; 39 canvas.rotation = [0,0,0]; 39 40 canvas.controlsensitivity = 1; 40 41 41 42 // Add event listeners for canvas 42 if (canvas.addEventListener) { 43 // IE9, Chrome, Safari, Opera 44 canvas.addEventListener("mousewheel", function (e) {handleZoom(e,canvas)}, false); 45 // Firefox 46 canvas.addEventListener("DOMMouseScroll", function (e) {handleZoom(e,canvas)}, false); 47 // Mobile 48 canvas.addEventListener("gesturechange", handleZoom, false); 49 } 50 43 canvas.addEventListener("mousewheel", function (ev) {onZoom(ev,canvas)}, false); 44 canvas.addEventListener("DOMMouseScroll", function (ev) {onZoom(ev,canvas)}, false); 45 46 var mc = new Hammer.Manager(canvas); 47 48 mc.add(new Hammer.Pan({ threshold: 0, pointers: 0 })); 49 mc.add(new Hammer.Pinch({ threshold: 0})).recognizeWith(mc.get('pan')); 50 51 mc.on("panstart panmove", function (ev) {onPan(ev,canvas);}); 52 mc.on("pinchstart pinchmove", function (ev) {onPinch(ev,canvas);}); 53 //mc.on("mousewheel DOMMouseScroll", function (ev) {onZoom(ev,canvas);}); 54 51 55 return gl; 52 56 } //}}} … … 265 269 //}}} 266 270 //{{{ Interface Functions 267 function handleZoom(e,canvas) { //{{{ 271 function onPan(ev,canvas) { 272 if (ev.type == 'panstart') { 273 canvas.lastDeltaX = 0; 274 canvas.lastDeltaY = 0; 275 } 276 // if single finger/pan without modifier key, rotate around center 277 //canvas.translation[0] += (canvas.lastDeltaX - ev.deltaX) / canvas.clientWidth * canvas.zoomFactor * 2; 278 //canvas.translation[1] -= (canvas.lastDeltaY - ev.deltaY) / canvas.clientHeight * canvas.zoomFactor * 2; 279 // else if double finger/pan with modifier key, move camera center 280 canvas.rotation[0] += (canvas.lastDeltaX - ev.deltaX) / canvas.clientWidth * canvas.zoomFactor * 2; 281 canvas.rotation[1] += (canvas.lastDeltaY - ev.deltaY) / canvas.clientHeight * canvas.zoomFactor * 2; 282 canvas.lastDeltaX = ev.deltaX; 283 canvas.lastDeltaY = ev.deltaY; 284 } 285 function onPinch(ev,canvas) { 286 if (ev.type == 'pinchstart') { 287 canvas.lastScale = 1; 288 } 289 canvas.zoomFactor = Math.max(canvas.zoomBounds[1], Math.min(-ev.scale * canvas.lastScale, canvas.zoomBounds[0])); 290 canvas.lastScale = ev.scale; 291 } 292 function onZoom(ev,canvas) { 268 293 // prevent scrolling when over canvas 269 e.preventDefault(); 270 var e = window.event || e; // old IE support 271 var delta = 1/10 * Math.max(-1, Math.min(e.scale || e.wheelDelta || -e.detail, 1)); 294 ev.preventDefault(); 295 var delta = 1/10 * Math.max(-1, Math.min(ev.scale || ev.wheelDelta || -ev.detail, 1)); 272 296 canvas.zoomFactor = Math.max(canvas.zoomBounds[1], Math.min(canvas.zoomFactor - delta * canvas.zoomFactor, canvas.zoomBounds[0])); 273 } //}}} 274 function handlePointerDown(e,canvas) { //{{{ 275 canvas.lastX = e.clientX; 276 canvas.lastY = e.clientY; 277 } //}}} 278 function handlePointerUp(e,canvas) { //{{{ 279 } //}}} 280 function handlePointerMove(e,canvas) { //{{{ 281 var deltaX = canvas.controlsensitivity * (e.clientX - canvas.lastX); 282 var deltaY = canvas.controlsensitivity * (e.clientY - canvas.lastY); 283 284 lastMouseX = e.clientX; 285 lastMouseY = e.clientY; 286 287 canvas.translation[0] -= deltaX; 288 canvas.translation[0] += deltaY; 289 290 updateCameraMatrix(canvas); 291 } //}}} 297 } 292 298 //}}} 293 299 //{{{ Drawing Functions … … 296 302 var vMatrix = mat4.create(); 297 303 var pMatrix = mat4.create(); 304 var rotationMatrix = mat4.create(); 305 var traversalRotationMatrix = mat4.create(); 306 var elevationRotationMatrix = mat4.create(); 298 307 299 308 mat4.perspective(pMatrix, 90 * Math.PI / 180, canvas.clientWidth / canvas.clientHeight, 0.001, 10000.0); 309 310 //Calculate rotation around camera focal point about worldspace origin 311 mat4.rotate(traversalRotationMatrix, traversalRotationMatrix, canvas.rotation[0], [0, 1, 0]); 312 mat4.rotate(elevationRotationMatrix, elevationRotationMatrix, canvas.rotation[1], [1, 0, 0]); 313 mat4.multiply(rotationMatrix, elevationRotationMatrix, traversalRotationMatrix); 314 315 //Apply rotation and scaling transform 316 mat4.multiply(vMatrix, rotationMatrix, vMatrix); 317 300 318 //Apply screenspace relative translation 301 319 var translateMatrix = mat4.create();
Note:
See TracChangeset
for help on using the changeset viewer.