【问题标题】:How to find nearest object with three.js如何使用three.js找到最近的对象
【发布时间】:2015-08-28 17:33:34
【问题描述】:

我有一堆数据,我知道它们的纬度/经度位置(图片上的圆圈)。现在我在 three.js 中有一个摄像头,我知道它的位置、旋转以及从它的角度看哪个方向是北方。

我想在鼠标点击时进入这些圆圈的顶部,但我希望程序会选择离玩家最近的圆圈,并且它也应该在当前视野中。

我尝试找到相机观察方向和圆圈位置之间的角度,但它仍然非常随机地移动。

任何想法从哪里开始?

【问题讨论】:

  • 对于最近的圆圈,您可能还没有找到如何获得距离?用相机的视线方向计算角度有什么问题?如果实际上玩家必须点击视野中必要的圆圈,为什么它最终会随机移动?
  • 我认为您需要更好地解释这一点,因为我不知道您要做什么。

标签: three.js


【解决方案1】:

我不完全确定您在询问“在圆圈顶部并单击鼠标”部分,但这里有一个实用函数,用于获取相机与您知道 x、y 的点之间的距离, z 坐标。

var getCameraDistanceFrom = function(camera,x,y,z) {
    var cameraDistance = new THREE.Vector3();
    var target = new THREE.Vector3(x,y,z);
    cameraDistance.subVectors(camera.position, target);
    return cameraDistance.length();
};

这个答案似乎有一个很好的方法来检查一个物体是否在相机的视野中:Determine if a mesh is visible on the viewport according to current camera

【讨论】:

    猜你喜欢
    • 2021-05-21
    • 2017-12-04
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 2018-08-31
    • 2021-09-05
    • 1970-01-01
    • 2019-10-01
    相关资源
    最近更新 更多