Commit affa3865 authored by Percen's avatar Percen
Browse files

Update public/index.html

parent 37ef7b8f
Showing with 32 additions and 14 deletions
+32 -14
...@@ -18,6 +18,20 @@ ...@@ -18,6 +18,20 @@
background-size: cover; background-size: cover;
background-position: center; background-position: center;
} }
button {
position: fixed;
top: 10%;
left: 50%;
transform: translateX(-50%);
padding: 15px;
font-size: 18px;
background-color: rgba(255, 255, 255, 0.7);
border: none;
cursor: pointer;
}
button:hover {
background-color: rgba(255, 255, 255, 1);
}
</style> </style>
<script src="https://unpkg.com/three@0.126.0/build/three.js"></script> <script src="https://unpkg.com/three@0.126.0/build/three.js"></script>
<script src="https://unpkg.com/three@0.126.0/examples/js/loaders/GLTFLoader.js"></script> <script src="https://unpkg.com/three@0.126.0/examples/js/loaders/GLTFLoader.js"></script>
...@@ -26,6 +40,7 @@ ...@@ -26,6 +40,7 @@
<script> <script>
let selectedModel = 'robot'; // Standardauswahl let selectedModel = 'robot'; // Standardauswahl
let models = {}; let models = {};
let currentModel = null; // Variable für das aktuell angezeigte Modell
let reticle; let reticle;
async function activateXR() { async function activateXR() {
...@@ -55,13 +70,9 @@ ...@@ -55,13 +70,9 @@
// Modelle laden // Modelle laden
loader.load("https://threejs.org/examples/models/gltf/RobotExpressive/RobotExpressive.glb", (gltf) => { loader.load("https://threejs.org/examples/models/gltf/RobotExpressive/RobotExpressive.glb", (gltf) => {
models.robot = gltf.scene; models.robot = gltf.scene;
models.robot.visible = false; // Start ohne sichtbar
scene.add(models.robot);
}); });
loader.load("https://immersive-web.github.io/webxr-samples/media/gltf/sunflower/sunflower.gltf", (gltf) => { loader.load("https://immersive-web.github.io/webxr-samples/media/gltf/sunflower/sunflower.gltf", (gltf) => {
models.flower = gltf.scene; models.flower = gltf.scene;
models.flower.visible = false; // Start ohne sichtbar
scene.add(models.flower);
}); });
// AR-Session starten // AR-Session starten
...@@ -95,16 +106,13 @@ ...@@ -95,16 +106,13 @@
reticle.position.set(hitPose.transform.position.x, hitPose.transform.position.y, hitPose.transform.position.z); reticle.position.set(hitPose.transform.position.x, hitPose.transform.position.y, hitPose.transform.position.z);
reticle.updateMatrixWorld(true); reticle.updateMatrixWorld(true);
// Interaktive Modellwahl: Schalte zwischen den Modellen basierend auf Reticle // Aktuelles Modell anzeigen
const distanceToRobot = hitTestResults[0].distanceTo(models.robot.position); if (currentModel !== models[selectedModel]) {
const distanceToFlower = hitTestResults[0].distanceTo(models.flower.position); if (currentModel) {
scene.remove(currentModel); // Entferne das alte Modell
if (distanceToRobot < distanceToFlower) { }
models.robot.visible = true; currentModel = models[selectedModel];
models.flower.visible = false; scene.add(currentModel); // Füge das neue Modell hinzu
} else {
models.flower.visible = true;
models.robot.visible = false;
} }
} }
...@@ -113,6 +121,11 @@ ...@@ -113,6 +121,11 @@
} }
} }
// Modellwechsel-Funktion
function toggleModel() {
selectedModel = (selectedModel === 'robot') ? 'flower' : 'robot';
}
// AR starten // AR starten
if (navigator.xr) { if (navigator.xr) {
const startButton = document.createElement('button'); const startButton = document.createElement('button');
...@@ -123,6 +136,11 @@ ...@@ -123,6 +136,11 @@
startButton.remove(); startButton.remove();
activateXR(); activateXR();
}; };
const toggleButton = document.createElement('button');
toggleButton.textContent = 'Wechseln zwischen Robot und Sonnenblume';
toggleButton.onclick = toggleModel;
document.body.appendChild(toggleButton);
} 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