Try MAXST AR Fusion Tracker Now ✨
List
클라우드 트래킹 모드 다시 문의 드립니다.
Posted Date: 2021-09-03 2:59     Edited Date: 2021-09-08 6:16     Writer: zxc456ha

안녕하세요. 저번 답변을 받고 적용을 시켜 보았으나 작동이 되지 않아 다시 문의 드립니다.

 

타깃은 개별 타깃으로 User_Defined를 사용 하였습니다.

Posted Date: 2021-09-06 9:33     Edited Date: 2021-09-06 9:33     Writer: sjkim

MAXST AR SDK에 관심을 가져주셔서 감사합니다. 

 

작성하신 글을 통해서는 문제 확인이 어렵습니다. 

프로젝트 씬을 공유할 수 있으신가요?

 

 

Best regards,

Francisco

MAXST Support Team

Posted Date: 2021-09-07 2:06     Edited Date: 2021-09-07 2:06     Writer: zxc456ha

프로젝트 씬 공유해 드립니다.

 

http://gofile.me/4QOna/vypEgrLwY

Posted Date: 2021-09-07 7:24     Edited Date: 2021-09-07 7:24     Writer: sjkim

프로젝트를 제공해주셔서 감사합니다. 

 

확인결과, 코드를 이상한 방향으로 수정하셔서 발생한 문제입니다. 

제공해드린 Cloud Recognizer의 Sample Scene에서 Cloud Tracker Sample에 원하시는 Tracking 모드를 선언하시기 바랍니다.  

 

또한, 2개의 GameObject에서 같은 Cloud Tracker Sample를 선언 하셨는데,

1개의 GameObject에서만 선언 하시기 바랍니다. 

 

아울러, 유니티용 MAXST AR SDK를 사용하기 위해서는 유니티 개발 도구와 유니티 개발에 대한 기본적인 지식이 필요합니다.

 

 

Best regards,

Francisco

MAXST Support Team

Posted Date: 2021-09-07 9:12     Edited Date: 2021-09-07 9:12     Writer: zxc456ha

프로젝트 새로 만들어서 해도 안됩니다만...

Tracking 모드가 되는 샘플 하나만 보내주실수 있을까요?

 

Posted Date: 2021-09-08 6:16     Edited Date: 2021-09-08 6:16     Writer: sjkim

포럼에서는 MAXST AR SDK에 관련된 버그나 문제 사항에 대해서만 답변하고 있습니다. 

 

몇가지 첨언은 해드리겠습니다. 

 

Scene의 Hierarchy를 아래 이미지처럼 구성하시기 바랍니다.

 

아래 코드를 참조하셔서, SceneManager에 있는 CloudTrackerSamples 스크립트를 구성하세요.


public class CloudTrackerSample : ARBehaviour {

    private Dictionary<string, List<CloudTrackableBehaviour>> cloudTrackablesMap = new Dictionary<string, List<CloudTrackableBehaviour>>();
    private CameraBackgroundBehaviour cameraBackgroundBehaviour = null;
    List<Trackable> trackables = new List<Trackable>();
    List<TrackingResult> trackingResults = new List<TrackingResult>();

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

        cloudTrackablesMap.Clear();
        CloudTrackableBehaviour[] cloudTrackables = FindObjectsOfType<CloudTrackableBehaviour>();
        foreach (var trackable in cloudTrackables)
        {
            if (trackable.CloudName == "") 
            {
                Debug.LogError("Defined Name is must be named.");
                continue;
            }

            if(cloudTrackablesMap.ContainsKey(trackable.CloudName)) {
                List<CloudTrackableBehaviour> cloudTrackableList = cloudTrackablesMap[trackable.CloudName];
                cloudTrackableList.Add(trackable);
                cloudTrackablesMap.Add(trackable.CloudName, cloudTrackableList);
            } else {
                List<CloudTrackableBehaviour> cloudTrackableList = new List<CloudTrackableBehaviour>();
                cloudTrackableList.Add(trackable);
                cloudTrackablesMap.Add(trackable.CloudName, cloudTrackableList);
            }
        }

        StartCamera();

        // Add SecretId and SecretKey.
        TrackerManager.GetInstance().SetCloudRecognitionSecretIdAndSecretKey("", "");

        // Tracking Mode //
        TrackerManager.GetInstance().StartTracker(TrackerManager.TRACKER_TYPE_CLOUD_RECOGNIZER);
        TrackerManager.GetInstance().SetTrackingOption(TrackerManager.TrackingOption.MULTI_TRACKING);

    }

    private void DisableAllTrackables()
    {
        foreach (var trackableLists in cloudTrackablesMap)
        {
            foreach(var trackable in trackableLists.Value) 
            {
                trackable.OnTrackFail();
            }
        }
    }

    void Update()
    {
        DisableAllTrackables();

        TrackingState state = TrackerManager.GetInstance().UpdateTrackingState();

        if (state == null)
        {
            return;
        }

        TrackedImage image = state.GetImage();

        cameraBackgroundBehaviour.UpdateCameraBackgroundImage(state);

        TrackingResult trackingResult = state.GetTrackingResult();

        if(trackingResult.GetCount() > 0) {
            Trackable trackable = trackingResult.GetTrackable(0);
            if(cloudTrackablesMap.ContainsKey(trackable.GetCloudName())) {
                foreach (var cloudTrackable in cloudTrackablesMap[trackable.GetCloudName()])
                {
                    cloudTrackable.OnTrackSuccess(trackable.GetId(), trackable.GetName(), trackable.GetPose());
                }
            } else {
                if(cloudTrackablesMap.ContainsKey("_MaxstCloud_")) {
                    foreach (var cloudTrackable in cloudTrackablesMap["_MaxstCloud_"])
                    {
                        cloudTrackable.OnTrackSuccess(trackable.GetId(), trackable.GetName(), trackable.GetPose());
                    }
                }
            }
        }
    }

 

끝으로 MULTI_TRACKING는 동시에 세 개까지의 타깃 이미지를 인식 / 추적할 수 있는 기능입니다.

 

 

Best regards,

Francisco

MAXST Support Team