我有一个带有位置(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};
}
Thank in advance.
project
是一个可变方法,因此如果您在现有的Vector3上使用它,请在调用clone
之前使用。 - Mistic