|
7 | 7 | <style>
|
8 | 8 | body {
|
9 | 9 | font-family: Monospace;
|
10 |
| - background-color: #f0f0f0; |
| 10 | + background-color: #101010; |
| 11 | + color: #fff; |
11 | 12 | margin: 0px;
|
12 | 13 | overflow: hidden;
|
13 | 14 | }
|
14 |
| - |
15 |
| - .menu { |
16 |
| - position: fixed; |
17 |
| - bottom: 20px; |
18 |
| - left: 20px; |
19 |
| - } |
20 |
| - |
21 |
| - .button { |
22 |
| - display: inline-block; |
23 |
| - padding: 8px; |
24 |
| - color: #FFF; |
25 |
| - background-color: #555; |
26 |
| - } |
27 |
| - |
28 |
| - .button.enabled { |
29 |
| - background-color: rgb(18, 140, 36); |
30 |
| - } |
31 |
| - |
32 |
| - .button:hover { |
33 |
| - cursor: pointer; |
34 |
| - background-color: rgb(18, 36, 70); |
35 |
| - } |
36 |
| - |
37 |
| - .button.error { |
38 |
| - pointer-events: none; |
39 |
| - background-color: red; |
| 15 | + a { |
| 16 | + color: #f00; |
40 | 17 | }
|
41 |
| - |
42 | 18 | </style>
|
43 | 19 | </head>
|
44 | 20 | <body>
|
45 |
| - <div class="menu"> |
46 |
| - <div class="button full-screen">Start VR Mode</div> |
47 |
| - </div> |
48 | 21 |
|
49 | 22 | <script src="../build/three.min.js"></script>
|
| 23 | + |
| 24 | + <script src="js/WebVR.js"></script> |
50 | 25 | <script src="js/effects/VREffect.js"></script>
|
51 | 26 | <script src="js/controls/VRControls.js"></script>
|
52 | 27 | <script src="js/libs/stats.min.js"></script>
|
53 | 28 |
|
54 | 29 | <script>
|
55 | 30 |
|
| 31 | + if ( WEBVR.isLatestAvailable() === false ) { |
| 32 | + |
| 33 | + document.body.appendChild( WEBVR.getMessage() ); |
| 34 | + |
| 35 | + } |
| 36 | + |
| 37 | + // |
| 38 | + |
56 | 39 | var container, stats;
|
57 | 40 | var camera, scene, raycaster, renderer;
|
58 |
| - var vrEffect; |
59 |
| - var vrControls; |
| 41 | + var effect, controls; |
60 | 42 |
|
61 | 43 | var cubes = [];
|
62 | 44 | var INTERSECTED;
|
|
79 | 61 | info.innerHTML = '<a href="http://threejs.org" target="_blank">three.js</a> webgl - interactive cubes';
|
80 | 62 | container.appendChild( info );
|
81 | 63 |
|
82 |
| - camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 1, 10000 ); |
83 |
| - |
84 | 64 | scene = new THREE.Scene();
|
85 | 65 |
|
| 66 | + camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 1, 10000 ); |
| 67 | + scene.add( camera ); |
| 68 | + |
86 | 69 | crosshair = new THREE.Mesh(
|
87 | 70 | new THREE.RingGeometry( 0.5, 1, 32 ),
|
88 | 71 | new THREE.MeshBasicMaterial( {
|
89 |
| - color: 0x00bb00, |
90 |
| - transparent: true, |
91 |
| - opacity: 0.5 |
| 72 | + color: 0xffffff, |
| 73 | + opacity: 0.5, |
| 74 | + transparent: true |
92 | 75 | } )
|
93 | 76 | );
|
94 |
| - scene.add( crosshair ); |
| 77 | + crosshair.position.z = - 40; |
| 78 | + camera.add( crosshair ); |
95 | 79 |
|
96 | 80 | var light = new THREE.DirectionalLight( 0xffffff, 1 );
|
97 | 81 | light.position.set( 1, 1, 1 ).normalize();
|
98 | 82 | scene.add( light );
|
99 | 83 |
|
100 | 84 | var geometry = new THREE.BoxGeometry( 20, 20, 20 );
|
101 | 85 |
|
102 |
| - for ( var i = 0; i < 2000; i ++ ) { |
| 86 | + for ( var i = 0; i < 200; i ++ ) { |
103 | 87 |
|
104 | 88 | var object = new THREE.Mesh( geometry, new THREE.MeshLambertMaterial( { color: Math.random() * 0xffffff } ) );
|
105 | 89 |
|
|
123 | 107 | raycaster = new THREE.Raycaster();
|
124 | 108 |
|
125 | 109 | renderer = new THREE.WebGLRenderer( { antialias: true } );
|
| 110 | + renderer.setClearColor( 0x101010 ); |
126 | 111 | renderer.setPixelRatio( window.devicePixelRatio );
|
| 112 | + renderer.setSize( window.innerWidth, window.innerHeight ); |
| 113 | + renderer.sortObjects = false; |
| 114 | + container.appendChild( renderer.domElement ); |
127 | 115 |
|
128 |
| - var fullScreenButton = document.querySelector( '.full-screen' ); |
129 |
| - |
130 |
| - if ( navigator.getVRDisplays === undefined && navigator.getVRDevices === undefined ) { |
131 |
| - |
132 |
| - fullScreenButton.innerHTML = 'Your browser doesn\'t support WebVR'; |
133 |
| - fullScreenButton.classList.add( 'error' ); |
| 116 | + controls = new THREE.VRControls( camera ); |
| 117 | + effect = new THREE.VREffect( renderer ); |
134 | 118 |
|
135 |
| - } else { |
| 119 | + if ( WEBVR.isAvailable() === true ) { |
136 | 120 |
|
137 |
| - fullScreenButton.classList.add( 'enabled' ); |
| 121 | + document.body.appendChild( WEBVR.getButton( effect ) ); |
138 | 122 |
|
139 | 123 | }
|
140 | 124 |
|
141 |
| - vrControls = new THREE.VRControls( camera ); |
142 |
| - vrEffect = new THREE.VREffect( renderer, function ( error ) { |
143 |
| - |
144 |
| - fullScreenButton.innerHTML = error; |
145 |
| - fullScreenButton.classList.add( 'error' ); |
146 |
| - |
147 |
| - } ); |
148 |
| - |
149 |
| - fullScreenButton.onclick = function() { |
150 |
| - |
151 |
| - vrEffect.setFullScreen( true ); |
152 |
| - |
153 |
| - }; |
154 |
| - |
155 |
| - renderer.setClearColor( 0xf0f0f0 ); |
156 |
| - renderer.setSize( window.innerWidth, window.innerHeight ); |
157 |
| - renderer.sortObjects = false; |
158 |
| - container.appendChild( renderer.domElement ); |
159 |
| - |
160 | 125 | stats = new Stats();
|
161 | 126 | stats.domElement.style.position = 'absolute';
|
162 | 127 | stats.domElement.style.top = '0';
|
|
173 | 138 | camera.aspect = window.innerWidth / window.innerHeight;
|
174 | 139 | camera.updateProjectionMatrix();
|
175 | 140 |
|
176 |
| - vrEffect.setSize( window.innerWidth, window.innerHeight ); |
| 141 | + effect.setSize( window.innerWidth, window.innerHeight ); |
177 | 142 |
|
178 | 143 | }
|
179 | 144 |
|
|
216 | 181 |
|
217 | 182 | }
|
218 | 183 |
|
219 |
| - vrControls.update(); |
220 |
| - |
221 |
| - crosshair.quaternion.copy( camera.quaternion ); |
222 |
| - crosshair.position.set( 0, 0, 0 ); |
223 |
| - |
224 |
| - if ( INTERSECTED ) { |
225 |
| - |
226 |
| - crosshair.translateZ( |
227 |
| - -scene.position.distanceTo( INTERSECTED.position ) + |
228 |
| - INTERSECTED.geometry.boundingSphere.radius + 5 |
229 |
| - ); |
230 |
| - |
231 |
| - } |
232 |
| - else { |
233 |
| - |
234 |
| - crosshair.translateZ(-40); |
235 |
| - |
236 |
| - } |
| 184 | + controls.update(); |
237 | 185 |
|
238 |
| - vrEffect.render( scene, camera ); |
| 186 | + effect.render( scene, camera ); |
239 | 187 |
|
240 | 188 | }
|
241 | 189 |
|
|
0 commit comments