wavey-wind/test.js

124 lines
2.9 KiB
JavaScript
Raw Normal View History

2021-08-12 18:10:19 +02:00
console.log("Hello, Sky!");
/**** ******
2021-09-08 18:56:44 +02:00
/ Test skripta *
2021-08-12 18:10:19 +02:00
************/
// Odmik kamere
var odmik_kamere = 100;
// Vidni kot
var FOV = 140;
// Sirina in visina test objekta
var width = 25;
var height = 150;
var depth = 50;
2021-09-08 18:56:44 +02:00
// Parametri animacije (euler)
2021-08-12 18:10:19 +02:00
var rotacijaX = 0.000;
var rotacijaY = 0.000;
var rotacijaZ = 0.000;
// Scena, kamera in render
scene = new THREE.Scene;
camera = new THREE.PerspectiveCamera(FOV, window.innerWidth / window.innerHeight, 0.1, 2000);
camera.position.z = odmik_kamere;
renderer = new THREE.WebGLRenderer({
alpha: true
});
renderer.setSize(window.innerWidth, window.innerHeight);
// Belo ozadje
renderer.setClearColor(0xFFFFFF, 1);
// Črno ozadje
//renderer.setClearColor(0x000000, 1);
// Dodaj test skatlo
var geo = new THREE.BoxGeometry(width, height, depth);
var mat = new THREE.MeshBasicMaterial({
color: 0xff00ff,
wireframe: true
});
2021-09-08 18:56:44 +02:00
// quaternion = new THREE.Quaternion();
var quaternion = null;
var conjugation = null;
2021-08-12 18:10:19 +02:00
var cube = new THREE.Mesh(geo, mat);
scene.add(cube); //
var objekti = [cube];
function render () {
requestAnimationFrame(render);
renderer.render(scene, camera);
objAnim();
};
// Funkcija za animacijo objektov
function objAnim() {
objekti.map(function (obj) {
2021-09-08 18:56:44 +02:00
if (conjugation) {
//obj.setRotationFromEuler(new THREE.Euler(rotacijaY, -rotacijaX, rotacijaZ, 'XYZ'));
newq = quaternion.clone();
//newq.multiplyQuaternions(quaternion, conjugation);
//newq.multiply(conjugation);
//obj.setRotationFromQuaternion(THREE.Quaternion.multiplyQuaternions(quaternion, conjugation));
obj.setRotationFromQuaternion(newq);
console.log(obj.rotation.x);
2021-08-14 15:15:16 +02:00
}
2021-08-12 18:10:19 +02:00
});
};
// Inicializiraj
document.onreadystatechange = function () {
if (document.readyState === 'complete') {
document.getElementById("anim-container").appendChild(renderer.domElement);
render();
}
};
// Lep risajz
function onWindowResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
}
window.addEventListener('resize', onWindowResize, false);
2021-08-14 15:15:16 +02:00
// Poslusaj OSC evente
keysPressed = [0, 0, 0, 0];
2021-09-08 18:56:44 +02:00
const getVal = function (msg) {
return msg.value;
}
2021-08-14 15:15:16 +02:00
oscCallbacks = {
'/keys/': [
function(args) {
keysPressed = [...args];
}
],
'/quaternion/': [
function (args) {
2021-09-08 18:56:44 +02:00
if (quaternion) {
[quaternion.w, quaternion.x, quaternion.y, quaternion.z] = args.map(getVal);
} else {
quaternion = new THREE.Quaternion(args[0], args[1], args[2], args[3]);
conjugation = quaternion.clone();
conjugation.conjugate();
}
2021-08-14 15:15:16 +02:00
}
2021-09-08 18:56:44 +02:00
],
2021-08-14 15:15:16 +02:00
'/gyro/': [
function (args) {
2021-09-08 18:56:44 +02:00
[rotacijaX, rotacijaY, rotacijaZ] = args.map(getVal);
2021-08-14 15:15:16 +02:00
}
]
}