MRTK 기반 Android(AR) 만들기

최윾댄·2022년 7월 26일
1

모바일 세팅하기

BuildSetting 변경.
PlayerSettings - Player - Graphics APIS에서 Vulkan 삭제
Configuration 항목에서 버전 24이상.
XR Plug-in Management. 에서 ARCore 선택.
MRTK 세팅에서 스크립트 unity AR 업데이트
AR session 과 AR Session Origin 추가
AR Seesion Origin 하단 카메라 정보를 MRPlaySpace 오브젝트 하단의 카메라에 전부 넣기
MixedReality Toolkit 오브젝트에서 MRTK 설정을 바꾼다
- OpenXR 카메라 지우고, Unity AR Foundation Camera 추가하기


에러 buildfailedexception: missing dependency: com.squareup.okhttp3:okhttp

해결
https://github.com/Azure/azure-spatial-anchors-samples/issues/224


MRTK를 기반으로 AR을 만들다 보니 생겼던 오류.
에디터에선 에러가 안뜨지만 이미지와 같이 휴대폰으로 테스트를 할 때 생겼던 오류이다.
MRTK의 Input 시스템을 비활성화 하면 없어지긴 하지만 그러면 에디터에서도 움직이면서 테스트를 할수 없어서 수정했다.
원인으로는 Gaze가 OnPointerUp을 진행할때 무언가가 null로 반환이 되어 들어오는것으로 예상된다.

해당 위치에 있는 BaseCursor.cs 를 수정했다(패키지 내용)

  public virtual void OnPointerUp(MixedRealityPointerEventData eventData)
    {
        if (IsPointerValid == null)
            return;

        if (IsPointerValid)
        {
            if (eventData == null)
                return;

            if (eventData.InputSource == null)
                return;

            if (eventData.InputSource.Pointers == null)
                return;

            foreach (var sourcePointer in eventData.InputSource.Pointers)
            {
                if (sourcePointer == null)
                    return;

                if (sourcePointer.PointerId == null)
                    return;

                if (Pointer == null)
                    return;

                if (Pointer.PointerId == null)
                    return;

                if (sourcePointer.PointerId == Pointer.PointerId)
                {
                    if (SourceDownIds == null)
                        return;

                    if (eventData.SourceId == null)
                        return;

                    SourceDownIds.Remove(eventData.SourceId);
                    return;
                }
            }
        }
    }

수정한 내용이다. 모든 값을 null 체크를 진행했다.
흥미로운 것은 foreach문을 들어오기 전에 생기는 오류인 것으로 예상된다는 것이다.
애초에 함수를 호출할 때 부터 값을 null로 리턴하는 경우일 수도 있을 것 같다.
코드를 직접적으로 수정하긴 했으나 null체크임으로 문제가 되진 않을 것이다.
해당 코드로 오류가 없어졌다.


침착하게

MRTK를 사용하는 HL2 와 다르게 휴대폰은 공간을 읽는 것이 굉장히 느리다.
그니까 휴대폰을 들고 바로 확인해보고 안된다고 단정짓지 말고
천천하게 공간을 휴대폰카메라로 둘러보고 확인해보자.

(내가 그렇게 되는거였는데 안되는줄 알고 삽질을 꽤 했었지...)



추가 내용! URP 프로젝트 인 경우

Universal RednerPiplineAsset_Renderer 에서 Add Renderer Feature을 해서
AR Background Renderer Feature을 추가할 것.

이거 추가 안하면 휴대폰으로 보면 배경이 다 검은색으로 바뀌고, 작동 안됨~

profile
금붕어 개발자의 실수 기록장 (지상 최악의 기억력 그 이상)

0개의 댓글