3D и VR/AR Интерактивный сайт
import * as THREE from 'three';
// Сцена, камера и рендерер
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 5;
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.getElementById('scene-container').appendChild(renderer.domElement);
// Освещение
const ambientLight = new THREE.AmbientLight(0xffffff, 0.6);
scene.add(ambientLight);
const directionalLight = new THREE.DirectionalLight(0xffffff, 0.8);
directionalLight.position.set(1, 1, 0);
scene.add(directionalLight);
// Загрузка модели
const loader = new THREE.GLTFLoader();
loader.load('path/to/model.gltf', function (gltf) {
scene.add(gltf.scene);
}, undefined, function (error) {
console.error(error);
});
// Анимация
function animate() {
requestAnimationFrame(animate);
renderer.render(scene, camera);
}
animate();
// Реализация WebXR для VR и AR
async function setupXR() {
renderer.xr.enabled = true;
if ('xr' in navigator) {
const xrSession = await navigator.xr.requestSession('immersive-vr');
renderer.xr.setSession(xrSession);
}
}
setupXR();