我有一个位置(x,y,z)的3D对象。如何计算该对象的屏幕位置(x,y)?
我已经搜索了它,一种解决方案是我必须找出投影矩阵,然后将 3D 位置点乘以该矩阵,以将其投影到某个 2D 观察表面(计算机屏幕)上。但我不知道如何在 Three.js 中找到这个矩阵。
我尝试了这样的转换函数,但它给出了不正确的结果
function Point3DToScreen2D(point3D){
var screenX = 0;
var screenY = 0;
var inputX = point3D.x - camera.position.x;
var inputY = point3D.y - camera.position.y;
var inputZ = point3D.z - camera.position.z;
var aspectRatio = renderer.domElement.width / renderer.domElement.height;
screenX = inputX / (-inputZ * Math.tan(camera.fov/2));
screenY = (inputY * aspectRatio) / (-inputZ * Math.tan(camera.fov / 2));
screenX = screenX * renderer.domElement.width;
screenY = renderer.domElement.height * (1-screenY);
return {x: screenX, y: screenY};
}
预先感谢。