List
instant training with fusion tracker
Posted Date: 2023-03-10 10:26     Edited Date: 2023-09-26 14:55     Writer: alex.zongaro

Please provide your development details as below;

1. SDK Version: 5.0.6
2. Development Environment: (eg. Unity-Android, Unity-iOS)
3. Tracker/Scanner: Image fusion tracker
4. License Type(Free / Pro-One Time Fee / Pro-Subscription / Enterprise): Pro-One Time Fee
5. Target Device(Optional): try every android device

We can assist better if you attach screenshots of issues.

Hi, i explain my problem; when i use TrackerManager.TRACKER_TYPE_IMAGE with instant training image everything works beautifully: the images are detected correctly and the correlate prefabs are instantiated. Then i try to deploy to my android device the sample scene of the image fusion tracker and works as well too. So i decided to modify the script imagefusiontrackersample.cs such that it trains with images passed at the moment: when i deploy the app on the android device the tracker doesn't detect any images that i train. I think the problem is about the fusion tracker and the instant training because with 2dfilemap works in the right way. Thank you!

Posted Date: 2023-03-16 7:45     Edited Date: 2023-03-16 7:45     Writer: sjkim

Thank you for your interest in MAXST AR SDK.

 

We don't understand your issue.

Please write more information and logcat.

And then, Which part of imagefusiontrackersample.cs did you edit?

 

If you have related the MAXST AR SDK questions, feel free to ask.

 


 
Best regards,

Francisco

MAXST Support Team

Posted Date: 2023-03-16 8:17     Edited Date: 2023-03-16 8:23     Writer: alex.zongaro

Hi Francisco, 

thank you for your reply. 

It doesn't give me me error messages: the only problem is that the images are not been detected. I send you the imagefusiontrackersample modified.

All the android devices where i installed the app support ARCore.

CameraDevice.GetInstance().SetARCoreTexture();
                CameraDevice.GetInstance().SetFusionEnable();
                CameraDevice.GetInstance().Start();
                //use of fusion tracker image
                TrackerManager.GetInstance().StartTracker(TrackerManager.TRACKER_TYPE_IMAGE_FUSION);
                Scanner.SetActive(true);
                ExperiencesTracker(); //experience tracker calls CreateTracker based on the number of the experiences in my database
                SetupTracker();
                //else
                //{
                //    TrackerManager.GetInstance().RequestARCoreApk();
                //}

private void ExperiencesTracker()
    {
        foreach (var cat in StaticVariables.Database.ScenariosList)
        {
            foreach (var media in cat.ExperiencesList)
            {
                if (media.IsActive)
                    CreateTracker(media, cat.UUID);
            }
        }
    }

private void CreateTracker(Experience experience, string ScenarioUUID) //this function add the tracker to the tracker manager, focus only on the imageTrackerSample operations
    {
        //path of the trigger file
        string path = Path.Combine(Application.persistentDataPath, experience.TriggerPath.Split('/').Last());
#if !UNITY_EDITOR
            string tFullPathName = path;
            UriBuilder tURIBuilder = new UriBuilder(tFullPathName)
            {
                Scheme = "file"
            };
            path = tFullPathName.ToString();
#endif
        // instantiation of ImageTrackable gameObject
        GameObject ImageTrackable = Resources.Load("Prefabs/ImageTrackable") as GameObject;
        GameObject ARGO = Instantiate(ImageTrackable);
        ARGO.GetComponent().TrackableName = experience.TriggerPath.Split('.').First();
        //retrieve texture of the trigger
        Texture2D trigger = NativeGallery.LoadImageAtPath(path, -1, false);
        float width = (float)trigger.width / 1000;
        //add tracker data to the tracker manager
        TrackerManager.GetInstance().AddTrackerData("{\"image\":\"" + experience.TriggerPath.Split('.').First() + "\",\"image_path\":\"" + path + "\",\"image_width\":0.26}");
        TrackerManager.GetInstance().LoadTrackerData();
        var media = StaticVariables.Database.ScenariosList.Where(c => c.UUID == ScenarioUUID).FirstOrDefault().ExperiencesList.Where(m => m.UUID == experience.UUID).FirstOrDefault();
        trackableMedia.Add(ARGO.GetComponent().TrackableName,media);

}

 

Now if i use TrackerManager.TRACKER_TYPE_IMAGE the CreateTracker function works, but if i put these operations

{CameraDevice.GetInstance().SetARCoreTexture();
                CameraDevice.GetInstance().SetFusionEnable();
                CameraDevice.GetInstance().Start();
                //use of fusion tracker image
                TrackerManager.GetInstance().StartTracker(TrackerManager.TRACKER_TYPE_IMAGE_FUSION);} the images that i trained before are not correctly detected

Posted Date: 2023-03-20 1:43     Edited Date: 2023-03-20 1:43     Writer: sjkim

Please check out your AddTrackerData() function.

 

You must fill in two parameter of AddTrackerData().

