這可以使用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