我three.js所69转换三维点要Screen2D得到错误的结果three.js所
function Point3DToScreen2D(point3D,camera){
var p = point3D.clone();
var vector = p.project(camera);
vector.x = (vector.x + 1)/2 * window.innerWidth;
vector.y = -(vector.y - 1)/2 * window.innerHeight;
return vector;
}
使用功能这样当我把现场仍然正常工作。 但是,当我旋转场景它犯了一个错误,并在屏幕上返回错误的位置。 它发生在我旋转180度左右。它没有在屏幕上的位置,但它显示。
我设置的位置var tmpV=Point3DToScreen2D(new THREE.Vector3(-67,1033,-2500),camera);
在update
与css3d.And表明它,当我像旋转180度,但小于360点显示在屏幕again.Obviously这是一个错误的位置,可以从现场被telled而且我还没有旋转360度。
我对Matrix
知之甚少,所以我不知道project
是如何工作的。
这里是project
在three.js所来源:
project: function() {
var matrix;
return function (camera) {
if (matrix === undefined) matrix = new THREE.Matrix4();
matrix.multiplyMatrices(camera.projectionMatrix, matrix.getInverse(camera.matrixWorld));
return this.applyProjection(matrix);
};
}()
是在matrix.getInverse(camera.matrixWorld)
冗余?我试图删除它,它不起作用。 任何人都可以帮我吗?谢谢。
重复:http://stackoverflow.com/questions/27409074/three-js-converting-3d-position-to-2d-screen-position-r69 – WestLangley
你所使用的代码是“旋转现场”? – WestLangley
@WestLangley我的意思是这里有一个错误。我使用正常的旋转控制像http://threejs.org/examples/webgl_panorama_equirectangular.html – aboutqx