When copying to the assets folder, set the second parameter to true to indicate that it is a relative path and a file in the assets folder.

If copying to external storage, enter the full path and set the second parameter to false. The instant training permits only jpg and png formats.

(An image width as a pixel size should be more than 320 and the best is 640)

 

A sample code is like below.

TrackerManager.GetInstance().AddTrackerData("{\"image\":\"add_image\",\"image_path\":\"ImageTarget/Blocks.png\",\"image_width\":0.26}", true);

 

If you have related the MAXST AR SDK questions, feel free to ask.

 


 
Best regards,

Francisco

MAXST Support Team

Posted Date: 2023-03-20 8:49     Edited Date: 2023-03-20 8:49     Writer: alex.zongaro

I tried to use the sample code but with images on the external storage and it's not working. The thing is that this line of code TrackerManager.GetInstance().AddTrackerData("{\"image\":\"" + experience.TriggerPath.Split('.').First() + "\",\"image_path\":\"" + path + "\",\"image_width\":0.26}"); works with TrackerManager.GetInstance().StartTracker(TrackerManager.TRACKER_TYPE_IMAGE); .

When i set the tracker to TRACKER_TYPE_IMAGE_FUSION doesnt' detect any images, but the code is the same: the question is, why the instant training of the images works only with the normal tracker image and not with the fusion tracker?

Posted Date: 2023-03-29 9:32     Edited Date: 2023-03-29 9:38     Writer: sjkim

Please check a that the "image":"add_image" pair should be located at first.

The value of "image_path" is an image path and the value of "image_width" is a real width (meter unit) of an image target.


And then, It must be run in the following order: startTracker (), addTrackerData (), loadTrackerData ().
 

If you have related the MAXST AR SDK questions, feel free to ask.

 

 
Best regards,

Francisco

MAXST Support Team

Posted Date: 2023-03-29 12:14     Edited Date: 2023-03-29 12:14     Writer: alex.zongaro

but did you look the code i sent you because i'm saying the same thing in every post. The tracker manager works with instant training when i set it as normal tracker type (TrackerManager.TRACKER_TYPE_IMAGE), but when i changed the type to this (TrackerManager.TRACKER_TYPE_IMAGE_FUSION) it doesn't detect anymore the images just trained, only the statics one. this is the order of the function when i train an image:

- 1)TrackerManager.GetInstance().StartTracker(TrackerManager.TRACKER_TYPE_IMAGE);

                                       or 

CameraDevice.GetInstance().SetARCoreTexture();CameraDevice.GetInstance().SetFusionEnable();CameraDevice.GetInstance().Start();TrackerManager.GetInstance().StartTracker(TrackerManager.TRACKER_TYPE_IMAGE_FUSION);

based on which type of tracker i need to use

- 2)TrackerManager.GetInstance().AddTrackerData("{\"image\":\"add_image\",\"image_path\":\"" + path + "\",\"image_width\":0.26}", false); where path is the path of the image that is not in assets folder

-3)TrackerManager.GetInstance().LoadTrackerData(); last thing i load the trained image to the tracker manager

the problem is this: when i set TrackerManager.GetInstance().StartTracker(TrackerManager.TRACKER_TYPE_IMAGE) everything works, but when i changed to the fusion tracker (with all the linked code as i said before), it doesn't detect images but it ' s the same code:the only thing that i changed is the part 1. So why with fusion tracker image the instant training is not working? Thanks for the attention, i hope i was clear this time. (i tried the app on multiple android devices)

Posted Date: 2023-04-04 11:22     Edited Date: 2023-04-04 11:22     Writer: sjkim

Sorry to rate reply.

 

As a result of our own testing, it was determined that there is a bug.

We will correct the matter and reflect it in the updated version.

 

If you have related the MAXST AR SDK questions, feel free to ask.

 

 
Best regards,

Francisco

MAXST Support Team

Posted Date: 2023-04-04 12:00     Edited Date: 2023-04-04 12:00     Writer: alex.zongaro

Thanks for the reply and support. So the next version will be the 5.0.8 right? Do you have any idea when it will be released?

Posted Date: 2023-04-14 5:23     Edited Date: 2023-04-14 5:23     Writer: sjkim

We apologize for any inconvenience.

We will fixed train target image instantly issue at AR SDK 5.0.8 or AR SDK 6.0.

 

If you have related the MAXST AR SDK questions, feel free to ask.

 

 
Best regards,

Francisco

MAXST Support Team

Posted Date: 2023-07-10 9:30     Edited Date: 2023-07-12 15:00     Writer: alex.zongaro

Is there any information available about bug fixes in the latest version of the SDK?


In addition, i have a problem: when i install the new version of SDK (6.0 or 6.1) i can't build anymore the app. With the older version of the sdk i can fluently build the app on my device

Posted Date: 2023-09-26 14:55     Edited Date: 2023-09-26 14:55     Writer: jerrygod

I have tried 6.0 and 6.1, it is still not working. 

Any comment on bug fixed schedule? Thx.