diff --git a/index.html b/index.html index 96726c7c6ff3c19ffccde4e1e5e29e4b9a4a1d3f..bd38051887a78db83cef145a50a634c7ead14fd2 100644 --- a/index.html +++ b/index.html @@ -83,13 +83,14 @@ vec2 fragCoord = gl_FragCoord.xy; vec2 scaledFragCoord = fragCoord/u_textureDim; + vec3 lastPosition = texture2D(u_lastPosition, scaledFragCoord).xyz; + float isFixed = texture2D(u_mass, scaledFragCoord).y; if (isFixed == 1.0){ - gl_FragColor = vec4(0.0); + gl_FragColor = vec4(lastPosition, 0.0); return; } - vec3 lastPosition = texture2D(u_lastPosition, scaledFragCoord).xyz; vec3 velocity = texture2D(u_velocity, scaledFragCoord).xyz; vec3 position = velocity*u_dt + lastPosition; gl_FragColor = vec4(position, 0.0); @@ -122,7 +123,7 @@ vec2 scaledFragCoord = fragCoord/u_textureDim; vec2 mass = texture2D(u_mass, scaledFragCoord).xy; - if (mass.y == 1.0){//fixed + if (mass[1] == 1.0){//fixed gl_FragColor = vec4(0.0); return; } diff --git a/js/dynamicModel.js b/js/dynamicModel.js index 02a133ea007032a6788e7060b3945e8e93696144..5b73bf83db8470520066cc0ba3e013732be098f3 100644 --- a/js/dynamicModel.js +++ b/js/dynamicModel.js @@ -382,12 +382,13 @@ function initDynamicModel(globals){ function updateLastPosition(){ for (var i=0;i<nodes.length;i++){ - var _position = nodes[i].getRelativePositon(); + var _position = nodes[i].getRelativePosition(); lastPosition[4*i] = _position.x; lastPosition[4*i+1] = _position.y; lastPosition[4*i+2] = _position.z; } globals.gpuMath.initTextureFromData("u_lastPosition", textureDim, textureDim, "FLOAT", lastPosition, true); + globals.gpuMath.initFrameBufferForTexture("u_lastPosition", true); } function setCreasePercent(percent){ diff --git a/js/main.js b/js/main.js index 3634a53773a4ebcc2ecc4d641003be181d99537d..4e97a2b466d99854e677c437cd68462a63456bad 100644 --- a/js/main.js +++ b/js/main.js @@ -115,16 +115,6 @@ $(function() { return _highlightedObj; } - function dragNode(e){ - globals.threeView.enableControls(false); - highlightedObj.highlight(); - raycasterPlane.set(raycasterPlane.normal, -highlightedObj.getPosition().z); - var intersection = new THREE.Vector3(); - raycaster.ray.intersectPlane(raycasterPlane, intersection); - // globals.dynamicModel.updateFixedHeights(); - // globals.dynamicModel.updateOriginalPosition(); - } - globals = initGlobals(); globals.model = initModel(globals); globals.dynamicModel = initDynamicModel(globals); diff --git a/js/node.js b/js/node.js index 1ca8ee561c23ee6b9b9814e8a9f3997d010fdc25..9f764002d4e209e89c772ba73735dfe131cb18ea 100644 --- a/js/node.js +++ b/js/node.js @@ -145,7 +145,7 @@ Node.prototype.hide = function(){ }; Node.prototype.render = function(position){ - if (this.fixed) return; + // if (this.fixed) return; position.add(this.getOriginalPosition()); this.object3D.position.set(position.x, position.y, position.z); }; @@ -167,7 +167,7 @@ Node.prototype.getPosition = function(){ return this.object3D.position; }; -Node.prototype.getRelativePositon = function(){ +Node.prototype.getRelativePosition = function(){ return this.object3D.position.clone().sub(this._originalPosition); }; diff --git a/js/threeView.js b/js/threeView.js index 0f97c12102a9e1788b6b7baa22dd960c38b600e2..802e85fccb81e3c5e71dc13b1c28327f4f0d719b 100644 --- a/js/threeView.js +++ b/js/threeView.js @@ -8,7 +8,7 @@ function initThreeView(globals) { var wrapper = new THREE.Object3D(); var patternWrapper = new THREE.Object3D(); var modelWrapper = new THREE.Object3D(); - var camera = new THREE.OrthographicCamera(window.innerWidth / -2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / -2, -1000, 1000);//-40, 40); + var camera = new THREE.OrthographicCamera(window.innerWidth / -2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / -2, -10000, 10000);//-40, 40); var renderer = new THREE.WebGLRenderer({antialias: true}); var controls; @@ -45,9 +45,9 @@ function initThreeView(globals) { camera.zoom = 1; camera.updateProjectionMatrix(); - camera.position.x = 40; - camera.position.y = 40; - camera.position.z = 40; + camera.position.x = 4000; + camera.position.y = 4000; + camera.position.z = 4000; controls = new THREE.OrbitControls(camera, container.get(0)); controls.addEventListener('change', render);