3D AI Chat
3D-режим:

YANDEX GPT | AVATAR MODE

Привет, оператор. Я в сети. Чем могу помочь?
Выберите режим ответа:
// === 3D AVATAR SYSTEM === let scene, camera, renderer, model; let is3DActive = true; function init3DAvatar() { const container = document.getElementById('canvas-container'); // Создаём сцену scene = new THREE.Scene(); scene.background = new THREE.Color(0x000a1a); // Камера camera = new THREE.PerspectiveCamera(50, container.clientWidth / 200, 0.1, 1000); camera.position.set(0, 0, 5); // Рендерер renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.setSize(container.clientWidth, 200); renderer.setPixelRatio(window.devicePixelRatio); container.appendChild(renderer.domElement); // Свет const ambientLight = new THREE.AmbientLight(0x00e6ff, 0.5); scene.add(ambientLight); const directionalLight = new THREE.DirectionalLight(0x00ffff, 1); directionalLight.position.set(5, 5, 5); scene.add(directionalLight); // Загрузка модели const loader = new THREE.GLTFLoader(); loader.load( '3d/avatar.glb', (gltf) => { model = gltf.scene; model.scale.set(2, 2, 2); model.rotation.y = Math.PI; scene.add(model); }, undefined, (error) => { console.error('Ошибка загрузки 3D-модели:', error); } ); // Управление мышью const controls = new THREE.OrbitControls(camera, renderer.domElement); controls.enableDamping = true; controls.dampingFactor = 0.05; controls.enableZoom = false; // Анимация вращения function animate() { requestAnimationFrame(animate); if (model) model.rotation.y += 0.005; controls.update(); renderer.render(scene, camera); } animate(); // Адаптация под размер window.addEventListener('resize', () => { camera.aspect = container.clientWidth / 200; camera.updateProjectionMatrix(); renderer.setSize(container.clientWidth, 200); }); } function show3DAvatar() { if (!is3DActive) return; const container = document.getElementById('canvas-container'); container.style.display = 'block'; if (!scene) init3DAvatar(); } function hide3DAvatar() { document.getElementById('canvas-container').style.display = 'none'; } function set3DMode(mode) { is3DActive = mode === 'on'; if (!is3DActive) hide3DAvatar(); document.querySelector('[onclick="set3DMode(\'on\')"]').style.background = mode === 'on' ? '#00e6ff' : '#333'; document.querySelector('[onclick="set3DMode(\'off\')"]').style.background = mode === 'off' ? '#ff0066' : '#333'; } // === ИНТЕГРАЦИЯ С ЧАТОМ === // Замените конец send() на: /* messages.innerHTML += `
${reply}
`; messages.scrollTop = messages.scrollHeight; // Показ 3D-аватара + озвучка show3DAvatar(); setTimeout(() => speakText(reply), 500); // Задержка для плавности // Через 5 сек убираем setTimeout(hide3DAvatar, 5000); */