From 1509776296c654b79211ff53a848a6bd55b1bcca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jurij=20Podgor=C5=A1ek?= Date: Thu, 5 May 2022 18:59:50 +0200 Subject: [PATCH] Zamenjan vrstni red gumbov, rotacija kamere --- anim.js | 30 ++++++++++++++++++++++-------- server.js | 55 ++++++++++++++++++++++++++++++++----------------------- 2 files changed, 54 insertions(+), 31 deletions(-) diff --git a/anim.js b/anim.js index 3831bb8..ec9d3f6 100644 --- a/anim.js +++ b/anim.js @@ -38,6 +38,10 @@ var rotacijaX = 0; var rotacijaY = 0; var rotacijaZ = 0; +var crotacijaX = 0.000; +var crotacijaY = 0.000; +var crotacijaZ = 0.000; + // Premik obstojecih barv var zamikBarve = 0.01; @@ -104,6 +108,12 @@ function render () { camRotate(); }; +window.onkeydown = function (e) { + crotacijaX *= 0.7; + crotacijaY *= 0.7; + crotacijaZ *= 0.7; +} + function modulirajParametre() { // Vsi gumbi? => RESET if ((keysPressed[0] + keysPressed[1] + keysPressed[2] + keysPressed[3]) === 4 && !reset) { @@ -126,23 +136,25 @@ function modulirajParametre() { } // Rotiranje manualno (z rocnimi gibi "iz sredine") - if (keysPressed[3]) { + if (keysPressed[0]) { var k = objekti.slice(-1)[0]; qObj.multiply(qWWd); k.quaternion.multiply(qWWd); } - if (keysPressed[2]) { + if (keysPressed[1]) { drotacijaX += qWWd.x / 10; drotacijaY += qWWd.y / 10; drotacijaZ += qWWd.z / 10; } - if (keysPressed[1]) { - //qKamera.multiply(qWWd); - obj_limit *= 1 - dqY; + if (keysPressed[2]) { + crotacijaX += qWWd.x / 30; + crotacijaY += qWWd.y / 30; + crotacijaZ += qWWd.z / 30; } - if (keysPressed[0]) { + if (keysPressed[3]) { width *= 1 + (dqX / 3); barva_mod += (dqZ / 1000); + obj_limit *= 1 - dqY; } } @@ -201,10 +213,12 @@ function addObj(w, h) { }; qK = new THREE.Quaternion() -scene.setRotationFromQuaternion(qK) function camRotate () { - qK.multiply(qKamera); + //scene.setRotationFromQuaternion(qKamera) + scene.rotation.x += crotacijaX + scene.rotation.y += crotacijaY + scene.rotation.z += crotacijaZ } // Inicializiraj diff --git a/server.js b/server.js index 32368c9..7b872b8 100644 --- a/server.js +++ b/server.js @@ -7,6 +7,8 @@ const PORT = 6676 // Do we have a problem, shall we debug? const DEBUG = true +const MIDI = false + @@ -21,11 +23,12 @@ const WebSocket = require('ws') const osc = require('osc') const readline = require('readline') const fs = require('fs') -const midi = require('midi') - -let midiOn = false -let midiNotes = {} +if (MIDI) { + const midi = require('midi') + let midiOn = false + let midiNotes = {} +} // Vzemi iz argumenta @@ -55,12 +58,14 @@ const server = http.Server(app); // Odprti serijski OSC link let scon = null -// Midi port -const mo = new midi.Output() -//mo.getPortCount() -//mo.getPortName(0) -//mo.openPort(0) -mo.openVirtualPort("kegel") +if (MIDI) { + // Midi port + const mo = new midi.Output() + //mo.getPortCount() + //mo.getPortName(0) + //mo.openPort(0) + mo.openVirtualPort("kegel") +} function openSerial() { console.log('opening ', tty, baudrate) @@ -242,19 +247,21 @@ const sendAll = (msg, info, oscWS, osclients) => { } if (msg.address == '/accel') { - if (msg.args[1] > 2000) { - console.log("SEND MIDI!") - const visina = Math.round((msg.args[1] - 2000) / 100) - midiNotes[visina] = true - mo.send([144, visina, 127]) - midiOn = true - } + if (MIDI) { + if (msg.args[1] > 2000) { + console.log("SEND MIDI!") + const visina = Math.round((msg.args[1] - 2000) / 100) + midiNotes[visina] = true + mo.send([144, visina, 127]) + midiOn = true + } - if (msg.args[1] < 2000 && midiOn) { - Object.keys(midiNotes).forEach(visina => { - mo.send([128, visina, 127]) - }) - midiOn = false + if (msg.args[1] < 2000 && midiOn) { + Object.keys(midiNotes).forEach(visina => { + mo.send([128, visina, 127]) + }) + midiOn = false + } } } @@ -303,4 +310,6 @@ wss.on('connection', function (ws) { }) // Zapri midi -mo.closePort() +if (MIDI) { + mo.closePort() +}