+function init() {\r
+ var particles, particle;\r
+ \r
+ div3d = JQuery('#div3d');\r
+ nodebox = JQuery('#nodebox');\r
+ infobox = JQuery('#infobox');\r
+ titlebox = JQuery('#titlebox');\r
+ \r
+ var offset = div3d.offset;\r
+ offY = div3d.top;\r
+ offX = div3d.left;\r
+ \r
+ //titlebox.innerHTML = 'Grenoble Site ' + nodes.length + " nodes";\r
+ infobox.innerHTML = 'Node info : ';\r
+ \r
+ nodebox.value = "";\r
+ \r
+ camera = new THREE.PerspectiveCamera(75, window3DWidth / window3DHeight, 1, 10000);\r
+ \r
+ scene = new THREE.Scene();\r
+ \r
+ renderer = new THREE.CanvasRenderer();\r
+ \r
+ div3d.append(renderer.domElement);\r
+ \r
+ window.addEventListener('resize', set3dsize, false);\r
+ scene.add(camera);\r
+ set3dsize();\r
+ \r
+ \r
+ var PI2 = Math.PI * 2;\r
+ var geometry = new THREE.Geometry();\r
+ \r
+ // let's find the center of the nodes\r
+ xmin = ymin = zmin = 0;\r
+ xmax = ymax = zmax = 0;\r
+ \r
+ for (var i = 0; i < nodes.length; i++) {\r
+ if (nodes[i][1] > xmax) xmax = nodes[i][1];\r
+ if (nodes[i][1] < xmin) xmin = nodes[i][1];\r
+ if (nodes[i][2] > ymax) ymax = nodes[i][2];\r
+ if (nodes[i][2] < ymin) ymin = nodes[i][2];\r
+ if (nodes[i][3] > zmax) zmax = nodes[i][3];\r
+ if (nodes[i][3] < zmin) zmin = nodes[i][3];\r
+ }\r
+ \r
+ xcenter = (xmax + xmin) / 2;\r
+ ycenter = (ymax + ymin) / 2;\r
+ zcenter = (zmax + zmin) / 2;\r
+ \r
+ // display nodes as TREE particles\r
+ for (var i = 0; i < nodes.length; i++) {\r
+ material = new THREE.ParticleCanvasMaterial({\r
+ color: 0xffffff,\r
+ program: function (context) {\r
+ context.beginPath();\r
+ context.arc(0, 0, 1, 0, PI2, true);\r
+ context.closePath();\r
+ context.fill();\r
+ }\r
+ });\r
+ particle = new THREE.Particle(material);\r
+ particle.name = nodes[i][0];\r
+ particle.position.x = nodes[i][1] - xcenter;\r
+ particle.position.y = nodes[i][2] - ycenter;\r
+ particle.position.z = nodes[i][3] - zcenter;\r
+ particle.uid = nodes[i][4];\r
+ particle.state = nodes[i][5];\r
+ particle.position.multiplyScalar(10);\r
+ particle.scale.x = particle.scale.y = 1;\r
+ scene.add(particle);\r
+ v = new THREE.Vertex(particle.position);\r
+ geometry.vertices.push(v);\r
+ objects.push(particle)\r