Обнаружение точек в любом месте ARcore - PullRequest
0 голосов
/ 19 мая 2019

Я использую единицу, я просто хочу, чтобы ядро ​​AR рисовало и измеряло расстояние между 2 точками, но оно работает нормально, но точки всегда находятся на обнаруженной плоскости ... Мне нужно обнаруживать точки где угодно, независимо отобнаружен самолет так же, как это приложение.http://armeasure.com я нашел что-то связанное с особенностью, но я не знаю, так как я новичок в ARcore.

Я попытался комментировать trackablehitflag.planewithpolygon в сценарии HElloAR в примере проекта

  TrackableHit hit;
            TrackableHitFlags raycastFilter =TrackableHitFlags.FeaturePointWithSurfaceNormal;
           // TrackableHitFlags.PlaneWithinPolygon 
            if (Frame.Raycast(touch.position.x, touch.position.y, raycastFilter, out hit))
            {
                // Use hit pose and camera pose to check if hittest is from the
                // back of the plane, if it is, no need to create the anchor.
             /*   if ((hit.Trackable is DetectedPlane) &&
                    Vector3.Dot(FirstPersonCamera.transform.position - hit.Pose.position,
                        hit.Pose.rotation * Vector3.up) < 0)
                {
                    Debug.Log("Hit at back of the current DetectedPlane");
                }*/
             //   else
             //   {
                    // Choose the Andy model for the Trackable that got hit.
                    GameObject prefab;
                //    if (hit.Trackable is FeaturePoint)
                    //{
                        prefab = AndyPointPrefab;
                   // }
                    //else
                    //{
                  //      prefab = AndyPlanePrefab;
                    //}

                    // Instantiate Andy model at the hit pose.
                    var andyObject = Instantiate(prefab, hit.Pose.position, hit.Pose.rotation);
    }

после отключения точки даже не были созданы на флаге попадания в особенную точку

1 Ответ

0 голосов
/ 28 мая 2019

Для размещения точек есть несколько способов добавить точки не на месте, например, вы можете поместить якорь в любом месте вашего обзора относительно камеры, независимо от плоскости.

Проблема в том,глубина точки.На рисунке ниже все линии имеют одинаковую длину с точки зрения 2D, но, очевидно, пользователь, вероятно, пытается измерить элементы на разных глубинах.

enter image description here

При размещении якоря относительно камеры необходимо явно указать глубину.Например, вы помещаете его в центр предварительного просмотра камеры на глубину 2 метра.

Если вы в состоянии убедиться, что каждый добавленный якорь находится на известной глубине или с заданным значением глубины, тогда вы сможете добавить якоря с трехмерной мировой координатой и выполнить измерения.К сожалению, для реальных рабочих приложений это обычно невозможно, так как там пользователь не будет знать глубину, а современные устройства не имеют датчиков глубины.камера - например, смартфоны без специального оборудования для измерения глубины.Один (коммерческий) пример - 6D: https://www.6d.ai

...