Start a new topic

Trackable: more than one image

Trackable: more than one image


About SDK and IR, 

Can somebody tell me what is the best practice for the number of images in only one tracktable ? (load time for the dataset, ....)

Is it possible to overlay each different image in only one dataset by different overlay or I need to load one tracker for each image ?


Hi Oliver,

you can store up to about 80 reference images in one pattern set (this is the current maximum that the Qualcomm Vuforia SDK supports). The size of the pattern set archive will grow about 70 to 90 kilo bytes for each contained reference image. Loading times will depenend on the size of the pattern set and the connection speed of the user's device, so it is a good idea to keep the number of reference image as low as possible.

In your ARchitect code you will create one AR.Tracker for the pattern set and one AR.Trackable2DObject for each reference image you want to track/augment. For each AR.Trackable2DObject you can add individual drawables so you can customize the augmentation of each reference image exactly to your likings (see code fragement below).


// a circle used for representation
var circle = new AR.Circle(5);

// the referenced tracker
var tracker = new AR.Tracker("");

// a Trackable2DObject using the "car" target in the tracker, using the circle as the digital representation.
var trackable2DObject = new AR.Trackable2DObject(tracker, "car", {
  drawables : { cam : circle }

you can store up to about 80 reference images in one pattern set (this is the current maximum that the Qualcomm Vuforia SDK supports).
So, If I want to manage 100 images, I have to put 50 in one pattern set and 50 in other one (best practice than 80/20, isn't it ?). Let us just assume that my app loads one tracker with the first pattern set and define another tracker with a second patern set. Only the first one is enabled  (because only one Tracker can be active at a time). What's happen if my user want to tag an image defined in the second pattern set because he don't care about tracker, pattern set....? Is the change automatic ? If not, how do I perform this change without user interaction?

Hi Oliver,

you are right, if you want to be able to recognize more than 80 images you have to split them up into multiple pattern sets and create an AR.Tracker for each of them (see example below). However, because only one Tracker can be active at any time, you will have to switch between them manually based on some criteria, i.e. depending on the user's location. It is best practice to organize the pattern sets in such a way that the number of switches between them can be minimized.


// a Tracker referencing a patternset on a server
var tracker1 = new AR.Tracker("", {   
  onDisabled : function(){     
    //tracker has been disabled by the system   
var enabled = tracker1.enabled; //true

// a second tracker, which will cause tracker1 to be disabled
var tracker2 = new AR.Tracker("");

enabled = tracker1.enabled; //false
enabled = tracker2.enabled; //true

Hello Olivier,

each target image takes up roughly 200kb of memory that need to be loaded from the network and stored in phone memory. For best performance it is recommended to stay below 10 target images.

If you have more than one target image you want to augment it is recommended to store all target images in one pattern set, create one Tracker object for the pattern set, then create one  Trackable2DObject for each target image and assign a custom overlay to it (i.e. ImageDrawable or HtmlDrawable). For details, see For multiple target images just create some additional Trackable2DObjects.

Best regards,

Nicolas Göll


I want use multiple target images to load different videos so I need to create trackers for each of these target images as well as VideoDrawable and AR.Trackable2DObject. Am confused how to get this done. 

I have attached my js file. for this, only the second target image is working...

Hi Obari,

I had a look at the posted js code. The problem is that you create two seperate AR.Tracker objects (line 12-17). You must only create one AR.Tracker object and initialize it with one target collection that contains all your target images.

The way it is meant to work is:
1) create ONE target collection (wtc) containing all your target images you want to augment
2) create ONE AR.Tracker and initialize it with your target collection
3) For each target image you want to augment:
3a) create an AR.Trackable2DObject
3b) associate it with the AR.Tracker and set the desired target ID (target filename minus extension, i.e. "best" for a target image named "best.jpg")
3c) assign the (video) drawable you want to appear

For details, please have a look at the Image Recognition Tutorial section MULTIPLE TARGETS ( and API documentation for AR.Tracker and AR.Trackable2dObject (

Best regards,

Ok, tnx. 

My problem now is that the tracker works for the first two Trackable2DObjects and the rest... What could be the cause of this...?

in the js file you posted, there are only augmentations for two targets specified, hence only two are displayed.
You have to create seperate AR.Trackable2dObject for each target you want to track.

Please have a look at the documentation for AR.Tracker and AR.Trackable2dObject (

Login or Signup to post a comment