diff --git a/#server.js# b/#server.js# deleted file mode 100644 index 8682165..0000000 --- a/#server.js# +++ /dev/null @@ -1,116 +0,0 @@ -const express = require('express') -const http = require('http') -const WebSocket = require('ws') - -const osc = require('osc') - -const port = 6676 -// Vzemi iz argumenta -const tty = process.argv[2] - -const include_files = [ - '/anim.js', - '/control.js', - '/test.js', - '/node_modules/three/build/three.min.js', - '/node_modules/nouislider/distribute/nouislider.min.js', - '/node_modules/nouislider/distribute/nouislider.min.css', - '/node_modules/osc/dist/osc-browser.js' -]; - -const app = express(); -const server = http.Server(app); - -// Odprti serijski OSC link -const scon = new osc.SerialPort({ - devicePath: tty, - bitrate: 115200 -}) -scon.on('error', e => { - console.log('tty error', e) -}) -scon.open() - -app.get('/', (req, res) => { - res.sendFile(__dirname + '/index.html'); -}); - -app.get('/ctl', (req, res) => { - res.sendFile(__dirname + '/control.html'); -}); - -app.get('/test', (req, res) => { - res.sendFile(__dirname + '/test.html'); -}); - -let settings = {}; -app.get('/settings', function(req, res) { - res.send(settings); -}); - -include_files.map(function(file) { - app.get(file, function(req, res){ - res.sendFile(__dirname + file); - }); -}); - -server.listen(port, () => console.log('listening on *:' + port)) - -// Websocket init -const wss = new WebSocket.Server({ server }) - -const sendAll = (msg, wss, ws = null) => { - wss.clients.forEach( client => { - if (client != ws) { - client.send(msg) - } - }) -} - -// Debug osc -/* -scon.on('osc', msg => { - console.log('tty osc', msg.address, ...msg.args.map(val => Math.round(val * 1000) / 1000)) -}) -*/ - -wss.on('connection', function (ws) { - const oscWS = new osc.WebSocketPort({ - socket: ws, - metadata: true - }); - - // Arduino OSC gre v web - scon.on('osc', msg => { - switch(msg.address) { - case '/gyro/': - const [gx, gy, gz] = msg.args - sendAll('adjust:rotx:' + gx, wss) - sendAll('adjust:roty:' + gy, wss) - sendAll('adjust:rotz:' + gz, wss) - break; - case '/quaternion/': - const [qw, qx, qy, qz] = msg.args - sendAll('adjust:quaternion:' + [qw, qx, qy, qz].join(':'), wss) - break; - case '/accel/': - const [ax, ay, az] = msg.args - sendAll('adjust:posx:' + ax, wss) - sendAll('adjust:posy:' + ay, wss) - sendAll('adjust:posz:' + az, wss) - break; - } - }) - - ws.on('message', (msg) => { - //console.log('got msg', msg) - const parts = msg.split(":") - const cmd = parts[0] - - // Broadcast adjust msg - switch (cmd) { - case 'adjust': - sendAll(msg, wss, ws) - } - }) -}) diff --git a/.#server.js b/.#server.js deleted file mode 120000 index e699048..0000000 --- a/.#server.js +++ /dev/null @@ -1 +0,0 @@ -g1smo@dbn.20170:1628540355 \ No newline at end of file diff --git a/anim.js b/anim.js index c0c8ea0..f1b0b1f 100644 --- a/anim.js +++ b/anim.js @@ -11,17 +11,13 @@ var odmik_kamere = 100; var cam_rot_offset = 1; // Vidni kot -var FOV = 140; +var FOV = 90; // Sirina in visina objektov -var width = 2; -var height = 2; +var width = 6; // Limit stevila objektov -var obj_limit = 1000; - - - +var obj_limit = 600; // Prvotno prazno polje objektov. Lahko bi kak buffer to bil pozneje var objekti = []; @@ -29,24 +25,30 @@ var objekti = []; // Stevec, za razno animiranje var stevec = 0; +var gostota_obj = 1; + // Parametri animacije -var rotacijaX = 0.006; -var rotacijaY = 0.001; -var rotacijaZ = 0.003; +var drotacijaX = 0.006; +var drotacijaY = 0.001; +var drotacijaZ = 0.003; + +var rotacijaX = 0; +var rotacijaY = 0; +var rotacijaZ = 0; // Premik obstojecih barv -var zamikBarve = 0.0000666; +var zamikBarve = 1; // Zamik pri novem objektu var barva_mod = 0.333; var saturacija = 1; var svetlost = 0.4; -var wDiff = 0.5; -var hDiff = 0.5; - +var kameraX = 0; +var kameraY = 0; +var kameraZ = 0; // Scena, kamera in render @@ -71,34 +73,31 @@ renderer.setClearColor(0x000000, 1); function render () { requestAnimationFrame(render); - stevec += 1; // Dodaj objekt vcasih if (stevec % gostota_obj === 0) { - addObj(width, height); + addObj(width, width); } - renderer.render(scene, camera); objAnim(); - camRotate(); }; // Funkcija za animacijo objektov function objAnim() { - objekti.map(function (obj) { - obj.rotation.y += rotacijaY; - obj.rotation.z += rotacijaZ; - obj.rotation.x += rotacijaX; + objekti.map(function (obj) { + obj.rotation.x += drotacijaX / 100; + obj.rotation.y += drotacijaY / 100; + obj.rotation.z += drotacijaZ / 100; - obj.scale.z += wDiff; - obj.scale.y += wDiff; - obj.scale.x += wDiff; + obj.scale.z += width / 4; + obj.scale.y += width / 4; + obj.scale.x += width / 4; - obj.material.color.offsetHSL(zamikBarve, 0, 0); - }); + obj.material.color.offsetHSL(zamikBarve, 0, 0); + }); }; // Funkcija za dodajanje novih objektov @@ -122,6 +121,9 @@ 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; // Pocisti za seboj if (objekti.push(obj) > obj_limit) { @@ -134,24 +136,24 @@ function addObj(w, h) { var xAksa = new THREE.Vector3(0, 1, 0); function camRotate () { - // rotiraj po z osi - camera.translateX(cam_rot_offset); - camera.translateZ(odmik_kamere - Math.sqrt(Math.pow(odmik_kamere, 2) + Math.pow(cam_rot_offset, 2))); + // rotiraj po z osi + camera.translateX(kameraX); + camera.translateZ(odmik_kamere - Math.sqrt(Math.pow(odmik_kamere, 2) + Math.pow(kameraX, 2))); - /* - camera.translateY(cam_rot_offset); - camera.translateX(odmik_kamere - Math.sqrt(Math.pow(odmik_kamere, 2) + Math.pow(cam_rot_offset, 2))); + /* + camera.translateY(kameraY); + camera.translateX(odmik_kamere - Math.sqrt(Math.pow(odmik_kamere, 2) + Math.pow(kameraY, 2))); - camera.translateY(cam_rot_offset); - camera.translateX(odmik_kamere - Math.sqrt(Math.pow(odmik_kamere, 2) + Math.pow(cam_rot_offset, 2))); + camera.translateZ(kameraZ); + camera.translateX(odmik_kamere - Math.sqrt(Math.pow(odmik_kamere, 2) + Math.pow(kameraZ, 2))); + */ + /* + camera.position.x = Math.sin((stevec % 10) / 10) * cam_rot_offset; + camera.position.y = Math.cos((stevec % 10) / 10) * cam_rot_offset; + */ - - camera.position.x = Math.sin((stevec % 10) / 10) * cam_rot_offset; - camera.position.y = Math.cos((stevec % 10) / 10) * cam_rot_offset; - */ - - camera.lookAt(scene.position); + camera.lookAt(scene.position); }; // Inicializiraj @@ -170,3 +172,56 @@ function onWindowResize() { renderer.setSize(window.innerWidth, window.innerHeight); } window.addEventListener('resize', onWindowResize, false); + + +var keysPressed = [0, 0, 0, 0]; +var gyro = [0, 0, 0]; +var accel = [0, 0, 0]; + +const getVal = function (msg) { + return msg.value; +} + +oscCallbacks = { + '/keys/': [ + function(args) { + keysPressed = args.map(getVal); + } + ], + '/gyro/': [ + function (args) { + var [gx, gy, gz] = args.map(getVal); + console.log(keysPressed) + + if (keysPressed[0] && keysPressed[1] && keysPressed[2] && keysPressed[3]) { + window.location.reload() + } + + if (keysPressed[2]) { + rotacijaX += gyro[0] - gx + rotacijaY += gyro[1] - gy + rotacijaZ += gyro[2] - gz + } + if (keysPressed[3]) { + drotacijaX += gyro[0] - gx + drotacijaY += gyro[1] - gy + drotacijaZ += gyro[2] - gz + } + + if (keysPressed[1]) { + kameraX += gyro[0] - gx + FOV += (gyro[1] - gy) * 10 + //kameraY += gyro[1] - gy + //kameraZ += gyro[2] - gz + } + + if (keysPressed[0]) { + zamikBarve *= 1 + (gx - gyro[0]) + obj_limit *= 1 + (gy - gyro[1]) + width *= 1 + (gz - gyro[2]) + } + + gyro = [gx, gy, gz] + } + ] +} diff --git a/index.html b/index.html index dabed02..0b5cbef 100644 --- a/index.html +++ b/index.html @@ -13,7 +13,8 @@