diff --git a/anim.js b/anim.js index 439cfb6..2d4efba 100644 --- a/anim.js +++ b/anim.js @@ -56,7 +56,6 @@ var qWW = new THREE.Quaternion(-1, 0, 0, 0); var qWWo = new THREE.Quaternion(-1, 0, 0, 0); var qWWd = new THREE.Quaternion(-1, 0, 0, 0); var qObj = new THREE.Quaternion(-1, 0, 0, 0); -var qOld = new THREE.Quaternion(-1, 0, 0, 0); var qStart = new THREE.Quaternion(-1, 0, 0, 0); var qCalibrate = new THREE.Quaternion(); var calibrate = true; @@ -109,8 +108,6 @@ function modulirajParametre() { } // Posodobi kvaternion polozaja kontrolerja - qObj = qWW.clone(); - qObj.multiply(qStart); if (calibrate) { qStart = qWW.clone(); @@ -122,24 +119,26 @@ function modulirajParametre() { // Rotiranje manualno (z rocnimi gibi "iz sredine") if (keysPressed[3]) { var k = objekti.slice(-1)[0]; - k.rotation.x += qWWd.x; - k.rotation.y += qWWd.y; - k.rotation.z += qWWd.z; + qObj.multiply(qWWd); + k.quaternion.multiply(qWWd); } if (keysPressed[2]) { - console.log(qWWd.x, qWWd.y, qWWd.z); - drotacijaX += qWWd.x; - drotacijaY += qWWd.y; - drotacijaZ += qWWd.z; + drotacijaX += qWWd.x / 10; + drotacijaY += qWWd.y / 10; + drotacijaZ += qWWd.z / 10; + } + if (keysPressed[0]) { + width += qWWd.x * 10; + barva_mod += qWW.y / 10000; } } // Funkcija za animacijo objektov function objAnim() { objekti.map(function (obj) { - obj.rotation.x += drotacijaX / 100; - obj.rotation.y += drotacijaY / 100; - obj.rotation.z += drotacijaZ / 100; + obj.rotation.x += drotacijaX; + obj.rotation.y += drotacijaY; + obj.rotation.z += drotacijaZ; obj.scale.z += width / 4; obj.scale.y += width / 4; @@ -176,9 +175,7 @@ function addObj(w, h) { var obj = new THREE.Line(geo, mat, THREE.LineSegments); scene.add(obj); - obj.rotation.x = rotacijaX; - obj.rotation.y = rotacijaY; - obj.rotation.z = rotacijaZ; + obj.setRotationFromQuaternion(qObj); // Pocisti za seboj if (objekti.push(obj) > obj_limit) { @@ -242,12 +239,14 @@ oscCallbacks = { '/quaternion/': [ function (args) { // Popravimo osi (w x y z po defaultu HMM) - qWWo = qWW.clone() - [qWW.w, qWW.z, qWW.x, qWW.y] = args.map(getVal) + qWWo = qWW.clone(); + [qWW.w, qWW.z, qWW.x, qWW.y] = args.map(getVal); // Dve sta obratno :) - qWW.x *= -1 - qWW.z *= -1 - qWWd = qWWo.premultiply(qWW) + qWW.x *= -1; + qWW.z *= -1; + qWWd = qWW.clone(); + qWWd.conjugate(); + qWWd.multiply(qWWo); } ], /*