<div id="coords">
<p>{x: <span id="coordX"></span>, y: <span id="coordY"></span>, z: <span id="coordZ"></span>}</p>
</div>
<script>
// Update coordinates
coordX.text(camera.position.x.toFixed(2));
coordY.text(camera.position.y.toFixed(2));
coordZ.text(camera.position.z.toFixed(2));
</script>
<script>
// Array of coordinates
let pathCoordinates = [
{x: -0.38, y: 1.93, z: 0.13},
{x: -0.55, y: 0.08, z: 0.35},
{x: -4.91, y: 0.30, z: 0.81}
];
//Scrolling along the array of coordinates
window.addEventListener(scroll, () => {
if (!isFreeMoveEnabled) {
const scrollY = window.scrollY;
const viewportHeight = window.innerHeight;
const totalScrollHeight = document.body.scrollHeight - viewportHeight;
const scrollFraction = scrollY / totalScrollHeight;
const pathIndex = Math.floor(scrollFraction * (pathCoordinates.length - 1));
const nextPathIndex = Math.min(pathIndex + 1, pathCoordinates.length - 1);
const progress = (scrollFraction * (pathCoordinates.length - 1)) % 1;
const currentCoord = pathCoordinates[pathIndex];
const nextCoord = pathCoordinates[nextPathIndex];
// Interpolate between currentCoord en nextCoord
camera.position.x = currentCoord.x + (nextCoord.x - currentCoord.x) * progress;
camera.position.y = currentCoord.y + (nextCoord.y - currentCoord.y) * progress;
camera.position.z = currentCoord.z + (nextCoord.z - currentCoord.z) * progress;
camera.lookAt(scene.position);
if (scrollFraction < 1) {
canvas.classList.remove(transparent); // Zorg ervoor dat de canvas zichtbaar is
} else {
canvas.classList.add(transparent); // Maak de canvas langzaam transparant
}
}
});
</script>
const progress = (scrollFraction * (pathCoordinates.length - 1)) % 1;