2016-01-10 52 views
0

我已經在看原點(0,0,0)的位置初始化透視相機。閱讀最常見的解決方案,我已經找到了這裏描述的這個https://stackoverflow.com/a/27412386/1330719使用Three.js將Vector3點轉換爲屏幕空間(Vector2)[73]

從我對project方法的理解是,我應該得到一個向量,其中的x,y座標介於-1和1之間。這看起來並不是這種情況,我最終得到的座標是完全超越界限。此外,如果原始矢量點在(0,0,0)處,我似乎會得到(NaN,NaN)。如果我的相機在位置(0,0,0),我期望Vector3(0,0,0)返回(寬度/ 2,高度/ 2)。

在它需要的情況下,這是我如何初始化我的相機:

this.camera = new THREE.PerspectiveCamera(90, window.innerWidth/window.innerHeight, 1, 10E5); 

this.camera.position.set(0, 500, -500); 
this.camera.lookAt(new THREE.Vector3(0,0,0)); 

this.camera.updateProjectionMatrix(); 

有沒有人有一個原因,這可能無法正常工作?或者,也可以使用推薦的方法將Vector3點映射到給定相機的屏幕空間?

的什麼我的意思是的jsfiddle: https://jsfiddle.net/m78wjLyc/

+0

請問您可以發佈一個你現在擁有的jsfiddle嗎?這真的會幫助我們真正看到你遇到麻煩的情況。 – SalmonKiller

+0

您的相機的遠機(即10E5)非常龐大。使用類似1000 – gaitat

+0

@SalmonKiller我已經添加了一個jsfiddle,以供您查看 – rbhalla

回答

1

你也應該突出使用前camera.updateMatrixWorld(true)

通常這是渲染自動完成的,但你不使用任何,所以camera.matrixWorld停留觸及你改變位置後,並使照相機項目的事情,就好像它是在世界座標系原點。

+0

謝謝:)修復它 – rbhalla

相關問題