当前位置: 华文世界 > 数码

Three.js世界坐标转屏幕坐标

2024-03-20数码
// 直接使用内置方法转换世界坐标到屏幕坐标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) 更新这些矩阵。