List
간헐적으로 마커 인식이 안되는 현상에 대해서
Posted Date: 2020-01-13 11:06     Edited Date: 2020-01-15 2:41     Writer: sukim

현재 총 마커 80여개 정도 되는 apk에서 씬을 선택하여 20여개의 이미지 마커가 있는 씬으로 이동되고 

이후 0~3개가 반복해서 인식이 안되는 현상이 발생하고 있습니다.

항상 동일한 마커가 인식이 안되는 것이 아니고, 불규칙적으로 안되는 것이 0~3개씩 반복되며 

앱을 종료하고 다시키면 다른 마커가 인식이 안되는 현상이 반복됩니다.

 

맥스트 SDK : 4.1

Unity Android

Unity 에디터에서는 해당 현상이 나타나지 않고, Andorid 빌드를 통해서만 발현됩니다.

갤럭시 S7기기에서 유독 심하고, S8기기에서도 간혹적으로 발생합니다 

사용하고 있는 맥스트 소스 코드를 첨부합니다. 의심이 될만한 부분을 검토 부탁드리겠습니다.


using System.Collections;
using System.Collections.Generic;
using maxstAR;
using UnityEngine;

public class LocalImageTracker : ARBehaviour
{
    #region variable

    private Dictionary<string, ImageTrackableBehaviour> imageTrackablesMap = new Dictionary<string, ImageTrackableBehaviour>();
    private CameraBackgroundBehaviour cameraBackgroundBehaviour;

    #endregion

    #region unity func

    private void Awake()
    {
        Init();

        cameraBackgroundBehaviour = FindObjectOfType<CameraBackgroundBehaviour>();
        if (cameraBackgroundBehaviour == null)
        {
            Debug.LogError("Can't find CameraBackgroundBehaviour.");
            return;
        }

        TrackerManager.GetInstance().SetTrackingOption(TrackerManager.TrackingOption.JITTER_REDUCTION_ACTIVATION);
    }

    private void Start()
    {
        QualitySettings.vSyncCount = 0;
        Application.targetFrameRate = 60;

        imageTrackablesMap.Clear();
        ImageTrackableBehaviour[] imageTrackables = FindObjectsOfType<ImageTrackableBehaviour>();
        foreach (var trackable in imageTrackables)
        {
            imageTrackablesMap.Add(trackable.TrackableName, trackable);
            Debug.Log("Trackable add: " + trackable.TrackableName);
        }

        AddTrackerData();
        TrackerManager.GetInstance().StartTracker(TrackerManager.TRACKER_TYPE_IMAGE);
        StartCamera();

        // For see through smart glass setting
        if (ConfigurationScriptableObject.GetInstance().WearableType == WearableCalibration.WearableType.OpticalSeeThrough)
        {
            WearableManager.GetInstance().GetDeviceController().SetStereoMode(true);

            CameraBackgroundBehaviour cameraBackground = FindObjectOfType<CameraBackgroundBehaviour>();
            cameraBackground.gameObject.SetActive(false);

            WearableManager.GetInstance().GetCalibration().CreateWearableEye(Camera.main.transform);

            // BT-300 screen is splited in half size, but R-7 screen is doubled.
            if (WearableManager.GetInstance().GetDeviceController().IsSideBySideType() == true)
            {
                // Do something here. For example resize gui to fit ratio
            }
        }
    }


    private void Update()
    {
        TrackingState state = TrackerManager.GetInstance().UpdateTrackingState();

        cameraBackgroundBehaviour.UpdateCameraBackgroundImage(state);

        TrackingResult trackingResult = state.GetTrackingResult();

        if(trackingResult.GetCount() <= 0)
        {
            DisableAllTrackables();
        }
        else
        {
            for (int i = 0; i < trackingResult.GetCount(); i++)
            {
                Trackable trackable = trackingResult.GetTrackable(i);
                imageTrackablesMap[trackable.GetName()].OnTrackSuccess(trackable.GetId(), trackable.GetName(), trackable.GetPose());
            }
        }
    

Posted Date: 2020-01-15 2:41     Edited Date: 2020-01-15 2:41     Writer: inactive

안드로이드 스튜디오의 Logcat에 MaxstAR-Native라고 검색하시면

Start to load 2d maps 라는 로고가 보이며, 그 후로 로드된 2dmap의 경로와 파일명이 보입니다.

그 아래로 AR2D Map Count : n 이렇게 몇개의 맵이 로드되었는지 로그가 뜨는데, 

위 사항을 확인하시고 몇개의 맵이 로드되었는지 알려주세요. 

그리고 사용하시려는 맵의 개수가 정상적으로 로드가 되었다면, 인식이 안되는 이미지를 올려주세요. 

이미지 자체적으로 인식이 힘든 이미지인지 확인을 해보려 합니다. 

감사합니다. 

 

Leo

Maxst Support Team