Commit 0f56afc1 authored by Percen's avatar Percen
Browse files

Update public/index.html

parent 8c4360aa
...@@ -174,6 +174,7 @@ ...@@ -174,6 +174,7 @@
let lastClickTime = 0; // Zeit des letzten Klicks let lastClickTime = 0; // Zeit des letzten Klicks
const doubleClickThreshold = 300; // Zeitspanne für Doppelklick in Millisekunden const doubleClickThreshold = 300; // Zeitspanne für Doppelklick in Millisekunden
let placedModel = null; let placedModel = null;
let currentSession = null; // AR-Sitzung
function updateMenu() { function updateMenu() {
document.querySelectorAll('.menu-item').forEach(item => item.classList.remove('active')); document.querySelectorAll('.menu-item').forEach(item => item.classList.remove('active'));
...@@ -219,30 +220,28 @@ ...@@ -219,30 +220,28 @@
models.sunflower = gltf.scene; models.sunflower = gltf.scene;
}); });
// Lantern Model laden und skalieren
loader.load("https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Assets/refs/heads/main/Models/Lantern/glTF/Lantern.gltf", (gltf) => { loader.load("https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Assets/refs/heads/main/Models/Lantern/glTF/Lantern.gltf", (gltf) => {
models.tree = gltf.scene; models.tree = gltf.scene;
// Skaliere das Modell kleiner
models.tree.scale.set(0.1, 0.1, 0.1); // Skaliert das Modell auf 50% der Originalgröße models.tree.scale.set(0.1, 0.1, 0.1); // Skaliert das Modell auf 50% der Originalgröße
}); });
// AR-Session starten // AR-Session starten
const session = await navigator.xr.requestSession('immersive-ar', { currentSession = await navigator.xr.requestSession('immersive-ar', {
optionalFeatures: ["dom-overlay"], optionalFeatures: ["dom-overlay"],
domOverlay: { root: document.body }, domOverlay: { root: document.body },
requiredFeatures: ['hit-test'] requiredFeatures: ['hit-test']
}); });
session.updateRenderState({ baseLayer: new XRWebGLLayer(session, gl) }); currentSession.updateRenderState({ baseLayer: new XRWebGLLayer(currentSession, gl) });
const referenceSpace = await session.requestReferenceSpace('local'); const referenceSpace = await currentSession.requestReferenceSpace('local');
const viewerSpace = await session.requestReferenceSpace('viewer'); const viewerSpace = await currentSession.requestReferenceSpace('viewer');
const hitTestSource = await session.requestHitTestSource({ space: viewerSpace }); const hitTestSource = await currentSession.requestHitTestSource({ space: viewerSpace });
// Menü sichtbar machen, wenn die AR-Session gestartet wird // Menü sichtbar machen
document.getElementById('menu-bar').style.display = 'flex'; document.getElementById('menu-bar').style.display = 'flex';
session.requestAnimationFrame(onXRFrame); currentSession.requestAnimationFrame(onXRFrame);
session.addEventListener("select", (event) => { currentSession.addEventListener("select", (event) => {
if (!reticle) return; if (!reticle) return;
// Prüfen, ob es ein Doppelklick ist // Prüfen, ob es ein Doppelklick ist
...@@ -269,7 +268,7 @@ ...@@ -269,7 +268,7 @@
lastClickTime = currentTime; lastClickTime = currentTime;
}); });
session.addEventListener("end", () => { currentSession.addEventListener("end", () => {
console.log("AR-Session beendet"); console.log("AR-Session beendet");
currentSession = null; currentSession = null;
document.getElementById('menu-bar').style.display = 'none'; // Menü ausblenden document.getElementById('menu-bar').style.display = 'none'; // Menü ausblenden
...@@ -277,13 +276,13 @@ ...@@ -277,13 +276,13 @@
// AR-Rendering // AR-Rendering
function onXRFrame(time, frame) { function onXRFrame(time, frame) {
session.requestAnimationFrame(onXRFrame); currentSession.requestAnimationFrame(onXRFrame);
gl.bindFramebuffer(gl.FRAMEBUFFER, session.renderState.baseLayer.framebuffer); gl.bindFramebuffer(gl.FRAMEBUFFER, currentSession.renderState.baseLayer.framebuffer);
const pose = frame.getViewerPose(referenceSpace); const pose = frame.getViewerPose(referenceSpace);
if (pose) { if (pose) {
const view = pose.views[0]; const view = pose.views[0];
const viewport = session.renderState.baseLayer.getViewport(view); const viewport = currentSession.renderState.baseLayer.getViewport(view);
renderer.setSize(viewport.width, viewport.height); renderer.setSize(viewport.width, viewport.height);
camera.matrix.fromArray(view.transform.matrix); camera.matrix.fromArray(view.transform.matrix);
...@@ -302,19 +301,6 @@ ...@@ -302,19 +301,6 @@
renderer.render(scene, camera); renderer.render(scene, camera);
} }
} }
// Skalierung ändern
window.addEventListener("gesturestart", (event) => {
if (placedModel) {
placedModel.scale.set(1, 1, 1); // Reset scaling on pinch start
}
});
window.addEventListener("gesturechange", (event) => {
if (placedModel) {
placedModel.scale.set(event.scale, event.scale, event.scale); // Update scaling
}
});
} }
function exitAR() { function exitAR() {
......
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