Table of Contents

제어 mega 트래킹 프로세스

이 문서는 다양한 애플리케이션 시나리오의 요구 사항을 충족하기 위해 mega 트래킹 프로세스의 기능과 파라미터를 제어하는 방법을 설명합니다.

시작하기 전에

장치 지원 레벨 조정

MegaTrackerFrameFilterMegaTrackerFrameFilter.MinInputFrameLevel 프로퍼티는 mega가 지원하는 최소 장치 레벨을 지정하는 데 사용됩니다.

alt text

Mega는 거의 모든 유형의 프레임 데이터 소스에서 실행될 수 있지만, 서로 다른 프레임 데이터 소스는 트래킹 효과에 서로 다른 영향을 미칩니다.

기본적으로 mega는 장치가 지원하는 가장 높은 레벨의 프레임 데이터 소스를 선택하여 트래킹합니다. 기본 구성으로 지원되는 mega 세션은 6DoF와 5DoF를 지원하는 프레임 데이터 소스로 이미 구성되어 있습니다.

Mega 런타임에서 특정 레벨의 프레임 데이터 소스를 지원하려면 두 가지 조건이 충족되어야 합니다:

예를 들어, 기본 세션에서 3DoF 트래킹을 지원하려면:

또 다른 예로, 기본 세션에서 5DoF 트래킹 지원을 제거하려면:

충족되는 프레임 데이터 소스를 사용할 수 없을 때는 세션 어셈블리가 실패합니다.

트래킹 대상 관리

Mega를 사용할 때는 MegaTrackerFrameFilter가 사용하는 target인 block을 지정해야 합니다.

block 소스 제어

대부분의 경우 기본 구성을 유지하는 것이 좋습니다. 즉, 에디터에서 mega studio를 사용하여 block을 임포트합니다.

세션 아래의 Mega Tracker 오브젝트를 선택하고, Block Root Source 옵션은 External(기본값)로 유지해야 합니다.

alt text

동시에, Block Root를 씬의 MegaBlocks 오브젝트로 지정해야 합니다.

alt text

Block Root Source 옵션을 수정하여 다른 block 소스 방식을 지정할 수 있습니다. 예를 들어, ema를 사용하여 데이터를 임포트할 때 일반적으로 Internal 또는 Mixed 옵션을 선택합니다.

스크립트에서는 BlockHolder.BlockRootSource을 수정하여 동일한 효과를 얻을 수 있습니다.

멀티 대상 트래킹 제어

대부분의 mega 사용 시나리오에서는 멀티 대상을 사용할 필요가 없습니다. 여러 block이 서로 영향을 미치는 것을 피하는 방법을 숙달하기 전에는 하나의 로컬라이제이션 라이브러리에 하나의 block만 배치하는 것이 좋습니다.

원리적으로, mega는 장치가 위치한 모든 block에서의 위치를 계산하며, 라이브러리에서 장치가 보는 block을 선택하는 것이 아닙니다. 신중하지 않은 사용은 데이터 혼동 등의 이유로 효과가 저하될 수 있습니다.

세션 아래의 Mega Tracker 오브젝트를 선택하고, Multi Block 옵션을 수정하여 멀티 대상 트래킹 기능을 활성화 또는 비활성화할 수 있습니다.

alt text

스크립트에서는 BlockHolder.MultiBlock을 수정하여 동일한 효과를 얻을 수 있습니다.

경고

일반적으로 하나의 로컬라이제이션 라이브러리에는 하나의 block만 동시에 존재할 수 있습니다.

멀티 대상 구성을 수정하면 트래킹 효과에 영향을 미치므로 일반적으로 수정하지 않는 것이 좋습니다. EasyAR 기술 지원의 지도 아래 사용하십시오.

애플리케이션 실행 과정에서 이 구성이 수정된 경우 EasyAR에 문제를 보고할 때 반드시 이 점을 명시하십시오.

현재 시스템 상태 이해하기

기본 세션 구성에서는 UI 메시지가 화면에 표시되며, 여기에는 mega 트래킹 상태 정보가 포함됩니다.

로컬라이제이션이 성공하면, Mega Block 아래에 Found 상태 텍스트와 현재 트래킹 중인 block 이름 및 ID가 포함됩니다:

alt text

로컬라이제이션이 실패하면, Mega Block 아래에 NotFound 상태 텍스트가 포함됩니다:

alt text

NotFound는 정상 상태이며, mega 작업 전체 과정에서 이 상태가 자주 나타납니다. 이 상태가 나타나도 트래킹은 계속 진행됩니다. 일반적으로 애플리케이션 개발에서 NotFound 상태에 대한 특별한 처리는 필요하지 않습니다.

MegaTrackerFrameFilter.LocalizationRespond 이벤트를 사용하면 현재 로컬라이제이션 상태를 가져와 시스템이 현재 트래킹 대상을 찾았는지 여부를 알 수 있습니다.

다음 코드는 이 이벤트를 사용하는 방법과 애플리케이션에서 주의해야 할 일반적인 예외 상태 처리 방법을 보여줍니다:

private void Awake()
{
    megaTracker.LocalizationRespond += HandleLocalizationStatusChange;
}
        
private void HandleLocalizationStatusChange(MegaLocalizationResponse response)
{
    var status = response.Status;
    wakingUpCount = status == MegaTrackerLocalizationStatus.WakingUp ? wakingUpCount + 1 : 0;
    if (wakingUpCount >= 5)
    {
        // 서비스가 깨어나는 중이므로 최종 사용자에게 대기하도록 요청해야 합니다.
    }

    if (status == MegaTrackerLocalizationStatus.QpsLimitExceeded)
    {
        // QPS 한도 초과, 무작위로 최종 사용자 로컬라이제이션이 실패할 수 있습니다(전체 트래킹 품질 저하).
        // 현재 사용자 수에서 트래킹 품질을 보장하려면 일반적으로 QPS 상한선을 높이기 위해 비용을 지불해야 합니다.
    }

    if (status == MegaTrackerLocalizationStatus.ApiTokenExpired)
    {
        // 토큰 만료, 이는 토큰 인터페이스를 사용하여 서비스에 액세스할 때만 발생합니다.
        // 이 문제를 해결하려면 애플리케이션이 자체 백엔드에 토큰을 요청하고 MegaTrackerFrameFilter.UpdateToken을 호출하여 업데이트해야 합니다.
    }
}

애플리케이션이 자주 MegaTrackerLocalizationStatus.RequestTimeout 상태를 경험한다면, 일반적으로 장치가 서비스에 연결된 네트워크 상태가 좋지 않다는 것을 의미합니다. 트래킹 품질을 개선하기 위해 네트워크 환경을 최적화하는 것이 좋습니다. 네트워크 상태를 개선할 수 없는 시나리오에서는 요청 시간 제한을 늘리는 것을 고려할 수 있습니다.

참고

이 이벤트로는 로컬라이제이션에서 반환된 pose를 가져올 수 없습니다.

사실, 애플리케이션 개발에서 로컬라이제이션 반환 pose는 필요하지 않습니다. EasyAR는 로컬라이제이션이 반환된 후 로컬 알고리즘을 통해 더 정확한 pose를 계산하여 개발자에게 반환하며, 이 pose는 block의 transform에 이미 반영되어 있습니다. 자세한 내용은 세션 실행 결과 가져오기를 참조하세요.

일시 중지 및 재개

Mega의 트래킹 및 로컬라이제이션 기능은 각각 일시 중지 및 재개할 수 있습니다.

트래킹 일시 중지

MegaTrackerFrameFilter.enabled을 false로 설정하면 트래킹을 일시 중지할 수 있습니다.

기본적으로 트래킹이 일시 중지된 후에는 모든 block 노드 아래의 콘텐츠가 숨겨집니다.

로컬라이제이션 일시 중지

MegaTrackerFrameFilter.EnableLocalization을 false로 설정하면 로컬라이제이션을 일시 중지할 수 있습니다.

경고

로컬라이제이션을 일시 중지하면 트래킹 효과에 영향을 미치므로 일반적으로 수정하지 않는 것이 좋습니다. EasyAR 기술 지원의 지도 아래 사용하십시오.

애플리케이션 실행 과정에서 로컬라이제이션이 일시 중지된 경우 EasyAR에 문제를 보고할 때 반드시 이 점을 명시하십시오.

서비스 및 요청 제어

MegaTrackerFrameFilter 컴포넌트의 파라미터를 수정하여 서비스 요청 동작을 제어할 수 있습니다.

요청 간격 및 시간 초과

세션 아래의 Mega Tracker 오브젝트를 선택하고, Request Time Parameters 아래의 옵션을 수정하여 서비스 요청 간격 및 시간 초과 시간을 조정할 수 있습니다.

alt text

스크립트에서는 MegaTrackerFrameFilter.RequestTimeParameters을 수정하여 동일한 효과를 얻을 수 있습니다.

경고

요청 간격을 수정하면 트래킹 효과에 영향을 미치므로 일반적으로 수정하지 않는 것이 좋습니다. EasyAR 기술 지원의 지도 아래 사용하십시오.

애플리케이션 실행 과정에서 요청 간격이 수정된 경우 EasyAR에 문제를 보고할 때 반드시 이 점을 명시하십시오.

로컬라이제이션 라이브러리 전환

MegaTrackerFrameFilter.SwitchEndPoint(ExplicitAddressAccessData, BlockRootController)을 사용하면 런타임에 로컬라이제이션 라이브러리를 전환할 수 있습니다. 이 인터페이스를 사용할 때 카메라 화면 및 세션은 중단되지 않습니다.

관련 항목