Mercurial > hg > orthanc-stl
annotate Resources/Nexus/threejs.html @ 46:9b2a2fcc9878 nexus
added option to disable Nexus support
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 10 Apr 2024 07:49:45 +0200 |
parents | 967f947014ac |
children | b798387b085c |
rev | line source |
---|---|
45
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1 <!DOCTYPE html> |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
2 <html lang="en"> |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
3 <head> |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
4 <title>Nexus threejs</title> |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
5 <meta charset="utf-8"> |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
6 <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
7 <style>body { margin: 0px; overflow: hidden; }</style> |
46
9b2a2fcc9878
added option to disable Nexus support
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
45
diff
changeset
|
8 <script src="../app/libs/three-84.js"></script> |
45
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
9 <script src="js/TrackballControls.js"></script> |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
10 <script src="js/nexus.js"></script> |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
11 <script src="js/nexus_three.js"></script> |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
12 </head> |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
13 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
14 <body> |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
15 <div id="container"></div> |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
16 </body> |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
17 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
18 <script> |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
19 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
20 var camera = new THREE.PerspectiveCamera( 30, window.innerWidth / window.innerHeight, 0.1, 100 ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
21 camera.position.z = 4; |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
22 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
23 var controls = new THREE.TrackballControls( camera ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
24 controls.rotateSpeed = 10.0; |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
25 controls.zoomSpeed = 1.5; |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
26 controls.panSpeed = 0.8; |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
27 controls.noZoom = false; |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
28 controls.noPan = false; |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
29 controls.staticMoving = true; |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
30 controls.dynamicDampingFactor = 0.3; |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
31 controls.keys = [ 65, 83, 68 ]; |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
32 controls.addEventListener( 'change', render ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
33 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
34 var scene = new THREE.Scene(); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
35 scene.fog = new THREE.Fog( 0x050505, 2000, 3500 ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
36 scene.add( new THREE.AmbientLight( 0x444444 ) ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
37 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
38 var light1 = new THREE.DirectionalLight( 0xffffff, 1.0 ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
39 light1.position.set( 1, 1, -1 ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
40 scene.add( light1 ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
41 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
42 var light2 = new THREE.DirectionalLight( 0xffffff, 1.0 ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
43 light2.position.set( -1, -1, 1 ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
44 scene.add( light2 ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
45 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
46 var renderer = new THREE.WebGLRenderer( { antialias: false } ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
47 renderer.setClearColor( scene.fog.color ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
48 renderer.setPixelRatio( window.devicePixelRatio ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
49 renderer.setSize( window.innerWidth, window.innerHeight); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
50 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
51 var container = document.getElementById( 'container'); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
52 container.appendChild( renderer.domElement ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
53 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
54 /* An appropriate material can be used as a fourth arg for the NexusObject constructor |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
55 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
56 var texture = new THREE.DataTexture( new Uint8Array([1, 1, 1]), 1, 1, THREE.RGBFormat ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
57 texture.needsUpdate = true; |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
58 var material = new THREE.MeshLambertMaterial( { color: 0xffffff, map: texture } ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
59 */ |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
60 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
61 function getURLParameter(name) { |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
62 return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [null, ''])[1].replace(/\+/g, '%20')) || null; |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
63 } |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
64 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
65 var model = getURLParameter('model') || "models/gargo.nxz"; |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
66 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
67 var nexus_obj = new NexusObject(model, renderer, render); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
68 scene.add(nexus_obj); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
69 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
70 window.addEventListener( 'resize', onWindowResize, false ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
71 render(); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
72 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
73 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
74 function onWindowResize() { |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
75 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
76 camera.aspect = window.innerWidth / window.innerHeight; |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
77 camera.updateProjectionMatrix(); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
78 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
79 renderer.setSize( window.innerWidth, window.innerHeight ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
80 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
81 controls.handleResize(); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
82 controls.update(); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
83 render(); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
84 } |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
85 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
86 function animate() { |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
87 requestAnimationFrame( animate ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
88 controls.update(); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
89 } |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
90 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
91 function render() { |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
92 Nexus.beginFrame(renderer.context); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
93 renderer.render( scene, camera ); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
94 Nexus.endFrame(renderer.context); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
95 } |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
96 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
97 animate(); |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
98 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
99 </script> |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
100 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
101 |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
102 </html> |
967f947014ac
adding experimental support for nexus models
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
103 |