在像素周围的PointCloud(而非点或平面)上进行HitTest-ing

时间:2019-06-11 07:47:26

标签: java arcore

我想在PointCloud中找到所有更靠近屏幕像素的点。就像围绕该像素进行光线投射并返回PointCloud点(而不是用弧线跟踪的Point / Plane对象)。

我尝试使用Frame.hitTest(xPx,yPx),但是它仅适用于跟踪的点而不适用于PointCloud点,因此结果非常有限。需要像素周围的所有点云点(例如,将半径为“ r”的光束从该像素射线投射到点云中)

    if (pointCloudIdsArray.length > 0) {
    for (int i = 0; i < pointCloudIdsArray.length; i++) {
        String idString = Integer.toString(pointCloudIdsArray[i]);
        float xMeters = pointCloudArray[i * 4];
        float yMeters = pointCloudArray[i * 4 + 1];
        float zMeters = pointCloudArray[i * 4 + 2];
        float confidenceoTo1 = pointCloudArray[i * 4 + 3];
        double distanceFromCamera = Math.sqrt(xMeters * xMeters + yMeters * yMeters + zMeters * zMeters);
        if (distanceFromCamera > farthestPoint) {
            farthestPoint = distanceFromCamera;
        }
}

我从框架中获得了点云世界的坐标。需要找到更靠近当前屏幕像素的像素。请告知。

1 个答案:

答案 0 :(得分:0)

我能够找到这个问题的答案。 arore场景的Camera对象很容易做到:

public Vector3 worldToScreenPoint (Vector3 point)