2016-01-10 51 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

相关问题