# Tools
- Creating AR experiences requires us to have a decent knowledge of images, 3D models, geolocations, ...
- Wikitude offers us some tools to help us achieve our goals!
# Image targets
- In our previously created app we are able to scan dinosaur cards which reveal the 3D model of the corresponding dinosaur.
- We will explain the tools needed by focusing on our dinosaur app
# JavaScript
var World = {
loaded: false,
dinoSettings: {
diplodocus: {
scale: 0.4
},
spinosaurus: {
scale: 0.004
},
triceratops: {
scale: 0.4
},
tyrannosaurus: {
scale: 0.4
}
},
init: function initFn() {
this.createOverlays();
},
createOverlays: function createOverlaysFn() {
/*
First a AR.TargetCollectionResource is created with the path to the Wikitude Target Collection(.wtc) file.
This .wtc file can be created from images using the Wikitude Studio. More information on how to create them
can be found in the documentation in the TargetManagement section.
Each target in the target collection is identified by its target name. By using this
target name, it is possible to create an AR.ImageTrackable for every target in the target collection.
*/
this.targetCollectionResource = new AR.TargetCollectionResource("assets/dinosaurs.wtc", {
onError: World.onError
});
/*
This resource is then used as parameter to create an AR.ImageTracker. Optional parameters are passed as
object in the last argument. In this case a callback function for the onTargetsLoaded trigger is set. Once
the tracker loaded all of its target images this callback function is invoked. We also set the callback
function for the onError trigger which provides a sting containing a description of the error.
To enable simultaneous tracking of multiple targets 'maximumNumberOfConcurrentlyTrackableTargets' has
to be set.
to be set.
*/
this.tracker = new AR.ImageTracker(this.targetCollectionResource, {
maximumNumberOfConcurrentlyTrackableTargets: 5, // a maximum of 5 targets can be tracked simultaneously
/*
Disables extended range recognition.
The reason for this is that extended range recognition requires more processing power and with multiple
targets the SDK is trying to recognize targets until the maximumNumberOfConcurrentlyTrackableTargets
is reached and it may slow down the tracking of already recognized targets.
*/
extendedRangeRecognition: AR.CONST.IMAGE_RECOGNITION_RANGE_EXTENSION.OFF,
onTargetsLoaded: World.showInfoBar,
onError: World.onError
});
/*
Pre-load models such that they are available in cache to avoid any slowdown upon first recognition.
*/
new AR.Model("assets/models/diplodocus.wt3");
new AR.Model("assets/models/spinosaurus.wt3");
new AR.Model("assets/models/triceratops.wt3");
new AR.Model("assets/models/tyrannosaurus.wt3");
/*
Note that this time we use "*" as target name. That means that the AR.ImageTrackable will respond to
any target that is defined in the target collection. You can use wildcards to specify more complex name
matchings. E.g. 'target_?' to reference 'target_1' through 'target_9' or 'target*' for any targets
names that start with 'target'.
*/
this.dinoTrackable = new AR.ImageTrackable(this.tracker, "*", {
onImageRecognized: function(target) {
/*
Create 3D model based on which target was recognized.
*/
var model = new AR.Model("assets/models/" + target.name + ".wt3", {
scale: World.dinoSettings[target.name].scale,
rotate: {
z: 180
},
onError: World.onError
});
/* Adds the model as augmentation for the currently recognized target. */
this.addImageTargetCamDrawables(target, model);
World.hideInfoBar();
},
onError: World.onError
});
},
onError: function onErrorFn(error) {
alert(error);
},
hideInfoBar: function hideInfoBarFn() {
document.getElementById("infoBox").style.display = "none";
},
showInfoBar: function worldLoadedFn() {
document.getElementById("infoBox").style.display = "table";
document.getElementById("loadingMessage").style.display = "none";
}
};
World.init();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
file | description |
---|---|
assets/dinosaurs.wtc | a .wtc file is a Wikitude Image Collection. Such files can be made in Wikitude Studio |
assets/models/diplodocus.wt3'; | a .wt3 file is a Wikitude 3D Format file. Such files can be made in Wikitude 3D Encoder |
# Wikitude Studio
- Wikitude Studio
- Sign in with Google (or create an account)
- Create a project
- Add images to the project
- These are the images you'll be able to scan with the app for AR cases
- Read The best practices for Image Targets
- Download the .wtc file
- Full guide
# Wikitude 3D Encoder
- 3D content within Wikitude can only be loaded from Wikitude 3D Format files (.wt3). This is a 3D content format optimized for fast loading and handling on a mobile device.
- Wikitude 3D Encoder is a desktop application that converts 3D models into .wt3 files
Autodesk (.fbx)
- The Wikitude Encoder currently supports Autodesk® FBX® files (.fbx) for encoding to .wt3
- You can find a rar-file with the Wikitude 3D Encoder (for Windows) on Canvas
- Unpack the rar-file in some folder and open Wikitude3dEncoder.exe in the bin folder.
- Documentation