annotate Resources/Nexus/threejs.html @ 63:1fd6d0f8fdc9

clarifying the versions of the viewers
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 15 Jun 2024 16:17:41 +0200
parents b798387b085c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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>
62
b798387b085c added 3DHOP viewer version 4.3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
8 <script src="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