Commit d2a9e9f9 authored by Percen's avatar Percen
Browse files

Update public/index.html

parent 2d4f1d95
Showing with 20 additions and 6 deletions
+20 -6
...@@ -27,16 +27,17 @@ ...@@ -27,16 +27,17 @@
let selectedModel = 'flower'; // Standardauswahl let selectedModel = 'flower'; // Standardauswahl
let models = {}; let models = {};
let reticle; let reticle;
let scene, camera, renderer, session;
async function activateXR() { async function activateXR() {
const canvas = document.createElement('canvas'); const canvas = document.createElement('canvas');
document.body.appendChild(canvas); document.body.appendChild(canvas);
const gl = canvas.getContext('webgl', { xrCompatible: true }); const gl = canvas.getContext('webgl', { xrCompatible: true });
const renderer = new THREE.WebGLRenderer({ alpha: true, canvas, context: gl }); renderer = new THREE.WebGLRenderer({ alpha: true, canvas, context: gl });
renderer.autoClear = false; renderer.autoClear = false;
const scene = new THREE.Scene(); scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(); camera = new THREE.PerspectiveCamera();
camera.matrixAutoUpdate = false; camera.matrixAutoUpdate = false;
// Licht hinzufügen // Licht hinzufügen
...@@ -61,7 +62,7 @@ ...@@ -61,7 +62,7 @@
}); });
// AR-Session starten // AR-Session starten
const session = await navigator.xr.requestSession('immersive-ar', { requiredFeatures: ['hit-test'] }); session = await navigator.xr.requestSession('immersive-ar', { requiredFeatures: ['hit-test'] });
session.updateRenderState({ baseLayer: new XRWebGLLayer(session, gl) }); session.updateRenderState({ baseLayer: new XRWebGLLayer(session, gl) });
const referenceSpace = await session.requestReferenceSpace('local'); const referenceSpace = await session.requestReferenceSpace('local');
const viewerSpace = await session.requestReferenceSpace('viewer'); const viewerSpace = await session.requestReferenceSpace('viewer');
...@@ -69,8 +70,6 @@ ...@@ -69,8 +70,6 @@
session.requestAnimationFrame(onXRFrame); session.requestAnimationFrame(onXRFrame);
// AR-Rendering // AR-Rendering
function onXRFrame(time, frame) { function onXRFrame(time, frame) {
session.requestAnimationFrame(onXRFrame); session.requestAnimationFrame(onXRFrame);
...@@ -99,6 +98,18 @@ ...@@ -99,6 +98,18 @@
} }
} }
// Modell platzieren
function placeModel() {
if (reticle.visible) {
const model = models[selectedModel];
if (model) {
const clonedModel = model.clone();
clonedModel.position.set(reticle.position.x, reticle.position.y, reticle.position.z);
scene.add(clonedModel);
}
}
}
// AR starten // AR starten
if (navigator.xr) { if (navigator.xr) {
const startButton = document.createElement('button'); const startButton = document.createElement('button');
...@@ -109,6 +120,9 @@ ...@@ -109,6 +120,9 @@
startButton.remove(); startButton.remove();
activateXR(); activateXR();
}; };
// Touch- oder Klick-Event, um das Modell zu platzieren
document.body.addEventListener('click', placeModel);
} else { } else {
alert('WebXR wird nicht unterstützt.'); alert('WebXR wird nicht unterstützt.');
} }
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment