Navigation 설명

네비게이션을 사용하는 방법을 설명 합니다.

MaxstSceneManager.cs
public void OnClickNavigation()
{
    RemovePaths();

    string accessToken = TrackerManager.GetInstance().GetAccessToken();

    if(XRAPI.Instance.spotData == null || XRAPI.Instance.placeData == null || XRAPI.Instance.placeData.place_unique_name == "" || XRAPI.Instance.spotData.vps_spot_name == "")
    {
        Debug.LogError("Can't Find Spot, Place Name");
        return;
    }
    
    if (!XRStudioController.Instance.ARMode)
    {
        VPSTrackable eachTrackable = vPSTrackablesList[0];
        NavigationController.FindPath(this, accessToken, XRAPI.Instance.spotData.vps_spot_name, arCamera.transform.position, XRAPI.Instance.spotData.vps_spot_name, new Vector3(11.82481f, 0f, 5.36951f), 2.0f, vPSTrackablesList.ToArray(),
            (paths) => {
                MakeNavigationArrowContent(paths);
            },
            () => {
                Debug.LogError("No Path");
            }, XRAPI.Instance.placeData.place_unique_name);
        return;
    }

    if (currentLocalizerLocation != null)
    {
        GameObject trackingObject = null;
        foreach (VPSTrackable eachTrackable in vPSTrackablesList)
        {
            foreach (string eachLocation in eachTrackable.localizerLocation)
            {
                if (currentLocalizerLocation == eachLocation)
                {
                    trackingObject = eachTrackable.gameObject;
                    break;
                }
            }
        }

        if (trackingObject != null)
        {
            NavigationController.FindPath(this, accessToken, XRAPI.Instance.spotData.vps_spot_name, arCamera.transform.position, XRAPI.Instance.spotData.vps_spot_name, new Vector3(11.82481f, 0f, 5.36951f), 2.0f, vPSTrackablesList.ToArray(),
            (paths) => {
                MakeNavigationArrowContent(paths);
            },
            () => {
                Debug.LogError("No Path");
            }, XRAPI.Instance.placeData.place_unique_name);
        }
    }
}
  • 네비게이션 경로는 NavigationController.FindPath() 함수의 파라미터인 place_unique_name를 통해서 요청하게 됩니다. place_unique_name는 placeId를 통해서 획득하게 됩니다.

  • 요청된 결과로 현재 사용자의 위치로 부터 목적지까지의 경로를 얻게 됩니다.

  • MakeNavigationArrowContent() 함수로 컨텐츠 결과물을 확인할 수 있습니다.

  • 네비게이션 검색 파라미터는 Trackable에 포함 되어 있습니다.

  • 목적지에 대한 좌표는 POI를 통해서 획득 하거나, 메쉬의 주변부의 좌표를 획득해서 얻을 수 있습니다.

Last updated