# Cylinder Tracking
# Introduction
Cylinder Recognition and Tracking extend the capabilities of the Wikitude SDK to recognize cylinder objects. The feature is based on the Image Tracking module, but instead of recognizing plane images, it is able to recognize cylinder objects like cans through its images.
# Using Cylinder Tracking
To create a Cylinder Tracking
example, you will need to follow the Image Tracking section as it uses the WikitudeSDK
and the ImageTracker
scripts in the same way, with the difference that the targets that are in the .zip
file are cylinders.
# ImageTracker as CylinderTracker
To add an image tracker to the scene, simply create a new GameObject
and add the ImageTracker
script to it.
To recognize cylinder targets, the ImageTracker
itself needs a zip file that contains information needed to detect those reference images. Zip files can be generated manually or inside Unity, with the Target Collection Editor.
# Manual Zip File Generation
To generate a zip file manually, 2 things are required. First, a .metadata
file that contains the information of the targets and second, the image to recognize.
The .metadata
file should look like:
{
"version": "1.0",
"targets": [
{
"type": "Cylinder",
"path": "stones.jpg",
"name": "stones",
"height": 120,
"circumference": {
"base": 1,
"top": 1
}
},
{
"type": "Cylinder",
"path": "corn_can.jpg",
"name": "corn_can",
"height": 75,
"circumference": {
"base": 1,
"top": 1
}
},
{
...
}
]
}
As you can see, it is a json file that contains as many targets in an array as you want.
- The
type
value can beImage
in case you want image tracking orCylinder
in case you want cylinder tracking. - The
name
value is the name of the target to recognize. - The
path
value is the path inside the zip to the image. - The
height
value is the height of the target in millimeter. - The
circumference
value is the circumference of the cylinder, it's always relative to the width of the target, so in case the circumference is set to 2 it will create a cylinder with a circumference of 2 times the target width. - The
base
value is the circumference of the base of the cylinder. - The
top
value is the circumference of the top of the cylinder. - The
custom
value is for additional custom data and is free for you to define and use.
WARNING
The top
value is not yet supported, which would define a truncated or inverted truncated cone. For now, the base
value is used to set the diameter of the cylinder.
In the end the .zip
file should look like:
The generated file should be placed into the StreamingAssets folder, so that the Wikitude SDK can load them at runtime. Once the .zip
file is created, please take a look at the Image Tracking section steps, as every one of them are exactly the same, except for the type
of target that is being tracked.
# Defining the size of the cylinder
An important part of the metadata file to be used for cylinders is the value circumference
. With this it is possible to define the size of the cylinder on which the image (label) is placed. In the simplest case, the label is entirely wrapped around the entire cylinder - in this case the value for circumference
should be 1
. A value lower than 1
is not really practical, as it would indicate that the cylinder is smaller than the label.
In case the label only is placed on part of the cylinder (e.g. a wine label) the value of the circumference needs to express that. For example, when the label is only covering half of the cylinder, the value circumference
needs to set to 2
.
# Front and back of a cylinder
The image can also contain empty gaps between labels that are on different parts of the cylinder (e.g. front and back label of a wine bottle). Those gaps can either be filled with a solid color in case the cylinder is made of a solid material or being left transparent in case the cylinder is of transparent material.