Razlika v quaternionih
parent
775dde8482
commit
13f4902644
41
anim.js
41
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 qWWo = new THREE.Quaternion(-1, 0, 0, 0);
|
||||||
var qWWd = 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 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 qStart = new THREE.Quaternion(-1, 0, 0, 0);
|
||||||
var qCalibrate = new THREE.Quaternion();
|
var qCalibrate = new THREE.Quaternion();
|
||||||
var calibrate = true;
|
var calibrate = true;
|
||||||
|
@ -109,8 +108,6 @@ function modulirajParametre() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Posodobi kvaternion polozaja kontrolerja
|
// Posodobi kvaternion polozaja kontrolerja
|
||||||
qObj = qWW.clone();
|
|
||||||
qObj.multiply(qStart);
|
|
||||||
|
|
||||||
if (calibrate) {
|
if (calibrate) {
|
||||||
qStart = qWW.clone();
|
qStart = qWW.clone();
|
||||||
|
@ -122,24 +119,26 @@ function modulirajParametre() {
|
||||||
// Rotiranje manualno (z rocnimi gibi "iz sredine")
|
// Rotiranje manualno (z rocnimi gibi "iz sredine")
|
||||||
if (keysPressed[3]) {
|
if (keysPressed[3]) {
|
||||||
var k = objekti.slice(-1)[0];
|
var k = objekti.slice(-1)[0];
|
||||||
k.rotation.x += qWWd.x;
|
qObj.multiply(qWWd);
|
||||||
k.rotation.y += qWWd.y;
|
k.quaternion.multiply(qWWd);
|
||||||
k.rotation.z += qWWd.z;
|
|
||||||
}
|
}
|
||||||
if (keysPressed[2]) {
|
if (keysPressed[2]) {
|
||||||
console.log(qWWd.x, qWWd.y, qWWd.z);
|
drotacijaX += qWWd.x / 10;
|
||||||
drotacijaX += qWWd.x;
|
drotacijaY += qWWd.y / 10;
|
||||||
drotacijaY += qWWd.y;
|
drotacijaZ += qWWd.z / 10;
|
||||||
drotacijaZ += qWWd.z;
|
}
|
||||||
|
if (keysPressed[0]) {
|
||||||
|
width += qWWd.x * 10;
|
||||||
|
barva_mod += qWW.y / 10000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Funkcija za animacijo objektov
|
// Funkcija za animacijo objektov
|
||||||
function objAnim() {
|
function objAnim() {
|
||||||
objekti.map(function (obj) {
|
objekti.map(function (obj) {
|
||||||
obj.rotation.x += drotacijaX / 100;
|
obj.rotation.x += drotacijaX;
|
||||||
obj.rotation.y += drotacijaY / 100;
|
obj.rotation.y += drotacijaY;
|
||||||
obj.rotation.z += drotacijaZ / 100;
|
obj.rotation.z += drotacijaZ;
|
||||||
|
|
||||||
obj.scale.z += width / 4;
|
obj.scale.z += width / 4;
|
||||||
obj.scale.y += width / 4;
|
obj.scale.y += width / 4;
|
||||||
|
@ -176,9 +175,7 @@ function addObj(w, h) {
|
||||||
var obj = new THREE.Line(geo, mat, THREE.LineSegments);
|
var obj = new THREE.Line(geo, mat, THREE.LineSegments);
|
||||||
|
|
||||||
scene.add(obj);
|
scene.add(obj);
|
||||||
obj.rotation.x = rotacijaX;
|
obj.setRotationFromQuaternion(qObj);
|
||||||
obj.rotation.y = rotacijaY;
|
|
||||||
obj.rotation.z = rotacijaZ;
|
|
||||||
|
|
||||||
// Pocisti za seboj
|
// Pocisti za seboj
|
||||||
if (objekti.push(obj) > obj_limit) {
|
if (objekti.push(obj) > obj_limit) {
|
||||||
|
@ -242,12 +239,14 @@ oscCallbacks = {
|
||||||
'/quaternion/': [
|
'/quaternion/': [
|
||||||
function (args) {
|
function (args) {
|
||||||
// Popravimo osi (w x y z po defaultu HMM)
|
// Popravimo osi (w x y z po defaultu HMM)
|
||||||
qWWo = qWW.clone()
|
qWWo = qWW.clone();
|
||||||
[qWW.w, qWW.z, qWW.x, qWW.y] = args.map(getVal)
|
[qWW.w, qWW.z, qWW.x, qWW.y] = args.map(getVal);
|
||||||
// Dve sta obratno :)
|
// Dve sta obratno :)
|
||||||
qWW.x *= -1
|
qWW.x *= -1;
|
||||||
qWW.z *= -1
|
qWW.z *= -1;
|
||||||
qWWd = qWWo.premultiply(qWW)
|
qWWd = qWW.clone();
|
||||||
|
qWWd.conjugate();
|
||||||
|
qWWd.multiply(qWWo);
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue