Advertisement
Guest User

Staafjes

a guest
Feb 28th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 6.83 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3.  
  4. <head>
  5.     <title>Stackable</title>
  6.     <style>
  7.         html,
  8.         body {
  9.             overflow: hidden;
  10.             width: 100%;
  11.             height: 100%;
  12.             margin: 0;
  13.             padding: 0;
  14.         }
  15.        
  16.         #renderCanvas {
  17.             width: 100%;
  18.             height: 100%;
  19.             touch-action: none;
  20.         }
  21.     </style>
  22.     <!-- Babylon.js -->
  23.     <script src="http://www.babylonjs.com/hand.minified-1.2.js"></script>
  24.     <script src="http://www.babylonjs.com/cannon.js"></script>
  25.     <script src="http://www.babylonjs.com/oimo.js"></script>
  26.     <script src="http://www.babylonjs.com/babylon.js"></script>
  27.     <script src="quat.js"></script>
  28.  
  29.  
  30. </head>
  31.  
  32. <body>
  33.  
  34.     <canvas id="renderCanvas"></canvas>
  35.     <script>
  36.         //-------------------Global variables----------------
  37.         var canvas = document.getElementById("renderCanvas");
  38.         var engine = new BABYLON.Engine(canvas, true);
  39.         var cylinder;
  40.         var staafjes = new Array();
  41.  
  42.  
  43.  
  44.  
  45.         //----------------------Babylon------------------------
  46.  
  47.         function createScene() {
  48.  
  49.             var scene = new BABYLON.Scene(engine);
  50.             //scene.clearColor = new BABYLON.Color3(0, 1, 0);
  51.  
  52.             var light = new BABYLON.PointLight("Omni", new BABYLON.Vector3(10, 50, 50), scene);
  53.             var camera = new BABYLON.ArcRotateCamera("Camera", 3 * Math.PI / 2, Math.PI / 8, 50, BABYLON.Vector3.Zero(), scene);
  54.  
  55.             light.intensity = 1;
  56.             camera.attachControl(canvas, false);
  57.             scene.registerBeforeRender(function () {
  58.                 light.position = camera.position;
  59.             });
  60.  
  61.  
  62.             //------------------------- show axis------------------------
  63.             var showAxis = function (size) {
  64.                 var makeTextPlane = function (text, color, size) {
  65.                     var dynamicTexture = new BABYLON.DynamicTexture("DynamicTexture", 50, scene, true);
  66.                     dynamicTexture.hasAlpha = true;
  67.                     dynamicTexture.drawText(text, 5, 40, "bold 36px Arial", color, "transparent", true);
  68.                     var plane = new BABYLON.Mesh.CreatePlane("TextPlane", size, scene, true);
  69.                     plane.material = new BABYLON.StandardMaterial("TextPlaneMaterial", scene);
  70.                     plane.material.backFaceCulling = false;
  71.                     plane.material.specularColor = new BABYLON.Color3(0, 0, 0);
  72.                     plane.material.diffuseTexture = dynamicTexture;
  73.                     return plane;
  74.                 };
  75.  
  76.                 var axisX = BABYLON.Mesh.CreateLines("axisX", [
  77.       new BABYLON.Vector3.Zero(), new BABYLON.Vector3(size, 0, 0), new BABYLON.Vector3(size * 0.95, 0.05 * size, 0),
  78.       new BABYLON.Vector3(size, 0, 0), new BABYLON.Vector3(size * 0.95, -0.05 * size, 0)
  79.       ], scene);
  80.                 axisX.color = new BABYLON.Color3(1, 0, 0);
  81.                 var xChar = makeTextPlane("X", "red", size / 2);
  82.                 xChar.position = new BABYLON.Vector3(0.9 * size, -0.05 * size, 0);
  83.                 var axisY = BABYLON.Mesh.CreateLines("axisY", [
  84.         new BABYLON.Vector3.Zero(), new BABYLON.Vector3(0, size, 0), new BABYLON.Vector3(-0.05 * size, size * 0.95, 0),
  85.         new BABYLON.Vector3(0, size, 0), new BABYLON.Vector3(0.05 * size, size * 0.95, 0)
  86.         ], scene);
  87.                 axisY.color = new BABYLON.Color3(0, 1, 0);
  88.                 var yChar = makeTextPlane("Y", "green", size / 2);
  89.                 yChar.position = new BABYLON.Vector3(0, 0.9 * size, -0.05 * size);
  90.                 var axisZ = BABYLON.Mesh.CreateLines("axisZ", [
  91.         new BABYLON.Vector3.Zero(), new BABYLON.Vector3(0, 0, size), new BABYLON.Vector3(0, -0.05 * size, size * 0.95),
  92.         new BABYLON.Vector3(0, 0, size), new BABYLON.Vector3(0, 0.05 * size, size * 0.95)
  93.         ], scene);
  94.                 axisZ.color = new BABYLON.Color3(0, 0, 1);
  95.                 var zChar = makeTextPlane("Z", "blue", size / 2);
  96.                 zChar.position = new BABYLON.Vector3(0, 0.05 * size, 0.9 * size);
  97.             };
  98.  
  99.             size = 2;
  100.             //------------------------- luister naar websocket ------------------------
  101.            
  102.             var socket = new WebSocket("ws://localhost:8081");
  103.             socket.onmessage = showData;
  104.  
  105.             var res = new Array();
  106.             var created = new Array();
  107.  
  108.             function showData(result) {
  109.                 res = result.data.split(",");
  110.                 if (res.length == 7) { // als de datalengte 7 is en geen packets gemist zijn
  111.  
  112.                     if (!created[res[0]]) { // als het staafje nog niet bestaat, maak een staafje van 30mm
  113.  
  114.                         created[res[0]] = true;
  115.                          //------------------------- teken staafje ------------------------
  116.                         console.log("create");
  117.                         staafjes[res[0]] = BABYLON.MeshBuilder.CreateCylinder("cylinder", {
  118.                             height: 30,
  119.                             diameter: 3,
  120.                             updatable: true
  121.                         }, scene);
  122.  
  123.                         staafjes[res[0]].position = new BABYLON.Vector3(0, -15, 0);
  124.                         staafjes[res[0]].setPivotMatrix(BABYLON.Matrix.Translation(0, -15, 0));
  125.                        
  126.                          //------------------------- teken 2 bolletjes op uiteindes ------------------------
  127.                         var sphereA = BABYLON.Mesh.CreateSphere("sphereA", 20, 6, scene);
  128.                         sphereA.parent = staafjes[res[0]];
  129.                         sphereA.position = new BABYLON.Vector3(0, 15, 0);
  130.  
  131.                         var sphereB = BABYLON.Mesh.CreateSphere("sphereB", 20, 6, scene);
  132.                         sphereB.parent = staafjes[res[0]];
  133.  
  134.                         sphereB.position = new BABYLON.Vector3(0, -15, 0);
  135.                        
  136.                         if (typeof staafjes[res[1]] === 'undefined') {
  137.                             console.log("bestaat nog niet"); //staafje waaraan we willen koppelen is nog niet gemaakt.
  138.                         } else { //staafje aan parent vast maken
  139.                             // staafjes[res[0]].parent = staafjes[res[1]];
  140.  
  141.                         }
  142.  
  143.                     } else { //rotate staafje met quat
  144.  
  145.                         staafjes[res[0]].rotationQuaternion = new BABYLON.Quaternion(res[4], res[5], res[6], res[3]);
  146.  
  147.                     }
  148.  
  149.                 }
  150.             }
  151.  
  152.             showAxis(10);
  153.  
  154.             return scene;
  155.         };
  156.  
  157.  
  158.         var scene = createScene();
  159.  
  160.         engine.runRenderLoop(function () {
  161.             scene.render();
  162.         });
  163.  
  164.         // Resize
  165.         window.addEventListener("resize", function () {
  166.             engine.resize();
  167.         });
  168.     </script>
  169.     < /body>
  170.  
  171.         < /html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement