2016-08-11 20 views
0

Этот код работает на перспективной камере:three.js, Orthographic камера, найти й и г, где у = 0

var vector = new THREE.Vector3((mouseX/window.innerWidth) * 2 - 1, -(mouseY/window.innerHeight) * 2 + 1, 0.5); 
vector.unproject(camera); 
var dir = vector.sub(camera.position).normalize(); 
var distance = -camera.position.y/dir.y; 
var cursor3DPos = camera.position.clone().add(dir.multiplyScalar(distance)); 

Как получить тот же 3D-координату с помощью камеры Ортографической?

ответ

0

Если вы используете ортогональную камеру, и вы хотите знать, где луч eminating от мыши пересекает XZ-плоскость, вы можете использовать шаблон так:

var raycaster = new THREE.Raycaster(); // create once and reuse 
var mouse = new THREE.Vector2(); // create once and reuse 
var position = new THREE.Vector3(); // create once and reuse 

... 

mouse.x = (event.clientX/renderer.domElement.width) * 2 - 1; 
mouse.y = - (event.clientY/renderer.domElement.height) * 2 + 1; 

raycaster.setFromCamera(mouse, camera); 

var origin = raycaster.ray.origin; 
var dir = raycaster.ray.direction; 
var distance = - origin.y/dir.y; 

position.copy(origin).add(dir.multiplyScalar(distance)); 

position будет 3D точка под мышью, которая лежит в плоскости XZ.

Убедитесь, что вы правильно инициализировали свой OrthographicCamera. См. Three.js - Orthographic camera.

three.js r.79

+1

Человек со всеми ответами. Спасибо, WestLangley! – MikeB

 Смежные вопросы

  • Нет связанных вопросов^_^