统一ARKit中的标尺测量不准确

时间:2018-07-09 11:36:56

标签: c# unity3d arkit measurement rulers

我正在使用Unity3D中的ARKit开发用于房间测量的应用程序,它是一种尺子。为此,我使用射线投射将物体(球体)靠在墙上,并通过获取ARKit生成的可识别墙壁的位置来计算这些物体之间的距离。

我遇到的问题:

  • 我放置的物体大多离那些ARKit有点远 墙壁。
  • 当我移动时,那些物体漂浮着。所以 测量不是那么精确。

代码(摘要):

// generate first point
    Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);;
    RaycastHit hit;

    if (Physics.Raycast(ray, out hit))
    {
            if (!arModeWall)
        {
            if (!continueMeasure)
            {
                if (!firstTouch)
                {
                    //Debug.Log("FirstDot");
                    firstTouch = true;
                    doLine = true;

                    if (fromToCalculation != 1)
                        fromToCalculation = 1;
                    //continueMeasure = true;

                    Vector3 cameraPos = new Vector3(Camera.main.transform.position.x,  Camera.main.transform.position.y, +10);

                    //Create first sphere (nessacary for position)
                    GameObject newPoint = Instantiate(distanceMeasuringSphere, hit.point, Quaternion.identity);
                    newPoint.transform.parent = distanceMeasuringSphereContainer.transform;
                    distanceMeasuringSphereArray.Add(newPoint);

                    //Create first LineRenderer (nessacary for Visuals)
                    GameObject newLR = Instantiate(distanceMeasuringLr, distanceMeasuringSphereArray[distanceMeasuringSphereArray.Count - 1].gameObject.transform.position, Quaternion.identity);
                    newLR.transform.parent = distanceMeasuringLrContainer.transform;
                    newLR.GetComponent<LineRenderer>().SetPosition(0, distanceMeasuringSphereArray[distanceMeasuringSphereArray.Count - 1].gameObject.transform.position);
                    distanceMeasuringLineRendererArray.Add(newLR);

                    //Create first Text (nessacary for Distance)
                    GameObject newDistanceText = Instantiate(distanceMeasuringText, hit.point, Quaternion.identity);
                    newDistanceText.transform.parent = distanceMeasuringTextContainer.transform;
                    distanceMeasuringTextArray.Add(newDistanceText);

                }

这是我想到的最好的解决方案。
但我也有进步的余地,也有建议

0 个答案:

没有答案