这可以使用three.js的内置raycaster
和projector
功能来完成。要开始,请尝试看看this demo及其源代码。这里是another example。通过这种方式,您可以确定哪些物体更接近从相机位置发出的不可见线。否则,如果您只是对两个物体中的哪一个更接近相机感兴趣,则可以简单地检查它们的哪个位置值与相机坐标的距离较小。三维距离公式会派上用场:
bigSphereDistance = Math.sqrt(Math.pow(camera.position.x - big.position.x,2) +
Math.pow(camera.position.y - big.position.y,2) +
Math.pow(camera.position.z - big.position.z,2));
smallSphereDistance = Math.sqrt(Math.pow(camera.position.x - small.position.x,2) +
Math.pow(camera.position.y - small.position.y,2) +
Math.pow(camera.position.z - small.position.z,2));
//then check...
bigSphereDistance > smallSphereDistance ? /*case*/ : /*case*/;
直观上,小球时可见它的距离小于大球,用小球体半径的缓冲区。
要回答你的第二个问题,找到任何物体的2D坐标can accomplished like this。
你好迈克,欢迎来到stackoverflow :)这个问题似乎很好的研究,但它可以使用你的一些编辑,以获得一个建设性的答案。如果你能指出你正在使用的部分实现来追踪它们的空间位置,那将是很好的。 –
谢谢:)你说得对 - 格式越少答案就越少。 – Mike