Start a new topic

Caching and Destroy Mechanism

Caching and Destroy Mechanism


Hi,

I have a small AR product with a different amount of trackables and videos.

I made following code and it works. Sometimes (if there are a lot of trackables e.g 45 in the code below) some videos does not work. I think it´s a performance problem.

Someone told me it´s necessary to install a caching and destroy mechanism for the videos - but I have no idea.

Maybe someone can help me  - this would be great!

Thanks

Markus 

 

var iC = 45;

var vN  = 'assets/AdjektiveVideo';

var tN  = '';

 

var World = {

    loaded : false,

    init : function initFn() { this.createOverlays(); },

    createOverlays : function createOverlaysFn() {

        this.tracker = new AR.ClientTracker("assets/adjektive.wtc", { onLoaded: this.worldLoaded });

        

        World.overlays  = ;

        World.trackables  = ;

        for (var i = 1; i<=iC; i++) {

            World.overlays  = new AR.VideoDrawable(vN+i+'.mov', 0.47, { offsetY: 0.09});

            World.trackables = new AR.Trackable2DObject(this.tracker, tN+i, {

                                                           drawables : {cam: },

                                                           onEnterFieldOfVision: (function (x) {

                                                                                  return function(e) { World.overlays.play(-1) };

                                                                                  })(i),

                                                           onExitFieldOfVision: (function (x) {

                                                                                 return function(e) { World.overlays.pause() };

                                                                                 })(i)

                                                           });

        }

    },

    worldLoaded : function worldLoadedFn() { document.getElementById("loadingMessage").remove();}

};

 

World.init();

Hi there!

Approaches for caching and asset-loading highly depend on your usecase.
I can give you some hints, but implementation needs to be done by a JS developer

- Do not load all videos at once, your code loads all videos on start-up which will result in loading issues and high network traffic. Recomendation: Use wildcard as targetName ("*") and load the video of the recognized target on demand

- If you already know that scanning e.g. page #1 and #10 is very common, load (only) those videos on startup

- Remember the video you recognized the last time and destroy its assets once a new target was recognized. That way you have assets in place after target got los and is scanned two times in a row but you free memory when you already know that the user most likely won't scan a target twice

- Use AR.Trackable2DObject's add- and removeCamDrawables functions to update augmentations of current scene instead of creating Trackable2DObjects per target-image

Hope this helps,

Best regards,
Andreas

 
Login or Signup to post a comment