2017-01-31 3 views
1

Как мы можем использовать three.js для создания эффекта, подобного тому, что видно here?three.jsl - как создать интерактивное изображение 360 с управлением мышью?

Другие решения, которые мы видели, похоже, требуют перетащить & падение для управления углом камеры - мы ищем, чтобы положение мыши контролировалось там, где находится камера. Например, мышь, находящаяся в верхнем левом углу, всегда указывает камеру на одно и то же место. Есть ли реализация с открытым исходным кодом?

+1

не допросили код этого сайта, но он выглядит как комбинация кода фона из этого примера three.js https: // threejs .org/examples/# webgl_materials_cubemap_refraction и history.js в сочетании с плагином прокрутки прокрутки jquery. Стоит рассмотреть три примера кода. – Sam0

ответ

2

Это не сложно.

Вы можете слушать позицию мыши на экране и пересчитать 0-1 XY осям:

var mouse = new THREE.Vector2(); 

function onDocumentMouseMove(event) { 
     event.preventDefault(); 
     mouse.x = (event.clientX/window.innerWidth) * 2 - 1; 
     mouse.y = - (event.clientY/window.innerHeight) * 2 + 1;  
} 

после этого вы можете рассчитать и установить вращение камеры RAD:

function onDocumentMouseMove(event) { 
     event.preventDefault(); 
     mouse.x = (event.clientX/window.innerWidth) * 2 - 1; 
     mouse.y = - (event.clientY/window.innerHeight) * 2 + 1; 

     //default_x = your default camera x rotation 
     //default_y = your default camera y rotation 
     //s = sensitivity coeficient default 1 for 360° rotation, 0.1 for smaller angle 
     camera.rotation.x = (default_x*mouse.x)*s; 
     camera.rotation.y = (default_y*mouse.y)*s; 
} 

и уверен, вам нужно только поместить камеру внутри сферы с текстурой ...

+0

Спасибо - есть ли способ интегрировать движение устройства в одно и то же время, так что любой из них работает? Реализация устройства только здесь показана: http://richtr.github.io/three.js/examples/misc_controls_deviceorientation.html – Sekoul

+0

Да, но вы должны опубликовать новый вопрос для этого – Martin