|
@@ -0,0 +1,1813 @@
|
|
|
+<!doctype html>
|
|
|
+
|
|
|
+<html lang="en">
|
|
|
+<head>
|
|
|
+ <meta charset="utf-8">
|
|
|
+ <title>The Vault GUI</title>
|
|
|
+
|
|
|
+ <link rel="stylesheet" href="{{ static_url("style.css") }}">
|
|
|
+ <link rel="stylesheet" href="//code.jquery.com/ui/1.12.0/themes/base/jquery-ui.css">
|
|
|
+ <!--[if lt IE 9]>
|
|
|
+ <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
|
|
+ <![endif]-->
|
|
|
+</head>
|
|
|
+
|
|
|
+<body>
|
|
|
+ <div id="container"></div>
|
|
|
+ <!--<div id="slider"></div>-->
|
|
|
+ <div id="slider-tooltip">123456</div>
|
|
|
+ <div id="obj-tooltip">12345</div>
|
|
|
+ <div id="val-tooltip">12345</div>
|
|
|
+ <div class="window-item window-unitem" id="message">
|
|
|
+ <div class="bar-header">
|
|
|
+ <div class="bar-title noselect">Message Log</div>
|
|
|
+
|
|
|
+ <div class="bar-dropdown noselect">^</div>
|
|
|
+ <div class="bar-close noselect">×</div>
|
|
|
+ </div>
|
|
|
+ <div class="bar-message">
|
|
|
+ <div class="bar-wrapper" style="height:200px; overflow-y:scroll;">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!--
|
|
|
+ <div class="window-item window-unitem" id="settings">
|
|
|
+ <div class="bar-header">
|
|
|
+ <div class="bar-title noselect">Settings</div>
|
|
|
+
|
|
|
+ <div class="bar-dropdown noselect">^</div>
|
|
|
+ <div class="bar-close noselect">×</div>
|
|
|
+ </div>
|
|
|
+ <div class="bar-settings">
|
|
|
+ <div class="bar-wrapper">
|
|
|
+ <div class="bar-setup">
|
|
|
+ <span class="bl bar-hl">Start time</span>
|
|
|
+ <span class="br bar-info">
|
|
|
+ <input id="start_time" class="jscolor" value="1472688000">
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div class="bar-setup">
|
|
|
+ <span class="bl bar-hl">End time</span>
|
|
|
+ <span class="br bar-info">
|
|
|
+ <input id="end_time" class="jscolor" value="1472774400">
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ -->
|
|
|
+
|
|
|
+ <div class="window-item" id="orientation">
|
|
|
+ <div class="bar-header">
|
|
|
+ <div class="bar-title noselect">Orientation</div>
|
|
|
+
|
|
|
+ <div class="bar-dropdown noselect">^</div>
|
|
|
+ <div class="bar-close noselect">×</div>
|
|
|
+ </div>
|
|
|
+ <div class="bar-orientation">
|
|
|
+ <canvas class="bar-wrapper" id="compass" width="200" height="180"></canvas>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+
|
|
|
+ <div id="window-tab">
|
|
|
+ <div id="offMessage" class="noselect bar-pil">Message Log</div>
|
|
|
+ <div id="offOrientation" class="noselect bar-pil">Orientation</div>
|
|
|
+ <!--<div id="offSettings" class="noselect bar-pil">Settings</div>-->
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="window-cp" id="control-panel">
|
|
|
+ <div class="bar-header">
|
|
|
+ <div id="toggleGUI" class="bar-button noselect">Show/Hide GUI</div>
|
|
|
+ <div id="showTabs" class="bar-button noselect">Windows</div>
|
|
|
+ <!--<div id="runSimulation" class="bar-button noselect">Run</div>-->
|
|
|
+ <!---
|
|
|
+ <div id="testTrigger" class="bar-button noselect">Test Trigger</div>
|
|
|
+ -->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
|
|
|
+ <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
|
|
|
+ <script src="{{ static_url("scripts.js") }}"></script>
|
|
|
+ <script src="{{ static_url("three.min.js") }}"></script>
|
|
|
+ <script src="{{ static_url("OrbitControls.js") }}"></script>
|
|
|
+ <script>
|
|
|
+ // Global variable
|
|
|
+ var img = null,
|
|
|
+ needle = null,
|
|
|
+ ctx = null;
|
|
|
+
|
|
|
+ function clearCanvas() {
|
|
|
+ // clear canvas
|
|
|
+ ctx.clearRect(0, 0, 200, 200);
|
|
|
+ }
|
|
|
+
|
|
|
+ function draw(degrees) {
|
|
|
+ //console.log("Draw degree");
|
|
|
+ //console.log(degrees);
|
|
|
+
|
|
|
+ clearCanvas();
|
|
|
+
|
|
|
+ // Draw the compass onto the canvas
|
|
|
+ ctx.drawImage(img, 0, 0);
|
|
|
+
|
|
|
+ // Save the current drawing state
|
|
|
+ ctx.save();
|
|
|
+
|
|
|
+ // Now move across and down half the
|
|
|
+ ctx.translate(100, 100);
|
|
|
+
|
|
|
+ // Rotate around this point
|
|
|
+ ctx.rotate(degrees * (Math.PI / 180));
|
|
|
+
|
|
|
+ // Draw the image back and up
|
|
|
+ ctx.drawImage(needle, -100, -100);
|
|
|
+
|
|
|
+ // Restore the previous drawing state
|
|
|
+ ctx.restore();
|
|
|
+
|
|
|
+ // Increment the angle of the needle by 5 degrees
|
|
|
+ //degrees += 5;
|
|
|
+ }
|
|
|
+
|
|
|
+ function imgLoaded() {
|
|
|
+ // Image loaded event complete. Start the timer
|
|
|
+ draw(myvalue);
|
|
|
+ //setInterval(draw, 100);
|
|
|
+ }
|
|
|
+
|
|
|
+ function init() {
|
|
|
+ // Grab the compass element
|
|
|
+ var canvas = document.getElementById('compass');
|
|
|
+
|
|
|
+ // Canvas supported?
|
|
|
+ if (canvas.getContext('2d')) {
|
|
|
+ ctx = canvas.getContext('2d');
|
|
|
+
|
|
|
+ // Load the needle image
|
|
|
+ needle = new Image();
|
|
|
+ needle.src = 'http://katrin.kit.edu/static/needle.png';
|
|
|
+
|
|
|
+ // Load the compass image
|
|
|
+ img = new Image();
|
|
|
+ img.src = 'http://katrin.kit.edu/static/compass.png';
|
|
|
+ img.onload = imgLoaded;
|
|
|
+ } else {
|
|
|
+ alert("Canvas not supported!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var myvalue = 0;
|
|
|
+ init();
|
|
|
+
|
|
|
+
|
|
|
+ </script>
|
|
|
+ <script>
|
|
|
+ var camera, scene, renderer;
|
|
|
+ var container;
|
|
|
+ var mycontrol;
|
|
|
+ var enableControls = true;
|
|
|
+ var pv001;
|
|
|
+ var data;
|
|
|
+ var raycaster = new THREE.Raycaster();
|
|
|
+ var mouse = new THREE.Vector2();
|
|
|
+
|
|
|
+ function onMouseMove( event ) {
|
|
|
+ // calculate mouse position in normalized device coordinates
|
|
|
+ // (-1 to +1) for both components
|
|
|
+ mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
|
|
|
+ mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ init();
|
|
|
+ animate();
|
|
|
+ window.addEventListener( 'mousemove', onMouseMove, false );
|
|
|
+
|
|
|
+ function init() {
|
|
|
+ setMessage("3D", "Initialization.");
|
|
|
+ scene = new THREE.Scene();
|
|
|
+
|
|
|
+ camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 10000);
|
|
|
+ camera.position.set(0, 45, 100);
|
|
|
+ camera.lookAt(scene.position);
|
|
|
+
|
|
|
+ container = document.getElementById( 'container' );
|
|
|
+ document.body.appendChild( container );
|
|
|
+ renderer = new THREE.WebGLRenderer({ alpha: true, antialias: true });
|
|
|
+ renderer.setSize(window.innerWidth, window.innerHeight);
|
|
|
+ renderer.setClearColor( 0xffffff, 0);
|
|
|
+ container.appendChild(renderer.domElement);
|
|
|
+
|
|
|
+ mycontrol = new THREE.OrbitControls( camera );
|
|
|
+
|
|
|
+ var size = 40, step = 1;
|
|
|
+
|
|
|
+ var geometry = new THREE.Geometry();
|
|
|
+ var material = new THREE.LineBasicMaterial({color: 0xe3e3e3, linewidth: 1, fog:true});
|
|
|
+
|
|
|
+ for ( var i = - size; i <= size; i += step ) {
|
|
|
+ geometry.vertices.push(new THREE.Vector3( -size, -0.04, i ));
|
|
|
+ geometry.vertices.push(new THREE.Vector3( size, -0.04, i ));
|
|
|
+
|
|
|
+ geometry.vertices.push(new THREE.Vector3( i, -0.04, -size ));
|
|
|
+ geometry.vertices.push(new THREE.Vector3( i, -0.04, size ));
|
|
|
+ }
|
|
|
+ var line = new THREE.LineSegments( geometry, material );
|
|
|
+ scene.add(line);
|
|
|
+
|
|
|
+ setMessage("3D", "Added grid plane.");
|
|
|
+ /*
|
|
|
+ var geometry = new THREE.BoxGeometry( 1, 1, 1 );
|
|
|
+ var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
|
|
|
+ var cube = new THREE.Mesh( geometry, material );
|
|
|
+ */
|
|
|
+
|
|
|
+ var light = new THREE.DirectionalLight( 0xffffff );
|
|
|
+ light.position.set( 0, 1, 1 ).normalize();
|
|
|
+ scene.add(light);
|
|
|
+ setMessage("3D", "Added directional light.");
|
|
|
+
|
|
|
+ pv001 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv001.position.set(-18, 0.5, 29);
|
|
|
+ pv001.rotateY( Math.PI / 3 );
|
|
|
+ pv001.name = "2A_15_60e_001";
|
|
|
+ scene.add(pv001);
|
|
|
+ setMessage("3D", "Loaded PV001.");
|
|
|
+
|
|
|
+ pv002 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv002.position.set(-14, 0.5, 30);
|
|
|
+ pv002.rotateY( Math.PI / 3 );
|
|
|
+ pv002.name = "5A_15_60e_002";
|
|
|
+ scene.add(pv002);
|
|
|
+ setMessage("3D", "Loaded PV002.");
|
|
|
+
|
|
|
+ pv003 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv003.position.set(9.5, 0.5, 2);
|
|
|
+ pv003.rotateY( Math.PI / 3 );
|
|
|
+ pv003.name = "6A_30_60e_003";
|
|
|
+ scene.add(pv003);
|
|
|
+ setMessage("3D", "Loaded PV003.");
|
|
|
+
|
|
|
+ pv004 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv004.position.set(6, 0.5, 1);
|
|
|
+ pv004.rotateY( Math.PI / 3 );
|
|
|
+ pv004.name = "1A_30_60e_004";
|
|
|
+ scene.add(pv004);
|
|
|
+ setMessage("3D", "Loaded PV004.");
|
|
|
+
|
|
|
+ pv005 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv005.position.set(-8, 0.5, -3);
|
|
|
+ pv005.rotateY( Math.PI / 3 );
|
|
|
+ pv005.name = "6A_45_60e_005";
|
|
|
+ scene.add(pv005);
|
|
|
+ setMessage("3D", "Loaded PV005.");
|
|
|
+
|
|
|
+ pv006 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv006.position.set(-4.5, 0.5, -2);
|
|
|
+ pv006.rotateY( Math.PI / 3 );
|
|
|
+ pv006.name = "1A_45_60e_006";
|
|
|
+ scene.add(pv006);
|
|
|
+ setMessage("3D", "Loaded PV006.");
|
|
|
+
|
|
|
+ pv007 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv007.position.set(-5, 0.5, -16);
|
|
|
+ pv007.rotateY( Math.PI / 3 );
|
|
|
+ pv007.name = "6C_60_60e_007";
|
|
|
+ scene.add(pv007);
|
|
|
+ setMessage("3D", "Loaded PV007.");
|
|
|
+
|
|
|
+ pv008 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv008.position.set(-7, 0.5, -9);
|
|
|
+ pv008.rotateY( Math.PI / 3 );
|
|
|
+ pv008.name = "1C_60_60e_008";
|
|
|
+ scene.add(pv008);
|
|
|
+ setMessage("3D", "Loaded PV008.");
|
|
|
+
|
|
|
+ pv009 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv009.position.set(13, 0.5, 3);
|
|
|
+ pv009.rotateY( Math.PI / 4 );
|
|
|
+ pv009.name = "2A_15_45e_009";
|
|
|
+ scene.add(pv009);
|
|
|
+ setMessage("3D", "Loaded PV009.");
|
|
|
+
|
|
|
+ pv010 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv010.position.set(18, 0.5, 4);
|
|
|
+ pv010.rotateY( Math.PI / 4 );
|
|
|
+ pv010.name = "1A_15_45e_010";
|
|
|
+ scene.add(pv010);
|
|
|
+ setMessage("3D", "Loaded PV010.");
|
|
|
+
|
|
|
+ pv011 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv011.position.set(3.5, 0.5, -0.5);
|
|
|
+ pv011.rotateY( Math.PI / 4 );
|
|
|
+ pv011.name = "4A_15_45e_011";
|
|
|
+ scene.add(pv011);
|
|
|
+ setMessage("3D", "Loaded PV011.");
|
|
|
+
|
|
|
+ pv012 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv012.position.set(17, 0.5, -1);
|
|
|
+ pv012.rotateY( Math.PI / 4 );
|
|
|
+ pv012.name = "6A_30_45e_012";
|
|
|
+ scene.add(pv012);
|
|
|
+ setMessage("3D", "Loaded PV012.");
|
|
|
+
|
|
|
+ pv013 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv013.position.set(-2, 0.5, -1);
|
|
|
+ pv013.rotateY( Math.PI / 4 );
|
|
|
+ pv013.name = "2A_30_45e_013";
|
|
|
+ scene.add(pv013);
|
|
|
+ setMessage("3D", "Loaded PV013.");
|
|
|
+
|
|
|
+ pv014 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv014.position.set(9, 0.5, -3);
|
|
|
+ pv014.rotateY( Math.PI / 4 );
|
|
|
+ pv014.name = "2A_45_45e_014";
|
|
|
+ scene.add(pv014);
|
|
|
+ setMessage("3D", "Loaded PV014.");
|
|
|
+
|
|
|
+ pv015 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv015.position.set(12.5, 0.5, -2);
|
|
|
+ pv015.rotateY( Math.PI / 4 );
|
|
|
+ pv015.name = "4A_45_45e_015";
|
|
|
+ scene.add(pv015);
|
|
|
+ setMessage("3D", "Loaded PV015.");
|
|
|
+
|
|
|
+ pv016 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv016.position.set(-1, 0.5, -22);
|
|
|
+ pv016.rotateY( Math.PI / 4 );
|
|
|
+ pv016.name = "6A_60_45e_016";
|
|
|
+ scene.add(pv016);
|
|
|
+ setMessage("3D", "Loaded PV016.");
|
|
|
+
|
|
|
+ pv017 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv017.position.set(-2, 0.5, -26);
|
|
|
+ pv017.rotateY( Math.PI / 4 );
|
|
|
+ pv017.name = "2A_60_45e_017";
|
|
|
+ scene.add(pv017);
|
|
|
+ setMessage("3D", "Loaded PV017.");
|
|
|
+
|
|
|
+ pv018 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv018.position.set(-8.5, 0.5, 23);
|
|
|
+ pv018.rotateY( Math.PI / 6 );
|
|
|
+ pv018.name = "3A_15_30e_018";
|
|
|
+ scene.add(pv018);
|
|
|
+ setMessage("3D", "Loaded PV018.");
|
|
|
+
|
|
|
+ pv019 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv019.position.set(-10, 0.5, 26.5);
|
|
|
+ pv019.rotateY( Math.PI / 6 );
|
|
|
+ pv019.name = "1A_15_30e_019";
|
|
|
+ scene.add(pv019);
|
|
|
+ setMessage("3D", "Loaded PV019.");
|
|
|
+
|
|
|
+ pv020 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv020.position.set(6, 0.5, 14);
|
|
|
+ pv020.rotateY( Math.PI / 6 );
|
|
|
+ pv020.name = "1B_15_30e_020";
|
|
|
+ scene.add(pv020);
|
|
|
+ setMessage("3D", "Loaded PV020.");
|
|
|
+
|
|
|
+ pv021 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv021.position.set(12, 0.5, 19);
|
|
|
+ pv021.rotateY( Math.PI / 6 );
|
|
|
+ pv021.name = "1D_15_30e_021";
|
|
|
+ scene.add(pv021);
|
|
|
+ setMessage("3D", "Loaded PV021.");
|
|
|
+
|
|
|
+ pv022 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv022.position.set(6, 0.5, 17);
|
|
|
+ pv022.rotateY( Math.PI / 6 );
|
|
|
+ pv022.name = "1C_15_30e_022";
|
|
|
+ scene.add(pv022);
|
|
|
+ setMessage("3D", "Loaded PV022.");
|
|
|
+
|
|
|
+ pv023 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv023.position.set(9, 0.5, 18);
|
|
|
+ pv023.rotateY( Math.PI / 6 );
|
|
|
+ pv023.name = "5A_15_30e_023";
|
|
|
+ scene.add(pv023);
|
|
|
+ setMessage("3D", "Loaded PV023.");
|
|
|
+
|
|
|
+ pv024 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv024.position.set(-16, 0.5, 24);
|
|
|
+ pv024.rotateY( Math.PI / 6 );
|
|
|
+ pv024.name = "6D_30_30e_024";
|
|
|
+ scene.add(pv024);
|
|
|
+ setMessage("3D", "Loaded PV024.");
|
|
|
+
|
|
|
+ pv025 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv025.position.set(-15, 0.5, 26);
|
|
|
+ pv025.rotateY( Math.PI / 6 );
|
|
|
+ pv025.name = "3D_30_30e_025";
|
|
|
+ scene.add(pv025);
|
|
|
+ setMessage("3D", "Loaded PV025.");
|
|
|
+
|
|
|
+ pv026 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv026.position.set(1.5, 0.5, -7.5);
|
|
|
+ pv026.rotateY( Math.PI / 6 );
|
|
|
+ pv026.name = "6A_45_30e_026";
|
|
|
+ scene.add(pv026);
|
|
|
+ setMessage("3D", "Loaded PV026.");
|
|
|
+
|
|
|
+ pv027 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv027.position.set(-3, 0.5, -8.5);
|
|
|
+ pv027.rotateY( Math.PI / 6 );
|
|
|
+ pv027.name = "3A_45_30e_027";
|
|
|
+ scene.add(pv027);
|
|
|
+ setMessage("3D", "Loaded PV027.");
|
|
|
+
|
|
|
+ pv028 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv028.position.set(3, 0.5, -4.5);
|
|
|
+ pv028.rotateY( Math.PI / 6 );
|
|
|
+ pv028.name = "1A_45_30e_028";
|
|
|
+ scene.add(pv028);
|
|
|
+ setMessage("3D", "Loaded PV028.");
|
|
|
+
|
|
|
+ pv029 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv029.position.set(3, 0.5, -25);
|
|
|
+ pv029.rotateY( Math.PI / 6 );
|
|
|
+ pv029.name = "6A_60_30e_029";
|
|
|
+ scene.add(pv029);
|
|
|
+ setMessage("3D", "Loaded PV029.");
|
|
|
+
|
|
|
+ pv030 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv030.position.set(1, 0.5, -13);
|
|
|
+ pv030.rotateY( Math.PI / 6 );
|
|
|
+ pv030.name = "3A_60_30e_030";
|
|
|
+ scene.add(pv030);
|
|
|
+ setMessage("3D", "Loaded PV030.");
|
|
|
+
|
|
|
+ pv031 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv031.position.set(0, 0.5, -16);
|
|
|
+ pv031.rotateY( Math.PI / 6 );
|
|
|
+ pv031.name = "1A_60_30e_031";
|
|
|
+ scene.add(pv031);
|
|
|
+ setMessage("3D", "Loaded PV031.");
|
|
|
+
|
|
|
+ pv032 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv032.position.set(7, 0.5, 10.5);
|
|
|
+ pv032.rotateY( Math.PI / 12 );
|
|
|
+ pv032.name = "3A_15_15e_032";
|
|
|
+ scene.add(pv032);
|
|
|
+ setMessage("3D", "Loaded PV032.");
|
|
|
+
|
|
|
+ pv033 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv033.position.set(-10, 0.5, 29.5);
|
|
|
+ pv033.rotateY( Math.PI / 12 );
|
|
|
+ pv033.name = "1B_15_15e_033";
|
|
|
+ scene.add(pv033);
|
|
|
+ setMessage("3D", "Loaded PV033.");
|
|
|
+
|
|
|
+ pv034 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv034.position.set(-11, 0.5, 31.5);
|
|
|
+ pv034.rotateY( Math.PI / 12 );
|
|
|
+ pv034.name = "4B_15_15e_034";
|
|
|
+ scene.add(pv034);
|
|
|
+ setMessage("3D", "Loaded PV034.");
|
|
|
+
|
|
|
+ pv035 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv035.position.set(-13, 0.5, 19);
|
|
|
+ pv035.rotateY( Math.PI / 12 );
|
|
|
+ pv035.name = "3A_30_15e_035";
|
|
|
+ scene.add(pv035);
|
|
|
+ setMessage("3D", "Loaded PV035.");
|
|
|
+
|
|
|
+ pv036 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv036.position.set(-13, 0.5, 21);
|
|
|
+ pv036.rotateY( Math.PI / 12 );
|
|
|
+ pv036.name = "1A_30_15e_036";
|
|
|
+ scene.add(pv036);
|
|
|
+ setMessage("3D", "Loaded PV036.");
|
|
|
+
|
|
|
+ pv037 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv037.position.set(-7, 0.5, 20);
|
|
|
+ pv037.rotateY( Math.PI / 12 );
|
|
|
+ pv037.name = "5A_30_15e_037";
|
|
|
+ scene.add(pv037);
|
|
|
+ setMessage("3D", "Loaded PV037.");
|
|
|
+
|
|
|
+ pv038 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv038.position.set(8, 0.5, -14);
|
|
|
+ pv038.rotateY( Math.PI / 12 );
|
|
|
+ pv038.name = "3A_45_15e_038";
|
|
|
+ scene.add(pv038);
|
|
|
+ setMessage("3D", "Loaded PV038.");
|
|
|
+
|
|
|
+ pv039 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv039.position.set(8, 0.5, -10);
|
|
|
+ pv039.rotateY( Math.PI / 12 );
|
|
|
+ pv039.name = "1A_45_15e_039";
|
|
|
+ scene.add(pv039);
|
|
|
+ setMessage("3D", "Loaded PV039.");
|
|
|
+
|
|
|
+ pv040 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv040.position.set(9, 0.5, -6.5);
|
|
|
+ pv040.rotateY( Math.PI / 12 );
|
|
|
+ pv040.name = "4A_45_15e_040";
|
|
|
+ scene.add(pv040);
|
|
|
+ setMessage("3D", "Loaded PV040.");
|
|
|
+
|
|
|
+ pv041 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv041.position.set(4, 0.5, -20.5);
|
|
|
+ pv041.rotateY( Math.PI / 12 );
|
|
|
+ pv041.name = "6A_60_15e_041";
|
|
|
+ scene.add(pv041);
|
|
|
+ setMessage("3D", "Loaded PV041.");
|
|
|
+
|
|
|
+ pv042 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv042.position.set(9, 0.5, -22);
|
|
|
+ pv042.rotateY( Math.PI / 12 );
|
|
|
+ pv042.name = "3A_60_15e_042";
|
|
|
+ scene.add(pv042);
|
|
|
+ setMessage("3D", "Loaded PV042.");
|
|
|
+
|
|
|
+ pv043 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv043.position.set(8, 0.5, -17.5);
|
|
|
+ pv043.rotateY( Math.PI / 12 );
|
|
|
+ pv043.name = "1A_60_15e_043";
|
|
|
+ scene.add(pv043);
|
|
|
+ setMessage("3D", "Loaded PV043.");
|
|
|
+
|
|
|
+ pv044 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv044.position.set(2, 0.5, 33);
|
|
|
+ pv044.rotateY( Math.PI );
|
|
|
+ pv044.name = "3B_15_00s_044";
|
|
|
+ scene.add(pv044);
|
|
|
+ setMessage("3D", "Loaded PV044.");
|
|
|
+
|
|
|
+ pv045 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv045.position.set(5, 0.5, 34.5);
|
|
|
+ pv045.rotateY( Math.PI );
|
|
|
+ pv045.name = "4B_15_00s_045";
|
|
|
+ scene.add(pv045);
|
|
|
+ setMessage("3D", "Loaded PV045.");
|
|
|
+
|
|
|
+ pv046 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv046.position.set(-1, 0.5, 35);
|
|
|
+ pv046.rotateY( Math.PI );
|
|
|
+ pv046.name = "6A_02_00s_046";
|
|
|
+ scene.add(pv046);
|
|
|
+ setMessage("3D", "Loaded PV046.");
|
|
|
+
|
|
|
+ pv047 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv047.position.set(3, 0.5, 36);
|
|
|
+ pv047.rotateY( Math.PI );
|
|
|
+ pv047.name = "2A_02_00s_047";
|
|
|
+ scene.add(pv047);
|
|
|
+ setMessage("3D", "Loaded PV047.");
|
|
|
+
|
|
|
+ pv048 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv048.position.set(6, 0.5, 37);
|
|
|
+ pv048.rotateY( Math.PI );
|
|
|
+ pv048.name = "1A_02_00s_048";
|
|
|
+ scene.add(pv048);
|
|
|
+ setMessage("3D", "Loaded PV048.");
|
|
|
+
|
|
|
+ pv049 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv049.position.set(-11, 0.5, 14);
|
|
|
+ pv049.rotateY( Math.PI );
|
|
|
+ pv049.name = "3C_30_00s_049";
|
|
|
+ scene.add(pv049);
|
|
|
+ setMessage("3D", "Loaded PV049.");
|
|
|
+
|
|
|
+ pv050 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv050.position.set(-10.5, 0.5, 11);
|
|
|
+ pv050.rotateY( Math.PI );
|
|
|
+ pv050.name = "1A_30_00s_050";
|
|
|
+ scene.add(pv050);
|
|
|
+ setMessage("3D", "Loaded PV050.");
|
|
|
+
|
|
|
+ pv051 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv051.position.set(8, 0.5, 7.5);
|
|
|
+ pv051.rotateY( Math.PI );
|
|
|
+ pv051.name = "1B_30_00s_051";
|
|
|
+ scene.add(pv051);
|
|
|
+ setMessage("3D", "Loaded PV051.");
|
|
|
+
|
|
|
+ pv052 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv052.position.set(-10, 0.5, 8);
|
|
|
+ pv052.rotateY( Math.PI );
|
|
|
+ pv052.name = "1D_30_00s_052";
|
|
|
+ scene.add(pv052);
|
|
|
+ setMessage("3D", "Loaded PV052.");
|
|
|
+
|
|
|
+ pv053 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv053.position.set(3, 0.5, 25);
|
|
|
+ pv053.rotateY( Math.PI );
|
|
|
+ pv053.name = "1C_30_00s_053";
|
|
|
+ scene.add(pv053);
|
|
|
+ setMessage("3D", "Loaded PV053.");
|
|
|
+
|
|
|
+ pv054 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv054.position.set(2.5, 0.5, 28);
|
|
|
+ pv054.rotateY( Math.PI );
|
|
|
+ pv054.name = "4D_30_00s_054";
|
|
|
+ scene.add(pv054);
|
|
|
+ setMessage("3D", "Loaded PV054.");
|
|
|
+
|
|
|
+ pv055 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv055.position.set(15, 0.5, -7);
|
|
|
+ pv055.rotateY( Math.PI );
|
|
|
+ pv055.name = "3A_45_00s_055";
|
|
|
+ scene.add(pv055);
|
|
|
+ setMessage("3D", "Loaded PV055.");
|
|
|
+
|
|
|
+ pv056 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv056.position.set(15, 0.5, -11);
|
|
|
+ pv056.rotateY( Math.PI );
|
|
|
+ pv056.name = "4A_45_00s_056";
|
|
|
+ scene.add(pv056);
|
|
|
+ setMessage("3D", "Loaded PV056.");
|
|
|
+
|
|
|
+ pv057 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv057.position.set(9, 0.5, -27.5);
|
|
|
+ pv057.rotateY( Math.PI );
|
|
|
+ pv057.name = "6A_60_00s_057";
|
|
|
+ scene.add(pv057);
|
|
|
+ setMessage("3D", "Loaded PV057.");
|
|
|
+
|
|
|
+ pv058 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv058.position.set(0, 0.5, -30);
|
|
|
+ pv058.rotateY( Math.PI );
|
|
|
+ pv058.name = "3A_60_00s_058";
|
|
|
+ scene.add(pv058);
|
|
|
+ setMessage("3D", "Loaded PV058.");
|
|
|
+
|
|
|
+ pv059 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv059.position.set(8, 0.5, 25.5);
|
|
|
+ pv059.rotateY( 11 * Math.PI / 12 );
|
|
|
+ pv059.name = "3B_15_15w_059";
|
|
|
+ scene.add(pv059);
|
|
|
+ setMessage("3D", "Loaded PV059.");
|
|
|
+
|
|
|
+ pv060 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv060.position.set(2.5, 0.5, 31);
|
|
|
+ pv060.rotateY( 11 * Math.PI / 12 );
|
|
|
+ pv060.name = "1B_15_15w_060";
|
|
|
+ scene.add(pv060);
|
|
|
+ setMessage("3D", "Loaded PV060.");
|
|
|
+
|
|
|
+ pv061 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv061.position.set(9.5, 0.5, 35.5);
|
|
|
+ pv061.rotateY( 11 * Math.PI / 12 );
|
|
|
+ pv061.name = "4B_15_15w_061";
|
|
|
+ scene.add(pv061);
|
|
|
+ setMessage("3D", "Loaded PV061.");
|
|
|
+
|
|
|
+ pv062 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv062.position.set(8, 0.5, 22.15);
|
|
|
+ pv062.rotateY( 11 * Math.PI / 12 );
|
|
|
+ pv062.name = "3A_30_15w_062";
|
|
|
+ scene.add(pv062);
|
|
|
+ setMessage("3D", "Loaded PV062.");
|
|
|
+
|
|
|
+ pv063 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv063.position.set(12.5, 0.5, 23.25);
|
|
|
+ pv063.rotateY( 11 * Math.PI / 12 );
|
|
|
+ pv063.name = "1A_30_15w_063";
|
|
|
+ scene.add(pv063);
|
|
|
+ setMessage("3D", "Loaded PV063.");
|
|
|
+
|
|
|
+ pv064 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv064.position.set(3.5, 0.5, 21);
|
|
|
+ pv064.rotateY( 11 * Math.PI / 12 );
|
|
|
+ pv064.name = "5A_30_15w_064";
|
|
|
+ scene.add(pv064);
|
|
|
+ setMessage("3D", "Loaded PV064.");
|
|
|
+
|
|
|
+ pv065 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv065.position.set(16, 0.5, -19);
|
|
|
+ pv065.rotateY( 11 * Math.PI / 12 );
|
|
|
+ pv065.name = "3A_45_15w_065";
|
|
|
+ scene.add(pv065);
|
|
|
+ setMessage("3D", "Loaded PV065.");
|
|
|
+
|
|
|
+ pv066 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv066.position.set(17, 0.5, -22);
|
|
|
+ pv066.rotateY( 11 * Math.PI / 12 );
|
|
|
+ pv066.name = "1A_45_15w_066";
|
|
|
+ scene.add(pv066);
|
|
|
+ setMessage("3D", "Loaded PV066.");
|
|
|
+
|
|
|
+ pv067 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv067.position.set(15, 0.5, -15);
|
|
|
+ pv067.rotateY( 11 * Math.PI / 12 );
|
|
|
+ pv067.name = "4A_45_15w_067";
|
|
|
+ scene.add(pv067);
|
|
|
+ setMessage("3D", "Loaded PV067.");
|
|
|
+
|
|
|
+ pv068 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv068.position.set(15, 0.5, -27);
|
|
|
+ pv068.rotateY( 11 * Math.PI / 12 );
|
|
|
+ pv068.name = "6A_60_15w_068";
|
|
|
+ scene.add(pv068);
|
|
|
+ setMessage("3D", "Loaded PV068.");
|
|
|
+
|
|
|
+ pv069 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv069.position.set(20, 0.5, -25.75);
|
|
|
+ pv069.rotateY( 11 * Math.PI / 12 );
|
|
|
+ pv069.name = "3A_60_15w_069";
|
|
|
+ scene.add(pv069);
|
|
|
+ setMessage("3D", "Loaded PV069.");
|
|
|
+
|
|
|
+ pv070 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv070.position.set(25, 0.5, -24.5);
|
|
|
+ pv070.rotateY( 11 * Math.PI / 12 );
|
|
|
+ pv070.name = "1A_60_15w_070";
|
|
|
+ scene.add(pv070);
|
|
|
+ setMessage("3D", "Loaded PV070.");
|
|
|
+
|
|
|
+ pv071 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv071.position.set(17, 0.5, 25);
|
|
|
+ pv071.rotateY( 11 * Math.PI / 6 );
|
|
|
+ pv071.name = "3A_15_30w_071";
|
|
|
+ scene.add(pv071);
|
|
|
+ setMessage("3D", "Loaded PV071.");
|
|
|
+
|
|
|
+ pv072 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv072.position.set(6.75, 0.5, 32.5);
|
|
|
+ pv072.rotateY( 11 * Math.PI / 6 );
|
|
|
+ pv072.name = "1A_15_30w_072";
|
|
|
+ scene.add(pv072);
|
|
|
+ setMessage("3D", "Loaded PV072.");
|
|
|
+
|
|
|
+ pv073 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv073.position.set(10.5, 0.5, 38.25);
|
|
|
+ pv073.rotateY( 11 * Math.PI / 6 );
|
|
|
+ pv073.name = "1B_15_30w_073";
|
|
|
+ scene.add(pv073);
|
|
|
+ setMessage("3D", "Loaded PV073.");
|
|
|
+
|
|
|
+ pv074 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv074.position.set(12.5, 0.5, 27.5);
|
|
|
+ pv074.rotateY( 11 * Math.PI / 6 );
|
|
|
+ pv074.name = "1D_15_30w_074";
|
|
|
+ scene.add(pv074);
|
|
|
+ setMessage("3D", "Loaded PV074.");
|
|
|
+
|
|
|
+ pv075 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv075.position.set(7.5, 0.5, 29.5);
|
|
|
+ pv075.rotateY( 11 * Math.PI / 6 );
|
|
|
+ pv075.name = "1C_15_30w_075";
|
|
|
+ scene.add(pv075);
|
|
|
+
|
|
|
+ pv076 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv076.position.set(11, 0.5, 33.5);
|
|
|
+ pv076.rotateY( 11 * Math.PI / 6 );
|
|
|
+ pv076.name = "5D_15_30w_076";
|
|
|
+ scene.add(pv076);
|
|
|
+ setMessage("3D", "Loaded PV076.");
|
|
|
+
|
|
|
+ pv077 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv077.position.set(13, 0.5, 12);
|
|
|
+ pv077.rotateY( 11 * Math.PI / 6 );
|
|
|
+ pv077.name = "6D_30_30w_077";
|
|
|
+ scene.add(pv077);
|
|
|
+ setMessage("3D", "Loaded PV077.");
|
|
|
+
|
|
|
+ pv078 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv078.position.set(12, 0.5, 15);
|
|
|
+ pv078.rotateY( 11 * Math.PI / 6 );
|
|
|
+ pv078.name = "3D_30_30w_078";
|
|
|
+ scene.add(pv078);
|
|
|
+ setMessage("3D", "Loaded PV078.");
|
|
|
+
|
|
|
+ pv079 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv079.position.set(14, 0.5, 9);
|
|
|
+ pv079.rotateY( 11 * Math.PI / 6 );
|
|
|
+ pv079.name = "1D_30_30w_079";
|
|
|
+ scene.add(pv079);
|
|
|
+ setMessage("3D", "Loaded PV079.");
|
|
|
+
|
|
|
+ pv080 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv080.position.set(20, 0.5, -4);
|
|
|
+ pv080.rotateY( 11 * Math.PI / 6 );
|
|
|
+ pv080.name = "3A_45_30w_080";
|
|
|
+ scene.add(pv080);
|
|
|
+ setMessage("3D", "Loaded PV080.");
|
|
|
+
|
|
|
+ pv081 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv081.position.set(21, 0.5, -7);
|
|
|
+ pv081.rotateY( 11 * Math.PI / 6 );
|
|
|
+ pv081.name = "1A_45_30w_081";
|
|
|
+ scene.add(pv081);
|
|
|
+ setMessage("3D", "Loaded PV081.");
|
|
|
+
|
|
|
+ pv082 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv082.position.set(21.5, 0.5, -11);
|
|
|
+ pv082.rotateY( 11 * Math.PI / 6 );
|
|
|
+ pv082.name = "5A_45_30w_082";
|
|
|
+ scene.add(pv082);
|
|
|
+ setMessage("3D", "Loaded PV082.");
|
|
|
+
|
|
|
+ pv083 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv083.position.set(24, 0.5, -21);
|
|
|
+ pv083.rotateY( 11 * Math.PI / 6 );
|
|
|
+ pv083.name = "6A_60_30w_083";
|
|
|
+ scene.add(pv083);
|
|
|
+ setMessage("3D", "Loaded PV083.");
|
|
|
+
|
|
|
+ pv084 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv084.position.set(23, 0.5, -18);
|
|
|
+ pv084.rotateY( 11 * Math.PI / 6 );
|
|
|
+ pv084.name = "3A_60_30w_084";
|
|
|
+ scene.add(pv084);
|
|
|
+ setMessage("3D", "Loaded PV084.");
|
|
|
+
|
|
|
+ pv085 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv085.position.set(23, 0.5, -14);
|
|
|
+ pv085.rotateY( 11 * Math.PI / 6 );
|
|
|
+ pv085.name = "1A_60_30w_085";
|
|
|
+ scene.add(pv085);
|
|
|
+ setMessage("3D", "Loaded PV085.");
|
|
|
+
|
|
|
+ pv086 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv086.position.set(12, 0.5, 30.5);
|
|
|
+ pv086.rotateY( 7 * Math.PI / 4 );
|
|
|
+ pv086.name = "2A_15_45w_086";
|
|
|
+ scene.add(pv086);
|
|
|
+ setMessage("3D", "Loaded PV086.");
|
|
|
+
|
|
|
+ pv087 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv087.position.set(16, 0.5, 30.5);
|
|
|
+ pv087.rotateY( 7 * Math.PI / 4 );
|
|
|
+ pv087.name = "1A_15_45w_087";
|
|
|
+ scene.add(pv087);
|
|
|
+ setMessage("3D", "Loaded PV087.");
|
|
|
+
|
|
|
+ pv088 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv088.position.set(17, 0.5, 27.5);
|
|
|
+ pv088.rotateY( 7 * Math.PI / 4 );
|
|
|
+ pv088.name = "4A_15_45w_088";
|
|
|
+ scene.add(pv088);
|
|
|
+ setMessage("3D", "Loaded PV088.");
|
|
|
+
|
|
|
+ pv089 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv089.position.set(20, 0.5, 11);
|
|
|
+ pv089.rotateY( 7 * Math.PI / 4 );
|
|
|
+ pv089.name = "6A_30_45w_089";
|
|
|
+ scene.add(pv089);
|
|
|
+ setMessage("3D", "Loaded PV089.");
|
|
|
+
|
|
|
+ pv090 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv090.position.set(19, 0.5, 14);
|
|
|
+ pv090.rotateY( 7 * Math.PI / 4 );
|
|
|
+ pv090.name = "2A_30_45w_090";
|
|
|
+ scene.add(pv090);
|
|
|
+ setMessage("3D", "Loaded PV090.");
|
|
|
+
|
|
|
+ pv091 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv091.position.set(29, 0.5, -14);
|
|
|
+ pv091.rotateY( 7 * Math.PI / 4 );
|
|
|
+ pv091.name = "2C_45_45w_091";
|
|
|
+ scene.add(pv091);
|
|
|
+ setMessage("3D", "Loaded PV091.");
|
|
|
+
|
|
|
+ pv092 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv092.position.set(23, 0.5, 7);
|
|
|
+ pv092.rotateY( 7 * Math.PI / 4 );
|
|
|
+ pv092.name = "4C_45_45w_092";
|
|
|
+ scene.add(pv092);
|
|
|
+ setMessage("3D", "Loaded PV092.");
|
|
|
+
|
|
|
+ pv093 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv093.position.set(30, 0.5, -18);
|
|
|
+ pv093.rotateY( 7 * Math.PI / 4 );
|
|
|
+ pv093.name = "6A_60_45w_093";
|
|
|
+ scene.add(pv093);
|
|
|
+ setMessage("3D", "Loaded PV093.");
|
|
|
+
|
|
|
+ pv094 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv094.position.set(30, 0.5, -22);
|
|
|
+ pv094.rotateY( 7 * Math.PI / 4 );
|
|
|
+ pv094.name = "2A_60_45w_094";
|
|
|
+ scene.add(pv094);
|
|
|
+ setMessage("3D", "Loaded PV094.");
|
|
|
+
|
|
|
+ pv095 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv095.position.set(15, 0.5, 34);
|
|
|
+ pv095.rotateY( 5 * Math.PI / 3);
|
|
|
+ pv095.name = "6A_15_60w_095";
|
|
|
+ scene.add(pv095);
|
|
|
+ setMessage("3D", "Loaded PV095.");
|
|
|
+
|
|
|
+ pv096 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv096.position.set(14, 0.5, 37);
|
|
|
+ pv096.rotateY( 5 * Math.PI / 3);
|
|
|
+ pv096.name = "2A_15_60w_096";
|
|
|
+ scene.add(pv096);
|
|
|
+ setMessage("3D", "Loaded PV096.");
|
|
|
+
|
|
|
+ pv097 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv097.position.set(16, 0.5, 20);
|
|
|
+ pv097.rotateY( 5 * Math.PI / 3);
|
|
|
+ pv097.name = "6A_30_60w_097";
|
|
|
+ scene.add(pv097);
|
|
|
+ setMessage("3D", "Loaded PV097.");
|
|
|
+
|
|
|
+ pv098 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv098.position.set(17, 0.5, 17);
|
|
|
+ pv098.rotateY( 5 * Math.PI / 3);
|
|
|
+ pv098.name = "1A_30_60w_098";
|
|
|
+ scene.add(pv098);
|
|
|
+ setMessage("3D", "Loaded PV098.");
|
|
|
+
|
|
|
+ pv099 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv099.position.set(25, 0.5, -1);
|
|
|
+ pv099.rotateY( 5 * Math.PI / 3);
|
|
|
+ pv099.name = "6A_45_60w_099";
|
|
|
+ scene.add(pv099);
|
|
|
+ setMessage("3D", "Loaded PV099.");
|
|
|
+
|
|
|
+ pv100 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv100.position.set(22, 0.5, 2);
|
|
|
+ pv100.rotateY( 5 * Math.PI / 3);
|
|
|
+ pv100.name = "1A_45_60w_100";
|
|
|
+ scene.add(pv100);
|
|
|
+ setMessage("3D", "Loaded PV100.");
|
|
|
+
|
|
|
+ pv101 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv101.position.set(28, 0.5, -10);
|
|
|
+ pv101.rotateY( 5 * Math.PI / 3);
|
|
|
+ pv101.name = "2C_60_60w_101";
|
|
|
+ scene.add(pv101);
|
|
|
+ setMessage("3D", "Loaded PV101.");
|
|
|
+
|
|
|
+ pv102 = new THREE.Mesh(
|
|
|
+ new THREE.CubeGeometry( 4, 1, 1 ),
|
|
|
+ new THREE.MeshPhongMaterial( {
|
|
|
+ color: 0xD3D3D3,
|
|
|
+ specular: 0x050505,
|
|
|
+ shininess: 100
|
|
|
+ })
|
|
|
+ );
|
|
|
+ pv102.position.set(26, 0.5, -6);
|
|
|
+ pv102.rotateY( 5 * Math.PI / 3);
|
|
|
+ pv102.name = "1C_60_60w_102";
|
|
|
+ scene.add(pv102);
|
|
|
+ setMessage("3D", "Loaded PV102.");
|
|
|
+
|
|
|
+ //scene.fog = new THREE.FogExp2( 0x000000, 0.0128 );
|
|
|
+ //renderer.setClearColor( scene.fog.color, 1 );
|
|
|
+ render();
|
|
|
+ }
|
|
|
+
|
|
|
+ function animate() {
|
|
|
+ requestAnimationFrame(animate);
|
|
|
+
|
|
|
+ if (enableControls){
|
|
|
+ mycontrol.enabled = true;
|
|
|
+ } else {
|
|
|
+ mycontrol.enabled = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ mycontrol.update();
|
|
|
+
|
|
|
+ render();
|
|
|
+ }
|
|
|
+
|
|
|
+ var vector;
|
|
|
+ function render() {
|
|
|
+ /*
|
|
|
+ var speed = 0.0002;
|
|
|
+ var distance = 200;
|
|
|
+ var timer = Date.now() * speed;
|
|
|
+ camera.position.x = Math.cos(timer) * distance;
|
|
|
+ camera.position.z = Math.sin(timer) * distance;
|
|
|
+ camera.lookAt(scene.position);
|
|
|
+ */
|
|
|
+
|
|
|
+ // update the picking ray with the camera and mouse position
|
|
|
+ raycaster.setFromCamera( mouse, camera );
|
|
|
+
|
|
|
+ // calculate objects intersecting the picking ray
|
|
|
+ var intersects = raycaster.intersectObjects( scene.children );
|
|
|
+
|
|
|
+ for ( var i = 0; i < intersects.length; i++ ) {
|
|
|
+ //intersects[ i ].object.material.color.set( 0xff0000 );
|
|
|
+ //$("#obj-tooltip").text(intersects[ i ].object.name);
|
|
|
+ if (intersects[ i ].object.name != "") {
|
|
|
+ $("#obj-tooltip").text("Module: " + intersects[ i ].object.name);
|
|
|
+ $("#val-tooltip").text("Value: " + data[ intersects[ i ].object.name ]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ renderer.render(scene, camera);
|
|
|
+
|
|
|
+ vector = camera.getWorldDirection();
|
|
|
+ theta = Math.atan2(vector.x,vector.z);
|
|
|
+ theta = theta + 3.142; // add/minux pi to inverse
|
|
|
+ var degree = theta * (180/3.142);
|
|
|
+ //console.log(degree);
|
|
|
+ draw(degree);
|
|
|
+ }
|
|
|
+
|
|
|
+ $("#testTrigger").click(function() {
|
|
|
+ console.log("clicked");
|
|
|
+ pv001.material.color.setHex( 0x00ff00 );
|
|
|
+ pv001.scale.y = 10;
|
|
|
+ pv001.position.y = 5.5;
|
|
|
+ setMessage("3D", "Updated PV001.");
|
|
|
+ render();
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ $("#message").mousedown(function() {
|
|
|
+ console.log("clicked");
|
|
|
+ enableControls = false;
|
|
|
+ setMessage("GUI", "De-select main scene. Click on main scene to re-select.");
|
|
|
+ //render();
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#orientation").mousedown(function() {
|
|
|
+ console.log("clicked");
|
|
|
+ enableControls = false;
|
|
|
+ setMessage("GUI", "De-select main scene. Click on main scene to re-select.");
|
|
|
+ //render();
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#settings").mousedown(function() {
|
|
|
+ console.log("clicked");
|
|
|
+ enableControls = false;
|
|
|
+ setMessage("GUI", "De-select main scene. Click on main scene to re-select.");
|
|
|
+ //render();
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#slider").mousedown(function() {
|
|
|
+ console.log("clicked");
|
|
|
+ enableControls = false;
|
|
|
+ setMessage("GUI", "De-select main scene. Click on main scene to re-select.");
|
|
|
+ //render();
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#container").click(function() {
|
|
|
+ console.log("clicked");
|
|
|
+ enableControls = true;
|
|
|
+ animate();
|
|
|
+ setMessage("GUI", "Selected main scene.");
|
|
|
+ });
|
|
|
+ </script>
|
|
|
+<script>
|
|
|
+jQuery(window).load(function () {
|
|
|
+
|
|
|
+myTimer();
|
|
|
+var myVar = setInterval(myTimer, 10000);
|
|
|
+
|
|
|
+function myTimer() {
|
|
|
+ var dataToSend = {};
|
|
|
+ var object;
|
|
|
+ var colour;
|
|
|
+ var value;
|
|
|
+
|
|
|
+ $.ajax({
|
|
|
+ url: '/getdata/',
|
|
|
+ type: 'GET',
|
|
|
+ data: dataToSend,
|
|
|
+ success: function (response) {
|
|
|
+ //var objresponse = JSON.parse(response);
|
|
|
+ console.log(response);
|
|
|
+ data = response;
|
|
|
+ var obj = response;
|
|
|
+ for (var prop in obj) {
|
|
|
+ value = obj[prop];
|
|
|
+ if (prop == "time") {
|
|
|
+ $("#slider-tooltip").text(value);
|
|
|
+ } else {
|
|
|
+ // 0 = red
|
|
|
+ // 1 = green
|
|
|
+ if (value == "") {
|
|
|
+ colour = "0x808080";
|
|
|
+ } else {
|
|
|
+ if ( value == 0) {
|
|
|
+ colour = "0xff0000";
|
|
|
+ } else if (value == 3) {
|
|
|
+ colour = "0x00ff00";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ object = scene.getObjectByName( prop, true );
|
|
|
+ object.material.color.setHex( colour );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ error: function () {
|
|
|
+ console.log("Error.")
|
|
|
+ }
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+});
|
|
|
+
|
|
|
+
|
|
|
+</script>
|
|
|
+</body>
|
|
|
+</html>
|