diff --git a/public/index.html b/public/index.html index 9a7a476e07f03d818797acb8c04fb90c590f5c50..1582b181a3ca1c2e5b8147042003804ee29c6bd6 100644 --- a/public/index.html +++ b/public/index.html @@ -30,6 +30,8 @@ let currentModel = null; let scene; let camera; + let hitTestSource; + let hitTestResults = []; async function activateXR() { const canvas = document.createElement('canvas'); @@ -68,7 +70,7 @@ session.updateRenderState({ baseLayer: new XRWebGLLayer(session, gl) }); const referenceSpace = await session.requestReferenceSpace('local'); const viewerSpace = await session.requestReferenceSpace('viewer'); - const hitTestSource = await session.requestHitTestSource({ space: viewerSpace }); + hitTestSource = await session.requestHitTestSource({ space: viewerSpace }); session.requestAnimationFrame(onXRFrame); @@ -87,14 +89,14 @@ camera.projectionMatrix.fromArray(view.projectionMatrix); camera.updateMatrixWorld(true); - const hitTestResults = frame.getHitTestResults(hitTestSource); + hitTestResults = frame.getHitTestResults(hitTestSource); if (hitTestResults.length > 0) { const hitPose = hitTestResults[0].getPose(referenceSpace); reticle.visible = true; reticle.position.set(hitPose.transform.position.x, hitPose.transform.position.y, hitPose.transform.position.z); reticle.updateMatrixWorld(true); - // Das Modell an die Reticle-Position setzen + // Das Modell an der Reticle-Position platzieren if (currentModel) { currentModel.position.set(hitPose.transform.position.x, hitPose.transform.position.y, hitPose.transform.position.z); } @@ -119,14 +121,11 @@ startY = event.touches[0].clientY; }); - document.body.addEventListener('touchmove', (event) => { - // Die Bewegungsposition des Fingers (optional) - endX = event.touches[0].clientX; - endY = event.touches[0].clientY; - }); - document.body.addEventListener('touchend', (event) => { // Berechne die Distanz in der X- und Y-Richtung + endX = event.changedTouches[0].clientX; + endY = event.changedTouches[0].clientY; + let deltaX = endX - startX; let deltaY = endY - startY;