Skip to content

Commit fda3b34

Browse files
committed
feat(XR): Remove force-entry XR option from SkyboxViewer
1 parent 0522acf commit fda3b34

File tree

1 file changed

+25
-115
lines changed
  • Examples/Applications/SkyboxViewer

1 file changed

+25
-115
lines changed

Examples/Applications/SkyboxViewer/index.js

Lines changed: 25 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,7 @@ import 'vtk.js/Sources/Rendering/Profiles/Geometry';
66
import HttpDataAccessHelper from 'vtk.js/Sources/IO/Core/DataAccessHelper/HttpDataAccessHelper';
77
import macro from 'vtk.js/Sources/macros';
88
import vtkDeviceOrientationToCamera from 'vtk.js/Sources/Interaction/Misc/DeviceOrientationToCamera';
9-
import vtkForwardPass from 'vtk.js/Sources/Rendering/OpenGL/ForwardPass';
109
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';
1310
import vtkSkybox from 'vtk.js/Sources/Rendering/Core/Skybox';
1411
import vtkSkyboxReader from 'vtk.js/Sources/IO/Misc/SkyboxReader';
1512
import vtkURLExtract from 'vtk.js/Sources/Common/Core/URLExtract';
@@ -41,14 +38,9 @@ let autoInit = true;
4138
const cameraFocalPoint = userParams.direction || [0, 0, -1];
4239
const cameraViewUp = userParams.up || [0, 1, 0];
4340
const cameraViewAngle = userParams.viewAngle || 100;
44-
const enableXR = !!userParams.xr;
4541
const eyeSpacing = userParams.eye || 0.0;
4642
const grid = userParams.debug || false;
4743
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;
5244

5345
const body = document.querySelector('body');
5446
let fullScreenMetod = null;
@@ -151,10 +143,8 @@ function createVisualization(container, mapReader) {
151143
const mainRenderer = fullScreenRenderer.getRenderer();
152144
const interactor = fullScreenRenderer.getInteractor();
153145
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;
158148

159149
// Connect viz pipeline
160150
actor.addTexture(mapReader.getOutputData());
@@ -189,110 +179,30 @@ function createVisualization(container, mapReader) {
189179
updateSkybox(allPositions[nextIdx]);
190180
}
191181

192-
if (enableXR && navigator.xr.isSessionSupported('immersive-vr')) {
193-
leftRenderer = vtkRenderer.newInstance();
194-
rightRenderer = vtkRenderer.newInstance();
195-
196-
// Configure left/right renderers
197-
leftRenderer.setViewport(0, 0, 0.5, 1);
198-
leftRenderer.addActor(actor);
199-
const leftCamera = leftRenderer.getActiveCamera();
200-
leftCamera.set(cameraConfiguration);
201-
leftCamera.setWindowCenter(-eyeSpacing, -cameraCenterY);
202-
203-
rightRenderer.setViewport(0.5, 0, 1, 1);
204-
rightRenderer.addActor(actor);
205-
const rightCamera = rightRenderer.getActiveCamera();
206-
rightCamera.set(cameraConfiguration);
207-
rightCamera.setWindowCenter(eyeSpacing, -cameraCenterY);
208-
209-
// Provide custom update callback + fake camera
210-
updateCameraCallBack = () => {
211-
leftRenderer.resetCameraClippingRange();
212-
rightRenderer.resetCameraClippingRange();
213-
};
214-
camera = {
215-
setDeviceAngles(alpha, beta, gamma, screen) {
216-
leftCamera.setDeviceAngles(alpha, beta, gamma, screen);
217-
rightCamera.setDeviceAngles(alpha, beta, gamma, screen);
218-
},
219-
};
220-
221-
// Reconfigure render window
222-
renderWindow.addRenderer(leftRenderer);
223-
renderWindow.addRenderer(rightRenderer);
224-
renderWindow.removeRenderer(mainRenderer);
225-
226-
const distPass = vtkRadialDistortionPass.newInstance();
227-
distPass.setK1(distk1);
228-
distPass.setK2(distk2);
229-
distPass.setCameraCenterY(cameraCenterY);
230-
distPass.setCameraCenterX1(-eyeSpacing);
231-
distPass.setCameraCenterX2(eyeSpacing);
232-
distPass.setDelegates([vtkForwardPass.newInstance()]);
233-
fullScreenRenderer.getApiSpecificRenderWindow().setRenderPasses([distPass]);
234-
235-
// Hide any controller
236-
fullScreenRenderer.setControllerVisibility(false);
237-
238-
// Remove window interactions
239-
interactor.unbindEvents();
240-
241-
// Attach touch control
242-
if (!disableTouchNext) {
243-
fullScreenRenderer
244-
.getRootContainer()
245-
.addEventListener('touchstart', nextPosition, true);
246-
if (fullScreenMetod) {
247-
fullScreenRenderer.getRootContainer().addEventListener(
248-
'touchend',
249-
(e) => {
250-
body[fullScreenMetod]();
251-
},
252-
true
253-
);
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();
203+
button.textContent = 'Send To VR';
254204
}
255-
}
256-
257-
// Warning if browser does not support fullscreen
258-
/* eslint-disable */
259-
if (navigator.userAgent.match('CriOS')) {
260-
alert(
261-
'Chrome on iOS does not support fullscreen. Please use Safari instead.'
262-
);
263-
}
264-
if (navigator.userAgent.match('FxiOS')) {
265-
alert(
266-
'Firefox on iOS does not support fullscreen. Please use Safari instead.'
267-
);
268-
}
269-
/* eslint-enable */
270-
} else {
271-
camera.set(cameraConfiguration);
272-
mainRenderer.addActor(actor);
273-
274-
// add vr option button if supported
275-
if (
276-
navigator.xr !== undefined &&
277-
navigator.xr.isSessionSupported('immersive-vr')
278-
) {
279-
const button = document.createElement('button');
280-
button.style.position = 'absolute';
281-
button.style.left = '10px';
282-
button.style.bottom = '10px';
283-
button.style.zIndex = 10000;
284-
button.textContent = 'Send To VR';
285-
document.querySelector('body').appendChild(button);
286-
button.addEventListener('click', () => {
287-
if (button.textContent === 'Send To VR') {
288-
fullScreenRenderer.getApiSpecificRenderWindow().startXR();
289-
button.textContent = 'Return From VR';
290-
} else {
291-
fullScreenRenderer.getApiSpecificRenderWindow().stopXR();
292-
button.textContent = 'Send To VR';
293-
}
294-
});
295-
}
205+
});
296206
}
297207

298208
renderWindow.render();

0 commit comments

Comments
 (0)