2013-07-31 149 views
2

我見過很多帖子,人們希望將相機位置設置爲屏幕位置。我的問題是如何做相反的事情。ThreeJS:屏幕位置到相機位置

我目前想實現將「門」的位置在屏幕的百分比,以此計算是準備好了,我有最後一個屏幕X,Y(PX)的位置。相機的當前Z偏移量= 250。

我發現這個代碼,攝像機位置轉換爲屏幕上的位置:

var vector = projector.projectVector(door.position.clone(), camera); 
vector.x = (vector.x + 1)/2 * window.innerWidth; 
vector.y = -(vector.y - 1)/2 * window.innerHeight; 

要做到這個我試過了reversie,但不給予我期待的結果:

var mouseX = ((perc.x)/window.innerWidth) * 2 - 1, 
    mouseY = -((perc.y)/window.innerHeight) * 2 + 1; 

var vector = new THREE.Vector3(mouseX, mouseY, 1); 
projector.unprojectVector(vector, camera); 
return vector.sub(camera.position).normalize() 

我嘗試了幾種方法並嘗試Google,但沒有找到答案。

問:如何將屏幕位置轉換爲相機位置?

回答

2

嗯,張貼Gero3,你想要做的是創建一個涵蓋了所有可見的攝像頭區域(像new THREE.PlaneGeometry(5000,5000);然後用raycaster定位屏幕配合上那面的面。

下面是another similar question一個例子:

http://jsfiddle.net/PwWbT/

希望幫助

1

使用定義在哪個方向門可以擴大,然後使用一個raycaster在飛機上要搜索的位置,以在門對象應該延伸大invisble平面。

+0

謝謝你的反應,你可以請張貼一個例子? – Niels