有關Three.js中的未投影的幾個優秀堆棧問題(1,2),即如何將瀏覽器中的(x,y)鼠標座標轉換爲(x,y,z)座標在Three.js畫布空間中。他們大多遵循這個模式:使用投影在Three.js中將世界座標轉換爲屏幕座標
var elem = renderer.domElement,
boundingRect = elem.getBoundingClientRect(),
x = (event.clientX - boundingRect.left) * (elem.width/boundingRect.width),
y = (event.clientY - boundingRect.top) * (elem.height/boundingRect.height);
var vector = new THREE.Vector3(
(x/WIDTH) * 2 - 1,
- (y/HEIGHT) * 2 + 1,
0.5
);
projector.unprojectVector(vector, camera);
var ray = new THREE.Ray(camera.position, vector.subSelf(camera.position).normalize());
var intersects = ray.intersectObjects(scene.children);
我一直在試圖做反向 - 而不是從正在進行的「屏世界」的空間,從走「世界篩選」的空間。如果我知道Three.js中對象的位置,我如何確定它在屏幕上的位置?
似乎沒有任何已發佈的解決方案來解決這個問題。 Another question about this just showed up on Stack,但作者聲稱用一個不適合我的功能解決了這個問題。他們的解決方案不使用投影射線,並且我確信從2D到3D使用unprojectVector(),3D到2D解決方案將需要projectVector()。
也有this issue Github上打開。
任何幫助表示讚賞。
非常感謝「屏幕到世界」翻譯模式。這是一個痛苦好幾個小時.. – LePhleg 2014-04-17 02:54:49