我已经在看原点(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/
请问您可以发布一个你现在拥有的jsfiddle吗?这真的会帮助我们真正看到你遇到麻烦的情况。 – SalmonKiller
您的相机的远机(即10E5)非常庞大。使用类似1000 – gaitat
@SalmonKiller我已经添加了一个jsfiddle,以供您查看 – rbhalla