【发布时间】:2012-07-17 01:16:48
【问题描述】:
我有一个位置为 (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};
}
提前致谢。
【问题讨论】:
标签: javascript three.js