List
ImageFusionTracker -> ImageTracker 씬 전환 시 카메라 오픈 속도
Posted Date: 2019-12-09 10:17     Edited Date: 2019-12-13 9:05     Writer: inactive

Please provide your development details as below;

1. SDK Version: 5.0.0
2. Development Environment: Unity-IOS, Unity-Android
3. Tracker/Scanner: ImageFusionTracker , ImageTracker 
4. License Type(Free / Pro-One Time Fee / Pro-Subscription / Enterprise): Free
5. Target Device(Optional): iphone 11, iphone 11 pro

We can assist better if you attach screenshots of issues.

 

ImageFusionTracker 씬과 ImageTracker 씬 전환 시

ImageTracker -> ImageFusionTracker로 씬 전환을 할 경우에는 카메라 켜지는 속도가 빠릅니다.

그런데 반대로 ImageFusionTracker씬에서 ImageTracker 씬으로 전환하는 경우에는 10초 정도 걸립니다.

해당 현상은 아이폰 11과 아이폰 11 프로에서 나타납니다.

Posted Date: 2019-12-10 4:50     Edited Date: 2019-12-10 4:51     Writer: slkim

안녕하세요. 맥스트 입니다.

해당 문제는 아마도 디버그 모드에서 생길 가능성이 있습니다. ImageTracker는 센서를 사용하지 않고, ImageFusionTracker는 센서를 사용합니다.

XCode에서 디버깅으로 셋팅되면 센서의 상태의 의해서 많은 시간의 딜레이가 생깁니다. 한번 스킴에서 Debug Executable을 언체크 하시고 테스트 해보세요. 

 

Keane

Maxst Support Team

Posted Date: 2019-12-10 5:25     Edited Date: 2019-12-10 5:25     Writer: inactive

엑스코드에서 Debug Executable 옵션 언체크하고 빌드해도 같은 증상입니다.

 

ImageTracker씬과 ImageFusionTracker씬 간에 바로 전환을 하지 않고

메인씬(ImageTracker씬이나 ImageFusionTracker씬을 로딩하기 위한 버튼만 있는 씬)을 하나 더 만들어서

메인씬 -> ImageFusionTracker 씬

ImageFusionTracker 씬 -> 메인씬

메인씬 -> ImageTracker 씬

이런 식으로 씬 전환을 할 경우에는 카메라 켜지는 속도가 매우 빠릅니다.

ImageFusionTracker 씬에서 ImageTracker 씬으로 바로 전환할 경우에만 카메라 켜지는 속도가 느립니다.

Posted Date: 2019-12-10 6:18     Edited Date: 2019-12-10 6:18     Writer: slkim

FusionTracker의 경우에는 ARKit을 사용합니다. 카메라를 정지하고 켜지는 시간이 매우 빠르기 때문에 생기는 문제인것 같습니다.

메인으로 이동하면 카메라나 ARKit의 정지를 제대로 하기 때문에 정상 작동하는것으로 보입니다. 

씬에서 씬으로 이동하는것은 문제가 있을수도 있습니다.

현재로서는 그런 동작을 하기 위해서는 카메라 정지를 제대로 하였는지에 대해서 판단을 해야합니다.

 

Keane

Maxst Support Team

Posted Date: 2019-12-13 7:25     Edited Date: 2019-12-13 7:25     Writer: inactive

ImageFusionTracker 스크립트의 OnDestroy에서 카메라를 정지시켜주어도 여전히 같은 증상입니다.

 

void OnDestroy()

{

        imageTrackablesMap.Clear();

        TrackerManager.GetInstance().SetTrackingOption(TrackerManager.TrackingOption.NORMAL_TRACKING);

        TrackerManager.GetInstance().StopTracker();

        TrackerManager.GetInstance().DestroyTracker();

        

        // 추가한 코드

        ResultCode result = CameraDevice.GetInstance().Stop();

        Debug.Log("Unity StopCamera. result : " + result);

    }

 

FusionTracker 씬이 언로드될때 카메라 정지 로그가 정상적으로 찍히고

ImageTracker씬이 로드될 때 CameraDevice.cs 스크립트의 아래 코드 중에 "Debug.Log("Camera id : " + cameraId);" 부분 로그가 찍히고

 

public ResultCode Start()

        {

#if PLATFORM_ANDROID

#if UNITY_2018_3_OR_NEWER

            if (!Permission.HasUserAuthorizedPermission(Permission.Camera))

            {

                Permission.RequestUserPermission(Permission.Camera);

            }

#endif

#endif

            int cameraType = 0;

            if (Application.platform == RuntimePlatform.OSXEditor || Application.platform == RuntimePlatform.WindowsEditor)

            {

                cameraType = AbstractConfigurationScriptableObject.GetInstance().WebcamType;

            }

            else

            {

                cameraType = (int)AbstractConfigurationScriptableObject.GetInstance().CameraType;

            }

 

            CameraDevice.CameraResolution cameraResolution = AbstractConfigurationScriptableObject.GetInstance().CameraResolution;

            switch (cameraResolution)

            {

                case CameraDevice.CameraResolution.Resolution640x480:

                    preferredWidth = 640;

                    preferredHeight = 480;

                    break;

 

                case CameraDevice.CameraResolution.Resolution1280x720:

                    preferredWidth = 1280;

                    preferredHeight = 720;

                    break;

 

                case CameraDevice.CameraResolution.Resolution1920x1080:

                    preferredWidth = 1920;

                    preferredHeight = 1080;

                    break;

 

                default:

                    preferredWidth = 640;

                    preferredHeight = 480;

                    break;

            }

 

            Debug.Log("Camera id : " + cameraId);

 

            return (ResultCode)NativeAPI.maxst_CameraDevice_start(cameraType, preferredWidth, preferredHeight);

        }

 

 

10초 정도 앱이 멈춰있다가 카메라가 켜집니다.

 

Posted Date: 2019-12-13 9:05     Edited Date: 2019-12-13 9:05     Writer: slkim

FusionTracker 시작이나, CameraDevice Start를 하실때 코루틴으로 1-2초 정도 대기 시킨 다음에 시작해보셨으면 합니다. 너무 빠르게 카메라가 시작되서 그런것 같습니다. 

 

Keane

Maxst Support Team