diff --git a/index.html b/index.html
index 23c59b54..8249413e 100644
--- a/index.html
+++ b/index.html
@@ -101,7 +101,7 @@
diff --git a/src/logic/uimodel.js b/src/logic/uimodel.js
index df736140..bf26d62f 100644
--- a/src/logic/uimodel.js
+++ b/src/logic/uimodel.js
@@ -18,6 +18,11 @@ class UIModel
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const modelURL = urlParams.get("model");
+ const noUI = urlParams.get("noUI");
+ if (noUI !== null) {
+ this.app.uiVisible = false;
+ this.app.noUI = true;
+ }
this.scene = app.sceneChanged.pipe();
this.camera = app.cameraChanged.pipe();
diff --git a/src/main.js b/src/main.js
index 8d2cd05a..69259177 100644
--- a/src/main.js
+++ b/src/main.js
@@ -135,6 +135,16 @@ export default async () => {
state.userCamera.perspective.aspectRatio = canvas.width / canvas.height;
state.userCamera.resetView(state.gltf, state.sceneIndex);
+ const queryString = window.location.search;
+ const urlParams = new URLSearchParams(queryString);
+ let yaw = urlParams.get("yaw") ?? 0;
+ yaw = yaw * (Math.PI / 180) / state.userCamera.orbitSpeed;
+ let pitch = urlParams.get("pitch") ?? 0;
+ pitch = pitch * (Math.PI / 180) / state.userCamera.orbitSpeed;
+ const distance = urlParams.get("distance") ?? 0;
+ state.userCamera.orbit(yaw, pitch);
+ state.userCamera.zoomBy(distance);
+
// Try to start as many animations as possible without generating conficts.
state.animationIndices = [];
for (let i = 0; i < gltf.animations.length; i++) {