@@ -6,10 +6,7 @@ import 'vtk.js/Sources/Rendering/Profiles/Geometry';
6
6
import HttpDataAccessHelper from 'vtk.js/Sources/IO/Core/DataAccessHelper/HttpDataAccessHelper' ;
7
7
import macro from 'vtk.js/Sources/macros' ;
8
8
import vtkDeviceOrientationToCamera from 'vtk.js/Sources/Interaction/Misc/DeviceOrientationToCamera' ;
9
- import vtkForwardPass from 'vtk.js/Sources/Rendering/OpenGL/ForwardPass' ;
10
9
import vtkFullScreenRenderWindow from 'vtk.js/Sources/Rendering/Misc/FullScreenRenderWindow' ;
11
- import vtkRadialDistortionPass from 'vtk.js/Sources/Rendering/OpenGL/RadialDistortionPass' ;
12
- import vtkRenderer from 'vtk.js/Sources/Rendering/Core/Renderer' ;
13
10
import vtkSkybox from 'vtk.js/Sources/Rendering/Core/Skybox' ;
14
11
import vtkSkyboxReader from 'vtk.js/Sources/IO/Misc/SkyboxReader' ;
15
12
import vtkURLExtract from 'vtk.js/Sources/Common/Core/URLExtract' ;
@@ -41,14 +38,9 @@ let autoInit = true;
41
38
const cameraFocalPoint = userParams . direction || [ 0 , 0 , - 1 ] ;
42
39
const cameraViewUp = userParams . up || [ 0 , 1 , 0 ] ;
43
40
const cameraViewAngle = userParams . viewAngle || 100 ;
44
- const enableVR = ! ! userParams . vr ;
45
41
const eyeSpacing = userParams . eye || 0.0 ;
46
42
const grid = userParams . debug || false ;
47
43
const autoIncrementTimer = userParams . timer || 0 ;
48
- const disableTouchNext = userParams . disableTouch || false ;
49
- const distk1 = userParams . k1 || 0.2 ;
50
- const distk2 = userParams . k2 || 0.0 ;
51
- const cameraCenterY = userParams . centerY || 0.0 ;
52
44
53
45
const body = document . querySelector ( 'body' ) ;
54
46
let fullScreenMetod = null ;
@@ -151,10 +143,8 @@ function createVisualization(container, mapReader) {
151
143
const mainRenderer = fullScreenRenderer . getRenderer ( ) ;
152
144
const interactor = fullScreenRenderer . getInteractor ( ) ;
153
145
const actor = vtkSkybox . newInstance ( ) ;
154
- let camera = mainRenderer . getActiveCamera ( ) ;
155
- let leftRenderer = null ;
156
- let rightRenderer = null ;
157
- let updateCameraCallBack = mainRenderer . resetCameraClippingRange ;
146
+ const camera = mainRenderer . getActiveCamera ( ) ;
147
+ const updateCameraCallBack = mainRenderer . resetCameraClippingRange ;
158
148
159
149
// Connect viz pipeline
160
150
actor . addTexture ( mapReader . getOutputData ( ) ) ;
@@ -189,116 +179,28 @@ function createVisualization(container, mapReader) {
189
179
updateSkybox ( allPositions [ nextIdx ] ) ;
190
180
}
191
181
192
- if ( enableVR && vtkDeviceOrientationToCamera . isDeviceOrientationSupported ( ) ) {
193
- // vtkMobileVR.getVRHeadset().then((headset) => {
194
- // console.log('got headset');
195
- // console.log(headset);
196
- // console.log(vtkMobileVR.hardware);
197
- // });
198
-
199
- leftRenderer = vtkRenderer . newInstance ( ) ;
200
- rightRenderer = vtkRenderer . newInstance ( ) ;
201
-
202
- // Configure left/right renderers
203
- leftRenderer . setViewport ( 0 , 0 , 0.5 , 1 ) ;
204
- leftRenderer . addActor ( actor ) ;
205
- const leftCamera = leftRenderer . getActiveCamera ( ) ;
206
- leftCamera . set ( cameraConfiguration ) ;
207
- leftCamera . setWindowCenter ( - eyeSpacing , - cameraCenterY ) ;
208
-
209
- rightRenderer . setViewport ( 0.5 , 0 , 1 , 1 ) ;
210
- rightRenderer . addActor ( actor ) ;
211
- const rightCamera = rightRenderer . getActiveCamera ( ) ;
212
- rightCamera . set ( cameraConfiguration ) ;
213
- rightCamera . setWindowCenter ( eyeSpacing , - cameraCenterY ) ;
214
-
215
- // Provide custom update callback + fake camera
216
- updateCameraCallBack = ( ) => {
217
- leftRenderer . resetCameraClippingRange ( ) ;
218
- rightRenderer . resetCameraClippingRange ( ) ;
219
- } ;
220
- camera = {
221
- setDeviceAngles ( alpha , beta , gamma , screen ) {
222
- leftCamera . setDeviceAngles ( alpha , beta , gamma , screen ) ;
223
- rightCamera . setDeviceAngles ( alpha , beta , gamma , screen ) ;
224
- } ,
225
- } ;
226
-
227
- // Reconfigure render window
228
- renderWindow . addRenderer ( leftRenderer ) ;
229
- renderWindow . addRenderer ( rightRenderer ) ;
230
- renderWindow . removeRenderer ( mainRenderer ) ;
231
-
232
- const distPass = vtkRadialDistortionPass . newInstance ( ) ;
233
- distPass . setK1 ( distk1 ) ;
234
- distPass . setK2 ( distk2 ) ;
235
- distPass . setCameraCenterY ( cameraCenterY ) ;
236
- distPass . setCameraCenterX1 ( - eyeSpacing ) ;
237
- distPass . setCameraCenterX2 ( eyeSpacing ) ;
238
- distPass . setDelegates ( [ vtkForwardPass . newInstance ( ) ] ) ;
239
- fullScreenRenderer . getAPISpecificRenderWindow ( ) . setRenderPasses ( [ distPass ] ) ;
240
-
241
- // Hide any controller
242
- fullScreenRenderer . setControllerVisibility ( false ) ;
243
-
244
- // Remove window interactions
245
- interactor . unbindEvents ( ) ;
246
-
247
- // Attach touch control
248
- if ( ! disableTouchNext ) {
249
- fullScreenRenderer
250
- . getRootContainer ( )
251
- . addEventListener ( 'touchstart' , nextPosition , true ) ;
252
- if ( fullScreenMetod ) {
253
- fullScreenRenderer . getRootContainer ( ) . addEventListener (
254
- 'touchend' ,
255
- ( e ) => {
256
- body [ fullScreenMetod ] ( ) ;
257
- } ,
258
- true
259
- ) ;
260
- }
261
- }
262
-
263
- // Warning if browser does not support fullscreen
264
- /* eslint-disable */
265
- if ( navigator . userAgent . match ( 'CriOS' ) ) {
266
- alert (
267
- 'Chrome on iOS does not support fullscreen. Please use Safari instead.'
268
- ) ;
269
- }
270
- if ( navigator . userAgent . match ( 'FxiOS' ) ) {
271
- alert (
272
- 'Firefox on iOS does not support fullscreen. Please use Safari instead.'
273
- ) ;
274
- }
275
- /* eslint-enable */
276
- } else {
277
- camera . set ( cameraConfiguration ) ;
278
- mainRenderer . addActor ( actor ) ;
279
-
280
- // add vr option button if supported
281
- fullScreenRenderer . getApiSpecificRenderWindow ( ) . onHaveVRDisplay ( ( ) => {
282
- if (
283
- fullScreenRenderer . getApiSpecificRenderWindow ( ) . getVrDisplay ( )
284
- . capabilities . canPresent
285
- ) {
286
- const button = document . createElement ( 'button' ) ;
287
- button . style . position = 'absolute' ;
288
- button . style . left = '10px' ;
289
- button . style . bottom = '10px' ;
290
- button . style . zIndex = 10000 ;
182
+ camera . set ( cameraConfiguration ) ;
183
+ mainRenderer . addActor ( actor ) ;
184
+
185
+ // add vr option button if supported
186
+ if (
187
+ navigator . xr !== undefined &&
188
+ navigator . xr . isSessionSupported ( 'immersive-vr' )
189
+ ) {
190
+ const button = document . createElement ( 'button' ) ;
191
+ button . style . position = 'absolute' ;
192
+ button . style . left = '10px' ;
193
+ button . style . bottom = '10px' ;
194
+ button . style . zIndex = 10000 ;
195
+ button . textContent = 'Send To VR' ;
196
+ document . querySelector ( 'body' ) . appendChild ( button ) ;
197
+ button . addEventListener ( 'click' , ( ) => {
198
+ if ( button . textContent === 'Send To VR' ) {
199
+ fullScreenRenderer . getApiSpecificRenderWindow ( ) . startXR ( ) ;
200
+ button . textContent = 'Return From VR' ;
201
+ } else {
202
+ fullScreenRenderer . getApiSpecificRenderWindow ( ) . stopXR ( ) ;
291
203
button . textContent = 'Send To VR' ;
292
- document . querySelector ( 'body' ) . appendChild ( button ) ;
293
- button . addEventListener ( 'click' , ( ) => {
294
- if ( button . textContent === 'Send To VR' ) {
295
- fullScreenRenderer . getApiSpecificRenderWindow ( ) . startVR ( ) ;
296
- button . textContent = 'Return From VR' ;
297
- } else {
298
- fullScreenRenderer . getApiSpecificRenderWindow ( ) . stopVR ( ) ;
299
- button . textContent = 'Send To VR' ;
300
- }
301
- } ) ;
302
204
}
303
205
} ) ;
304
206
}
0 commit comments