// 直接使用内置方法转换世界坐标到屏幕坐标
var worldPosition = new THREE.Vector3(x, y, z);
worldPosition.project(camera);
// 注意:此时worldPosition的xyz已经变成了归一化的屏幕坐标
// 若要转换为像素坐标,还需乘以canvas尺寸并偏移
screenPosition.x = (worldPosition.x + 1) * width / 2;
screenPosition.y = (-worldPosition.y + 1) * height / 2;
请确保在调用.project()之前,相机和相关渲染器的 matrices (view/projection) 已经是最新的,通常是在渲染循环中每次调用 renderer.render() 之后或 requestAnimationFrame 回调中调用 camera.updateMatrixWorld(true) 更新这些矩阵。