2016-08-11 86 views
0

此代碼工作的透視相機上:three.js所,正交相機,發現X軸和Z y = 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

相關問題